/** * 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); } }