flowable 根据流程实例id 查询参数nrOfCompletedInstances
时间: 2023-08-04 15:05:54 浏览: 224
可以通过调用 Flowable 的 API 来根据流程实例 ID 查询参数 nrOfCompletedInstances。具体的代码示例可以参考下面的 Java 代码:
```
RuntimeService runtimeService = processEngine.getRuntimeService();
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
if (processInstance != null) {
int nrOfCompletedInstances = runtimeService.getVariable(processInstance.getId(), "nrOfCompletedInstances");
// 处理 nrOfCompletedInstances 的值
} else {
// 流程实例不存在的处理逻辑
}
```
其中,processInstanceId 是要查询的流程实例 ID,nrOfCompletedInstances 是要查询的参数名称。如果流程实例不存在,则会返回 null。
相关问题
flowable 根据流程实例id获取任务节点下的多实例标签属性
您好!根据流程实例id获取任务节点下的多实例标签属性可以通过流程引擎提供的API进行操作,具体步骤如下:
1. 获取流程实例的所有任务节点
您可以根据流程实例ID获取当前流程实例的所有任务节点,方法如下:
```
List<Task> taskList = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.list();
```
其中,`processInstanceId`为流程实例的ID。
2. 获取任务节点的多实例标签属性
在获取到任务节点列表后,您可以遍历所有任务节点,然后通过`task.getVariableLocal("multiInstance")`获取每个任务节点的多实例标签属性,其中`multiInstance`为多实例标签的名称。
您可以在任务节点的XML配置文件中添加`multiInstance`标签,如下所示:
```
<userTask id="task1" name="Task 1">
<multiInstanceLoopCharacteristics isSequential="false" flowable:collection="users" flowable:elementVariable="user">
<completionCondition>${nrOfCompletedInstances/nrOfInstances >= 0.6}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
```
在上面的XML配置中,`multiInstance`标签的属性`flowable:collection`表示多实例的数据源,`flowable:elementVariable`表示多实例的元素变量,`isSequential`表示多实例的执行方式(顺序或并行),`completionCondition`表示多实例的完成条件。
您可以根据实际需求来修改`multiInstance`标签的属性,然后在任务监听器中获取相应的多实例标签属性。
flowable6.5 根据流程实例id获取当前多实例节点的nrOfCompletedInstances
可以通过以下代码获取当前多实例节点的 nrOfCompletedInstances:
```
List<Execution> executions = runtimeService.createExecutionQuery()
.processInstanceId(processInstanceId)
.activityId(activityId)
.list();
int nrOfCompletedInstances = 0;
for (Execution execution : executions) {
Integer completedInstances = (Integer) runtimeService.getVariable(execution.getId(), "nrOfCompletedInstances");
if (completedInstances != null) {
nrOfCompletedInstances += completedInstances;
}
}
```
其中,processInstanceId 为流程实例 ID,activityId 为多实例节点的 ID。首先通过 createExecutionQuery() 方法创建查询对象,然后设置 processInstanceId 和 activityId 进行筛选。接着遍历所有符合条件的执行对象,通过 getVariable() 方法获取 nrOfCompletedInstances 变量的值,并累加到 nrOfCompletedInstances 变量中。最后,得到的 nrOfCompletedInstances 就是当前多实例节点已完成的实例数。
阅读全文