【问题标题】:How do I represent concurrent actions in jBPM, any of which can end a process?我如何在 jBPM 中表示并发操作,其中任何一个都可以结束流程?
【发布时间】:2010-12-26 19:22:24
【问题描述】:

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

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

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

或者类似的东西?如果是这样,工程师的拒绝如何终止“律师”中的子流程?

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

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

谢谢。

【问题讨论】:

  • 这是一个很老的问题,但出于好奇,您说的是哪个版本的 jBPM:3、4 还是 5?

标签: concurrency jbpm subprocess


【解决方案1】:

好吧,我不确定我是否能正确理解您的用例,但让我试试。

被拒绝的最终状态很容易——你可以有很多或一个,没关系。如果该过程达到结束状态,则该过程结束。被拒绝。故事结局: 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 中也是可能的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 2013-01-26
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多