Merge branch 'feature/REQ-5965' into dev

This commit is contained in:
wangli 2025-11-21 11:00:09 +08:00
commit f6847ad087
5 changed files with 43 additions and 10 deletions

View File

@ -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<T extends OperationContext> impl
}
return processDefinitionId.split(":")[0];
}
public static Map<String, Object> removeBpmnConstantsVariables(Map<String, Object> originVariables) {
// 定义多个正则表达式规则
List<String> 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<Pattern> patterns = regexPatterns.stream()
.map(Pattern::compile)
.collect(Collectors.toList());
// 使用 Stream API 和正则进行过滤
Map<String, Object> 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;
}
}

View File

@ -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 {

View File

@ -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);

View File

@ -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())

View File

@ -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())