update - 优化代码结构
This commit is contained in:
parent
71a114186f
commit
0bd3403b95
@ -115,8 +115,7 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
|
||||
break;
|
||||
case approver_relation:
|
||||
assigners.addAll(getApproverRelationUser(carbon, carbonCopyObjectType,
|
||||
(DelegateExecution) list.get(0),
|
||||
processEngineConfiguration, processInstanceId));
|
||||
(DelegateExecution) list.get(0), processEngineConfiguration, processInstanceId));
|
||||
break;
|
||||
case specify_user:
|
||||
assigners.addAll(JSON.parseArray(carbon.getSpecifyValue(), BpmnTaskDelegateAssigner.class));
|
||||
@ -173,8 +172,7 @@ public class CustomCarbonCopyUserSelectorCmd implements Command<List<BpmnTaskDel
|
||||
.parameter("processInstanceId", processInstanceId)
|
||||
.list().stream()
|
||||
.collect(Collectors.toMap(HistoricVariableInstance::getVariableName,
|
||||
Function.identity(),
|
||||
(s, t) -> s));
|
||||
Function.identity(), (s, t) -> s));
|
||||
vos.forEach(vo -> {
|
||||
HistoricVariableInstance assginerSnapshot =
|
||||
variableInstanceMap.getOrDefault(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + vo.getTaskId(),
|
||||
|
||||
@ -753,57 +753,65 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
node.setNodeMode(GENERAL);
|
||||
node.setId(i.getId()).setName(i.getName());
|
||||
if (i instanceof UserTask) {
|
||||
UserTask userTask = (UserTask) i;
|
||||
node.setFormKey(userTask.getFormKey());
|
||||
// 设置审批模式,
|
||||
if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
||||
MultiInstanceActivityBehavior behavior =
|
||||
(MultiInstanceActivityBehavior) userTask.getBehavior();
|
||||
node.setNodeMode(Objects.equals(AND_SIGN_EXPRESSION,
|
||||
behavior.getCompletionCondition()) ?
|
||||
AND : OR);
|
||||
} else {
|
||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||
}
|
||||
|
||||
if (Objects.equals(node.getApprovalMethod(), human)) {
|
||||
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
|
||||
List<BpmnTaskDelegateAssigner> forecastAssigners =
|
||||
springProcessEngineConfiguration.getCommandExecutor()
|
||||
.execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId,
|
||||
userTask, engineExecutionStartListener));
|
||||
node.setForecastAssigners(forecastAssigners);
|
||||
if (CollectionUtils.isEmpty(forecastAssigners)) {
|
||||
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
|
||||
switch (emptyHandleType) {
|
||||
case autoPassed:
|
||||
node.setApprovalMethod(autoPassed);
|
||||
break;
|
||||
case autoRejection:
|
||||
node.setApprovalMethod(autoRejection);
|
||||
break;
|
||||
default:
|
||||
node.setNodeMode(EXCEPTIONAL);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
parseUserTask(processInstanceId, (UserTask) i, node);
|
||||
} else if (i instanceof ServiceTask) {
|
||||
// ServiceTask 主要作用于抄送
|
||||
ServiceTask serviceTask = (ServiceTask) i;
|
||||
node.setId(serviceTask.getId()).setName(serviceTask.getName());
|
||||
getCarbonCopyConfigs(serviceTask).ifPresent(carbons ->
|
||||
node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor()
|
||||
.execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons,
|
||||
serviceTask, engineExecutionStartListener,
|
||||
historicTaskInstanceConverter, serviceVersion))));
|
||||
parseServiceTask(processInstanceId, (ServiceTask) i, node);
|
||||
}
|
||||
resultList.add(node);
|
||||
});
|
||||
return resultList;
|
||||
}
|
||||
|
||||
private void parseServiceTask(String processInstanceId, ServiceTask i, ProcessNodeDetailVO node) {
|
||||
// ServiceTask 主要作用于抄送
|
||||
ServiceTask serviceTask = i;
|
||||
node.setId(serviceTask.getId()).setName(serviceTask.getName());
|
||||
getCarbonCopyConfigs(serviceTask).ifPresent(carbons ->
|
||||
node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor()
|
||||
.execute(new CustomCarbonCopyUserSelectorCmd(processInstanceId, carbons,
|
||||
serviceTask, engineExecutionStartListener,
|
||||
historicTaskInstanceConverter, serviceVersion))));
|
||||
}
|
||||
|
||||
private void parseUserTask(String processInstanceId, UserTask i, ProcessNodeDetailVO node) {
|
||||
UserTask userTask = i;
|
||||
node.setFormKey(userTask.getFormKey());
|
||||
// 设置审批模式,
|
||||
if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
||||
MultiInstanceActivityBehavior behavior =
|
||||
(MultiInstanceActivityBehavior) userTask.getBehavior();
|
||||
node.setNodeMode(Objects.equals(AND_SIGN_EXPRESSION,
|
||||
behavior.getCompletionCondition()) ?
|
||||
AND : OR);
|
||||
} else {
|
||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||
}
|
||||
|
||||
if (Objects.equals(node.getApprovalMethod(), human)) {
|
||||
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
|
||||
List<BpmnTaskDelegateAssigner> forecastAssigners =
|
||||
springProcessEngineConfiguration.getCommandExecutor()
|
||||
.execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId,
|
||||
userTask, engineExecutionStartListener));
|
||||
node.setForecastAssigners(forecastAssigners);
|
||||
if (CollectionUtils.isEmpty(forecastAssigners)) {
|
||||
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
|
||||
switch (emptyHandleType) {
|
||||
case autoPassed:
|
||||
node.setApprovalMethod(autoPassed);
|
||||
break;
|
||||
case autoRejection:
|
||||
node.setApprovalMethod(autoRejection);
|
||||
break;
|
||||
default:
|
||||
node.setNodeMode(EXCEPTIONAL);
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTenantIds() {
|
||||
NativeHistoricProcessInstanceQuery query = historyService.createNativeHistoricProcessInstanceQuery();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user