Hybris订单业务流程自定义动作轮询间隔配置方法咨询
Hybris 自定义业务流程轮询间隔实现方案
原生<wait>节点仅支持设置单次等待总超时,没有内置的轮询间隔配置项,可通过「短超时等待节点+状态检查动作+循环跳转」的组合结构实现自定义间隔轮询,具体实现如下:
- 核心逻辑:将单次长等待拆分为N次短等待,每次等待到预设的轮询间隔后触发状态检查,未满足结束条件则重新进入等待节点,直至触发事件、满足业务条件或达到总超时阈值。
配置示例
<!-- 轮询等待节点:单次等待时长设为目标轮询间隔10分钟 --> <wait id='waitForOrderConfirmation' then='checkOrder' prependProcessCode='true'> <event>confirm</event> <!-- 单次轮询间隔10分钟,超时后进入状态检查动作 --> <timeout delay='PT10M' then='checkOrderConfirmationStatus'/> </wait> <!-- 状态检查动作节点:校验业务结果、判断轮询是否继续 --> <action id='checkOrderConfirmationStatus' bean='orderConfirmationCheckService'> <!-- 业务未完成:回到等待节点进入下一轮轮询 --> <transition name="UNFINISHED" to="waitForOrderConfirmation"/> <!-- 业务已完成:走后续正常流程 --> <transition name="FINISHED" to="checkOrder"/> <!-- 累计等待达到总阈值12小时:走取消流程 --> <transition name="TOTAL_TIMEOUT" to="asmCancelOrder"/> </action>
配套实现要求
- 自行实现
orderConfirmationCheckService的业务校验逻辑:每次触发时判断特定动作是否返回预期结果,同时可通过对比订单创建时间与当前时间的差值,或在流程变量中存储累计等待时长,当累计时长达到12小时时返回TOTAL_TIMEOUT状态即可触发取消逻辑。 - 如果业务允许忽略秒级误差,直接用订单创建时间计算总等待时长即可,无需额外存储流程变量,实现更简洁。
内容的提问来源于stack exchange,提问作者Nexussim Lements
相关产品推荐
相关产品推荐

