@Agent
protected BDIAgent translateAgent;
@Belief
protected Map
@AgentCreated publicvoid init() {
this.wordTable = new HashMap
wordTable.put(\, \牛奶\);
wordTable.put(\, \香蕉\);
wordTable.put(\, \学校\);
wordTable.put(\, \老师\);
wordTable.put(\, \科学\); } @Goal
publicclassTranslateEngCh { @GoalParameter
protected String eword; @GoalResult
protected String cword;
public TranslateEngCh(String eword) { this.eword = eword; } }
@Plan(trigger = @Trigger(goals = TranslateEngCh.class)) public String translateEngChPlanA(String ewordString) { System.err.println(\); thrownew PlanFailureException(); //return wordTable.get(ewordString); }
@Plan(trigger = @Trigger(goals=TranslateEngCh.class)) public String translateEngChPlanB(String ewordsString){ System.out.println(\); return wordTable.get(ewordsString); } @AgentBody
publicvoid body() {
String ewordString = \;
String chString = (String) translateAgent.dispatchTopLevelGoal(
new TranslateEngCh(ewordString)).get();
System.out.println(\翻译结果:\ + ewordString + \\ + chString); } }
小的改动,就是增加了另外一个Plan,然后手动使第一个Plan处于失效状态。这样本着能够达到目的的原则,还是去寻找其他的Plan。最终能够完成goal。
5. Goal Creation Condition
package a1;
import java.util.HashMap; import java.util.Map;
import jadex.bdiv3.BDIAgent;
import jadex.bdiv3.annotation.Belief; import jadex.bdiv3.annotation.Goal;
import jadex.bdiv3.annotation.GoalCreationCondition; import jadex.bdiv3.annotation.GoalParameter; import jadex.bdiv3.annotation.GoalResult; import jadex.bdiv3.annotation.Plan; import jadex.bdiv3.annotation.Trigger;
import jadex.micro.annotation.Agent; import jadex.micro.annotation.AgentBody; import jadex.micro.annotation.AgentCreated; import jadex.micro.annotation.Description; @Agent
@Description(\) // @Plans(@Plan(body=@Body(TranslatePlan.class))) publicclassTranslateEngChBDI { @Agent
protected BDIAgent translateAgent;
@Belief
protected String eword; @Belief
protected Map
@AgentCreated publicvoid init() {
this.wordTable = new HashMap
wordTable.put(\, \牛奶\);