如何在jBPM / activiti / YAWL中实现内容驱动的工作流程?

时间:2013-08-25 16:20:40

标签: workflow jbpm activiti yawl

我需要一个包含人工任务的工作流程,其中每个节点都可以在任何执行点重新访问。

          /A1 -- B1 \
         /           \
 Start - AND          AND - End
         \            /
          \ A1 --- B2/

因此,即使当前执行处于B2,用户也可以转到A1(假设A1已分配给同一用户且已完成)。

如何在jBPM / Activiti中建模此行为 - 因为从执行链中删除了一次完成的任务?

是否还有其他工作流引擎可以让我这样做?

1 个答案:

答案 0 :(得分:1)

我担心这很难实现,因为BPMN故意无国籍。

假设您在End,并希望返回A1。这意味着进程令牌以某种方式传送到A1,流向B1,传递到第二个AND并且...我们被困在这里。据我了解,AND表示BPMN并行网关。并且它不允许我们更进一步,因为它需要一次输入两个令牌以产生输出令牌。

可能你可以采用另一种方法,称为有限状态机。想象一下,流经工作流程的文档(内容,令牌等)具有state属性,该属性可以是以下几个值之一:StartA1等。除此之外,您还有一个以下格式的转换表:

from  | to
----------
Start | AND
AND   | A1
AND   | A2

因此,您的系统知道AND跟随Start。该表实际上并没有指定经典的有限状态机,因为它定义了一个非函数关系;换句话说,任何状态都可以跟随两个或多个状态,如图中所示。这取决于你如何实现这一点。也许您可以创建实例的两个副本,或者使用组合的状态属性,这是一个值列表。

但无论如何,在这种方法中,1)系统知道如何自动切换状态; 2)您可以构建一个UI来手动切换它们。

如果您选择使用它们,工作流/状态机库的选择取决于您的平台,编程语言和要求。