Concurrency 我如何在jBPM中表示并发操作,其中任何一个都可以结束一个进程?

Concurrency 我如何在jBPM中表示并发操作,其中任何一个都可以结束一个进程?,concurrency,jbpm,subprocess,Concurrency,Jbpm,Subprocess,例如:许可证必须由两名律师和一名工程师审查。如果这三者中的任何一个拒绝了它,流程将进入“拒绝”结束状态。如果三者都授予许可,则进入“授予”的结束状态。所有三名主考人可同时或按任何顺序进行考试 一旦一名工程师批准,就不应该让工程师检查;一旦有两位律师审查了它,律师就不应该得到它;一旦一名工程师和两名律师对其进行了检查,应进入授权的最终状态 我最初的想法是,要么我有一个过于复杂的状态转换图,“相同”的中间状态成倍重复,要么我携带(外部)状态,进程{bool rejected;int engineer

例如:许可证必须由两名律师和一名工程师审查。如果这三者中的任何一个拒绝了它,流程将进入“拒绝”结束状态。如果三者都授予许可,则进入“授予”的结束状态。所有三名主考人可同时或按任何顺序进行考试

一旦一名工程师批准,就不应该让工程师检查;一旦有两位律师审查了它,律师就不应该得到它;一旦一名工程师和两名律师对其进行了检查,应进入授权的最终状态

我最初的想法是,要么我有一个过于复杂的状态转换图,“相同”的中间状态成倍重复,要么我携带(外部)状态,进程{bool rejected;int engineerinesignoffid;int lawyer1SignoffId;int lawyer2SignoffId}

还是像这样?如果是,工程师的拒绝如何终止“律师”中的子流程

jBPM的标准答案是什么?你能给我举出这些答案的例子或文件吗


谢谢。

好吧,我不确定是否正确获取了您的用例,但让我试试

被拒绝的结束状态很容易-你可以有很多或一个,这并不重要。如果进程达到结束状态,则进程结束。拒绝。故事结束:

现在,制作三个人工任务以供验收。一名应分配给工程师候选人组,另两名分配给律师候选人组。一旦一个人承担了一项任务(即分配给他自己),其他人就无法承担。

然后,所有人工任务应在最后与等待所有并发路径的节点合并,以便继续。即:以正确的多重性连接:


我不确定您使用的是哪个JBPM版本,但如果您使用JBPM 5,当然在BPMN 2.0中也可以这样做

嗯,我不确定我是否正确获得了您的用例,但让我试试

被拒绝的结束状态很容易-你可以有很多或一个,这并不重要。如果进程达到结束状态,则进程结束。拒绝。故事结束:

现在,制作三个人工任务以供验收。一名应分配给工程师候选人组,另两名分配给律师候选人组。一旦一个人承担了一项任务(即分配给他自己),其他人就无法承担。

然后,所有人工任务应在最后与等待所有并发路径的节点合并,以便继续。即:以正确的多重性连接:


我不确定您使用的是哪个JBPM版本,但如果您使用JBPM 5,当然在BPMN 2.0中也可以这样做

这是一个老掉牙的问题,但出于好奇,你在谈论哪个版本的jBPM:3、4或5?这是一个老掉牙的问题,但出于好奇,你在谈论哪个版本的jBPM:3、4或5?
START->FORK->Engineer->Granted?---------------->Y->JOIN-->Granted
          |->Lawyers-->Granted?->by 2 lawyers?->Y---^
                  ^                          |
                  |--------------------------N