我们尝试在activiti中使用接收任务来等待一些外部事件。当外部事件发生时,我们希望根据流程变量(我们作为事件的一部分接收(查询所有流程实例,并发出信号使实例向前移动。 我们还想向用户显示所有等待实例。
当我查看 activiti API 时,我只能看到基于 activityId 获取执行的查询。
- 我正在寻找查询接收任务执行中的所有实例。(可能带有诸如 processVar1 = ?(
- 一旦我检索,我想向实例发出信号。(我们应该使用哪个 API(
我们正在使用 Activiti 6.0
我正在寻找一些可用 API 的指导来实现这一目标。
您使用的是哪个版本的 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();
若要触发流程实例继续,请使用RuntimeService
的trigger()
方法。例如,要触发通过上述查询找到的所有执行,请执行以下操作:
for (Execution execution : executions) {
runtimeService.trigger(execution.getId());
}