我需要一个包含人工任务的工作流程,其中每个节点都可以在任何执行点重新访问。
/A1 -- B1 \
/ \
Start - AND AND - End
\ /
\ A1 --- B2/
因此,即使当前执行处于B2,用户也可以转到A1(假设A1已分配给同一用户且已完成)。
如何在jBPM / Activiti中建模此行为 - 因为从执行链中删除了一次完成的任务?
是否还有其他工作流引擎可以让我这样做?
答案 0 :(得分:1)
我担心这很难实现,因为BPMN故意无国籍。
假设您在End
,并希望返回A1
。这意味着进程令牌以某种方式传送到A1
,流向B1
,传递到第二个AND
并且...我们被困在这里。据我了解,AND
表示BPMN并行网关。并且它不允许我们更进一步,因为它需要一次输入两个令牌以产生输出令牌。
可能你可以采用另一种方法,称为有限状态机。想象一下,流经工作流程的文档(内容,令牌等)具有state
属性,该属性可以是以下几个值之一:Start
,A1
等。除此之外,您还有一个以下格式的转换表:
from | to
----------
Start | AND
AND | A1
AND | A2
因此,您的系统知道AND
跟随Start
。该表实际上并没有指定经典的有限状态机,因为它定义了一个非函数关系;换句话说,任何状态都可以跟随两个或多个状态,如图中所示。这取决于你如何实现这一点。也许您可以创建实例的两个副本,或者使用组合的状态属性,这是一个值列表。
但无论如何,在这种方法中,1)系统知道如何自动切换状态; 2)您可以构建一个UI来手动切换它们。
如果您选择使用它们,工作流/状态机库的选择取决于您的平台,编程语言和要求。