我正在尝试创建一个代理状态图,每天下午4点(周末除外)应该进行转换。
我已经尝试过:1。条件转换(条件:getHourOfDay()== 16)2:超时转换,每隔1秒将我的代理“重新插入”图表并检查时间是否为16。
我的代码仍未运行,有没有人知道如何解决它?
这是我的状态图视图。客户是一种单一资源,应该每天下午4点从我的库存中“获取”产品。它应该发生在“活动”状态。
我设置了每1秒运行一次的超时转换(来自Active-Active)。
在“入口行动”中的“活动”状态内,我编写了我的代码,以检查是否是下午4点,然后运行我的操作。
我想,因为我设置了超时转换,它会每隔1秒检查一次我的情况,但显然它不起作用。
出于性能原因,请勿使用基于条件的转换。在您的情况下,它也永远不会触发,因为它仅在模型中发生某些事情时进行评估。顺便说一下,下午4点情况并非如此。
重新启动超时方法:为什么要将代理“重新插入”自己的状态图?不确定我理解......
为什么不设置具有重复发生要求的计划或事件,并使其向状态图发送消息:stateChart.fireEvent("trigger!");
。在状态图中,添加等待此消息的基于消息的转换。这会奏效。
但是要小心理解Statechart.fireEvent()
和Statechart.receiveMessage()
函数之间的区别。
PS:并同意Felipe:请按照其意图开始使用SOF,即将回复标记为已解决。它帮助我们以及未来的用户快速找到解决方案:-)欢呼