Overview  Package   Class  Tree  Deprecated  Index  Help 
PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

sajas.core.behaviours
Class FSMBehaviour
java.lang.Object
  sajas.core.behaviours.Behaviour
      sajas.core.behaviours.CompositeBehaviour
          sajas.core.behaviours.SerialBehaviour
              sajas.core.behaviours.FSMBehaviour
All Implemented Interfaces:
jade.util.leap.Serializable, Serializable
Direct Known Subclasses:
AchieveREInitiator, AchieveREResponder, ContractNetInitiator, HandlerSelector, ProposeInitiator, ProposeResponder, SSContractNetResponder, SSIteratedAchieveREResponder, SubscriptionInitiator, SubscriptionResponder

public class FSMBehaviour
extends SerialBehaviour
Author:
hlc
See Also:
jade.core.behaviours.FSMBehaviour

Nested classes/interfaces inherited from class sajas.core.behaviours.Behaviour
Behaviour.RunnableChangedEvent
Field Summary
protected String
currentName
protected jade.util.leap.List
lastStates
Fields inherited from class sajas.core.behaviours.CompositeBehaviour
currentExecuted
Fields inherited from class sajas.core.behaviours.Behaviour
myAgent, myEvent, NOTIFY_DOWN, NOTIFY_UP, parent, STATE_BLOCKED, STATE_READY, STATE_RUNNING
Constructor Summary
FSMBehaviour()
          Default constructor, does not set the owner agent.
FSMBehaviour(Agent a)
          This constructor sets the owner agent.
Method Summary
protected boolean
checkTermination(boolean currentDone, int currentResult)
          Check whether this FSMBehaviour must terminate.
void
deregisterDefaultTransition(String source)
          Deregister the default transition from a given source state.
deregisterState(String name)
          Deregister a state of this FSMBehaviour.
void
deregisterTransition(String source, int event)
          Deregister the transition from a given source state and identfied by a given termination event.
protected void
forceTransitionTo(String next)
          Temporarily disregards the FSM structure, and jumps to the given state.
jade.util.leap.Collection
getChildren()
          Return a Collection view of the children of this SequentialBehaviour
protected Behaviour
getCurrent()
          Get the current child
int
getLastExitValue()
          Retrieve the exit value of the most recently executed child.
String
getName(Behaviour state)
          Retrieve the name of the FSM state associated to the given child behaviour.
protected Behaviour
getPrevious()
          Get the previously executed child
getState(String name)
          Retrieve the child behaviour associated to the FSM state with the given name.
protected void
handleInconsistentFSM(String current, int event)
protected void
handleStateEntered(Behaviour state)
boolean
hasDefaultTransition(String source)
          Check if a default transition exits from a given source state.
int
onEnd()
          Override the onEnd() method to return the exit value of the last executed state.
void
registerDefaultTransition(String s1, String s2)
          Register a default transition in the FSM defining the policy for children scheduling of this FSMBehaviour.
void
registerDefaultTransition(String s1, String s2, String[] toBeReset)
          Register a default transition in the FSM defining the policy for children scheduling of this FSMBehaviour.
void
registerFirstState(Behaviour state, String name)
          Register a Behaviour as the initial state of this FSMBehaviour.
void
registerLastState(Behaviour state, String name)
          Register a Behaviour as a final state of this FSMBehaviour.
void
registerState(Behaviour state, String name)
          Register a Behaviour as a state of this FSMBehaviour.
void
registerTransition(String s1, String s2, int event)
          Register a transition in the FSM defining the policy for children scheduling of this FSMBehaviour.
void
registerTransition(String s1, String s2, int event, String[] toBeReset)
          Register a transition in the FSM defining the policy for children scheduling of this FSMBehaviour.
void
reset()
          Put this FSMBehaviour back in the initial condition.
void
resetStates(String[] states)
          Reset the children behaviours registered in the states indicated in the states parameter.
protected void
scheduleFirst()
          Prepare the first child for execution.
protected void
scheduleNext(boolean currentDone, int currentResult)
          This method schedules the next child to be executed.
String
stringifyTransitionTable()
Methods inherited from class sajas.core.behaviours.SerialBehaviour
handle
Methods inherited from class sajas.core.behaviours.CompositeBehaviour
action, done, handleBlockEvent, handleRestartEvent, registerAsChild, resetChildren, setAgent
Methods inherited from class sajas.core.behaviours.Behaviour
actionWrapper, block, block, getAgent, getBehaviourName, getDataStore, getExecutionState, getParent, getRestartCounter, isRunnable, onStart, restart, root, setBehaviourName, setDataStore, setExecutionState
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Field Detail
currentName
protected String currentName

lastStates
protected jade.util.leap.List lastStates
Constructor Detail
FSMBehaviour
public FSMBehaviour()
Default constructor, does not set the owner agent.

FSMBehaviour
public FSMBehaviour(Agent a)
This constructor sets the owner agent.
Parameters:
a - The agent this behaviour belongs to.
Method Detail
registerState
public void registerState(Behaviour state,
                          String name)
Register a Behaviour as a state of this FSMBehaviour. When the FSM reaches this state the registered Behaviour will be executed.
Parameters:
state - The Behaviour representing the state
name - The name identifying the state.

registerFirstState
public void registerFirstState(Behaviour state,
                               String name)
Register a Behaviour as the initial state of this FSMBehaviour.
Parameters:
state - The Behaviour representing the state
name - The name identifying the state.

registerLastState
public void registerLastState(Behaviour state,
                              String name)
Register a Behaviour as a final state of this FSMBehaviour. When the FSM reaches this state the registered Behaviour will be executed and, when completed, the FSMBehaviour will terminate too.
Parameters:
state - The Behaviour representing the state
name - The name identifying the state.

deregisterState
public Behaviour deregisterState(String name)
Deregister a state of this FSMBehaviour.
Parameters:
name - The name of the state to be deregistered.
Returns:
the Behaviour if any that was registered as the deregistered state.

registerTransition
public void registerTransition(String s1,
                               String s2,
                               int event)
Register a transition in the FSM defining the policy for children scheduling of this FSMBehaviour.
Parameters:
s1 - The name of the state this transition starts from
s2 - The name of the state this transition leads to
event - The termination event that fires this transition as returned by the onEnd() method of the Behaviour representing state s1.
See Also:
jade.core.behaviours.Behaviour.onEnd()

registerTransition
public void registerTransition(String s1,
                               String s2,
                               int event,
                               String[] toBeReset)
Register a transition in the FSM defining the policy for children scheduling of this FSMBehaviour. When this transition is fired the states indicated in the toBeReset parameter are reset. This is particularly useful for transitions that lead to states that have already been visited.
Parameters:
s1 - The name of the state this transition starts from
s2 - The name of the state this transition leads to
event - The termination event that fires this transition as returned by the onEnd() method of the Behaviour representing state s1.
toBeReset - An array of strings including the names of the states to be reset.
See Also:
jade.core.behaviours.Behaviour.onEnd()

registerDefaultTransition
public void registerDefaultTransition(String s1,
                                      String s2)
Register a default transition in the FSM defining the policy for children scheduling of this FSMBehaviour. This transition will be fired when state s1 terminates with an event that is not explicitly associated to any transition.
Parameters:
s1 - The name of the state this transition starts from
s2 - The name of the state this transition leads to

registerDefaultTransition
public void registerDefaultTransition(String s1,
                                      String s2,
                                      String[] toBeReset)
Register a default transition in the FSM defining the policy for children scheduling of this FSMBehaviour. This transition will be fired when state s1 terminates with an event that is not explicitly associated to any transition. When this transition is fired the states indicated in the toBeReset parameter are reset. This is particularly useful for transitions that lead to states that have already been visited.
Parameters:
s1 - The name of the state this transition starts from
s2 - The name of the state this transition leads to
toBeReset - An array of strings including the names of the states to be reset.

deregisterTransition
public void deregisterTransition(String source,
                                 int event)
Deregister the transition from a given source state and identfied by a given termination event.
Parameters:
source - The name of the source state
event - The termination event that identifies the transition to be removed

deregisterDefaultTransition
public void deregisterDefaultTransition(String source)
Deregister the default transition from a given source state.
Parameters:
source - The name of the source state

hasDefaultTransition
public boolean hasDefaultTransition(String source)
Check if a default transition exits from a given source state.
Parameters:
source - The name of the source state
Returns:
true if a default transition exits from the given source state. false otherwise.

getState
public Behaviour getState(String name)
Retrieve the child behaviour associated to the FSM state with the given name.
Returns:
the Behaviour representing the state whose name is name, or null if no such behaviour exists.

getName
public String getName(Behaviour state)
Retrieve the name of the FSM state associated to the given child behaviour.
Returns:
the name of the state represented by Behaviour state, or null if the given behaviour is not a child of this FSM behaviour.

getLastExitValue
public int getLastExitValue()
Retrieve the exit value of the most recently executed child. This is also the trigger value that selects the next FSM transition.
Returns:
the exit value of the last executed state.

onEnd
public int onEnd()
Override the onEnd() method to return the exit value of the last executed state.
Overrides:
onEnd in class Behaviour
Returns:
an integer code representing the termination value of the behaviour.

scheduleFirst
protected void scheduleFirst()
Prepare the first child for execution. The first child is the Behaviour registered as the first state of this FSMBehaviour
Overrides:
scheduleFirst in class CompositeBehaviour
See Also:
jade.core.behaviours.CompositeBehaviour.scheduleFirst()

scheduleNext
protected void scheduleNext(boolean currentDone,
                            int currentResult)
This method schedules the next child to be executed. It checks whether the current child is completed and, in this case, fires a suitable transition (according to the termination event of the current child) and schedules the child representing the new state.
Overrides:
scheduleNext in class CompositeBehaviour
Parameters:
currentDone - a flag indicating whether the just executed child has completed or not.
currentResult - the termination value (as returned by onEnd()) of the just executed child in the case this child has completed (otherwise this parameter is meaningless)
See Also:
jade.core.behaviours.CompositeBehaviour.scheduleNext(boolean, int)

handleInconsistentFSM
protected void handleInconsistentFSM(String current,
                                     int event)

handleStateEntered
protected void handleStateEntered(Behaviour state)

checkTermination
protected boolean checkTermination(boolean currentDone,
                                   int currentResult)
Check whether this FSMBehaviour must terminate.
Overrides:
checkTermination in class CompositeBehaviour
Parameters:
currentDone - a flag indicating whether the just executed child has completed or not.
currentResult - the termination value (as returned by onEnd()) of the just executed child in the case this child has completed (otherwise this parameter is meaningless)
Returns:
true when the last child has terminated and it represents a final state. false otherwise
See Also:
jade.core.behaviours.CompositeBehaviour.checkTermination(boolean, int)

getCurrent
protected Behaviour getCurrent()
Get the current child
Overrides:
getCurrent in class CompositeBehaviour
See Also:
jade.core.behaviours.CompositeBehaviour.getCurrent()

getChildren
public jade.util.leap.Collection getChildren()
Return a Collection view of the children of this SequentialBehaviour
Overrides:
getChildren in class CompositeBehaviour
See Also:
jade.core.behaviours.CompositeBehaviour.getChildren()

forceTransitionTo
protected void forceTransitionTo(String next)
Temporarily disregards the FSM structure, and jumps to the given state. This method acts as a sort of GOTO statement between states, and replaces the currently active state without considering the trigger event or whether a transition was registered. It should be used only to handle exceptional conditions, if default transitions are not effective enough.
Parameters:
next - The name of the state to jump to at the next FSM cheduling quantum. If the FSM has no state with the given name, this method does nothing.

getPrevious
protected Behaviour getPrevious()
Get the previously executed child
See Also:
jade.core.behaviours.CompositeBehaviour.getCurrent()

reset
public void reset()
Put this FSMBehaviour back in the initial condition.
Overrides:
reset in class CompositeBehaviour

resetStates
public void resetStates(String[] states)
Reset the children behaviours registered in the states indicated in the states parameter.
Parameters:
states - the names of the states that have to be reset

stringifyTransitionTable
public String stringifyTransitionTable()

Overview  Package   Class  Tree  Deprecated  Index  Help 
PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    All Classes
SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD

Java API documentation generated with DocFlex/Doclet 1.6.1 using JavadocPro template set.
DocFlex/Doclet is both a multi-format Javadoc doclet and a free edition of DocFlex/Javadoc, which is a template-driven programming tool for rapid development of any Javadoc-based Java API documentation generators (i.e. doclets). If you need to customize your Javadoc without writing a full-blown doclet from scratch, DocFlex/Javadoc may be the only tool able to help you! Find out more at www.docflex.com