jade.proto
Class AchieveREResponder

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.CompositeBehaviour
              |
              +--jade.core.behaviours.SerialBehaviour
                    |
                    +--jade.core.behaviours.FSMBehaviour
                          |
                          +--jade.proto.AchieveREResponder
All Implemented Interfaces:
FIPANames.InteractionProtocol, Serializable, java.io.Serializable

public class AchieveREResponder
extends FSMBehaviour
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.

Version:
$Date: 2006-05-25 15:29:42 +0200 (gio, 25 mag 2006) $ $Revision: 5884 $
Author:
Giovanni Caire - TILab, Fabio Bellifemine - TILab, Tiziana Trucco - TILab
See Also:
AchieveREInitiator, Serialized Form

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.FSMBehaviour
currentName, lastStates
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent
 
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, ITERATED_FIPA_REQUEST
 
Constructor Summary
AchieveREResponder(Agent a, MessageTemplate mt)
          Constructor of the behaviour that creates a new empty DataStore
AchieveREResponder(Agent a, MessageTemplate mt, DataStore store)
          Constructor.
 
Method Summary
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.
protected  ACLMessage handleRequest(ACLMessage request)
          This method is called when the protocol initiation message (matching the MessageTemplate specified in the constructor) is received.
protected  ACLMessage prepareResponse(ACLMessage request)
          Deprecated. Use handleRequest() instead
protected  ACLMessage prepareResultNotification(ACLMessage request, ACLMessage response)
          This method is called after the execution of the handleRequest() method if no response was sent or the response was an AGREE message.
 void registerHandleRequest(Behaviour b)
          This method allows to register a user defined Behaviour in the HANDLE_REQUEST state.
 void registerPrepareResponse(Behaviour b)
          Deprecated. Use registerHandleRequest() instead.
 void registerPrepareResultNotification(Behaviour b)
          This method allows to register a user defined Behaviour in the PREPARE_RESULT_NOTIFICATION state.
 void reset()
          Reset this 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.FSMBehaviour
checkTermination, deregisterState, forceTransitionTo, getChildren, getCurrent, getLastExitValue, getName, getPrevious, getState, handleInconsistentFSM, handleStateEntered, onEnd, registerDefaultTransition, registerDefaultTransition, registerFirstState, registerLastState, registerState, registerTransition, registerTransition, resetStates, scheduleFirst, scheduleNext
 
Methods inherited from class jade.core.behaviours.CompositeBehaviour
action, block, done, resetChildren, restart, setAgent
 
Methods inherited from class jade.core.behaviours.Behaviour
block, getBehaviourName, getDataStore, getParent, isRunnable, onStart, root, 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

AchieveREResponder

public AchieveREResponder(Agent a,
                          MessageTemplate mt)
Constructor of the behaviour that creates a new empty DataStore

See Also:
AchieveREResponder(Agent a, MessageTemplate mt, DataStore store)

AchieveREResponder

public AchieveREResponder(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:
FIPANames.InteractionProtocol

reset

public void reset()
Reset this behaviour using the same MessageTemplate.

Overrides:
reset in class FSMBehaviour

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.


handleRequest

protected ACLMessage handleRequest(ACLMessage request)
                            throws NotUnderstoodException,
                                   RefuseException
This method is called when the protocol initiation message (matching the MessageTemplate specified in the constructor) is received. This default implementation returns null which has the effect of sending no reponse. Programmers should override this 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.
NotUnderstoodException
RefuseException

prepareResponse

protected ACLMessage prepareResponse(ACLMessage request)
                              throws NotUnderstoodException,
                                     RefuseException
Deprecated. Use handleRequest() instead

NotUnderstoodException
RefuseException

prepareResultNotification

protected ACLMessage prepareResultNotification(ACLMessage request,
                                               ACLMessage response)
                                        throws FailureException
This method is called after the execution of the handleRequest() method if no response was sent or the response was an AGREE message. This default implementation returns 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.
FailureException
See Also:
handleRequest(ACLMessage)

registerHandleRequest

public void registerHandleRequest(Behaviour b)
This method allows to register a user defined Behaviour in the HANDLE_REQUEST state. This behaviour would override the homonymous method. This method also set the DataStore of the registered Behaviour to the DataStore of this AchieveREResponder. It is responsibility of the registered behaviour to put the response to be sent into the DataStore at the RESPONSE_KEY key.

Parameters:
b - the Behaviour that will handle this state

registerPrepareResponse

public void registerPrepareResponse(Behaviour b)
Deprecated. Use registerHandleRequest() instead.


registerPrepareResultNotification

public void registerPrepareResultNotification(Behaviour b)
This method allows to register a user defined Behaviour in the PREPARE_RESULT_NOTIFICATION state. This behaviour would override the homonymous method. This method also set the DataStore of the registered Behaviour to the DataStore of this AchieveREResponder. It is responsibility of the registered behaviour to put the result notification message to be sent into the DataStore at the RESULT_NOTIFICATION_KEY key.

Parameters:
b - the Behaviour that will handle this state


JADE