Alfresco Activiti - 创建同一子流程的多个实例

时间:2018-01-13 19:09:31

标签: groovy alfresco activiti bpmn alfresco-enterprise

对于一个我开始质疑甚至可能的过程,我看起来似乎是一个相当简单的要求。

下图显示了我当前的流程。我想要实现两件事:

  1. 用户创建初始用户任务以添加注释,他们应该能够根据需要添加任意数量的注释,每个注释包含一个用户任务

  2. 为用户创建的每个新笔记(用户任务)生成一个新的子流程。

  3. Example Process

    上述过程存在以下问题:

    • 应为每项任务生成一个子流程,但它们似乎互相覆盖

    • 我不确定子流程是否需要为每个新生成的子流程生成唯一ID

2 个答案:

答案 0 :(得分:1)

事实证明,此问题的解决方案需要使用insert1/2/3进行一些脚本编写。

下面是更新的流程模型图,其中我使用脚本任务启动groovy进程的新实例然后如果用户希望添加更多任务,则独占网关可以将用户返回到Create任务(用户任务) OR 完成该过程。

在将范围传回用户任务之前,我清除脚本任务中用户任务中保留的字段中的任何值。

Update Process

下图显示了我的完成任务进程,主进程使用脚本调用该进程

Complete Task

这里我避免使用Complete Task而不是创建创建任务(用户任务)的新实例以及完成任务进程的新实例(不是子流程)通过脚本的方式。

要启动Complete Task流程的新实例,我们必须使用parallel gateways实例下的函数startProcessInstanceByKeyAndTenantId()启动流程,尽管我也可以使用runtimeService

startProcessInstanceByIdAndTenantId()

使用这种方法,我避免从父进程创建多个子进程,而是创建多个与父进程分开运行的进程。这对我有益,好像父进程完成其他进程继续运行。

答案 1 :(得分:0)

  1. 似乎您只更新了每个任务的一个变量(或一组变量)。这将覆盖以前的值。使用不同的变量,或在每个变量之前附加一些内容,以标记它对于已完成的任务/子流程是唯一的。见collapsed sub-process

  2. 是的,每个子流程都有自己唯一的执行ID,但主执行ID或流程实例ID保持不变