From 93acbd775e747c54eaf54e9a70052021a409ae5c Mon Sep 17 00:00:00 2001 From: TanJ Date: Wed, 15 Oct 2025 10:09:45 +0800 Subject: [PATCH 1/6] =?UTF-8?q?feta(RDMP-5834)=20=20keys=E5=91=BD=E4=BB=A4?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=8A=9B=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/common/util/RedisUtils.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java index fcb207f7a..852743db0 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/common/util/RedisUtils.java @@ -455,31 +455,39 @@ public class RedisUtils { /** * 获得缓存的基本对象列表 + * 禁止使用,会导致Redis阻塞 * * @param pattern 字符串前缀 * @return 对象列表 */ + @Deprecated public static Collection keys(final String pattern) { - Stream stream = CLIENT.getKeys().getKeysStreamByPattern(pattern); - return stream.collect(Collectors.toList()); +// Stream stream = CLIENT.getKeys().getKeysStreamByPattern(pattern); +// return stream.collect(Collectors.toList()); + throw new UnsupportedOperationException("禁止使用keys命令,请使用scan"); } /** * 删除缓存的基本对象列表 * * @param pattern 字符串前缀 + * 禁止使用,会导致Redis阻塞 */ + @Deprecated public static void deleteKeys(final String pattern) { - CLIENT.getKeys().deleteByPattern(pattern); +// CLIENT.getKeys().deleteByPattern(pattern); + throw new UnsupportedOperationException("禁止使用keys命令,请使用scan"); } /** * 检查redis中是否存在key - * + * 禁止使用,会导致Redis阻塞 * @param key 键 */ + @Deprecated public static Boolean hasKey(String key) { - RKeys rKeys = CLIENT.getKeys(); - return rKeys.countExists(key) > 0; +// RKeys rKeys = CLIENT.getKeys(); +// return rKeys.countExists(key) > 0; + throw new UnsupportedOperationException("禁止使用keys命令,请使用scan"); } } From f6c13979aaed3a362fdac2bd60a46cdfde13b17e Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 31 Oct 2025 13:58:02 +0800 Subject: [PATCH 2/6] =?UTF-8?q?feat(REQ-5965)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=9A=84=20valueof=20=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/axzo/workflow/common/enums/FileTypeEnum.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/FileTypeEnum.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/FileTypeEnum.java index 08a8efa6b..6e010a885 100644 --- a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/FileTypeEnum.java +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/enums/FileTypeEnum.java @@ -35,6 +35,16 @@ public enum FileTypeEnum { return fromValue(type); } + public static FileTypeEnum valueOfLikeSuffix(String suffix) { + if (suffix == null) { + return UNKNOWN; + } + return Arrays.stream(FileTypeEnum.values()) + .filter(e -> e.getSuffix().contains(suffix)) + .findFirst() + .orElse(UNKNOWN); + } + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) public static FileTypeEnum fromValue(String value) { if (value == null) { From 3c8279e45cb1188cf62e5765ce0110326f2370a4 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Wed, 5 Nov 2025 18:02:40 +0800 Subject: [PATCH 3/6] =?UTF-8?q?fix=20-=20=E5=A2=9E=E5=8A=A0=20starter=20?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=20mq=20=E7=9A=84=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../starter/mq/broadcast/filter/InnerFilterDefinitionKey.java | 1 + .../starter/mq/broadcast/filter/InnerFilterMQOwnerShip.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterDefinitionKey.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterDefinitionKey.java index a08e15f6b..1fb23db48 100644 --- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterDefinitionKey.java +++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterDefinitionKey.java @@ -36,6 +36,7 @@ public class InnerFilterDefinitionKey implements InnerMessageQueueHandleBeforeFi } Map headers = message.getProperties(); String processDefinitionKey = headers.getOrDefault(MQ_OWNERSHIP_PROCESS_DEFINITION_KEY, ""); + log.info("MQ_OWNERSHIP_PROCESS_DEFINITION_KEY: {}", processDefinitionKey); if (properties.getBroadcast().getFilterProcessDefinitionKeys().contains(processDefinitionKey)) { return false; } diff --git a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterMQOwnerShip.java b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterMQOwnerShip.java index 1ccfd2f85..fbce3b48e 100644 --- a/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterMQOwnerShip.java +++ b/workflow-engine-spring-boot-starter/src/main/java/cn/axzo/workflow/starter/mq/broadcast/filter/InnerFilterMQOwnerShip.java @@ -34,7 +34,7 @@ public class InnerFilterMQOwnerShip implements InnerMessageQueueHandleBeforeFilt } Map headers = message.getProperties(); String mqOwnerShip = headers.getOrDefault(MQ_OWNERSHIP_APPLICATION, null); - + log.info("MQ_OWNERSHIP_APPLICATION: {}", mqOwnerShip); if (!StringUtils.hasText(mqOwnerShip)) { log.debug("【{}】The broadcast message does not attribute the message, will not be ignored. messageId: {}", this.getClass().getSimpleName(), message.getMsgId()); return false; From 956b470786190442f4343eeb88afcb1cecc4973d Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 7 Nov 2025 16:16:18 +0800 Subject: [PATCH 4/6] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=E5=A4=84?= =?UTF-8?q?=E7=90=86=20engine=20=E4=BA=8B=E4=BB=B6=E7=9A=84=20context=20?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../engine/listener/EngineActivityCallbackEventListener.java | 3 +-- .../core/engine/listener/EngineActivityEndEventListener.java | 3 +-- .../core/engine/listener/EngineActivityExtEventListener.java | 3 +-- .../core/engine/listener/EngineActivityStartEventListener.java | 3 +-- .../core/engine/listener/EngineNoticeEventListener.java | 3 +-- .../engine/listener/EngineProcessInstanceEventListener.java | 3 +-- .../workflow/core/engine/listener/EngineTaskEventListener.java | 3 +-- 7 files changed, 7 insertions(+), 14 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityCallbackEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityCallbackEventListener.java index 40c298feb..a34b74825 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityCallbackEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityCallbackEventListener.java @@ -52,10 +52,9 @@ public class EngineActivityCallbackEventListener extends AbstractFlowableEventLi } private List getOrderedListeners() { - ActivityOperationContext context = new ActivityOperationContext(); List orderListeners = new ArrayList<>(); activityListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new ActivityOperationContext())); return orderListeners; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEndEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEndEventListener.java index daa2f2694..88cf44a58 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEndEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityEndEventListener.java @@ -38,10 +38,9 @@ public class EngineActivityEndEventListener implements ExecutionListener { } private List getOrderedListeners() { - ActivityOperationContext context = new ActivityOperationContext(); List orderListeners = new ArrayList<>(); activityListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new ActivityOperationContext())); return orderListeners; } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityExtEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityExtEventListener.java index b5401fdd9..fd44ed007 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityExtEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityExtEventListener.java @@ -61,10 +61,9 @@ public class EngineActivityExtEventListener extends AbstractFlowableEventListene } private List getOrderedListeners() { - ActivityOperationContext context = new ActivityOperationContext(); List orderListeners = new ArrayList<>(); activityListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new ActivityOperationContext())); return orderListeners; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityStartEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityStartEventListener.java index 43b6e4901..969c05aff 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityStartEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineActivityStartEventListener.java @@ -38,10 +38,9 @@ public class EngineActivityStartEventListener implements ExecutionListener { } private List getOrderedListeners() { - ActivityOperationContext context = new ActivityOperationContext(); List orderListeners = new ArrayList<>(); activityListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new ActivityOperationContext())); return orderListeners; } } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineNoticeEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineNoticeEventListener.java index 9aae50069..6e4acb959 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineNoticeEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineNoticeEventListener.java @@ -116,10 +116,9 @@ public class EngineNoticeEventListener extends AbstractFlowableEventListener { } private List getOrderedListeners() { - NoticeOperationContext context = new NoticeOperationContext(); List orderListeners = new ArrayList<>(); processEventListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new NoticeOperationContext())); return orderListeners; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java index f8c3ba7b3..39e52fbda 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineProcessInstanceEventListener.java @@ -167,10 +167,9 @@ public class EngineProcessInstanceEventListener extends AbstractFlowableEngineEv } private List getOrderedListeners() { - ProcessOperationContext context = new ProcessOperationContext(); List orderListeners = new ArrayList<>(); processEventListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new ProcessOperationContext())); return orderListeners; } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java index f48f69287..8e9da97ea 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/listener/EngineTaskEventListener.java @@ -77,10 +77,9 @@ public class EngineTaskEventListener implements TaskListener { * @return */ private List getOrderedListeners() { - TaskOperationContext context = new TaskOperationContext(); List orderListeners = new ArrayList<>(); taskEventListeners.ifAvailable(orderListeners::addAll); - orderListeners.forEach(i -> i.setContext(context)); + orderListeners.forEach(i -> i.setContext(new TaskOperationContext())); return orderListeners; } From 4824a8a315d8cf815a64cced437e4e37414f372a Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 11 Nov 2025 14:04:27 +0800 Subject: [PATCH 5/6] =?UTF-8?q?feat(REQ-5965)=20-=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=9A=84=E8=AF=B7=E6=B1=82=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/web/bpmn/BpmnProcessInstanceController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 6cf182166..2ee5da05a 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 @@ -289,7 +289,7 @@ public class BpmnProcessInstanceController extends BasicPopulateAvatarController * @return */ @Operation(summary = "批量获得流程实例") - @GetMapping("/batch/get") + @PostMapping("/batch/get") @Override public CommonResponse> getBatchProcessInstanceVO(@Validated @RequestBody BpmnProcessInstanceBatchQueryDTO dto) { log.info("批量获得历史的流程实例 getProcessInstanceVO===>>>参数:{}", JSONUtil.toJsonStr(dto)); From 84e2e890de17598f0945acb85b60ce8c12dd2b62 Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Tue, 25 Nov 2025 14:46:21 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix=20-=20=E8=B0=83=E6=95=B4=E8=BD=AC?= =?UTF-8?q?=E4=BA=A4=E6=97=B6=E7=9A=84=E4=BB=BB=E5=8A=A1=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/core/engine/cmd/CustomTransferUserTaskCmd.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java index 6d370a2be..96f002ecf 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomTransferUserTaskCmd.java @@ -29,6 +29,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TASK_HAS_BEEN_COMPLETE; import static cn.axzo.workflow.common.code.BpmnTaskRespCode.TRANSFER_TO_SELF; import static cn.axzo.workflow.common.code.OtherRespCode.ASSIGNEE_NODE_ID_NOT_EXISTS; import static cn.axzo.workflow.common.constant.BpmnConstants.COMMENT_TYPE_ADVICE; @@ -100,6 +101,9 @@ public class CustomTransferUserTaskCmd extends AbstractCommand implements TaskService taskService = processEngineConfiguration.getTaskService(); TaskEntity task = (TaskEntity) taskService.createTaskQuery().taskId(originTaskId).singleResult(); + if (Objects.isNull(task)) { + throw new WorkflowEngineException(TASK_HAS_BEEN_COMPLETE); + } validTargetAssigneeNodeId(task.getProcessDefinitionId());