JADE:暂停行为并从最后一个点恢复执行



我正在JADE Java Agent Dev'平台上工作,我面临着在等待特定消息时接收消息的问题。

我有一个具有两种行为的代理 第一种行为是接收来自其他代理的消息。 第二个实现代理逻辑。具体如下

action1 ...
send message to an agent
wait for reply // this is blocking
action2 ...

等待回复部分确实等待来自目标代理的结果,该结果满足,因为没有其他代理干扰向此代理发送消息。

问题是当此代理由于操作方法策略而等待回复(将其接收行为)置于暂停状态时。 如果收到回复,则一切正常。但是,如果同时向此代理发送了消息,则接收到的数据是错误的,并且action2部分不再有效。事实上,这种对其他代理消息的干扰应该由接收者行为接收。

我正在考虑在发送消息后暂停该行为。结果终止"action"方法,让ReceiverBehavior接收新消息,当收到相关消息时,它将通知行为并让它恢复。但是,它应该从操作 2 恢复执行。

我希望我足够清楚地解释这个问题。 多谢。

如果我对你不满意,你应该使用消息模板来接收合适的回复。

MessageTemplate mt = ...
ACLMessage aclMessage = myAgent.receive(mt);
if(aclMessage == null){
block(TIMEOUT);
} else {
...
}

最新更新