如何将系统驻留时长超阈值的Agent发送至Sink block
实现方案
完全可以基于Agent的系统驻留时长参数实现该逻辑,你截图里的建模工具本身已经提供了足够的内置能力,不需要额外开发复杂的自定义逻辑,具体可参考两种落地方式:
- 全局轮询判断方式
直接调用Agent内置的timeSinceCreation()方法获取驻留时长,这个参数从Agent进入模型环境开始自动累计,时间单位和你模型全局设置的时间单位保持一致,不需要手动写计时逻辑。你只需要在模型中添加一个循环触发的事件组件,触发间隔设置为1天(匹配你的阈值精度即可),事件触发时遍历所有活跃状态的Agent,对满足agent.timeSinceCreation() >= 180判断条件的Agent,直接调用agent.moveTo(writeOff)方法,即可强制中断Agent当前所处的任何流程状态,直接流转到核销模块。 - 动态事件绑定方式(性能更优,适合大Agent量级场景)
在Agent首次进入系统流程的节点,给当前Agent注册一个延迟180天触发的动态事件,事件触发时先判断Agent是否还在系统内未完成正常流转,如果是就直接将其发送到write-off核销模块。这种方式不需要全局遍历所有Agent,运行效率更高。
注意:如果你的模型存在Agent暂时离开主系统、进入独立子环境的场景,且这段时间不计入系统驻留时长,就不要直接用内置的
timeSinceCreation()参数,可以自定义一个双精度类型的stayDuration参数,在Agent进入主流程时启动累计、离开主系统范围时暂停计时,用这个自定义参数做阈值判断即可,避免时长统计偏差。
模型参考截图如下:
内容的提问来源于stack exchange,提问作者dnyanesh ambhore
相关产品推荐
相关产品推荐

