Flowable会签功能实战:3种审批模式(全票/一票/串行)的完整XML配置示例
Flowable会签功能深度解析3种审批模式与实战配置指南在企业流程自动化中会签会审是一种常见的多人协作审批模式。Flowable作为领先的BPMN 2.0引擎通过多实例任务Multi-Instance Task实现了灵活的会签功能。本文将深入探讨全票通过、一票通过和串行审批三种典型场景的实现方案并提供可直接用于生产环境的XML配置示例。1. 会签基础与核心概念会签Counter-signature是指多个审批人对同一流程节点进行审批的业务场景。在Flowable中会签通过multiInstanceLoopCharacteristics元素实现其核心参数包括isSequential控制并行/串行模式loopCardinality/completionCondition定义实例数量和完成条件collection/elementVariable用于动态参与者分配三种典型会签模式的对比模式类型适用场景数据库表现业务特点全票通过并行重要合同审批同时生成N个任务需所有参与者同意一票通过并行紧急事项处理同时生成N个任务任一参与者同意即可串行审批层级审批流程依次生成单个任务按顺序逐个审批提示选择会签模式时需综合考虑审批严肃性、时效要求和组织架构特点2. 全票通过模式实现全票通过是最严格的会签模式要求所有审批人都同意才能进入下一节点。以下是完整配置示例userTask idcounterSignTask name合同会签 multiInstanceLoopCharacteristics isSequentialfalse activiti:elementVariableassignee loopCardinality3/loopCardinality completionCondition${nrOfCompletedInstances nrOfInstances}/completionCondition /multiInstanceLoopCharacteristics potentialOwner resourceAssignmentExpression formalExpressionuser1,user2,user3/formalExpression /resourceAssignmentExpression /potentialOwner /userTask关键配置说明isSequentialfalse启用并行模式loopCardinality设置审批人数量completionCondition完成条件为全部实例完成数据库变化观察流程启动后ACT_RU_TASK表会同时出现3条任务记录ACT_RU_IDENTITYLINK表记录任务与参与者的关联每完成一个任务nrOfCompletedInstances变量值递增常见问题解决方案任务重复显示确保每个参与者只分配到一个实例动态参与者改用collection方式分配用户审批驳回通过边界事件处理异常流程3. 一票通过模式配置对于需要快速决策的场景一票通过模式可以显著提升审批效率。配置示例如下userTask idurgentApproval name紧急采购审批 multiInstanceLoopCharacteristics isSequentialfalse activiti:collectionapproverList activiti:elementVariableapprover completionCondition${nrOfCompletedInstances 0}/completionCondition /multiInstanceLoopCharacteristics humanPerformer resourceAssignmentExpression formalExpression${approver}/formalExpression /resourceAssignmentExpression /humanPerformer /userTask实现要点通过collection动态传入审批人列表完成条件改为nrOfCompletedInstances 0建议配合邮件通知确保及时响应性能优化建议设置任务到期时间activiti:dueDate2023-12-31添加提醒监听器activiti:taskListener eventcreate classcom.example.TaskReminderListener启用异步执行activiti:asynctrue4. 串行审批模式详解层级审批场景往往需要串行会签即前序审批人通过后才触发后续审批。典型配置userTask idsequentialApproval name费用报销审批 multiInstanceLoopCharacteristics isSequentialtrue activiti:collectionlevelApprovers activiti:elementVariablecurrentApprover completionCondition${nrOfCompletedInstances nrOfInstances}/completionCondition /multiInstanceLoopCharacteristics extensionElements activiti:taskListener eventcomplete classcom.example.ApprovalChainListener/ /extensionElements /userTask串行模式特点ACT_RU_TASK表始终只有一条当前任务记录nrOfActiveInstances变量值保持为1审批顺序由collection元素顺序决定高级应用技巧审批链中断通过监听器实现条件中断动态调整顺序在taskListener中修改collection历史追踪查询ACT_HI_TASKINST获取完整审批路径5. 生产环境最佳实践在实际项目中使用会签功能时需要注意以下关键点用户分配方案对比分配方式配置方法适用场景维护成本固定列表formalExpression直接指定审批人固定的场景低动态集合通过collection传入List审批人动态变化的场景中表达式查询使用DelegateExpression需要实时查询的场景高异常处理方案审批拒绝流程boundaryEvent idrejectEvent attachedToRefcounterSignTask signalEventDefinition signalRefrejectSignal/ /boundaryEvent超时处理boundaryEvent idtimeoutEvent attachedToRefcounterSignTask timerEventDefinition timeDurationPT24H/timeDuration /timerEventDefinition /boundaryEvent性能优化指标// 监控多实例任务性能 ProcessEngineConfiguration config processEngine.getProcessEngineConfiguration(); config.setAsyncExecutorActivate(true); config.setAsyncExecutorDefaultAsyncJobAcquireWaitTime(1000);在实际项目中我们曾遇到并行会签导致数据库负载过高的问题。通过分析发现当审批人超过20个时直接使用loopCardinality会导致大量瞬时任务创建。解决方案是改用动态分批加载模式结合异步执行特性将任务创建分散到不同事务中处理。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2442063.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!