BPM中的中间事件或计时器

时间:2016-09-19 21:05:58

标签: jbpm activiti bpmn bpm

我在BPMN2.0图中有两个独立的同步“服务任务” - “动作1”和“动作2”。

成功执行“操作1”后,预计会发生外部事件(由BPM引擎管理的系统外部的某些操作)。事件发生后,应立即执行“动作2”(同样,同步服务任务)。

对我而言,复杂的部分是如何定义事件的超时,意味着事件是预期的,但只是一段时间(例如1分钟)......之后,应该执行一些超时错误处理。

因此,动作2应该在动作1之后的0到60秒范围内尽快执行,或者根本不执行。

任何想法如何在不使用异步任务的情况下实现这一目标(见第二张图片)?

我有一些想法(第三张图片),但我不确定它是否会按预期工作......

该图表将在Activiti BPM引擎中执行......

同步执行

Synchronous execution

异步执行

Async excecution

建议的解决方案

enter image description here

3 个答案:

答案 0 :(得分:2)

行动1和2之间需要的是接收任务':请参阅http://activiti.org/userguide/index.html#bpmnReceiveTask。除非完成API调用(v5中的runtimeService.signal,v6中的runtimeService.trigger),否则引擎将不会继续。添加计时器边界事件(如第三张图片所示),以确保进程instanc

答案 1 :(得分:1)

您可以使用EventBasedGateway,它会等到消息进入或等到一分钟后定时器触发。根据事件,将使用相应的顺序流程并执行下一个活动。

EventBasedGateway

有关EventBasedGateway

的详情,请参阅documenation

答案 2 :(得分:0)

另一种选择是使用边界计时器事件将消息接收事件和动作2包装在嵌入式子进程中