update - 记录发起人在扩展中的数据

This commit is contained in:
wangli 2024-01-19 10:43:54 +08:00
parent 8643486275
commit 5a98b1ee44

View File

@ -1,17 +1,22 @@
package cn.axzo.workflow.core.listener.impl;
import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum;
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
import cn.axzo.workflow.core.listener.BpmnTaskEventListener;
import cn.axzo.workflow.core.repository.entity.ExtAxHiTaskInst;
import cn.axzo.workflow.core.service.ExtAxHiTaskInstService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.flowable.engine.RuntimeService;
import org.flowable.task.service.delegate.DelegateTask;
import org.springframework.stereotype.Component;
import java.util.Objects;
import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.OLD_INTERNAL_INITIATOR;
import static cn.axzo.workflow.common.constant.BpmnConstants.TASK_COMPLETE_OPERATION_TYPE;
import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER;
import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETED;
/**
@ -23,8 +28,9 @@ import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.DELETE
@Slf4j
@Component
@AllArgsConstructor
public class InternalTaskEventListener implements BpmnTaskEventListener {
public class InternalExtAxTaskInstEventListener implements BpmnTaskEventListener {
private final ExtAxHiTaskInstService hiTaskInstService;
private final RuntimeService runtimeService;
@Override
public int getOrder() {
@ -38,7 +44,20 @@ public class InternalTaskEventListener implements BpmnTaskEventListener {
entity.setTaskDefinitionKey(delegateTask.getTaskDefinitionKey());
entity.setTaskId(delegateTask.getId());
entity.setStatus(BpmnProcessInstanceResultEnum.PROCESSING.getStatus());
entity.setAssignee(delegateTask.getAssignee());
// 记录发起人
if (Objects.equals(delegateTask.getTaskDefinitionKey(), NODE_STARTER.getType())) {
BpmnTaskDelegateAssigner assigner =
(BpmnTaskDelegateAssigner) runtimeService.getVariable(delegateTask.getProcessInstanceId(),
INTERNAL_INITIATOR);
if (Objects.isNull(assigner)) {
// 兼容历史数据
assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(delegateTask.getProcessInstanceId(),
OLD_INTERNAL_INITIATOR);
}
entity.setAssignee(assigner.buildAssigneeId());
} else {
entity.setAssignee(delegateTask.getAssignee());
}
hiTaskInstService.save(entity);
}