Operations can have output parameters, i.e. parameters whose value is meant to be computed by the operation execution. On the agent side such parameters are managed as action feedbacks. At the API level, output parameters are represented by the class OpWithFeedbackParam<ParamType>
, where ParamType
must be the specific type of the output parameter.
The class provides then a set
method to set the output parameter value. In the following example, an agent creates and uses a Calc
artifact, by executing operations with output parameters:
MAS example03_output_param { environment: c4jason.CartagoEnvironment agents: calc_user agentArchClass c4jason.CAgentArch; classpath: "../../../lib/cartago.jar";"../../../lib/c4jason.jar"; }
The Calc
used by the agents has the following code:
public class Calc extends Artifact { @OPERATION void sum(double a, double b, OpFeedbackParam sum){ sum.set(a+b); } @OPERATION void sumAndSub(double a, double b, OpFeedbackParam sum, OpFeedbackParam sub){ sum.set(a+b); sub.set(a-b); } }
The source code of the agent follows:
!use_calc. +!use_calc <- makeArtifact("myCalc","c4jexamples.Calc",[]); sum(4,5,Sum); println("The sum is ",Sum); sumAndSub(0.5, 1.5, NewSum, Sub); println("The new sum is ",NewSum," and the sub is ",Sub).
Highlights: