FSMBehaviourAgent.java

[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]