业务流程管理解决方案中的中断处理

本部分将介绍业务流程管理解决方案中使用的中断处理机制。 使用中断机制可以在订单更新或取消时停止订单处理。

中断处理

实现处理阶段的业务流程调用业务流程 CheckInterrupt,用于测试来自进程其他某个部分的中断请求。 CheckInterrupt 业务流程由 Listen 形状组成。 侦听形状的一个分支会检查与当前订单具有相同关联 ID 的消息。 如果有此类消息, CheckInterrupt 业务流程会发送确认消息并执行 Throw 形状。 由于 “侦听 ”形状中的分支是从左到右执行的,因此延迟出现在右分支中。 请注意,延迟时间为零 (0)。

侦听形状、接收分支和延迟分支的组合允许业务流程为消息检查。 如果存在中断消息,则将执行左侧分支。 如果不存在任何消息,则将执行右侧分支并返回到调用方业务流程。 可以随时发送中断消息。 由于 CheckInterrupt 业务流程只是偶尔运行,因此可能有中断消息等待它。

OrderManager 通过调用中断器业务流程来设置中断中断器业务流程将中断消息发送到 InterruptPort 并等待答复。 如果未收到回复,业务流程使用封闭范围形状的 Timeout 属性重启循环。 只要作用域在收到回复之前超时,该业务流程就会继续发送中断消息。 超时表示请求与某个订阅相匹配,但没有时间进行答复。 如果存在回复,或者没有 对 InterruptPort 的订阅,则循环将结束。

OrderManager 用于进程阶段的请求-响应-完成模式是中断处理的关键部分。 由于 OrderManager 等待阶段的响应(确认),因此它知道该阶段已开始运行,然后再继续。 这样确保了在阶段开始之前该阶段不能接收中断。 这也使 OrderManager 知道,如果没有中断订阅,则阶段已完成。

另请参阅

业务流程管理解决方案中的处理
进程管理器逻辑
ExceptionHandler 业务流程