From f1d93a4d0fe7469db667f460aeeadbc1b348b540 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 21 Nov 2025 10:58:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(RDMP-3845)=20-=20=E8=B0=83=E6=95=B4=20MQ?= =?UTF-8?q?=20=E5=B9=BF=E6=92=AD=E4=BA=8B=E4=BB=B6=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8F=98=E9=87=8F=E8=BE=93=E5=87=BA=EF=BC=8C?= =?UTF-8?q?=E8=BF=87=E6=BB=A4=E4=B8=80=E4=BA=9B=E5=AF=B9=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=97=A0=E5=85=B3=E7=B4=A7=E8=A6=81=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/AbstractBpmnEventListener.java | 34 +++++++++++++++++++ ...RocketMqBpmActivityEvent_100_Listener.java | 2 +- .../RocketMqMessagePushEventListener.java | 3 +- .../RocketMqBpmnProcessEventListener.java | 12 +++---- .../RocketMqBpmnTaskEvent_102_Listener.java | 2 +- 5 files changed, 43 insertions(+), 10 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/AbstractBpmnEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/AbstractBpmnEventListener.java index de1d2069e..5094a8ff5 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/AbstractBpmnEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/listener/AbstractBpmnEventListener.java @@ -1,10 +1,17 @@ package cn.axzo.workflow.core.listener; +import cn.axzo.workflow.common.constant.BpmnConstants; import cn.axzo.workflow.core.common.context.OperationContext; import cn.hutool.json.JSONUtil; import org.slf4j.MDC; import org.springframework.util.StringUtils; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + import static cn.azxo.framework.common.constatns.Constants.CTX_LOG_ID_MDC; /** @@ -43,4 +50,31 @@ public abstract class AbstractBpmnEventListener impl } return processDefinitionId.split(":")[0]; } + + public static Map removeBpmnConstantsVariables(Map originVariables) { + // 定义多个正则表达式规则 + List regexPatterns = Arrays.asList( + "^" + BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_INFO, // 以 "" 开头 + "^" + BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT, + "^" + BpmnConstants.TASK_COMPLETE_OPERATION_TYPE, + "^" + BpmnConstants.INTERNAL_TASK_RELATION_ASSIGNEE_LIST_INFO, + "_old$", // 以 "_old" 结尾 + "deprecated|obsolete" // 包含 "deprecated" 或 "obsolete" + ); + + // 预编译正则表达式,提升性能 + List patterns = regexPatterns.stream() + .map(Pattern::compile) + .collect(Collectors.toList()); + + // 使用 Stream API 和正则进行过滤 + Map filteredMap = originVariables.entrySet().stream() + .filter(entry -> patterns.stream() + .noneMatch(pattern -> pattern.matcher(entry.getKey()).find())) + .collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue + )); + return filteredMap; + } } diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEvent_100_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEvent_100_Listener.java index f4d2a6e37..7477c38c1 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEvent_100_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/activity/RocketMqBpmActivityEvent_100_Listener.java @@ -178,7 +178,7 @@ public class RocketMqBpmActivityEvent_100_Listener extends AbstractBpmnEventList if (Objects.nonNull(processInstance)) { dto.setProcessDefinitionKey(processInstance.getProcessDefinitionKey()); dto.setBusinessKey(processInstance.getBusinessKey()); - dto.setVariables(processInstance.getProcessVariables()); + dto.setVariables(removeBpmnConstantsVariables(processInstance.getProcessVariables())); dto.setWorkflowEngineVersion(String.valueOf(processInstance.getProcessVariables() .getOrDefault(WORKFLOW_ENGINE_VERSION, FLOW_SERVER_VERSION_121))); } else { diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java index abc275bbb..6d6f2efb5 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/notice/RocketMqMessagePushEventListener.java @@ -26,7 +26,6 @@ import org.flowable.engine.HistoryService; import org.flowable.engine.TaskService; import org.flowable.engine.impl.util.CommandContextUtil; import org.flowable.engine.impl.util.ProcessDefinitionUtil; -import org.flowable.task.api.Task; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.service.impl.persistence.entity.TaskEntity; import org.springframework.beans.factory.annotation.Value; @@ -451,7 +450,7 @@ public class RocketMqMessagePushEventListener extends AbstractBpmnEventListener< .setTemplateId(templateId) .setTaskId(event.getTaskId()) .setReceivePersons(event.getAssigners()) - .setVariables(variables) + .setVariables(removeBpmnConstantsVariables(variables)) .setProcessApproveConf(event.getProcessApproveConfig()) .setActivitySignature(activitySignature) .setTerminalType(terminalType); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java index 66629e9f9..cbd5da270 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/process/RocketMqBpmnProcessEventListener.java @@ -81,7 +81,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey()) .setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion()) .setInitiator(initiator) - .setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables()) + .setVariables(removeBpmnConstantsVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())) .setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime()) .setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId()) .setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getBusinessKey()) @@ -117,7 +117,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setProcessDefinitionKey(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionKey()) .setProcessDefinitionVersion(((ExecutionEntityImpl) event.getEntity()).getProcessDefinitionVersion()) .setInitiator(initiator) - .setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables()) + .setVariables(removeBpmnConstantsVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())) .setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime()) .setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId()) .setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getProcessInstance().getBusinessKey()) @@ -151,7 +151,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setInitiator(initiator) .setLastOperationAssigner(getContext().getLastOperationAssigner(() -> BpmnTaskDelegateAssigner.toObjectCompatible( runtimeService.getVariable(event.getProcessInstanceId(), CLOSE_PROCESS_ASSIGNER, BpmnTaskDelegateAssigner.class)))) - .setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables()) + .setVariables(removeBpmnConstantsVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())) .setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime()) .setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId()) .setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey()) @@ -192,7 +192,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setInitiator(initiator) .setLastOperationAssigner(getContext().getLastOperationAssigner(() -> BpmnTaskDelegateAssigner.toObjectCompatible( runtimeService.getVariable(event.getProcessInstanceId(), CLOSE_PROCESS_ASSIGNER, BpmnTaskDelegateAssigner.class)))) - .setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables()) + .setVariables(removeBpmnConstantsVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())) .setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime()) .setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId()) .setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey()) @@ -228,7 +228,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setInitiator(initiator) .setLastOperationAssigner(getContext().getLastOperationAssigner(() -> BpmnTaskDelegateAssigner.toObjectCompatible( runtimeService.getVariable(event.getProcessInstanceId(), CLOSE_PROCESS_ASSIGNER, BpmnTaskDelegateAssigner.class)))) - .setVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables()) + .setVariables(removeBpmnConstantsVariables(((FlowableProcessCancelledEventImpl) event).getExecution().getVariables())) .setStartTime(((ExecutionEntityImpl) ((FlowableProcessCancelledEventImpl) event).getExecution()).getStartTime()) .setTenantId(((FlowableProcessCancelledEventImpl) event).getExecution().getTenantId()) .setBusinessKey(((FlowableProcessCancelledEventImpl) event).getExecution().getProcessInstanceBusinessKey()) @@ -264,7 +264,7 @@ public class RocketMqBpmnProcessEventListener extends AbstractBpmnEventListener< .setInitiator(initiator) .setLastOperationAssigner(getContext().getLastOperationAssigner(() -> BpmnTaskDelegateAssigner.toObjectCompatible( runtimeService.getVariable(event.getProcessInstanceId(), CLOSE_PROCESS_ASSIGNER, BpmnTaskDelegateAssigner.class)))) - .setVariables(((ExecutionEntityImpl) event.getEntity()).getVariables()) + .setVariables(removeBpmnConstantsVariables(((ExecutionEntityImpl) event.getEntity()).getVariables())) .setStartTime(((ExecutionEntityImpl) event.getEntity()).getStartTime()) .setTenantId(((ExecutionEntityImpl) event.getEntity()).getTenantId()) .setBusinessKey(((ExecutionEntityImpl) event.getEntity()).getProcessInstanceBusinessKey()) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEvent_102_Listener.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEvent_102_Listener.java index ff1e2b666..42e347658 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEvent_102_Listener.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/listener/task/RocketMqBpmnTaskEvent_102_Listener.java @@ -154,7 +154,7 @@ public class RocketMqBpmnTaskEvent_102_Listener extends AbstractBpmnEventListene .setInitiator(BpmnTaskDelegateAssigner.toObjectCompatible(delegateTask.getVariable(INTERNAL_INITIATOR))) .setApprover(BpmnTaskDelegateAssigner.toObjectCompatible( delegateTask.getVariable(INTERNAL_TASK_RELATION_ASSIGNEE_INFO + delegateTask.getId()))) - .setVariables(delegateTask.getVariables()) + .setVariables(removeBpmnConstantsVariables(delegateTask.getVariables())) .setStartTime(delegateTask.getCreateTime()) .setTenantId(delegateTask.getTenantId()) .setBusinessKey(processInstance.getBusinessKey())