MySequentialBehaviour.java

[java]
/**
* Section 5.2.4 page 96
*
* This class implements a SequentialBehaviour that uses the receivedMsg member variable
* to share data among subbehaviours.
**/
import jade.core.Agent;
import jade.core.behaviours.*;
import jade.lang.acl.ACLMessage;

public class MySequentialBehaviour extends SequentialBehaviour {
private ACLMessage receivedMsg;

public MySequentialBehaviour(Agent a) {
super(a);

addSubBehaviour(new SimpleBehaviour(a) {
private boolean finished = false;

public void action() {
receivedMsg = myAgent.receive();
if (receivedMsg != null) {
finished = true;
}
else {
block();
}
}

public boolean done() {
return finished;
}
} );

addSubBehaviour(new OneShotBehaviour(a) {
public void action() {
// Process receivedMsg
}
} );
}
}
[/java]