update - 完善抄送节点关联 taskId

This commit is contained in:
wangli 2024-03-27 18:31:47 +08:00
parent 19a51ae430
commit b176a303cc

View File

@ -2,11 +2,14 @@ package cn.axzo.workflow.core.engine.listener;
import cn.axzo.workflow.common.model.request.bpmn.BpmnNoticeConf;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.common.model.request.bpmn.task.ExtHiTaskSearchDTO;
import cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper;
import cn.axzo.workflow.core.engine.cmd.CustomCarbonCopyUserSelectorCmd;
import cn.axzo.workflow.core.engine.event.MessagePushEventBuilder;
import cn.axzo.workflow.core.engine.event.MessagePushEventImpl;
import cn.axzo.workflow.core.engine.event.MessagePushEventType;
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import cn.axzo.workflow.core.service.converter.BpmnHistoricTaskInstanceConverter;
import lombok.extern.slf4j.Slf4j;
import org.flowable.bpmn.model.Process;
@ -28,8 +31,10 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicReference;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT;
import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCarbonCopyConfigs;
@ -55,6 +60,8 @@ public class EngineCarbonCopyEventListener implements JavaDelegate {
@Resource
private BpmnHistoricTaskInstanceConverter historicTaskInstanceConverter;
@Resource
private ExtAxHiTaskInstService extAxHiTaskInstService;
@Resource
private String serviceVersion;
@Override
@ -103,9 +110,21 @@ public class EngineCarbonCopyEventListener implements JavaDelegate {
MessagePushEventImpl event = MessagePushEventBuilder.createEvent(MessagePushEventType.CARBON_COPY,
carbonUsers, bpmnNoticeConf, execution.getProcessInstanceId(),
execution.getTenantId(), null);
execution.getTenantId(), getCarbonTaskId(execution));
eventDispatcher.dispatchEvent(event, processEngineConfiguration.getEngineCfgKey());
}
private String getCarbonTaskId(DelegateExecution execution) {
AtomicReference<String> taskId = new AtomicReference<>(null);
ExtHiTaskSearchDTO searchDTO = new ExtHiTaskSearchDTO();
searchDTO.setProcessInstanceId(execution.getProcessInstanceId());
searchDTO.setTaskDefinitionKey(execution.getCurrentActivityId());
extAxHiTaskInstService.queryList(searchDTO)
.stream()
.max(Comparator.comparing(ExtAxHiTaskInst::getCreateAt))
.ifPresent(i -> taskId.set(i.getTaskId()));
return taskId.get();
}
}