我在BPMN2.0图中有两个独立的同步“服务任务” - “动作1”和“动作2”。
成功执行“操作1”后,预计会发生外部事件(由BPM引擎管理的系统外部的某些操作)。事件发生后,应立即执行“动作2”(同样,同步服务任务)。
对我而言,复杂的部分是如何定义事件的超时,意味着事件是预期的,但只是一段时间(例如1分钟)......之后,应该执行一些超时错误处理。
因此,动作2应该在动作1之后的0到60秒范围内尽快执行,或者根本不执行。
任何想法如何在不使用异步任务的情况下实现这一目标(见第二张图片)?
我有一些想法(第三张图片),但我不确定它是否会按预期工作......
该图表将在Activiti BPM引擎中执行......
同步执行
异步执行
建议的解决方案
答案 0 :(得分:2)
行动1和2之间需要的是接收任务':请参阅http://activiti.org/userguide/index.html#bpmnReceiveTask。除非完成API调用(v5中的runtimeService.signal,v6中的runtimeService.trigger),否则引擎将不会继续。添加计时器边界事件(如第三张图片所示),以确保进程instanc
答案 1 :(得分:1)
您可以使用EventBasedGateway
,它会等到消息进入或等到一分钟后定时器触发。根据事件,将使用相应的顺序流程并执行下一个活动。
有关EventBasedGateway
。
答案 2 :(得分:0)