fix:【bpm】“refactor(bpm): 优化多实例行为初始化逻辑”导致的问题,对应 https://gitee.com/zhijiantianya/ruoyi-vue-pro/pulls/1483/files

This commit is contained in:
YunaiV 2025-12-26 21:23:47 +08:00
parent cc53b9c4ae
commit d860ca2c8c
2 changed files with 16 additions and 2 deletions

View File

@ -56,7 +56,14 @@ public class BpmParallelMultiInstanceBehavior extends ParallelMultiInstanceBehav
protected int resolveNrOfInstances(DelegateExecution execution) { protected int resolveNrOfInstances(DelegateExecution execution) {
// 情况一UserTask 节点 // 情况一UserTask 节点
if (execution.getCurrentFlowElement() instanceof UserTask) { if (execution.getCurrentFlowElement() instanceof UserTask) {
// 获取任务的所有处理人 // 第一步设置 collectionVariable CollectionVariable
// execution.getVariable() 读取所有任务处理人的 key
super.collectionExpression = null; // collectionExpression collectionVariable 是互斥的
super.collectionVariable = FlowableUtils.formatExecutionCollectionVariable(execution.getCurrentActivityId());
// execution.getVariable() 读取当前所有任务处理的人的 key
super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId());
// 第二步获取任务的所有处理人
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Set<Long> assigneeUserIds = (Set<Long>) execution.getVariable(super.collectionVariable, Set.class); Set<Long> assigneeUserIds = (Set<Long>) execution.getVariable(super.collectionVariable, Set.class);
if (assigneeUserIds == null) { if (assigneeUserIds == null) {

View File

@ -47,7 +47,14 @@ public class BpmSequentialMultiInstanceBehavior extends SequentialMultiInstanceB
protected int resolveNrOfInstances(DelegateExecution execution) { protected int resolveNrOfInstances(DelegateExecution execution) {
// 情况一UserTask 节点 // 情况一UserTask 节点
if (execution.getCurrentFlowElement() instanceof UserTask) { if (execution.getCurrentFlowElement() instanceof UserTask) {
// 获取任务的所有处理人 // 第一步设置 collectionVariable CollectionVariable
// execution.getVariable() 读取所有任务处理人的 key
super.collectionExpression = null; // collectionExpression collectionVariable 是互斥的
super.collectionVariable = FlowableUtils.formatExecutionCollectionVariable(execution.getCurrentActivityId());
// execution.getVariable() 读取当前所有任务处理的人的 key
super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId());
// 第二步获取任务的所有处理人
// 不使用 execution.getVariable 原因目前依次审批任务回退后 collectionVariable 变量没有清理 如果重新进入该任务不会重新分配审批人 // 不使用 execution.getVariable 原因目前依次审批任务回退后 collectionVariable 变量没有清理 如果重新进入该任务不会重新分配审批人
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Set<Long> assigneeUserIds = (Set<Long>) execution.getVariableLocal(super.collectionVariable, Set.class); Set<Long> assigneeUserIds = (Set<Long>) execution.getVariableLocal(super.collectionVariable, Set.class);