flowable多实例串行审批驳回
时间: 2024-04-28 12:18:12 浏览: 144
Flowable是一个开源的工作流引擎,它提供了一种灵活的方式来定义和执行各种业务流程。在Flowable中,多实例串行审批驳回是一种常见的流程模式,用于在多个审批人中进行串行审批,并在任何一个审批人驳回时结束流程。
具体实现多实例串行审批驳回的步骤如下:
1. 定义流程模型:使用Flowable的BPMN 2.0标准来定义流程模型,包括任务、网关、连线等元素。在多实例串行审批驳回中,通常会使用用户任务来表示每个审批人的任务。
2. 设置多实例属性:在用户任务中设置多实例属性,包括多实例类型、多实例完成条件等。对于串行审批驳回,多实例类型应设置为"sequential",表示按照顺序依次执行每个实例。
3. 设置驳回条件:在每个用户任务中设置驳回条件,当某个审批人驳回时,流程将结束。可以使用Flowable提供的表达式语言来定义驳回条件,例如使用EL表达式判断审批结果是否为"reject"。
4. 执行流程:启动流程实例后,流程将按照定义的顺序依次执行每个用户任务。每个审批人可以根据业务需求进行审批操作,包括通过或驳回。
5. 驳回流程:当某个审批人驳回时,流程将结束,不再继续执行后续的用户任务。
相关问题
flowable 多实例串行
在Flowable的多实例任务中,通过设置sequential属性为true,即可实现多实例串行执行。在这种情况下,每个实例都必须等待前一个实例完成后才能开始执行。
例如,以下是一个多实例串行的示例XML配置:
```
<userTask id="task1" name="Parallel Review">
<multiInstanceLoopCharacteristics isSequential="true" >
<loopCardinality>3</loopCardinality>
<inputDataItem><![CDATA[${myList}]]></inputDataItem>
<completionCondition><![CDATA[${nrOfCompletedInstances == 3}]]></completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
```
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 + " 个审批人需要审批");
```
需要注意的是,以上代码只是判断多实例串行节点还有几个审批人的一种方式,具体实现还需要根据业务需求进行调整。
阅读全文