[java]
/**
* Section 5.2.2, Page 94
*
* Agent using FSMBehaviour class
**/
import jade.core.behaviours.*;
import jade.core.Agent;
public class FSMBehaviourAgent extends Agent {
public void setup() {
FSMBehaviour sampleFSM = new FSMBehaviour(this);
sampleFSM.registerFirstState(new OneShotBehaviour(this) {
public void action() {
// Perform operation X
System.out.println("Operation X");
}
public int onEnd() {
//return (operation X successful ? 1 : 0);
return 1;
}
}, "X");
sampleFSM.registerLastState(new OneShotBehaviour(this) {
public void action() {
// Perform operation Y
System.out.println("Operation Y");
}
}, "Y");
sampleFSM.registerState(new OneShotBehaviour(this) {
public void action() {
// Perform operation Z
System.out.println("Operation Z");
}
}, "Z");
sampleFSM.registerTransition("X", "Y", 1);
sampleFSM.registerTransition("X", "Z", 0);
sampleFSM.registerDefaultTransition("Z", "X", new String[]{"X", "Z"});
addBehaviour(sampleFSM);
}
}
[/java]