0

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

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

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

我如何在 jBPM/Activiti 中对这种行为进行建模 - 因为一旦完成任务就会从执行链中删除?

是否有任何其他工作流引擎允许我这样做?

4

1 回答 1

0

恐怕这很难实现,因为 BPMN 是故意无状态的。

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

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

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

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

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

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

于 2013-11-18T11:17:53.170 回答