From 864348627511cb98df196e6bb84324e0621e7143 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Thu, 18 Jan 2024 18:15:26 +0800 Subject: [PATCH] =?UTF-8?q?update=20-=20=E5=85=BC=E5=AE=B9=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BpmnProcessInstanceServiceImpl.java | 24 ++++++++++++------- .../server/aspect/ControllerTimingAspect.java | 19 +++++++++++++++ 2 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 workflow-engine-server/src/main/java/cn/axzo/workflow/server/aspect/ControllerTimingAspect.java 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 4bf0e6c3a..e62cb81d5 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 @@ -55,6 +55,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.form.api.FormInfo; import org.flowable.spring.SpringProcessEngineConfiguration; +import org.flowable.variable.api.history.HistoricVariableInstance; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -362,25 +363,32 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic processInstance.getProcessDefinitionId()); } - BpmnTaskDelegateAssigner assigner; + BpmnTaskDelegateAssigner assigner = null; + String version = null; if (dto.getHasVariable()) { assigner = (BpmnTaskDelegateAssigner) processInstance.getProcessVariables().get(INTERNAL_INITIATOR); if (Objects.isNull(assigner)) { assigner = (BpmnTaskDelegateAssigner) processInstance.getProcessVariables().get(OLD_INTERNAL_INITIATOR); } + version = (String) processInstance.getProcessVariables().get(WORKFLOW_ENGINE_VERSION); + } else { - assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(processInstance.getId(), - INTERNAL_INITIATOR); - if (Objects.isNull(assigner)) { - assigner = (BpmnTaskDelegateAssigner) runtimeService.getVariable(processInstance.getId(), - OLD_INTERNAL_INITIATOR); + List variableInstances = historyService.createHistoricVariableInstanceQuery() + .processInstanceId(processInstance.getId()).list(); + for (HistoricVariableInstance i : variableInstances) { + if (Objects.equals(i.getVariableName(), INTERNAL_INITIATOR) || Objects.equals(i.getVariableName(), + OLD_INTERNAL_INITIATOR)) { + assigner = (BpmnTaskDelegateAssigner) i.getValue(); + } + if (Objects.equals(i.getVariableName(), WORKFLOW_ENGINE_VERSION)) { + version = (String) i.getValue(); + } } } - - String version = (String) runtimeService.getVariable(processInstance.getId(), WORKFLOW_ENGINE_VERSION); if (Objects.isNull(version)) { version = FLOW_SERVER_VERSION_121; } + BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId()); return instanceConverter.toVo(processInstance, processDefinition, getButtonConfig(bpmnModel.getMainProcess()) , assigner, version); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/aspect/ControllerTimingAspect.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/aspect/ControllerTimingAspect.java new file mode 100644 index 000000000..2ff1da3a9 --- /dev/null +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/aspect/ControllerTimingAspect.java @@ -0,0 +1,19 @@ +package cn.axzo.workflow.server.aspect; + +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; + +/** + * Controller 方法执行耗时 + * + * @author wangli + * @since 2024/1/18 18:02 + */ +@Aspect +@Component +public class ControllerTimingAspect { + + @Pointcut("within(@org.springframework.web.bind.annotation.RestController *)") + public void controllerMethods() {} +}