flowable6.5 根据流程实例id 判断当前多实例串行节点执行几次审批后可通过该节点
时间: 2023-09-18 13:10:21 浏览: 121
基于flowable6.5统一流程平台数据库模型构建分析
5星 · 资源好评率100%
在 Flowable 中,可以通过查询多实例节点的 MultiInstanceLoopCharacteristics 对象来获取该节点的循环属性,其中包括了循环次数的信息。对于串行多实例节点,需要根据其 completionCondition 属性来判断需要执行的次数。因此,可以通过以下步骤来判断当前多实例节点需要执行几次审批后才能通过:
1. 获取当前任务的 Task 对象:
```
Task currentTask = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.taskId(taskId)
.singleResult();
```
2. 获取当前任务所在节点的 MultiInstanceLoopCharacteristics 对象:
```
MultiInstanceLoopCharacteristics loopCharacteristics =
(MultiInstanceLoopCharacteristics) currentTask.getProcessDefinition()
.getActivity(currentTask.getTaskDefinitionKey())
.getProperty(BpmnProperties.MULTI_INSTANCE_LOOP_CHARACTERISTICS);
```
3. 获取循环次数的信息:
```
int loopCardinality = Integer.parseInt(
loopCharacteristics.getLoopCardinalityExpression().getExpressionText());
```
其中,loopCardinality 表示该多实例节点需要执行的总次数。
4. 根据 completionCondition 属性来计算需要执行的次数:
```
String completionCondition = loopCharacteristics.getCompletionConditionExpression().getExpressionText();
int index = completionCondition.indexOf(">=");
if (index >= 0) {
int count = Integer.parseInt(completionCondition.substring(index + 2).trim());
return Math.min(count, loopCardinality);
} else {
return loopCardinality;
}
```
其中,如果 completionCondition 属性为 ${approvedCount >= 3},则需要执行 3 次才能通过该节点。
综上,根据流程实例id 判断当前多实例串行节点执行几次审批后可通过该节点的步骤如下:
1. 获取当前任务的 Task 对象;
2. 获取当前任务所在节点的 MultiInstanceLoopCharacteristics 对象;
3. 获取循环次数的信息;
4. 根据 completionCondition 属性来计算需要执行的次数。
阅读全文