activity:如何知道执行是否链接到(子)进程的实例?

时间:2014-10-21 22:38:29

标签: activiti bpmn

我正在尝试这个非常简单的场景:

  1. 流程1有两个任务(任务A - >任务B)
  2. 进程2有一个"呼叫活动"阻止(调用进程1)。
  3. 所以,我开始了进程2.它直接进入了我们有2次执行的状态:

    1. 直接映射到Process 2实例的那个。让我们说:123
    2. 与"呼叫活动"相关联的那个。我们来说:456
    3. 问题是:如何轻松找到进程1当前所处的任务? (它应该是任务A)。

      好吧,我可以用这个REST查询来做到这一点:

      1. 首先,我查询属于进程2的所有执行:运行时/执行?processInstanceId = 123
      2. 我得到:[{id:123},{id:456,activityId:" calling_subproc"}]

        嗯,我知道456是子进程的执行,所以下一个查询是:

        1. 运行时/过程实例superProcessInstanceId = 123&安培; includeProcessVariables =真
        2. 我得到:[{id:789,activityId:"任务1"}]

          但是......我可以这样做,因为我知道这是一个子流程,我设计了模型。但是......否则,一个程序(不知道那个事实)怎么会发现它?查询#1的响应中没有任何内容表明456是一个子进程(意味着我必须执行查询#2 ...而不是运行时/任务?executionId = 456& includeProcessVariables = true,顺便给我{data:[0],total:0,start:0,sort:" id&#34 ;, order:" asc",size:0})

          ----附加评论:-----

          我认为REST服务运行时/执行应该支持" superExecutionId"参数(例如:runtime / executions?superExecutionId = 87519)...如果给定执行id(在调用进程中),我们可以直接导航到生成的子进程(数据库结构已经支持):

          enter image description here

          提前致谢, 拉嘎

1 个答案:

答案 0 :(得分:3)

这是我刚刚完成的项目中的一个问题。解决方案/解决方法与上面的注释中列出的非常相似,我们创建了一个流程变量来表示“顶级”流程实例ID。

为了确保我们不必为所有被调用的进程手动设置它(即没有必须显式地模拟传递的变量),我们添加了一个解析处理程序来添加一个启动监听器以在被调用时自动填充变量过程启动。

像魅力一样工作。

相关问题