Merge branch 'feature/REQ-1309' into dev
This commit is contained in:
commit
bf530116ae
@ -2,6 +2,7 @@ package cn.axzo.workflow.common.model.response.bpmn.process;
|
||||
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
@ -49,4 +50,7 @@ public class BpmnProcessInstanceVO {
|
||||
@ApiModelProperty(value = "流程最终状态")
|
||||
private String businessStatus;
|
||||
|
||||
@ApiModelProperty(value = "发起人信息")
|
||||
private BpmnTaskDelegateAssigner initiator;
|
||||
|
||||
}
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
package cn.axzo.workflow.core.service.converter;
|
||||
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
|
||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.variable.api.history.HistoricVariableInstance;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.Mapping;
|
||||
|
||||
@ -36,11 +38,12 @@ public interface BpmnProcessInstanceConverter extends EntityConverter<BpmnProces
|
||||
BpmnProcessInstanceVO toVo(HistoricProcessInstance entity);
|
||||
|
||||
default BpmnProcessInstanceVO toVo(HistoricProcessInstance processInstance,
|
||||
BpmnProcessDefinitionVO processDefinition) {
|
||||
BpmnProcessDefinitionVO processDefinition,
|
||||
HistoricVariableInstance initiatorVariableInstance) {
|
||||
BpmnProcessInstanceVO vo = toVo(processInstance);
|
||||
vo.setCategory(processDefinition.getCategory());
|
||||
vo.setProcessDefinitionKey(processInstance.getProcessDefinitionKey());
|
||||
|
||||
vo.setInitiator((BpmnTaskDelegateAssigner) initiatorVariableInstance.getValue());
|
||||
return vo;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
package cn.axzo.workflow.core.service.impl;
|
||||
|
||||
import cn.axzo.workflow.common.enums.BpmProcessInstanceResultEnum;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.*;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceMyPageReqVO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.HistoricProcessInstanceSearchDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner;
|
||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinitionVO;
|
||||
@ -22,7 +27,27 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.flowable.bpmn.model.*;
|
||||
import org.flowable.bpmn.model.Artifact;
|
||||
import org.flowable.bpmn.model.Association;
|
||||
import org.flowable.bpmn.model.BpmnModel;
|
||||
import org.flowable.bpmn.model.ConditionalEventDefinition;
|
||||
import org.flowable.bpmn.model.ErrorEventDefinition;
|
||||
import org.flowable.bpmn.model.EscalationEventDefinition;
|
||||
import org.flowable.bpmn.model.Event;
|
||||
import org.flowable.bpmn.model.EventDefinition;
|
||||
import org.flowable.bpmn.model.FlowElement;
|
||||
import org.flowable.bpmn.model.FlowNode;
|
||||
import org.flowable.bpmn.model.GraphicInfo;
|
||||
import org.flowable.bpmn.model.Lane;
|
||||
import org.flowable.bpmn.model.MessageEventDefinition;
|
||||
import org.flowable.bpmn.model.Pool;
|
||||
import org.flowable.bpmn.model.SequenceFlow;
|
||||
import org.flowable.bpmn.model.ServiceTask;
|
||||
import org.flowable.bpmn.model.SignalEventDefinition;
|
||||
import org.flowable.bpmn.model.SubProcess;
|
||||
import org.flowable.bpmn.model.TextAnnotation;
|
||||
import org.flowable.bpmn.model.TimerEventDefinition;
|
||||
import org.flowable.bpmn.model.VariableListenerEventDefinition;
|
||||
import org.flowable.common.engine.impl.db.SuspensionState;
|
||||
import org.flowable.common.engine.impl.identity.Authentication;
|
||||
import org.flowable.engine.HistoryService;
|
||||
@ -35,19 +60,39 @@ import org.flowable.engine.history.HistoricProcessInstanceQuery;
|
||||
import org.flowable.engine.history.NativeHistoricProcessInstanceQuery;
|
||||
import org.flowable.engine.repository.ProcessDefinition;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstanceQuery;
|
||||
import org.flowable.form.api.FormInfo;
|
||||
import org.flowable.variable.api.history.HistoricVariableInstance;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.*;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.*;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_DELETE_PROCESS_FLAG;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_END_TENANT_ID;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_END_USER_ID;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_END_USER_NAME;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_INITIATOR;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_PROCESS_TYPE_CANCEL;
|
||||
import static cn.axzo.workflow.common.constant.BpmConstants.INTERNAL_SPECIFY_NEXT_APPROVER;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_DEFINITION_ID_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_DEFINITION_IS_SUSPENDED;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_DEFINITION_KEY_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_CANCELLED;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_INSTANCE_NOT_EXISTS;
|
||||
import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_OPERATION_PARAM_VALID_ERROR;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
@ -311,6 +356,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
if (Objects.isNull(processInstance)) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_NOT_EXISTS);
|
||||
}
|
||||
HistoricVariableInstance initiatorVariableInstance = historyService.createHistoricVariableInstanceQuery()
|
||||
.processInstanceId(processInstance.getId()).variableName(INTERNAL_INITIATOR).singleResult();
|
||||
|
||||
// 获得流程定义
|
||||
BpmnProcessDefinitionVO processDefinition = processDefinitionService
|
||||
@ -320,7 +367,7 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
processInstance.getProcessDefinitionId());
|
||||
}
|
||||
|
||||
return instanceConverter.toVo(processInstance, processDefinition);
|
||||
return instanceConverter.toVo(processInstance, processDefinition, initiatorVariableInstance);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -359,12 +406,12 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic
|
||||
|
||||
@Override
|
||||
public ObjectNode getProcessInstanceGraphical(String processInstanceId, @Nullable String tenantId) {
|
||||
ProcessInstanceQuery query = runtimeService.createProcessInstanceQuery()
|
||||
HistoricProcessInstanceQuery query = historyService.createHistoricProcessInstanceQuery()
|
||||
.processInstanceId(processInstanceId);
|
||||
if (StringUtils.isNotBlank(tenantId)) {
|
||||
query.processInstanceTenantId(tenantId);
|
||||
}
|
||||
ProcessInstance processInstance = query.singleResult();
|
||||
HistoricProcessInstance processInstance = query.singleResult();
|
||||
if (Objects.isNull(processInstance)) {
|
||||
throw new WorkflowEngineException(PROCESS_INSTANCE_NOT_EXISTS);
|
||||
}
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
package cn.axzo.workflow.server.controller.web.bpmn;
|
||||
|
||||
import cn.axzo.workflow.client.feign.bpmn.ProcessInstanceApi;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.*;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCancelDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceCreateWithFormDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceMyPageReqVO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQueryDTO;
|
||||
import cn.axzo.workflow.common.model.request.bpmn.process.HistoricProcessInstanceSearchDTO;
|
||||
import cn.axzo.workflow.common.model.response.BpmPageResult;
|
||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstancePageItemVO;
|
||||
import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO;
|
||||
@ -15,8 +20,16 @@ import io.swagger.v3.oas.annotations.Operation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.annotation.Resource;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
@ -113,9 +126,8 @@ public class BpmnProcessInstanceController implements ProcessInstanceApi {
|
||||
@GetMapping("/graphical")
|
||||
@Override
|
||||
public CommonResponse<ObjectNode> processInstanceGraphical(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId,
|
||||
@NotBlank(message = "租户不能为空") @RequestParam String tenantId) {
|
||||
return success(bpmnProcessInstanceService.getProcessInstanceGraphical(processInstanceId,
|
||||
tenantId));
|
||||
@Nullable @RequestParam(required = false) String tenantId) {
|
||||
return success(bpmnProcessInstanceService.getProcessInstanceGraphical(processInstanceId, tenantId));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user