From 282721a32100368b0bad7fedd9a689f12dc2ba14 Mon Sep 17 00:00:00 2001 From: "everywhere.z" Date: Mon, 12 May 2025 13:11:23 +0800 Subject: [PATCH] =?UTF-8?q?bug=20#IC71HA=20=E5=9C=A8=E7=BA=BF=E7=A8=8B1?= =?UTF-8?q?=E7=9A=84=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B=E4=B8=AD=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B2=E5=8E=BBremove=20chain=E5=AF=BC=E8=87=B4=E7=9A=84?= =?UTF-8?q?=E7=BA=BF=E7=A8=8B1=E6=97=A0=E6=B3=95=E5=B9=B3=E6=BB=91?= =?UTF-8?q?=E7=BB=A7=E7=BB=AD=E6=89=A7=E8=A1=8C=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/flow/element/Chain.java | 3 +- .../liteflow/flow/element/Condition.java | 2 +- .../java/com/yomahub/liteflow/slot/Slot.java | 30 +++++++++++++++---- .../liteflow/thread/ExecutorHelper.java | 4 +-- pom.xml | 2 +- 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Chain.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Chain.java index af7f2d5df..185708d73 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Chain.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Chain.java @@ -120,8 +120,9 @@ public class Chain implements Executable{ ); } - // 设置主ChainName + // 设置主ChainId slot.setChainId(chainId); + slot.addChainInstance(this); // 执行主体Condition for (Condition condition : conditionList) { condition.setCurrChainId(chainId); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Condition.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Condition.java index 2e126bad0..66e4d1e9d 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Condition.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/element/Condition.java @@ -45,7 +45,7 @@ public abstract class Condition implements Executable{ private final Map> executableGroup = new HashMap<>(); /** - * 当前所在的ChainName 如果对于子流程来说,那这个就是子流程所在的Chain + * 当前所在的ChainId 如果对于子流程来说,那这个就是子流程所在的Chain */ private String currChainId; diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java index 00663e061..dc1896ac1 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/Slot.java @@ -16,12 +16,12 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.ttl.TransmittableThreadLocal; import com.yomahub.liteflow.exception.NoSuchContextBeanException; import com.yomahub.liteflow.exception.NullParamException; +import com.yomahub.liteflow.flow.element.Chain; import com.yomahub.liteflow.flow.element.Condition; import com.yomahub.liteflow.flow.entity.CmpStep; import com.yomahub.liteflow.flow.id.IdGeneratorHolder; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; -import com.yomahub.liteflow.property.LiteflowConfigGetter; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -46,7 +46,9 @@ public class Slot { private static final String RESPONSE = "_response"; - private static final String CHAIN_NAME = "_chain_name"; + private static final String CHAIN_ID = "_chain_id"; + + private static final String CHAIN_INSTANCE = "_chain_instance"; private static final String SWITCH_NODE_PREFIX = "_switch_"; @@ -326,13 +328,31 @@ public class Slot { } public void setChainId(String chainId) { - if (!hasMetaData(CHAIN_NAME)) { - this.putMetaDataMap(CHAIN_NAME, chainId); + if (!hasMetaData(CHAIN_ID)) { + this.putMetaDataMap(CHAIN_ID, chainId); } } public String getChainId() { - return (String) metaDataMap.get(CHAIN_NAME); + return (String) metaDataMap.get(CHAIN_ID); + } + + public void addChainInstance(Chain chain){ + if (!hasMetaData(CHAIN_INSTANCE)) { + this.putMetaDataMap(CHAIN_INSTANCE, ListUtil.toList(chain)); + }else{ + List list = (List) metaDataMap.get(CHAIN_INSTANCE); + list.add(chain); + } + } + + public Chain getCurrentChainInstance(String currentChainId){ + if (hasMetaData(CHAIN_INSTANCE)) { + List list = (List) metaDataMap.get(CHAIN_INSTANCE); + return list.stream().filter(chain -> chain.getId().equals(currentChainId)).findFirst().orElse(null); + }else{ + return null; + } } public void addStep(CmpStep step) { diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java b/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java index 239f6a28b..fdcda3acd 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/thread/ExecutorHelper.java @@ -185,8 +185,8 @@ public class ExecutorHelper { public ExecutorService buildExecutorService(Condition condition, Integer slotIndex, ConditionTypeEnum type) { ExecutorService executor; LiteflowConfig liteflowConfig = LiteflowConfigGetter.get(); - String chainId = DataBus.getSlot(slotIndex).getChainId(); - Chain chain = FlowBus.getChain(chainId); + String currChainId = condition.getCurrChainId(); + Chain chain = DataBus.getSlot(slotIndex).getCurrentChainInstance(currChainId); // 构建条件判断对象 ExecutorCondition execCondition = ExecutorConditionBuilder.buildExecutorCondition( diff --git a/pom.xml b/pom.xml index 00fa289f6..6422ea1c8 100644 --- a/pom.xml +++ b/pom.xml @@ -39,7 +39,7 @@ - 2.13.2 + 2.13.2.1 UTF-8 UTF-8 8