flowable java判断多实例是否串行
时间: 2023-07-27 14:24:14 浏览: 61
在Flowable中,可以通过查询流程实例的执行对象来判断多实例节点是否是串行的。具体步骤如下:
1.获取流程实例的执行对象:可以通过以下代码获取流程实例的执行对象。
```
RuntimeService runtimeService = processEngine.getRuntimeService();
Execution execution = runtimeService.createExecutionQuery()
.processInstanceId(processInstanceId)
.activityId(activityId)
.singleResult();
```
其中,processInstanceId是流程实例ID,activityId是多实例节点的ID。
2.判断节点是否是串行的:可以通过以下代码判断节点是否是串行的。
```
Boolean isSequential = (Boolean) runtimeService.getVariable(execution.getId(), "multiInstanceSequential");
```
其中,multiInstanceSequential是多实例节点的属性名称,如果该属性值为true,则表示节点是串行的,否则为并行的。
需要注意的是,如果多实例节点的实例个数只有一个,那么无论该节点是否设置为串行,都只会执行一次。
相关问题
flowable 判断多实例节点是否完成
在Flowable中,可以使用`Execution`和`Task`两个类来判断多实例节点是否完成。
对于`Execution`对象,可以通过以下方法来获取多实例节点的状态:
```Java
// 获取当前执行实例的所有子执行实例
List<Execution> childExecutions = runtimeService.createExecutionQuery()
.parentId(executionId)
.list();
// 遍历所有子执行实例
for (Execution childExecution : childExecutions) {
// 如果子执行实例还没有完成,则多实例节点还没有完成
if (!childExecution.isEnded()) {
System.out.println("多实例节点还没有完成");
break;
}
}
```
对于`Task`对象,可以通过以下方法来获取多实例任务的状态:
```Java
// 获取当前任务的所有子任务
List<Task> subTasks = taskService.createTaskQuery()
.parentTaskId(taskId)
.list();
// 遍历所有子任务
for (Task subTask : subTasks) {
// 如果子任务还没有完成,则多实例节点还没有完成
if (!subTask.isCompleted()) {
System.out.println("多实例节点还没有完成");
break;
}
}
```
需要注意的是,以上代码只是判断多实例节点是否完成的一种方式,具体实现还需要根据业务需求进行调整。
flowable 多实例串行 判断还有几个审批人
在Flowable中,可以使用`Execution`和`Task`两个类来判断多实例串行节点还有几个审批人。
对于`Execution`对象,可以通过以下方法来获取当前多实例节点中还有几个审批人:
```Java
// 获取当前执行实例的所有子执行实例
List<Execution> childExecutions = runtimeService.createExecutionQuery()
.parentId(executionId)
.list();
int remainingInstances = 0;
// 遍历所有子执行实例
for (Execution childExecution : childExecutions) {
// 如果子执行实例还没有完成,则数量加1
if (!childExecution.isEnded()) {
remainingInstances++;
}
}
System.out.println("还有 " + remainingInstances + " 个审批人需要审批");
```
对于`Task`对象,可以通过以下方法来获取当前多实例任务中还有几个审批人:
```Java
// 获取当前任务的所有子任务
List<Task> subTasks = taskService.createTaskQuery()
.parentTaskId(taskId)
.list();
int remainingInstances = 0;
// 遍历所有子任务
for (Task subTask : subTasks) {
// 如果子任务还没有完成,则数量加1
if (!subTask.isCompleted()) {
remainingInstances++;
}
}
System.out.println("还有 " + remainingInstances + " 个审批人需要审批");
```
需要注意的是,以上代码只是判断多实例串行节点还有几个审批人的一种方式,具体实现还需要根据业务需求进行调整。