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

Workflow 如何在jBPM/activiti/YAWL中实现内容驱动的工作流?,workflow,jbpm,activiti,yawl,Workflow,Jbpm,Activiti,Yawl,我需要一个带有人工任务的工作流,其中每个节点都可以在任何执行点重新访问 /A1 -- B1 \ / \ Start - AND AND - End \ / \ A1 --- B2/ 因此,即使当前执行在B2,用户也可以转到A1(假设A1被分配给同一用户并且已经完成) 我如何在jBPM/Activiti中对这种行为建模?因为任务一旦完成就会从执行链中删除 是否

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

          /A1 -- B1 \
         /           \
 Start - AND          AND - End
         \            /
          \ A1 --- B2/
因此,即使当前执行在B2,用户也可以转到A1(假设A1被分配给同一用户并且已经完成)

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


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

我担心这很难实现,因为BPMN是故意无状态的

假设您在
末尾
,并希望返回到
A1
。这意味着进程令牌以某种方式传送到
A1
,流到
B1
,流到第二个
,然后。。。我们被困在这里了。据我所知,
表示BPMN并行网关。它不允许我们进一步,因为它需要两个输入令牌同时产生一个输出令牌

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

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

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


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

感谢您花时间阅读和回复。原则上完全同意你。我最终走上了FSM的道路——设计并实现了一个架构,让我能够做到这一点。