jade.core.behaviours
Class ParallelBehaviour

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.CompositeBehaviour
              |
              +--jade.core.behaviours.ParallelBehaviour
All Implemented Interfaces:
java.io.Serializable, Serializable

public class ParallelBehaviour
extends CompositeBehaviour

Composite behaviour with concurrent children scheduling. It is a CompositeBehaviour that executes its children behaviours concurrently, and it terminates when a particular condition on its sub-behaviours is met i.e. when all children are done, N children are done or any child is done.

Version:
$Date: 2003/11/18 13:23:02 $ $Revision: 1.7 $
Author:
Giovanni Rimassa - Universita` di Parma, Giovanni Caire - Telecom Italia Lab
See Also:
Serialized Form

Field Summary
static int WHEN_ALL
          Predefined constant to be used in the constructor to create a ParallelBehaviour that terminates when all its children are done.
static int WHEN_ANY
          Predefined constant to be used in the constructor to create a ParallelBehaviour that terminates when any of its child is done.
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent, parent
 
Constructor Summary
ParallelBehaviour()
          Construct a ParallelBehaviour without setting the owner agent, and using the default termination condition (i.e.
ParallelBehaviour(Agent a, int endCondition)
          Construct a ParallelBehaviour setting the owner agent.
ParallelBehaviour(int endCondition)
          Construct a ParallelBehaviour without setting the owner agent.
 
Method Summary
 void addSubBehaviour(Behaviour b)
          Add a sub behaviour to this ParallelBehaviour
protected  boolean checkTermination(boolean currentDone, int currentResult)
          Check whether this ParallelBehaviour must terminate.
 Collection getChildren()
          Return a Collection view of the children of this ParallelBehaviour
protected  Behaviour getCurrent()
          Get the current child
 void removeSubBehaviour(Behaviour b)
          Remove a sub behaviour from this ParallelBehaviour
 void reset()
          Resets this behaviour.
protected  void scheduleFirst()
          Prepare the first child for execution
protected  void scheduleNext(boolean currentDone, int currentResult)
          This method schedules children behaviours one at a time, in a round robin fashion.
 
Methods inherited from class jade.core.behaviours.CompositeBehaviour
action, block, done, onEnd, onStart, restart, setAgent
 
Methods inherited from class jade.core.behaviours.Behaviour
block, getBehaviourName, getDataStore, isRunnable, root, setBehaviourName, setDataStore
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WHEN_ALL

public static final int WHEN_ALL
Predefined constant to be used in the constructor to create a ParallelBehaviour that terminates when all its children are done.

See Also:
Constant Field Values

WHEN_ANY

public static final int WHEN_ANY
Predefined constant to be used in the constructor to create a ParallelBehaviour that terminates when any of its child is done.

See Also:
Constant Field Values
Constructor Detail

ParallelBehaviour

public ParallelBehaviour()
Construct a ParallelBehaviour without setting the owner agent, and using the default termination condition (i.e. the parallel behaviour terminates as soon as all its children behaviours terminate.


ParallelBehaviour

public ParallelBehaviour(int endCondition)
Construct a ParallelBehaviour without setting the owner agent.

Parameters:
endCondition - this value defines the termination condition for this ParallelBehaviour. Use
  1. WHEN_ALL to terminate this ParallelBehaviour when all its children are done.
  2. WHEN_ANY to terminate this ParallelBehaviour when any of its child is done.
  3. a positive int value n to terminate this ParallelBehaviour when n of its children are done.

ParallelBehaviour

public ParallelBehaviour(Agent a,
                         int endCondition)
Construct a ParallelBehaviour setting the owner agent.

Parameters:
a - the agent this ParallelBehaviour belongs to.
endCondition - this value defines the termination condition for this ParallelBehaviour. Use
  1. WHEN_ALL to terminate this ParallelBehaviour when all its children are done.
  2. WHEN_ANY to terminate this ParallelBehaviour when any of its child is done.
  3. a positive int value n to terminate this ParallelBehaviour when n of its children are done.
Method Detail

scheduleFirst

protected void scheduleFirst()
Prepare the first child for execution

Specified by:
scheduleFirst in class CompositeBehaviour
See Also:
CompositeBehaviour.scheduleFirst()

scheduleNext

protected void scheduleNext(boolean currentDone,
                            int currentResult)
This method schedules children behaviours one at a time, in a round robin fashion.

Specified by:
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:
CompositeBehaviour.scheduleNext(boolean, int)

checkTermination

protected boolean checkTermination(boolean currentDone,
                                   int currentResult)
Check whether this ParallelBehaviour must terminate.

Specified by:
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 if the CompositeBehaviour should terminate. false otherwise.
See Also:
CompositeBehaviour.checkTermination(boolean, int)

getCurrent

protected Behaviour getCurrent()
Get the current child

Specified by:
getCurrent in class CompositeBehaviour
See Also:
CompositeBehaviour.getCurrent()

getChildren

public Collection getChildren()
Return a Collection view of the children of this ParallelBehaviour

Specified by:
getChildren in class CompositeBehaviour
See Also:
CompositeBehaviour.getChildren()

addSubBehaviour

public void addSubBehaviour(Behaviour b)
Add a sub behaviour to this ParallelBehaviour


removeSubBehaviour

public void removeSubBehaviour(Behaviour b)
Remove a sub behaviour from this ParallelBehaviour


reset

public void reset()
Resets this behaviour. This methods puts a ParallelBehaviour back in initial state, besides calling reset() on each child behaviour recursively.

Overrides:
reset in class CompositeBehaviour


JADE