bdi4jade
Changes
.gitignore 2(+2 -0)
Details
.gitignore 2(+2 -0)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3abf6de
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.txt
+*.log
diff --git a/bdi-jade/src/bdi4jade/core/Capability.java b/bdi-jade/src/bdi4jade/core/Capability.java
index 6fc40d2..49ee873 100644
--- a/bdi-jade/src/bdi4jade/core/Capability.java
+++ b/bdi-jade/src/bdi4jade/core/Capability.java
@@ -565,7 +565,7 @@ public class Capability implements Serializable {
return id;
}
- final Collection<Intention> getIntentions() {
+ public final Collection<Intention> getIntentions() {
return intentions;
}
diff --git a/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java b/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
index dc8cc7f..c36b6d5 100644
--- a/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
+++ b/bdi-jade-extensions/src/bdi4jade/extension/remediation/reasoning/RemediationOptionGenerationFunction.java
@@ -88,7 +88,7 @@ public class RemediationOptionGenerationFunction extends RevertingOptionGenerati
// Here a new goal achievement metadata is created
if (this.capability instanceof RevertingCapability) {
- for (Intention intention : this.capability.getMyAgent().getIntentions()) {
+ for (Intention intention : this.capability.getIntentions()) {
if (intention.getGoal().equals(goal)) {
((RevertingCapability) this.capability)
.createGoalAchievementMetadata((PredicateGoal<?>) goal, intention);
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java b/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
index b3dcd79..d41ba8f 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/ManagementCapability.java
@@ -6,8 +6,6 @@ import bdi4jade.annotation.Belief;
import bdi4jade.belief.PredicateBelief;
import bdi4jade.belief.TransientPredicate;
import bdi4jade.core.BDIAgent;
-import bdi4jade.core.Capability;
-import bdi4jade.core.GoalUpdateSet;
import bdi4jade.examples.undo.domain.CO;
import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.Abnormal;
@@ -29,7 +27,6 @@ import bdi4jade.examples.undo.plan.request.RequestDeviceUnlockPlanBody;
import bdi4jade.extension.remediation.RemediationCapability;
import bdi4jade.extension.remediation.graph.CauseEffectRelationship;
import bdi4jade.extension.remediation.logics.Fact;
-import bdi4jade.extension.remediation.reasoning.RemediationOptionGenerationFunction;
import bdi4jade.goal.GoalTemplateFactory;
import bdi4jade.goal.PredicateGoal;
import bdi4jade.plan.DefaultPlan;
@@ -93,8 +90,8 @@ public class ManagementCapability extends RemediationCapability {
@bdi4jade.annotation.Plan
private Plan requestDeviceClosePlan;
- public ManagementCapability(BDIAgent agent, String alarmAgent, String detectorAgent, String doorsAgent, String fansAgent,
- String lightsAgent, String valveAgent, String windowsAgent) {
+ public ManagementCapability(BDIAgent agent, String alarmAgent, String detectorAgent, String doorsAgent,
+ String fansAgent, String lightsAgent, String valveAgent, String windowsAgent) {
super(agent);
this.alarmAgent = alarmAgent;
this.detectorAgent = detectorAgent;
@@ -105,8 +102,7 @@ public class ManagementCapability extends RemediationCapability {
this.windowsAgent = windowsAgent;
setBeliefRevisionStrategy(new MyBeliefRevisionStrategy());
- setOptionGenerationFunction(new MyOptionGenerationFunction(this));
-
+
initializeBeliefs();
initializeCauseEffectKnowledgeModel();
initializePlans();
@@ -182,6 +178,8 @@ public class ManagementCapability extends RemediationCapability {
if (notificationMsg.getContent().equals(NotifyAbnormalCOPlanBody.ABNORMAL_CO)) {
abnormalCO.setValue(true);
leakingWaterHeater.setValue(true);
+ this.capability.getMyAgent().addGoal(this.capability,
+ new PredicateGoal<Abnormal>(new Abnormal(CO.getInstance()), false));
} else {
abnormalCO.setValue(false);
}
@@ -189,20 +187,4 @@ public class ManagementCapability extends RemediationCapability {
}
}
-
- class MyOptionGenerationFunction extends RemediationOptionGenerationFunction {
-
- public MyOptionGenerationFunction(Capability capability) {
- super(ManagementCapability.this);
- }
-
- @Override
- public void generateGoals(GoalUpdateSet goalUpdateSet) {
- if (abnormalCO.getValue()) {
- goalUpdateSet.generateGoal(new PredicateGoal<Abnormal>(new Abnormal(CO.getInstance()), false));
- }
-
- super.generateGoals(goalUpdateSet);
- }
- }
}
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
index 480e777..c679773 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceClosePlanBody.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.Open;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
@@ -34,23 +35,24 @@ public class RequestDeviceClosePlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> valveAgent;
@bdi4jade.annotation.Belief
- private PredicateBelief<Open> valveOpen;
- @bdi4jade.annotation.Belief
private Belief<String, String> windowsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<Open> windowsOpen;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
PredicateGoal<Open> goal = (PredicateGoal<Open>) this.getGoal();
if (goal.getBeliefName().getVariable().equals(House.VALVE)) {
+ TransientPredicate<Open> valveOpen = (TransientPredicate<Open>) this.getCapability().getBeliefBase()
+ .getBelief(new Open(House.VALVE));
manageRequest(MSG_VALVE_CONTENT, valveAgent.getValue(), valveOpen);
}
if (goal.getBeliefName().getVariable().equals(House.WINDOWS)) {
+ TransientPredicate<Open> windowsOpen = (TransientPredicate<Open>) this.getCapability().getBeliefBase()
+ .getBelief(new Open(House.WINDOWS));
manageRequest(MSG_WINDOWS_CONTENT, windowsAgent.getValue(), windowsOpen);
- }
+ }
}
-
+
private void manageRequest(String msgContent, String agentName, PredicateBelief<Open> belief) {
if (!sent) {
sendRequest(msgContent, agentName);
@@ -58,7 +60,7 @@ public class RequestDeviceClosePlanBody extends RevertingPlanBody {
receiveMessage(belief);
}
}
-
+
private void sendRequest(String msgContent, String agentName) {
ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
msg.setContent(msgContent);
@@ -70,7 +72,7 @@ public class RequestDeviceClosePlanBody extends RevertingPlanBody {
this.sent = true;
log.info("Request sent to agent " + agentName + "!");
}
-
+
private void receiveMessage(PredicateBelief<Open> belief) {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
index ea9709b..0f8bdbe 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceLockPlanBody.java
@@ -26,7 +26,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
-import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
+import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.Locked;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
import bdi4jade.extension.undo.RevertingPlanBody;
@@ -52,9 +53,8 @@ public class RequestDeviceLockPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> doorsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<Locked> doorsUnlock;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
if (!sent) {
@@ -71,6 +71,8 @@ public class RequestDeviceLockPlanBody extends RevertingPlanBody {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
+ TransientPredicate<Locked> doorsUnlock = (TransientPredicate<Locked>) this.getCapability()
+ .getBeliefBase().getBelief(new Locked(House.DOORS));
doorsUnlock.setValue(false, this.getGoal());
log.info(reply.getSender() + ": " + reply.getContent());
setEndState(EndState.SUCCESSFUL);
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
index c518830..6bdddc1 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOffPlanBody.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.On;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
@@ -22,7 +23,7 @@ import jade.lang.acl.MessageTemplate;
public class RequestDeviceOffPlanBody extends RevertingPlanBody {
private static final long serialVersionUID = -3091070375458975704L;
-
+
private static final Log log = LogFactory.getLog(RequestDeviceOffPlanBody.class);
public static final String MSG_FANS_CONTENT = "FANS_OFF";
@@ -31,27 +32,27 @@ public class RequestDeviceOffPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> fansAgent;
@bdi4jade.annotation.Belief
- private PredicateBelief<On> fansOn;
-
- @bdi4jade.annotation.Belief
private Belief<String, String> lightsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<On> lightsOn;
-
+
private MessageTemplate mt;
private boolean sent = false;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
PredicateGoal<On> goal = (PredicateGoal<On>) this.getGoal();
if (goal.getBeliefName().getVariable().equals(House.FANS)) {
+ TransientPredicate<On> fansOn = (TransientPredicate<On>) this.getCapability().getBeliefBase()
+ .getBelief(new On(House.FANS));
manageRequest(MSG_FANS_CONTENT, fansAgent.getValue(), fansOn);
}
if (goal.getBeliefName().getVariable().equals(House.LIGHTS)) {
+ TransientPredicate<On> lightsOn = (TransientPredicate<On>) this.getCapability().getBeliefBase()
+ .getBelief(new On(House.LIGHTS));
manageRequest(MSG_LIGHTS_CONTENT, lightsAgent.getValue(), lightsOn);
- }
+ }
}
-
+
private void manageRequest(String msgContent, String agentName, PredicateBelief<On> belief) {
if (!sent) {
sendRequest(msgContent, agentName);
@@ -59,13 +60,13 @@ public class RequestDeviceOffPlanBody extends RevertingPlanBody {
receiveMessage(belief);
}
}
-
+
@Override
public int onEnd() {
this.sent = false;
return super.onEnd();
}
-
+
private void receiveMessage(PredicateBelief<On> belief) {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
index f8eaedd..67342c1 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOnPlanBody.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.On;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
@@ -20,9 +21,9 @@ import jade.lang.acl.MessageTemplate;
*
*/
public class RequestDeviceOnPlanBody extends RevertingPlanBody {
-
+
private static final long serialVersionUID = 6823219775966702413L;
-
+
private static final Log log = LogFactory.getLog(RequestDeviceOnPlanBody.class);
public static final String MSG_FANS_CONTENT = "FANS_ON";
@@ -31,27 +32,27 @@ public class RequestDeviceOnPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> fansAgent;
@bdi4jade.annotation.Belief
- private PredicateBelief<On> fansOn;
-
- @bdi4jade.annotation.Belief
private Belief<String, String> lightsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<On> lightsOn;
-
+
private MessageTemplate mt;
private boolean sent = false;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
PredicateGoal<On> goal = (PredicateGoal<On>) this.getGoal();
if (goal.getBeliefName().getVariable().equals(House.FANS)) {
+ TransientPredicate<On> fansOn = (TransientPredicate<On>) this.getCapability().getBeliefBase()
+ .getBelief(new On(House.FANS));
manageRequest(MSG_FANS_CONTENT, fansAgent.getValue(), fansOn);
}
if (goal.getBeliefName().getVariable().equals(House.LIGHTS)) {
+ TransientPredicate<On> lightsOn = (TransientPredicate<On>) this.getCapability().getBeliefBase()
+ .getBelief(new On(House.LIGHTS));
manageRequest(MSG_LIGHTS_CONTENT, lightsAgent.getValue(), lightsOn);
- }
+ }
}
-
+
private void manageRequest(String msgContent, String agentName, PredicateBelief<On> belief) {
if (!sent) {
sendRequest(msgContent, agentName);
@@ -59,13 +60,13 @@ public class RequestDeviceOnPlanBody extends RevertingPlanBody {
receiveMessage(belief);
}
}
-
+
@Override
public int onEnd() {
this.sent = false;
return super.onEnd();
}
-
+
private void receiveMessage(PredicateBelief<On> belief) {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
index 1f953d5..c3d27d6 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceOpenPlanBody.java
@@ -5,6 +5,7 @@ import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.Open;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
@@ -34,23 +35,24 @@ public class RequestDeviceOpenPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> valveAgent;
@bdi4jade.annotation.Belief
- private PredicateBelief<Open> valveOpen;
- @bdi4jade.annotation.Belief
private Belief<String, String> windowsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<Open> windowsOpen;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
PredicateGoal<Open> goal = (PredicateGoal<Open>) this.getGoal();
if (goal.getBeliefName().getVariable().equals(House.VALVE)) {
+ TransientPredicate<Open> valveOpen = (TransientPredicate<Open>) this.getCapability().getBeliefBase()
+ .getBelief(new Open(House.VALVE));
manageRequest(MSG_VALVE_CONTENT, valveAgent.getValue(), valveOpen);
}
if (goal.getBeliefName().getVariable().equals(House.WINDOWS)) {
+ TransientPredicate<Open> windowsOpen = (TransientPredicate<Open>) this.getCapability().getBeliefBase()
+ .getBelief(new Open(House.WINDOWS));
manageRequest(MSG_WINDOWS_CONTENT, windowsAgent.getValue(), windowsOpen);
- }
+ }
}
-
+
private void manageRequest(String msgContent, String agentName, PredicateBelief<Open> belief) {
if (!sent) {
sendRequest(msgContent, agentName);
@@ -58,7 +60,7 @@ public class RequestDeviceOpenPlanBody extends RevertingPlanBody {
receiveMessage(belief);
}
}
-
+
private void sendRequest(String msgContent, String agentName) {
ACLMessage msg = new ACLMessage(ACLMessage.REQUEST);
msg.setContent(msgContent);
@@ -70,7 +72,7 @@ public class RequestDeviceOpenPlanBody extends RevertingPlanBody {
this.sent = true;
log.info("Request sent to agent " + agentName + "!");
}
-
+
private void receiveMessage(PredicateBelief<Open> belief) {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
index de8fb12..1518590 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceShutdownPlanBody.java
@@ -26,7 +26,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
-import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
+import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.TakeOff;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
import bdi4jade.extension.undo.RevertingPlanBody;
@@ -52,9 +53,8 @@ public class RequestDeviceShutdownPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> alarmAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<TakeOff> alarmTakeOff;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
if (!sent) {
@@ -71,6 +71,8 @@ public class RequestDeviceShutdownPlanBody extends RevertingPlanBody {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
+ TransientPredicate<TakeOff> alarmTakeOff = (TransientPredicate<TakeOff>) this.getCapability()
+ .getBeliefBase().getBelief(new TakeOff(House.ALARM));
alarmTakeOff.setValue(false, this.getGoal());
log.info(reply.getSender() + ": " + reply.getContent());
setEndState(EndState.SUCCESSFUL);
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
index db8c8e0..ad259fe 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceTakeOffPlanBody.java
@@ -5,6 +5,8 @@ import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
+import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.TakeOff;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
import bdi4jade.extension.undo.RevertingPlanBody;
@@ -18,7 +20,7 @@ import jade.lang.acl.MessageTemplate;
*
*/
public class RequestDeviceTakeOffPlanBody extends RevertingPlanBody {
-
+
private static final long serialVersionUID = 8041605409336004689L;
private static final Log log = LogFactory.getLog(RequestDeviceTakeOffPlanBody.class);
@@ -33,6 +35,7 @@ public class RequestDeviceTakeOffPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private PredicateBelief<TakeOff> alarmTakeOff;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
if (!sent) {
@@ -49,6 +52,8 @@ public class RequestDeviceTakeOffPlanBody extends RevertingPlanBody {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
+ TransientPredicate<TakeOff> alarmTakeOff = (TransientPredicate<TakeOff>) this.getCapability()
+ .getBeliefBase().getBelief(new TakeOff(House.ALARM));
alarmTakeOff.setValue(true, this.getGoal());
log.info(reply.getSender() + ": " + reply.getContent());
setEndState(EndState.SUCCESSFUL);
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
index 8678254..835a5ad 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/plan/request/RequestDeviceUnlockPlanBody.java
@@ -4,7 +4,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import bdi4jade.belief.Belief;
-import bdi4jade.belief.PredicateBelief;
+import bdi4jade.belief.TransientPredicate;
+import bdi4jade.examples.undo.domain.House;
import bdi4jade.examples.undo.domain.predicate.Locked;
import bdi4jade.examples.undo.plan.AnswerRequestPlanBody;
import bdi4jade.extension.undo.RevertingPlanBody;
@@ -30,9 +31,8 @@ public class RequestDeviceUnlockPlanBody extends RevertingPlanBody {
@bdi4jade.annotation.Belief
private Belief<String, String> doorsAgent;
- @bdi4jade.annotation.Belief
- private PredicateBelief<Locked> doorsUnlock;
+ @SuppressWarnings("unchecked")
@Override
protected void execute() {
if (!sent) {
@@ -49,6 +49,8 @@ public class RequestDeviceUnlockPlanBody extends RevertingPlanBody {
ACLMessage reply = myAgent.receive(mt);
if (reply != null) {
if (reply.getContent().equals(AnswerRequestPlanBody.SUCCEEDED)) {
+ TransientPredicate<Locked> doorsUnlock = (TransientPredicate<Locked>) this.getCapability()
+ .getBeliefBase().getBelief(new Locked(House.DOORS));
doorsUnlock.setValue(true, this.getGoal());
log.info(reply.getSender() + ": " + reply.getContent());
setEndState(EndState.SUCCESSFUL);
diff --git a/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java b/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
index e010af9..e76fb6e 100644
--- a/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
+++ b/bdi-jade-test/src/bdi4jade/examples/undo/Runner.java
@@ -113,42 +113,42 @@ public class Runner {
this.alarmAgent = new SmartHomeAgent("ALARM");
this.alarmAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceTakeOffPlanBody.MSG_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceTakeOffPlanBody.MSG_CONTENT),
MessageTemplate.MatchContent(RequestDeviceShutdownPlanBody.MSG_CONTENT)),
AnswerRequestPlanBody.class));
this.lightsAgent = new SmartHomeAgent("LIGHTS");
this.lightsAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceOnPlanBody.MSG_LIGHTS_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceOnPlanBody.MSG_LIGHTS_CONTENT),
MessageTemplate.MatchContent(RequestDeviceOffPlanBody.MSG_LIGHTS_CONTENT)),
AnswerRequestPlanBody.class));
this.doorsAgent = new SmartHomeAgent("DOORS");
this.doorsAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceUnlockPlanBody.MSG_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceUnlockPlanBody.MSG_CONTENT),
MessageTemplate.MatchContent(RequestDeviceLockPlanBody.MSG_CONTENT)),
AnswerRequestPlanBody.class));
this.windowsAgent = new SmartHomeAgent("WINDOWS");
this.windowsAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceOpenPlanBody.MSG_WINDOWS_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceOpenPlanBody.MSG_WINDOWS_CONTENT),
MessageTemplate.MatchContent(RequestDeviceClosePlanBody.MSG_WINDOWS_CONTENT)),
AnswerRequestPlanBody.class));
this.fansAgent = new SmartHomeAgent("FANS");
this.fansAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceOnPlanBody.MSG_FANS_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceOnPlanBody.MSG_FANS_CONTENT),
MessageTemplate.MatchContent(RequestDeviceOffPlanBody.MSG_FANS_CONTENT)),
AnswerRequestPlanBody.class));
this.valveAgent = new SmartHomeAgent("VALVE");
this.valveAgent.getCapability().getPlanLibrary()
.addPlan(new DefaultPlan(
- MessageTemplate.and(MessageTemplate.MatchContent(RequestDeviceOpenPlanBody.MSG_VALVE_CONTENT),
+ MessageTemplate.or(MessageTemplate.MatchContent(RequestDeviceOpenPlanBody.MSG_VALVE_CONTENT),
MessageTemplate.MatchContent(RequestDeviceClosePlanBody.MSG_VALVE_CONTENT)),
AnswerRequestPlanBody.class));