update - 流程推送逻辑,增加抄送节点的审批人计算被抄送人
This commit is contained in:
parent
e636738238
commit
c6f52d5ea3
@ -0,0 +1,37 @@
|
||||
package cn.axzo.workflow.core.engine.cmd;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.core.engine.listener.EngineExecutionStartListener;
|
||||
import org.flowable.bpmn.model.ServiceTask;
|
||||
import org.flowable.common.engine.impl.interceptor.Command;
|
||||
import org.flowable.common.engine.impl.interceptor.CommandContext;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 抄送节点,计算全量被抄送人,并主动去重
|
||||
*
|
||||
* @author wangli
|
||||
* @since 18/03/2024 11:33
|
||||
*/
|
||||
public class CustomCarbonCopyUserTaskAssigneeCmd implements Command<List<BpmnTaskDelegateAssigner>>, Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private final String processInstanceId;
|
||||
private final ServiceTask serviceTask;
|
||||
private final EngineExecutionStartListener engineExecutionStartListener;
|
||||
|
||||
public CustomCarbonCopyUserTaskAssigneeCmd(String processInstanceId, ServiceTask serviceTask,
|
||||
EngineExecutionStartListener engineExecutionStartListener) {
|
||||
this.processInstanceId = processInstanceId;
|
||||
this.serviceTask = serviceTask;
|
||||
this.engineExecutionStartListener = engineExecutionStartListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BpmnTaskDelegateAssigner> execute(CommandContext commandContext) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
@ -23,6 +23,7 @@ import cn.axzo.workflow.core.common.exception.WorkflowEngineException;
|
||||
import cn.axzo.workflow.core.common.utils.BpmnCollectionUtils;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomAbortProcessInstanceCmd;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomCancelProcessInstanceCmd;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomCarbonCopyUserTaskAssigneeCmd;
|
||||
import cn.axzo.workflow.core.engine.cmd.CustomForecastUserTaskAssigneeCmd;
|
||||
import cn.axzo.workflow.core.engine.listener.EngineExecutionStartListener;
|
||||
import cn.axzo.workflow.core.service.BpmnProcessDefinitionService;
|
||||
@ -112,6 +113,7 @@ import static cn.axzo.workflow.core.common.code.BpmnProcessDefinitionRespCode.PR
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApprovalMethod;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getApproverEmptyHandleType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getButtonConfig;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCarbonCopyConfigs;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getNodeType;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnNativeQueryUtil.countSql;
|
||||
import static cn.axzo.workflow.core.common.utils.BpmnNativeQueryUtil.sqlConnectors;
|
||||
@ -785,17 +787,21 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
}
|
||||
}
|
||||
} else if (i instanceof ReceiveTask) {
|
||||
// 作用于特殊的一种业务节点, 只要是这个类型,一定是业务节点, 上面的 UserTask 可能是业务节点,也可能是一般的审批节点
|
||||
ReceiveTask receiveTask = (ReceiveTask) i;
|
||||
node.setId(receiveTask.getId())
|
||||
.setName(receiveTask.getName());
|
||||
node.setId(receiveTask.getId()).setName(receiveTask.getName());
|
||||
node.setNodeType(NODE_BUSINESS);
|
||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||
} else {
|
||||
// ServiceTask 主要作用于抄送
|
||||
ServiceTask serviceTask = (ServiceTask) i;
|
||||
node.setId(serviceTask.getId())
|
||||
.setName(serviceTask.getName());
|
||||
node.setId(serviceTask.getId()).setName(serviceTask.getName());
|
||||
node.setNodeType(NODE_CARBON_COPY);
|
||||
node.setNodeMode(BpmnFlowNodeMode.GENERAL);
|
||||
getCarbonCopyConfigs(serviceTask).ifPresent(carbon ->
|
||||
node.setForecastAssigners(springProcessEngineConfiguration.getCommandExecutor()
|
||||
.execute(new CustomCarbonCopyUserTaskAssigneeCmd(processInstanceId, serviceTask,
|
||||
engineExecutionStartListener))));
|
||||
}
|
||||
resultList.add(node);
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user