jade.proto
Class SimpleAchieveREResponder

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.SimpleBehaviour
              |
              +--jade.proto.SimpleAchieveREResponder

public class SimpleAchieveREResponder
extends SimpleBehaviour
implements FIPANames.InteractionProtocol

This is a single homogeneous and effective implementation of all the FIPA-Request-like interaction protocols defined by FIPA, that is all those protocols where the initiator sends a single message (i.e. it performs a single communicative act) within the scope of an interaction protocol in order to verify if the RE (Rational Effect) of the communicative act has been achieved or not. Note that this is a simple implementation of the AchieveREResponder. that does not allow to register Behaviour for the Prepare Response and Prepare Result Notification states of the protocol

Version:
$Date: 2003/02/26 10:08:18 $ $Revision: 1.2 $
Author:
Tiziana Trucco - TILab
See Also:
SimpleAchieveREInitiator, AchieveREInitiator, AchieveREResponder, Serialized Form

Inner classes inherited from class jade.core.behaviours.Behaviour
Behaviour.RunnableChangedEvent
 
Field Summary
 java.lang.String REQUEST_KEY
          key to retrieve from the DataStore of the behaviour the ACLMessage object sent by the initiator.
 java.lang.String RESPONSE_KEY
          key to retrieve from the DataStore of the behaviour the ACLMessage object sent as a response to the initiator.
 java.lang.String RESULT_NOTIFICATION_KEY
          key to retrieve from the DataStore of the behaviour the ACLMessage object sent as a result notification to the initiator.
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent, myEvent, NOTIFY_DOWN, NOTIFY_UP, parent, STATE_BLOCKED, STATE_READY, STATE_RUNNING
 
Fields inherited from interface jade.domain.FIPANames.InteractionProtocol
FIPA_BROKERING, FIPA_CONTRACT_NET, FIPA_DUTCH_AUCTION, FIPA_ENGLISH_AUCTION, FIPA_ITERATED_CONTRACT_NET, FIPA_PROPOSE, FIPA_QUERY, FIPA_RECRUITING, FIPA_REQUEST, FIPA_REQUEST_WHEN, FIPA_SUBSCRIBE
 
Constructor Summary
SimpleAchieveREResponder(Agent a, MessageTemplate mt)
          Constructor of the behaviour that creates a new empty DataStore
SimpleAchieveREResponder(Agent a, MessageTemplate mt, DataStore store)
          Constructor.
 
Method Summary
 void action()
          Runs the behaviour.
static MessageTemplate createMessageTemplate(java.lang.String iprotocol)
          This static method can be used to set the proper message Template (based on the interaction protocol and the performative) into the constructor of this behaviour.
 boolean done()
          This method checks whether this behaviour has finished or not.
protected  ACLMessage prepareResponse(ACLMessage request)
          This method is called when the initiator's message is received that matches the message template passed in the constructor.
protected  ACLMessage prepareResultNotification(ACLMessage request, ACLMessage response)
          This method is called after the response has been sent and only if the response was an agree message.
 void reset()
          Reset the behaviour using the same MessageTemplate.
 void reset(MessageTemplate mt)
          This method allows to change the MessageTemplate that defines what messages this FIPARequestResponder will react to and reset the protocol.
 
Methods inherited from class jade.core.behaviours.Behaviour
actionWrapper, block, block, getBehaviourName, getDataStore, handle, isRunnable, onEnd, onStart, restart, root, setAgent, setBehaviourName, setDataStore
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

REQUEST_KEY

public final java.lang.String REQUEST_KEY
key to retrieve from the DataStore of the behaviour the ACLMessage object sent by the initiator.

RESPONSE_KEY

public final java.lang.String RESPONSE_KEY
key to retrieve from the DataStore of the behaviour the ACLMessage object sent as a response to the initiator.

RESULT_NOTIFICATION_KEY

public final java.lang.String RESULT_NOTIFICATION_KEY
key to retrieve from the DataStore of the behaviour the ACLMessage object sent as a result notification to the initiator.
Constructor Detail

SimpleAchieveREResponder

public SimpleAchieveREResponder(Agent a,
                                MessageTemplate mt)
Constructor of the behaviour that creates a new empty DataStore
See Also:
SimpleAchieveREResponder(Agent a, MessageTemplate mt, DataStore store)

SimpleAchieveREResponder

public SimpleAchieveREResponder(Agent a,
                                MessageTemplate mt,
                                DataStore store)
Constructor.
Parameters:
a - is the reference to the Agent object
mt - is the MessageTemplate that must be used to match the initiator message. Take care that if mt is null every message is consumed by this protocol.
store - the DataStore for this protocol
Method Detail

createMessageTemplate

public static MessageTemplate createMessageTemplate(java.lang.String iprotocol)
This static method can be used to set the proper message Template (based on the interaction protocol and the performative) into the constructor of this behaviour.
See Also:
FIPAProtocolNames

action

public final void action()
Description copied from class: Behaviour
Runs the behaviour. This abstract method must be implemented by Behavioursubclasses to perform ordinary behaviour duty. An agent schedules its behaviours calling their action() method; since all the behaviours belonging to the same agent are scheduled cooperatively, this method must not enter in an endless loop and should return as soon as possible to preserve agent responsiveness. To split a long and slow task into smaller section, recursive behaviour aggregation may be used.
Overrides:
action in class Behaviour
Tags copied from class: Behaviour
See Also:
CompositeBehaviour

prepareResponse

protected ACLMessage prepareResponse(ACLMessage request)
                              throws NotUnderstoodException,
                                     RefuseException
This method is called when the initiator's message is received that matches the message template passed in the constructor. This default implementation return null which has the effect of sending no reponse. Programmers should override the method in case they need to react to this event.
Parameters:
request - the received message
Returns:
the ACLMessage to be sent as a response (i.e. one of agree, refuse, not-understood, inform. Remind to use the method createReply of the class ACLMessage in order to create a good reply message
See Also:
ACLMessage.createReply()

prepareResultNotification

protected ACLMessage prepareResultNotification(ACLMessage request,
                                               ACLMessage response)
                                        throws FailureException
This method is called after the response has been sent and only if the response was an agree message. This default implementation return null which has the effect of sending no result notification. Programmers should override the method in case they need to react to this event.
Parameters:
request - the received message
response - the previously sent response message
Returns:
the ACLMessage to be sent as a result notification (i.e. one of inform, failure. Remind to use the method createReply of the class ACLMessage in order to create a good reply message
See Also:
ACLMessage.createReply(), prepareResponse(ACLMessage)

reset

public void reset()
Reset the behaviour using the same MessageTemplate.
Overrides:
reset in class SimpleBehaviour

reset

public void reset(MessageTemplate mt)
This method allows to change the MessageTemplate that defines what messages this FIPARequestResponder will react to and reset the protocol.

done

public boolean done()
This method checks whether this behaviour has finished or not.
Overrides:
done in class Behaviour
Returns:
true if this behaviour has completed its task, false otherwise.