package myagent; event MyEvent { var name : String } agent MyAgent { on Initialize { emit(new MyEvent("Agent Initialized")) } on MyEvent { if (occurrence.name.equals("Agent Initialized")) { } } on Shutdown { } } agent MainAgent { on Initialize { val myAgent = spawn(typeof(MyAgent)) myAgent.emit(new MyEvent("Agent Initialized")) } on MyEvent { if (occurrence.name.equals("Agent Initialized")) { } } on Shutdown { } } package myagent.behaviors; import io.sarl.core.Behaviors; import io.sarl.lang.core.Agent; import io.sarl.lang.core.AgentContext; import io.sarl.lang.core.Skill; public class MyBehavior extends Skill implements Behaviors { public MyBehavior(AgentContext context) { super(context); } @Override public void initialization() { emit(new MyEvent("Agent Initialized")); } @Override public void beforeShutdown() { } @SarlCoroutine("myCoroutine") public void myCoroutine(MyEvent event) { if (event.getName().equals("Agent Initialized")) { } } } package myagent; import io.sarl.core.AgentTask; import io.sarl.core.Logging; import io.sarl.lang.core.AgentContext; import io.sarl.lang.core.BehaviorGuardEvaluator; import io.sarl.lang.core.EventSpace; import myagent.behaviors.MyBehavior; public class MyAgent extends Agent { protected AgentTask task; protected MyBehavior behavior; public MyAgent(AgentContext context, BehaviorGuardEvaluator evaluator) { super(context, evaluator); this.behavior = new MyBehavior(context); this.skill(MyBehavior.class, this.behavior); } @Override protected void before() { super.before(); Logging loggingSkill = getSkill(Logging.class); loggingSkill.setLoggingName("MyAgent"); } @Override protected void activate() { super.activate(); spawnMyCoroutine(); } protected void spawnMyCoroutine() { EventSpace space = getSkill(EventSpace.class); this.task = space.runInSpace(MyEvent.class, event -> this.behavior.myCoroutine(event)); } @Override protected void destroy() { this.task?.cancel(); super.destroy(); } } package myagent; import io.sarl.bootstrap.SRE; import io.sarl.bootstrap.SREBootstrap; public class Main { public static void main(String[] args) { SREBootstrap bootstrap = SRE.getBootstrap(); SRE sre = bootstrap.start(); sre.startAgent(MyAgent.class, null); } }


上一篇:
下一篇:
切换中文