2

例如:许可证必须由两名律师和一名工程师审查。如果这三个中的任何一个拒绝它,则该过程进入“拒绝”结束状态。如果所有三个都授予许可,则它进入“授予”结束状态。三名考官可以同时进行检查,也可以按任何顺序进行检查。

一旦一位工程师批准了它,它就不应该被工程师检查;一旦有两名律师检查过,就不应该提供给律师;一旦一名工程师和两名律师进行了检查,它就应该进入授权的最终状态。

我最初的想法是,要么我有一个过于复杂的状态转换图,“相同”的中间状态多次重复,要么我携带(外部)状态,过程 { bool denied; int 工程师SignoffId;int 律师1SignoffId; 诠释律师2SignoffId}。

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

START->FORK->Engineer->Granted?---------------->Y->JOIN-->Granted
          |->Lawyers-->Granted?->by 2 lawyers?->Y---^
                  ^                          |
                  |--------------------------N 

对此的典型 jBPM 答案是什么?您能否指出这些答案的示例或文档?

谢谢。

4

1 回答 1

0

好吧,我不确定我是否正确地得到了你的用例,但让我试试。

被拒绝的最终状态很容易——你可以有很多或一个,没关系。如果该过程达到结束状态,则该过程结束。被拒绝。故事结束: http: //docs.jboss.com/jbpm/v4/userguide/html_single/#end

现在,制作三个人工任务以供接受。一名应分配到工程师候选人组,另外两名应分配到律师候选人组。一旦一个人接受了一项任务(即分配给自己),其他人就不能接受它。 http://docs.jboss.com/jbpm/v4/userguide/html_single/#task

然后,所有人工任务应该在最后合并,一个节点等待所有并发路径才能继续。即:加入正确的多重性: http: //docs.jboss.com/jbpm/v4/userguide/html_single/#decision

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

于 2010-12-24T09:59:12.797 回答