我正在尝试访问消息的发送方(发送方是个人代理),以评估发送方和接收方之间的连接,作为过渡的条件。 在anylogic帮助中,它说您可以使用msg访问有效的邮件内容,并使用sender访问发件人。
我尝试使用sender = msgSender
其中msgSender是变量。
但是我收到错误消息sender cannot be resolved to a variable
我正在尝试访问消息的发送方(发送方是个人代理),以评估发送方和接收方之间的连接,作为过渡的条件。 在anylogic帮助中,它说您可以使用msg访问有效的邮件内容,并使用sender访问发件人。
我尝试使用sender = msgSender
其中msgSender是变量。
但是我收到错误消息sender cannot be resolved to a variable
将消息发送到Link to agent
对象,而不是直接发送到状态图。
如果您的消息是通过Link to agent
块到达的,则可以访问发件人,例如默认的connections
块,请参见下文:
在其中,您可以决定将邮件转发到状态图(如果发件人是正确的)。
,代理的connections
元素(默认为与代理的链接)接收发送给该代理的所有消息(默认情况下,这些消息也将传递给任何状态图) ,但您可以在connections
属性中进行控制)。如果消息来自双向连接,则为例外(在这种情况下,消息只能在“远端”代理中的 链接到代理中访问)。 / p>
如果您有一组从母亲到孩子的单向连接(例如,从母亲类型的座席到孩子类型的座席,而母亲中的指向座席的链接称为children
),那么您可以在子代理的默认connections
元素中访问消息和发件人(使用您在帮助中提到的关键字)。
您还需要确保通过适当的指向代理的链接将消息发送给所有连接的。所以你需要像这样的东西:
(a)在母亲代理人中:
children.sendToAllConnected("Hello");
(b)在子级代理connections
中收到消息时操作:
traceln("Got message " + msg + " from sender " + sender);
(在您的情况下,显然您会根据发件人执行逻辑操作。)
P.S。您说您正在尝试做sender = msgSender
。这不太有意义:您是否试图将消息发件人设置?您不能这样做:sender
仅在接收代理的链接到代理操作中可用,并且始终引用实际的发送者代理。 (例如,您不能“伪造”发件人,也不必进行设置。)