update - 流程推送逻辑,增加抄送节点的审批人计算被抄送人

This commit is contained in:
wangli 2024-03-18 12:16:53 +08:00
parent e636738238
commit c6f52d5ea3
2 changed files with 47 additions and 4 deletions

View File

@ -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();
}
}

View File

@ -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);
});