update(REQ-2393) - 优化 Activity 相关操作上下文的使用

This commit is contained in:
wangli 2024-05-20 09:49:47 +08:00
parent c5ec9327fd
commit 172a4b735c

View File

@ -68,7 +68,7 @@ public class RocketMqBpmActivityEventListener extends AbstractBpmnEventListener<
ProcessActivityDTO dto = build(PROCESS_ACTIVITY_START, execution);
sendMessageQueue(dto, PROCESS_ACTIVITY_START);
log.info("RocketMqBpmActivityEventListener#onStart...end, activityId: {}",
execution.getCurrentActivityId());
execution.getCurrentActivityId());
}
@ -82,19 +82,18 @@ public class RocketMqBpmActivityEventListener extends AbstractBpmnEventListener<
dto.setActivityName(event.getActivityName());
dto.setProcessInstanceId(event.getProcessInstanceId());
dto.setProcessDefinitionId(event.getProcessDefinitionId());
ProcessInstance processInstance =
runtimeService.createProcessInstanceQuery().processInstanceId(event.getProcessInstanceId()).singleResult();
ProcessInstance processInstance = getContext().getProcessInstance(() ->
runtimeService.createProcessInstanceQuery()
.processInstanceId(event.getProcessInstanceId())
.includeProcessVariables()
.singleResult());
if (Objects.nonNull(processInstance)) {
dto.setProcessDefinitionKey(processInstance.getProcessDefinitionKey());
dto.setBusinessKey(processInstance.getBusinessKey());
}
dto.setTriggerId(event.getExecutionId());
dto.setVariables(event.getVariables());
String version = (String) runtimeService.getVariable(event.getProcessInstanceId(), WORKFLOW_ENGINE_VERSION);
if (Objects.isNull(version)) {
version = FLOW_SERVER_VERSION_121;
}
dto.setWorkflowEngineVersion(version);
dto.setWorkflowEngineVersion(String.valueOf(event.getVariables().getOrDefault(WORKFLOW_ENGINE_VERSION, FLOW_SERVER_VERSION_121)));
sendMessageQueue(dto, PROCESS_ACTIVITY_WAIT_ASSIGNEE);
log.info("RocketMqBpmActivityEventListener#onWaitAssignee...end, activityId: {}", event.getActivityId());
}
@ -102,27 +101,27 @@ public class RocketMqBpmActivityEventListener extends AbstractBpmnEventListener<
@Override
public void onTake(DelegateExecution execution) {
log.info("RocketMqBpmActivityEventListener#onTake...activityId: {}",
execution.getCurrentActivityId());
execution.getCurrentActivityId());
ProcessActivityDTO dto = build(PROCESS_ACTIVITY_TAKE, execution);
handlePassedAssignee(execution, dto);
sendMessageQueue(dto, PROCESS_ACTIVITY_TAKE);
log.info("RocketMqBpmActivityEventListener#onTake...end, activityId: {}",
execution.getCurrentActivityId());
execution.getCurrentActivityId());
}
@Override
public void onEnd(DelegateExecution execution) {
log.info("RocketMqMessagePushEventListener#onEnd...activityId: {}",
execution.getCurrentActivityId());
execution.getCurrentActivityId());
ProcessActivityDTO dto = build(PROCESS_ACTIVITY_END, execution);
handlePassedAssignee(execution, dto);
sendMessageQueue(dto, PROCESS_ACTIVITY_END);
log.info("RocketMqBpmActivityEventListener#onEnd...end, activityId: {}",
execution.getCurrentActivityId());
execution.getCurrentActivityId());
}
private ProcessActivityDTO build(ProcessActivityEventEnum type, DelegateExecution execution) {
@ -135,18 +134,18 @@ public class RocketMqBpmActivityEventListener extends AbstractBpmnEventListener<
dto.setTriggerId(execution.getId());
dto.setActivityId(execution.getCurrentActivityId());
dto.setActivityName(((ExecutionEntityImpl) execution).getCurrentActivityName());
ProcessInstance processInstance =
runtimeService.createProcessInstanceQuery().processInstanceId(execution.getProcessInstanceId()).includeProcessVariables().singleResult();
ProcessInstance processInstance = getContext().getProcessInstance(() ->
runtimeService.createProcessInstanceQuery().processInstanceId(execution.getProcessInstanceId())
.includeProcessVariables().singleResult());
if (Objects.nonNull(processInstance)) {
dto.setProcessDefinitionKey(processInstance.getProcessDefinitionKey());
dto.setBusinessKey(processInstance.getBusinessKey());
dto.setVariables(processInstance.getProcessVariables());
dto.setWorkflowEngineVersion(String.valueOf(processInstance.getProcessVariables()
.getOrDefault(WORKFLOW_ENGINE_VERSION, FLOW_SERVER_VERSION_121)));
} else {
dto.setWorkflowEngineVersion(FLOW_SERVER_VERSION_121);
}
String version = (String) runtimeService.getVariable(processInstance.getId(), WORKFLOW_ENGINE_VERSION);
if (Objects.isNull(version)) {
version = FLOW_SERVER_VERSION_121;
}
dto.setWorkflowEngineVersion(version);
Process mainProcess = repositoryService.getBpmnModel(execution.getProcessDefinitionId()).getMainProcess();
BpmnMetaParserHelper.getNoticeConfig(mainProcess).ifPresent(dto::setNoticeConf);
return dto;