【发布时间】:2020-11-13 06:17:49
【问题描述】:
我有一个相当简单的过程:
订单代理类型被批处理为批处理代理类型,然后将第三种代理类型作为该批处理的资源。占用时,会向资源代理的状态图发送一条消息,以便采取一些行动。但是,如果在收到消息后满足某个条件,则 Batch 代理需要释放资源代理并占用另一个资源代理才能完成该过程。我在 Resource 代理中编写了代码,当它被拒绝 (rejectionsCollection.add(Batch)) 时,它会将被拒绝的 Batch 代理添加到上面显示的集合中。然后,使用注入调用将批处理代理重新插入到第二个源块中,并且我使用rejectionsCollection.get(0) 编写了“新代理”选项。但是,我还必须在抓住和延迟块中调用remove(),否则会出现流程图错误(同时在两个块中使用相同的代理)。
当我使用seize.remove(batch) 作为条件满足时采取的操作,但问题是资源代理没有被释放。我还设置了获取高级选项“已取消的单位”等于“去发布”,并将“为已取消的单位发布”设置为我的发布块,但这不起作用。第三个代理仍然被占用,最终我用完了资源代理(这不应该发生)。
我也尝试将其复制到 NewBatch 代理 Batch newBatch = batch;,但它仍然给出流程图错误。我也尝试过使用clone(),但我还没有找到正确的语法(我不是最有经验的java程序员)。我收到“无法从对象转换为批处理”的错误消息。不确定它是否相关,但 Batch 代理中也有两个集合。
我的下一个想法是我可以手动释放资源代理,但帮助文件说即使获取的资源可以公开访问,用户也不应该这样做。我还能尝试什么?
对文字墙感到抱歉,但任何想法都值得赞赏!
【问题讨论】:
标签: anylogic