@AgentCreated publicvoid init() {
this.wordTable = new HashMap
wordTable.put(\, \香蕉\);
wordTable.put(\, \学校\);
wordTable.put(\, \老师\);
wordTable.put(\, \科学\); } @Plan
publicvoid translateEngCh() { // Here we only test one example
System.out.println(\is \
+ wordTable.get(\)); } @AgentBody
publicvoid body(){
translateAgent.adoptPlan(\); }
}
作为方法使用是,在Agent的body方法中,要使用Plan方法的名字就可以。框架提供了自动检索的方法。
3.4 使用其他Plan的方法
除了已经学习到的使用方法外,下面介绍其他三个Plan的生命周期方法。 1. @PlanPassed Plan顺利执行的 2. @PlanFailed Plan执行失败
3. @PlanAborted Plan被取消,比如当Plan的上下文变得不可用的时候。
演示这个例子的时候,需要用到try-catch块,完成adoptPlan()的调用和等待Plan被执行完成的调用(在调用完成以后,使用get())。get() 是基于future的异步转同步的方法。
package a1;
import java.util.HashMap; import java.util.Map;
import jadex.bdiv3.BDIAgent;
import jadex.bdiv3.annotation.Plan;
import jadex.bdiv3.annotation.PlanAborted; import jadex.bdiv3.annotation.PlanBody; import jadex.bdiv3.annotation.PlanFailed; import jadex.bdiv3.annotation.PlanPassed; import jadex.micro.annotation.Agent; import jadex.micro.annotation.AgentBody; import jadex.micro.annotation.Description;
@Agent
@Description(\) // @Plans(@Plan(body=@Body(TranslatePlan.class))) publicclassTranslateEngChBDI { @Agent
protected BDIAgent translateAgent; @Plan
publicclassTranslateEngChPlan {
protected Map
public TranslateEngChPlan() {
this.wordTable = new HashMap
wordTable.put(\, \香蕉\);
wordTable.put(\, \学校\);
wordTable.put(\, \老师\);
wordTable.put(\, \科学\); }
@PlanBody
publicvoid translateEngCh() { // Here we only test one example
System.out.println(\se is \
+ wordTable.get(\)); }
@PlanPassed
publicvoid passed(){
System.out.println(\\); } @PlanAborted
publicvoid aborted(){
System.out.println(\); } @PlanFailed
publicvoid failed(){
System.out.println(\); } }
@AgentBody
publicvoid body() { try {