【问题标题】:Activiti Receive Task query and signalActiviti Receive Task 查询和信号
【发布时间】:2019-09-02 22:15:45
【问题描述】:

我们正在尝试使用 activiti 中的接收任务来等待一些外部事件。当外部事件发生时,我们希望根据流程变量(我们作为事件的一部分接收)查询所有流程实例,并通知实例继续前进。 我们还想向用户显示所有等待的实例。

当我查看 activiti API 时,我只能看到查询以获取基于 activityId 的执行。

  1. 我正在查询所有正在接收任务执行的实例。 (可能条件类似于 where processVar1 = ?)
  2. 检索后,我想向实例发出信号。(我们应该使用哪个 api)

我们正在使用 Activiti 6.0

我正在寻找一些可用 api 的指导来实现这一点。

【问题讨论】:

    标签: activiti bpmn


    【解决方案1】:

    您使用的是哪个版本的 Activiti?不同版本的 Activiti 的 API 略有不同,所以答案也要看你使用的是哪个版本。假设您使用的是我熟悉的 Activiti 6.0:

    通过执行查询,您可以通过活动 ID 找到特定流程定义的流程实例,这些实例位于特定活动中,如下所示:

    List<Execution> executions = runtimeService.createExecutionQuery()
        .processDefinitionKey("procdefkey")
        .activityId("activityid")
        .list();
    

    使用接收任务的 id 作为活动 id 来查找您正在寻找的接收任务中正在等待的执行。

    如果您想包含对特定流程变量值的检查:

    List<Execution> executions = runtimeService.createExecutionQuery()
        .processDefinitionKey("procdefkey")
        .activityId("activityid")
        .variableValueEquals("variablename", "variablevalue")
        .list();
    

    要触发流程实例继续,请使用RuntimeServicetrigger() 方法。例如,要触发通过上述查询找到的所有执行:

    for (Execution execution : executions) {
        runtimeService.trigger(execution.getId());
    }
    

    【讨论】:

    • 谢谢杰斯珀。我现在已经更新了问题以包含版本。如果我没记错,activityId 就是任务的 id。 。我们已经向业务用户公开了我们的自定义建模器。这意味着我需要事先知道 id。
    猜你喜欢
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    相关资源
    最近更新 更多