我想实现在我的jbpm项目的任何用户任务中终止流程实例的能力。我知道理论上我应该能够在我的工作流程中附加到任何任务的终止事件中执行此操作,但这似乎是一个糟糕的解决方案,因为有这么多的终止事件。
有更好,更有效,更易读的方法吗?
答案 0 :(得分:2)
我不知道这是否更好,但你可以这样做:
kcontext.getProcessInstance().signalEvent("terminate",null);
,其中"终止"是您的信号事件捕获的信号名称。 在这里,您可以看到一种方法:http://s7.postimg.org/p6ktmvz0r/Screen_Shot_2015_01_18_at_19_45_48.png
答案 1 :(得分:0)
我们最终构建的应用程序使用了与JBPM服务连接的自定义前端。
要在任何步骤终止进程,我们在创建时在我们自己的数据库中记录了主进程实例ID。然后我们创建了一个取消项目'在单个主进程ID下递归收集所有进程ID的函数,然后通过远程API终止它们,从主进程ID开始。
请注意,如果执行此操作,则需要从主进程开始中止流程实例列表,然后继续前进。如果你不这样做,首先中止子进程可以产生更多的进程。