From ea9233aa37d1344ee2b902a5e1eab6d664618bb0 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 7 Oct 2023 16:33:43 +0800 Subject: [PATCH 1/2] =?UTF-8?q?add=20-=20=E6=B7=BB=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=95=E6=93=8E=E5=86=85=E9=83=A8=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=20ID=20=E5=AE=9E=E6=97=B6=E6=8E=A8=E6=96=AD?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=89=80=E6=9C=89=E8=8A=82=E7=82=B9,?= =?UTF-8?q?=E8=AF=A5=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91=E4=B8=8D=E5=AE=8C?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/bpmn/ProcessInstanceApi.java | 10 ++++++++++ .../bpmn/process/ProcessNodeDetailVO.java | 17 +++++++++++++++++ .../service/BpmnProcessInstanceService.java | 11 ++++++++++- .../impl/BpmnProcessInstanceServiceImpl.java | 13 +++++++++++++ .../web/bpmn/BpmnProcessInstanceController.java | 9 +++++++++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java index 1396a3828..d68306211 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java @@ -8,6 +8,7 @@ import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceQue 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; +import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO; import cn.azxo.framework.common.model.CommonResponse; import com.fasterxml.jackson.databind.node.ObjectNode; import io.swagger.v3.oas.annotations.Operation; @@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestParam; import javax.annotation.Nullable; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.util.List; /** * 流程实例 API @@ -95,4 +97,12 @@ public interface ProcessInstanceApi { CommonResponse processInstanceGraphical(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, @Nullable @RequestParam(required = false) String tenantId); + /** + * 推断指定流程实例的所有节点执行顺序 + * + * @return + */ + @GetMapping("/api/process/instance/node/calc") + CommonResponse> processInstanceNodeCalc(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam(required = false) String processInstanceId, + @Nullable @RequestParam(required = false) String tenantId); } diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java new file mode 100644 index 000000000..c26373d6d --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java @@ -0,0 +1,17 @@ +package cn.axzo.workflow.common.model.response.bpmn.process; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 流程实例下的节点信息 + * + * @author wangli + * @since 2023/10/7 16:24 + */ +@Data +@Accessors(chain = true) +public class ProcessNodeDetailVO { + + private +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java index 0337a072b..7d08ad7dc 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java @@ -1,16 +1,23 @@ package cn.axzo.workflow.core.service; -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; import cn.axzo.workflow.common.model.response.bpmn.process.HistoricProcessInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO; import com.fasterxml.jackson.databind.node.ObjectNode; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.form.api.FormInfo; import javax.annotation.Nullable; import javax.validation.Valid; +import java.util.List; public interface BpmnProcessInstanceService { @@ -90,4 +97,6 @@ public interface BpmnProcessInstanceService { ObjectNode getProcessInstanceGraphical(String processInstanceId, @Nullable String tenantId); BpmPageResult historicProcessInstancePage(HistoricProcessInstanceSearchDTO dto); + + List getProcessNodes(String processInstanceId, @Nullable String tenantId); } 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 4e88353f1..3707f7b0e 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 @@ -13,6 +13,7 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinition import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstancePageItemVO; import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessInstanceVO; import cn.axzo.workflow.common.model.response.bpmn.process.HistoricProcessInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO; import cn.axzo.workflow.core.common.enums.BpmnProcessTaskResultEnum; import cn.axzo.workflow.core.common.exception.WorkflowEngineException; import cn.axzo.workflow.core.common.utils.BpmCollectionUtils; @@ -91,6 +92,7 @@ import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_DEFINITION 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_ID_NOT_EXISTS; 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; @@ -541,6 +543,17 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic } } + @Override + public List getProcessNodes(String processInstanceId, @Nullable String tenantId) { + HistoricProcessInstance instance = + historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); + if (Objects.isNull(instance)) { + throw new WorkflowEngineException(PROCESS_INSTANCE_ID_NOT_EXISTS, processInstanceId); + } + BpmnModel bpmnModel = repositoryService.getBpmnModel(instance.getProcessDefinitionId()); + bpmnModel.getMainProcess().getFlowElements(); + return null; + } private List gatherCompletedFlows(Set completedActivityInstances, Set currentActivityinstances, BpmnModel pojoModel) { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java index cc30938fa..200d8ccb2 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java @@ -11,6 +11,7 @@ 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; import cn.axzo.workflow.common.model.response.bpmn.process.HistoricProcessInstanceVO; +import cn.axzo.workflow.common.model.response.bpmn.process.ProcessNodeDetailVO; import cn.axzo.workflow.core.common.exception.WorkflowEngineException; import cn.axzo.workflow.core.service.BpmnProcessInstanceService; import cn.azxo.framework.common.model.CommonResponse; @@ -33,6 +34,7 @@ import javax.annotation.Nullable; import javax.annotation.Resource; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.util.List; import static cn.axzo.workflow.core.common.enums.BpmErrorCode.PROCESS_OPERATION_PARAM_VALID_ERROR; import static cn.azxo.framework.common.model.CommonResponse.success; @@ -130,6 +132,13 @@ public class BpmnProcessInstanceController implements ProcessInstanceApi { return success(bpmnProcessInstanceService.getProcessInstanceGraphical(processInstanceId, tenantId)); } + @GetMapping("/node/calc") + @Override + public CommonResponse> processInstanceNodeCalc(@NotBlank(message = "流程实例 ID 不能为空") @RequestParam String processInstanceId, + @Nullable String tenantId) { + return success(bpmnProcessInstanceService.getProcessNodes(processInstanceId, tenantId)); + } + /** * 枢智业务(审批台账专用) * From 08299db98ad5209fa76e52649ccaa75a85d26d37 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Sat, 7 Oct 2023 16:34:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?add=20-=20=E6=B7=BB=E5=8A=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=BC=95=E6=93=8E=E5=86=85=E9=83=A8=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=20ID=20=E5=AE=9E=E6=97=B6=E6=8E=A8=E6=96=AD?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E6=89=80=E6=9C=89=E8=8A=82=E7=82=B9,?= =?UTF-8?q?=E8=AF=A5=E6=8E=A5=E5=8F=A3=E9=80=BB=E8=BE=91=E4=B8=8D=E5=AE=8C?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/response/bpmn/process/ProcessNodeDetailVO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java index c26373d6d..716da6488 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/response/bpmn/process/ProcessNodeDetailVO.java @@ -13,5 +13,5 @@ import lombok.experimental.Accessors; @Accessors(chain = true) public class ProcessNodeDetailVO { - private + }