update - 审批人去重后, 调整审批日志处理逻辑
This commit is contained in:
parent
5cf4cb8be4
commit
0b85ade654
@ -1,6 +1,5 @@
|
|||||||
package cn.axzo.workflow.core.service.impl;
|
package cn.axzo.workflow.core.service.impl;
|
||||||
|
|
||||||
import cn.axzo.workflow.common.enums.ApprovalMethodEnum;
|
|
||||||
import cn.axzo.workflow.common.enums.BpmnFlowNodeMode;
|
import cn.axzo.workflow.common.enums.BpmnFlowNodeMode;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO;
|
||||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
||||||
@ -75,6 +74,8 @@ import static cn.axzo.workflow.common.constant.BpmnConstants.BIZ_ORG_RELATION;
|
|||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
|
||||||
import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_INITIATOR;
|
import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_INITIATOR;
|
||||||
|
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoPassed;
|
||||||
|
import static cn.axzo.workflow.common.enums.ApprovalMethodEnum.autoRejection;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.AND;
|
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.AND;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.EXCEPTIONAL;
|
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.EXCEPTIONAL;
|
||||||
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.GENERAL;
|
import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.GENERAL;
|
||||||
@ -573,9 +574,6 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
|||||||
node.setNodeType(NODE_STARTER);
|
node.setNodeType(NODE_STARTER);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置审批方式
|
|
||||||
getApprovalMethod(userTask).ifPresent(node::setApprovalMethod);
|
|
||||||
|
|
||||||
// 设置审批模式,
|
// 设置审批模式,
|
||||||
if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
if (userTask.getBehavior() instanceof MultiInstanceActivityBehavior) {
|
||||||
MultiInstanceActivityBehavior behavior =
|
MultiInstanceActivityBehavior behavior =
|
||||||
@ -587,28 +585,31 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
|||||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
|
// 设置审批方式
|
||||||
List<BpmnTaskDelegateAssigner> forecastAssigners =
|
getApprovalMethod(userTask).ifPresent(node::setApprovalMethod);
|
||||||
springProcessEngineConfiguration.getCommandExecutor()
|
if (!Objects.equals(node.getApprovalMethod(), autoPassed) && !Objects.equals(node.getApprovalMethod(), autoRejection)) {
|
||||||
.execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId,
|
// 推测当前节点的审批人,并且如果审批人为空,也会根据审批人为空的策略去找人
|
||||||
userTask, engineExecutionStartListener));
|
List<BpmnTaskDelegateAssigner> forecastAssigners =
|
||||||
node.setForecastAssigners(forecastAssigners);
|
springProcessEngineConfiguration.getCommandExecutor()
|
||||||
if (CollectionUtils.isEmpty(forecastAssigners)) {
|
.execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId,
|
||||||
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
|
userTask, engineExecutionStartListener));
|
||||||
switch (emptyHandleType) {
|
node.setForecastAssigners(forecastAssigners);
|
||||||
case autoPassed:
|
if (CollectionUtils.isEmpty(forecastAssigners)) {
|
||||||
node.setApprovalMethod(ApprovalMethodEnum.autoPassed);
|
getApproverEmptyHandleType(userTask).ifPresent(emptyHandleType -> {
|
||||||
break;
|
switch (emptyHandleType) {
|
||||||
case autoRejection:
|
case autoPassed:
|
||||||
node.setApprovalMethod(ApprovalMethodEnum.autoRejection);
|
node.setApprovalMethod(autoPassed);
|
||||||
break;
|
break;
|
||||||
default:
|
case autoRejection:
|
||||||
node.setNodeMode(EXCEPTIONAL);
|
node.setApprovalMethod(autoRejection);
|
||||||
break;
|
break;
|
||||||
}
|
default:
|
||||||
});
|
node.setNodeMode(EXCEPTIONAL);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (i instanceof ReceiveTask) {
|
} else if (i instanceof ReceiveTask) {
|
||||||
ReceiveTask receiveTask = (ReceiveTask) i;
|
ReceiveTask receiveTask = (ReceiveTask) i;
|
||||||
node.setId(receiveTask.getId())
|
node.setId(receiveTask.getId())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user