|
sajas.core.behaviours
package,
has been re-implemented to redirect the use of the agent class to sajas.core.Agent
.Nested Class Summary | ||
protected class |
Behaviour.RunnableChangedEvent Event class for notifying blocked and restarted behaviours. |
Field Summary | ||
protected Agent |
myAgent The agent this behaviour belongs to. |
|
protected Behaviour.RunnableChangedEvent |
myEvent This event object will be re-used for every state change notification. |
|
protected static int |
NOTIFY_DOWN A constant for parent-to-child notifications. |
|
protected static int |
NOTIFY_UP A constant for child-to-parent notifications. |
|
protected CompositeBehaviour |
parent | |
static String |
STATE_BLOCKED A constant identifying the blocked state. |
|
static String |
STATE_READY A constant identifying the runnable state. |
|
static String |
STATE_RUNNING A constant identifying the running state. |
Constructor Summary | ||
Behaviour() Default constructor. |
||
Behaviour(Agent a) Constructor with owner agent. |
Method Summary | ||
abstract void |
action() Runs the behaviour. |
|
void |
actionWrapper() This method is called internally by the JADE framework and should not be called by the user. |
|
void |
block() Blocks this behaviour. |
|
void |
block(long millis) Blocks this behaviour for a specified amount of time. |
|
abstract boolean |
done() Check if this behaviour is done. |
|
getAgent() | ||
String |
getBehaviourName() Retrieve the name of this behaviour object. |
|
getDataStore() Return the private data store of this Behaviour . |
||
String |
getExecutionState() | |
protected CompositeBehaviour |
getParent() Retrieve the enclosing CompositeBehaviour (if present). |
|
long |
getRestartCounter() This method is used internally by the framework. |
|
protected void |
handle(Behaviour.RunnableChangedEvent rce) Handler for block/restart events. |
|
protected void |
handleBlockEvent() This method is used internally by the framework. |
|
void |
handleRestartEvent() This method is used internally by the framework. |
|
boolean |
isRunnable() Returns whether this Behaviour object is blocked or not. |
|
int |
onEnd() This method is just an empty placeholder for subclasses. |
|
void |
onStart() This method is just an empty placeholders for subclasses. |
|
void |
reset() Restores behaviour initial state. |
|
void |
restart() Restarts a blocked behaviour. |
|
root() Returns the root for this Behaviour object. |
||
void |
setAgent(Agent a) Associates this behaviour with the agent it belongs to. |
|
void |
setBehaviourName(String name) Give a name to this behaviour object. |
|
void |
setDataStore(DataStore ds) Set the private data store of this Behaviour |
|
void |
setExecutionState(String s) |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Behaviour
is the superclass
of all the other behaviour classes, this variable is always
available. Of course, remind to use the appropriate constructor,
i.e. the one that accepts an agent object as argument; otherwise,
this variable is set to null
.parent
member variable
directly. In case of threaded or wrapped behaviour in facts the latter may have unexpected values.Behaviour
subclasses 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.Behaviour
still need to be
run or it has completed its task. Concrete behaviours must
implement this method to return their completion state. Finished
behaviours are removed from the scheduling queue, while others
are kept within to be run again when their turn comes again.true
if the behaviour has completely executed.Behaviour
.
onEnd
is called after the behaviour has been
removed from the pool of behaviours to be executed by an agent.
Therefore calling
reset()
is not sufficient to cyclically repeat the task
represented by this Behaviour
. In order to achieve that,
this Behaviour
must be added again to the agent
(using myAgent.addBehaviour(this)
). The same applies to
in the case of a Behaviour
that is a child of a
ParallelBehaviour
.Behaviour
.reset()
on a behaviour object is equivalent to
destroying it and recreating it back. The main purpose for this
method is to realize multistep cyclic behaviours without needing
expensive constructions an deletion of objects at each loop
iteration.
Remind to call super.reset() from the sub-classes.Behaviour
object. That is,
the top-level behaviour this one is a part of. Agents apply
scheduling only to top-level behaviour objects, so they just call
restart()
on root behaviours.this
is returned.Behaviour
object is blocked or
not.true
when this behaviour is not blocked,
false
when it is.action()
method returns, the behaviour is put into a blocked behaviours queue so that it will
not be scheduled anymore.restart()
method.CompositeBehaviour
a suitable event is fired to
notify its parent behaviour up to the behaviour composition hierarchy root.millis
milliseconds has passed
since the call to block()
.
restart()
is called explicitly on
this behaviour object.
millis
is equivalent to a call to
block()
without arguments.addBehaviour()
call takes care of the association
transparently.Behaviour
.
If it was null, a new DataStore is created and returned.Behaviour
Behaviour
DataStore
that this Behaviour
will use as its private data store
|