flowable 自定义任务者的配置【例为同节点顺序审批配置】

本文介绍在Flowable流程引擎中,如何通过自定义监听器实现多级审批流程。具体实现包括配置多实例串行审批、使用表达式控制审批条件,并通过监听器动态获取审批人列表,确保按层级顺序发放任务。

在审批流中,我们经常遇到,一个任务节点,需要部门主管一层层的审批,但任务又不能同时发放,目前直接的flowable分配,貌似解决不了【也可能个人没了解到】,所以,我们可以做一个自定义监听器。

如下图

部门主管,可能需要上三层主管按照层级审批,如何配置成活动的呢?直接上配置

首先,多实例类型选串行,采集设置assigneelist  完成条件配置${nrOfCompletedInstances/nrOfInstances >= 1 }   元素变量多实例 改为assignee  分配人改为固定值${asignee};

主要来看执行监听器的配置:

可根据个人传值,进行不同的参数设置。我传入了level和target两个参数

字符串值,3 意思为从下到上取三级主管

然后看一下我们的监听器的写法,还是不多说,上代码:

我实现的是根据层级和leve,按照顺序取出任务人,会给前台,这样前台就可以根据用户列表顺序,发放任务。

如,我取出来的任务人ID排序为:1-2-3-4 

我下达任务之后,任务人1 进来,可以看到一条审批记录,2-3-4 进来,是看不到待办的。1 审批通过,任务出现在1的已办中,2 出现待办 3-4 无任务。等4审核通过之后,即审批进入下一个节点。【测试已通过】

未完成全部审批,节点如上。

所有人完成审批,节点如下:

 

 

此处,实现的是监听,同样的,任务派送,转办等,都可以通过这种方法实现,毕竟代码逻辑自己写了,怎么配,咱自己说了算

 

 

 

 

 

 

 

### Flowable 中会签的配置方法 Flowable 是一种强大的工作流引擎,支持复杂的业务流程建模和执行。其中,“会签”是一种常见的审批场景,通常指多个参与者都需要完成某项任务后,整个任务才算结束。以下是关于 Flowable 会签配置的具体说明: #### 配置 XML 文件中的会签任务 在 BPMN 流程定义文件中,可以通过 `<multiInstanceLoopCharacteristics>` 节点来实现多实任务(即会签)。以下是一个典型的会签任务配置[^2]: ```xml <userTask id="approveTask" name="财务审批"> <multiInstanceLoopCharacteristics isSequential="false" flowable:collection="Activity_1g65lke_approverList" flowable:elementVariable="approver"> <completionCondition>${nrOfCompletedInstances == nrOfInstances}</completionCondition> </multiInstanceLoopCharacteristics> </userTask> ``` - `isSequential` 属性表示是否顺序执行子任务。对于会签来说,通常是并行执行 (`false`)。 - `flowable:collection` 表达式指定参与者的集合变量名,在实际运行时会被解析为具体的人员列表。 - `flowable:elementVariable` 定义每次循环迭代时使用的单个元素名称。 - `<completionCondition>` 设置完成条件,只有当所有实都完成后才会触发后续的任务。 #### 动态创建会签模型 除了静态配置外,还可以通过 Java API 动态生成包含会签逻辑的流程模型。这种方法特别适合于需要灵活调整的工作流环境[^3]。下面展示了一种动态构建会签模型的方式[^4]: ```java import org.flowable.engine.RepositoryService; import org.flowable.engine.RuntimeService; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.UserTask; public class DynamicMultiInstance { public static void main(String[] args) { RepositoryService repositoryService = ...; // 初始化服务对象 BpmnModel bpmnModel = new BpmnModel(); UserTask approveTask = new UserTask(); approveTask.setId("approveTask"); approveTask.setName("财务审批"); // 添加多实特性 MultiInstanceLoopCharacteristics multiInstanceChar = new MultiInstanceLoopCharacteristics(false); multiInstanceChar.setInputDataItem("${Activity_1g65lke_approvers}"); multiInstanceChar.setElementVariable("approver"); multiInstanceChar.setCompletionCondition("${nrOfCompletedInstances == nrOfInstances}"); approveTask.setLoopCharacteristics(multiInstanceChar); bpmnModel.addFlowElement(approveTask); // 创建并部署流程定义 repositoryService.createDeployment().addBpmnModel("dynamic-process", bpmnModel).deploy(); RuntimeService runtimeService = ...; // 获取运行时服务 runtimeService.startProcessInstanceByKey("dynamic-process"); } } ``` 此代码片段展示了如何利用 Flowable 的 Java API 构造一个多实用户任务,并将其作为会签节点嵌入到流程中。 #### 处理会签过程中的特殊需求 某些情况下可能还需要额外的功能支持,比如清除之前的审批意见或者允许某个特定条件下终止整个会签流程。这些功能可通过自定义监听器或调用 Flowable 提供的相关 API 来实现[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值