diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 325816b86..5eb729f60 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -85,7 +85,6 @@ import static cn.axzo.workflow.common.enums.BpmnFlowNodeMode.OR; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_BUSINESS; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_CARBON_COPY; import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_STARTER; -import static cn.axzo.workflow.common.enums.BpmnFlowNodeType.NODE_TASK; import static cn.axzo.workflow.core.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_ID_NOT_EXISTS; import static cn.axzo.workflow.core.common.code.BpmnInstanceRespCode.PROCESS_INSTANCE_NOT_EXISTS; import static cn.axzo.workflow.core.common.code.BpmnProcessDefinitionRespCode.PROCESS_DEFINITION_ID_NOT_EXISTS; @@ -568,12 +567,14 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic node.setId(userTask.getId()) .setName(userTask.getName()) .setFormKey(userTask.getFormKey()) - .setNodeType(NODE_TASK) .setNodeMode(GENERAL);//兜底设置 + // 获取最原始节点类型, 部分节点会根据功能更变运行时的节点类型,在这里统一获取变更前的原类型 + BpmnMetaParserHelper.getNodeType(i).ifPresent(node::setNodeType); if (Objects.equals(NODE_STARTER.getType(), i.getId())) { node.setNodeType(NODE_STARTER); } + // 处理一些特殊节点模式 getApprovalMethod(userTask).ifPresent(approvalMethod -> { switch (approvalMethod) { case autoPassed: @@ -602,7 +603,8 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic }); // 推测当前节点的审批人 - List forecastAssigners = springProcessEngineConfiguration.getCommandExecutor() + List forecastAssigners = + springProcessEngineConfiguration.getCommandExecutor() .execute(new CustomForecastUserTaskAssigneeCmd(processInstanceId, userTask, engineExecutionStartListener)); node.setForecastAssigners(forecastAssigners);