【缺陷修复】 依次审批任务回退后,重新进入后不会重新分配候选人
This commit is contained in:
parent
21c44a9b5e
commit
1f92de2cb3
|
@ -50,6 +50,7 @@ public class BpmParallelMultiInstanceBehavior extends ParallelMultiInstanceBehav
|
||||||
super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId());
|
super.collectionElementVariable = FlowableUtils.formatExecutionCollectionElementVariable(execution.getCurrentActivityId());
|
||||||
|
|
||||||
// 第二步,获取任务的所有处理人
|
// 第二步,获取任务的所有处理人
|
||||||
|
// TODO execution.getVariable 会从整个流程实例中获取变量, 可能回退后重新进入该任务,不会重新计算 collectionVariable 的值. 是不是考虑会签结束清理这个变量
|
||||||
@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) {
|
||||||
|
@ -60,7 +61,7 @@ public class BpmParallelMultiInstanceBehavior extends ParallelMultiInstanceBehav
|
||||||
// 用途:1)审批人为空时;2)审批类型为自动通过、自动拒绝时
|
// 用途:1)审批人为空时;2)审批类型为自动通过、自动拒绝时
|
||||||
assigneeUserIds = SetUtils.asSet((Long) null);
|
assigneeUserIds = SetUtils.asSet((Long) null);
|
||||||
}
|
}
|
||||||
execution.setVariable(super.collectionVariable, assigneeUserIds);
|
execution.setVariableLocal(super.collectionVariable, assigneeUserIds);
|
||||||
}
|
}
|
||||||
return assigneeUserIds.size();
|
return assigneeUserIds.size();
|
||||||
}
|
}
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class BpmSequentialMultiInstanceBehavior extends SequentialMultiInstanceB
|
||||||
|
|
||||||
// 第二步,获取任务的所有处理人
|
// 第二步,获取任务的所有处理人
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
Set<Long> assigneeUserIds = (Set<Long>) execution.getVariable(super.collectionVariable, Set.class);
|
Set<Long> assigneeUserIds = (Set<Long>) execution.getVariableLocal(super.collectionVariable, Set.class);
|
||||||
if (assigneeUserIds == null) {
|
if (assigneeUserIds == null) {
|
||||||
assigneeUserIds = taskCandidateInvoker.calculateUsersByTask(execution);
|
assigneeUserIds = taskCandidateInvoker.calculateUsersByTask(execution);
|
||||||
if (CollUtil.isEmpty(assigneeUserIds)) {
|
if (CollUtil.isEmpty(assigneeUserIds)) {
|
||||||
|
@ -53,7 +53,7 @@ public class BpmSequentialMultiInstanceBehavior extends SequentialMultiInstanceB
|
||||||
// 用途:1)审批人为空时;2)审批类型为自动通过、自动拒绝时
|
// 用途:1)审批人为空时;2)审批类型为自动通过、自动拒绝时
|
||||||
assigneeUserIds = SetUtils.asSet((Long) null);
|
assigneeUserIds = SetUtils.asSet((Long) null);
|
||||||
}
|
}
|
||||||
execution.setVariable(super.collectionVariable, assigneeUserIds);
|
execution.setVariableLocal(super.collectionVariable, assigneeUserIds);
|
||||||
}
|
}
|
||||||
return assigneeUserIds.size();
|
return assigneeUserIds.size();
|
||||||
}
|
}
|
||||||
|
|
|
@ -755,6 +755,8 @@ public class BpmTaskServiceImpl implements BpmTaskService {
|
||||||
runtimeService.setVariable(currentTask.getProcessInstanceId(),
|
runtimeService.setVariable(currentTask.getProcessInstanceId(),
|
||||||
String.format(PROCESS_INSTANCE_VARIABLE_RETURN_FLAG, reqVO.getTargetTaskDefinitionKey()), Boolean.TRUE);
|
String.format(PROCESS_INSTANCE_VARIABLE_RETURN_FLAG, reqVO.getTargetTaskDefinitionKey()), Boolean.TRUE);
|
||||||
// 4. 执行驳回
|
// 4. 执行驳回
|
||||||
|
// 使用 moveExecutionsToSingleActivityId 替换 moveExecutionsToSingleActivityId 原因:
|
||||||
|
// 当多实例任务回退的时候有问题。 相关 issue: https://github.com/flowable/flowable-engine/issues/3944
|
||||||
List<String> runExecutionIds = convertList(taskList, Task::getExecutionId);
|
List<String> runExecutionIds = convertList(taskList, Task::getExecutionId);
|
||||||
runtimeService.createChangeActivityStateBuilder()
|
runtimeService.createChangeActivityStateBuilder()
|
||||||
.processInstanceId(currentTask.getProcessInstanceId())
|
.processInstanceId(currentTask.getProcessInstanceId())
|
||||||
|
|
Loading…
Reference in New Issue