BPMN并行任务调用相同的进程

时间:2014-05-20 12:10:10

标签: activiti bpm bpmn business-process

我想建模一个BPMN流程,其中两个并行任务正在验证两个独立的表单。如果其中任何一个表格无效,那么我们必须致电客户并申请新表格。问题是,我不想打电话给客户关于表单1和单独关于表单2 - 如果两个表单都无效,我只想给他打电话一次。

有没有办法在调度电话客户任务之前检查两个验证是否都已完成?

然后我还有另一个问题 - 如何在客户被召唤后重新进入流程?如果一个表单无效,我想在收到新表单时重新输入相应的表单验证过程,如果两个表单都无效,则应在两个子进程中重新进入。

如果重要的话,我正在使用Activiti来实现它。

BPMN sketch

修改

每个进程中的验证任务可以相隔数天,并且由于其他子进程中的验证,我不想阻止子进程。我正在寻求一个解决方案,其中子流程将继续通过验证(如果它有效),并且只有当两个验证任务都完成时才会进行客户调用(并且其中至少有一个是无效的)。

3 个答案:

答案 0 :(得分:1)

好的,所以这里的根本问题是我们有4个状态 - 有效/有效,无效/有效,有效/无效和无效/无效。现在,我们可以忽略有效/有效,因为我认为这是一个快乐的路径模型,你已经知道如何使这项工作。那么我们可以为无效选项做些什么。

我得到的一件事是,在表单有效后,您需要“下一步”才能继续,即使其他表单尚未经过验证。我想你想要做的只是改变处理无效的过程。我认为一个事件门户可能会让我们在那里。

现在,我的经验主要是IBM BPM,而不是Activity,因此这个答案有可能不是有效的BPMN,但我认为是。基本上我想说的是你的初始分割实际上是4路分割。你现在拥有2个表单,2个表示事件网关。那些事件网关正在等待每个表单发送“有效”或“无效”消息。当收到两者的答案时,它会知道下一步是简单地结束流程的那部分,还是确定有效性。

在IBM BPM中,该模型看起来大致如此(抱歉,我的Activiti VM现在已经关闭)

BPMN Diagram

我之前没有尝试过图表。该链接是 - http://imgur.com/pEHY9uO

答案 1 :(得分:1)

为了扩展Drux的解决方案,下图是使用Activiti Modeler构建的

Parallel Evaluation

这里,在两个表单的表单验证之后发送信号事件。 捕获事件然后进行关联,以确定是否需要将电子邮件发送给客户。

虽然下面的图表没有显示,但是对于表单同时具有“状态”意味着如果需要,我们也可以触发重新输入一个或两个表单子流程。

希望这会有所帮助。 Gharley-BP3

答案 2 :(得分:0)

您可以并行执行验证,然后使用并行网关合并这两个路径。在BPMN中,合并并行网关等待所有传入流。 关于第二个问题,您可以简单地使用几个专用网关。附件是一个基于文本描述的示例过程。 它是有效的BPMN。但是,我不是活动专家,因此我不知道是否存在任何特定于活动的问题。 enter image description here