diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java index 1ba56db47..50118790e 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/core/FlowExecutor.java @@ -25,6 +25,8 @@ import com.yomahub.liteflow.flow.element.Node; import com.yomahub.liteflow.flow.element.Rollbackable; import com.yomahub.liteflow.flow.entity.CmpStep; import com.yomahub.liteflow.flow.id.IdGeneratorHolder; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; +import com.yomahub.liteflow.lifecycle.PostProcessFlowExecuteLifeCycle; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import com.yomahub.liteflow.monitor.MonitorFile; @@ -43,6 +45,7 @@ import com.yomahub.liteflow.thread.ExecutorHelper; import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; +import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; @@ -407,6 +410,13 @@ public class FlowExecutor { throw new NoAvailableSlotException(StrUtil.format("the slot[{}] is not exist", slotIndex)); } + // 如果有FlowExecute生命周期实现,则执行 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessFlowExecuteLifeCycleList())){ + LifeCycleHolder.getPostProcessFlowExecuteLifeCycleList().forEach( + postProcessFlowExecuteLifeCycle -> postProcessFlowExecuteLifeCycle.postProcessBeforeFlowExecute(chainId, slot) + ); + } + //如果传入了用户的RequestId,则用这个请求Id,如果没传入,则进行生成 if (StrUtil.isNotBlank(requestId)){ slot.putRequestId(requestId); @@ -515,6 +525,13 @@ public class FlowExecutor { DataBus.releaseSlot(slotIndex); LFLoggerManager.removeRequestId(); } + + // 如果有FlowExecute生命周期实现,则执行 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessFlowExecuteLifeCycleList())){ + LifeCycleHolder.getPostProcessFlowExecuteLifeCycleList().forEach( + postProcessFlowExecuteLifeCycle -> postProcessFlowExecuteLifeCycle.postProcessAfterFlowExecute(chainId, slot) + ); + } } return slot; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java index 6cc9b609d..1294248a0 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/FlowBus.java @@ -8,6 +8,7 @@ */ package com.yomahub.liteflow.flow; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.annotation.FallbackCmp; @@ -91,11 +92,21 @@ public class FlowBus { // 这个方法主要用于第二阶段的替换chain public static void addChain(Chain chain) { - chainMap.put(chain.getChainId(), chain); //如果有生命周期则执行相应生命周期实现 - LifeCycleHolder.getPostProcessAfterChainBuildLifeCycleList().forEach( - postProcessAfterChainBuildLifeCycle -> postProcessAfterChainBuildLifeCycle.postProcessAfterChainBuild(chain) - ); + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessChainBuildLifeCycleList())){ + LifeCycleHolder.getPostProcessChainBuildLifeCycleList().forEach( + postProcessAfterChainBuildLifeCycle -> postProcessAfterChainBuildLifeCycle.postProcessBeforeChainBuild(chain) + ); + } + + chainMap.put(chain.getChainId(), chain); + + //如果有生命周期则执行相应生命周期实现 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessChainBuildLifeCycleList())){ + LifeCycleHolder.getPostProcessChainBuildLifeCycleList().forEach( + postProcessAfterChainBuildLifeCycle -> postProcessAfterChainBuildLifeCycle.postProcessAfterChainBuild(chain) + ); + } } public static boolean containChain(String chainId) { @@ -374,11 +385,21 @@ public class FlowBus { } private static void put2NodeMap(String nodeId, Node node){ - nodeMap.put(nodeId, node); // 如果有生命周期则执行相应生命周期实现 - LifeCycleHolder.getPostProcessAfterNodeBuildLifeCycleList().forEach( - postProcessAfterNodeBuildLifeCycle -> postProcessAfterNodeBuildLifeCycle.postProcessAfterNodeBuild(node) - ); + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessNodeBuildLifeCycleList())){ + LifeCycleHolder.getPostProcessNodeBuildLifeCycleList().forEach( + postProcessAfterNodeBuildLifeCycle -> postProcessAfterNodeBuildLifeCycle.postProcessBeforeNodeBuild(node) + ); + } + + nodeMap.put(nodeId, node); + + // 如果有生命周期则执行相应生命周期实现 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessNodeBuildLifeCycleList())){ + LifeCycleHolder.getPostProcessNodeBuildLifeCycleList().forEach( + postProcessAfterNodeBuildLifeCycle -> postProcessAfterNodeBuildLifeCycle.postProcessAfterNodeBuild(node) + ); + } } } 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 fef1c6515..f8d6ae437 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 @@ -11,7 +11,10 @@ package com.yomahub.liteflow.flow.element; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.BooleanUtil; import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; +import com.yomahub.liteflow.common.ChainConstant; import com.yomahub.liteflow.exception.ChainEndException; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; +import com.yomahub.liteflow.lifecycle.PostProcessChainExecuteLifeCycle; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import com.yomahub.liteflow.slot.DataBus; @@ -20,6 +23,7 @@ import com.yomahub.liteflow.enums.ExecuteableTypeEnum; import com.yomahub.liteflow.exception.FlowSystemException; import java.util.ArrayList; import java.util.List; +import java.util.function.Consumer; /** * chain对象,实现可执行器 @@ -40,7 +44,7 @@ public class Chain implements Executable{ private boolean isCompiled = true; - private String namespace; + private String namespace = ChainConstant.DEFAULT_NAMESPACE; public Chain(String chainName) { this.chainId = chainName; @@ -98,6 +102,13 @@ public class Chain implements Executable{ } Slot slot = DataBus.getSlot(slotIndex); try { + //如果有生命周期则执行相应生命周期实现 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessChainExecuteLifeCycleList())){ + LifeCycleHolder.getPostProcessChainExecuteLifeCycleList().forEach( + postProcessChainExecuteLifeCycle -> postProcessChainExecuteLifeCycle.postProcessBeforeChainExecute(chainId, slot) + ); + } + // 设置主ChainName slot.setChainId(chainId); // 执行主体Condition @@ -105,6 +116,13 @@ public class Chain implements Executable{ condition.setCurrChainId(chainId); condition.execute(slotIndex); } + + //如果有生命周期则执行相应生命周期实现 + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessChainExecuteLifeCycleList())){ + LifeCycleHolder.getPostProcessChainExecuteLifeCycleList().forEach( + postProcessChainExecuteLifeCycle -> postProcessChainExecuteLifeCycle.postProcessAfterChainExecute(chainId, slot) + ); + } } catch (ChainEndException e) { // 这里单独catch ChainEndException是因为ChainEndException是用户自己setIsEnd抛出的异常 diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/LifeCycleHolder.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/LifeCycleHolder.java index 0202147d2..8b9ceab8c 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/LifeCycleHolder.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/LifeCycleHolder.java @@ -12,32 +12,56 @@ import java.util.List; */ public class LifeCycleHolder { - private static final List postProcessAfterScriptEngineInitLifeCycleList = new ArrayList<>(); + private static final List POST_PROCESS_SCRIPT_ENGINE_INIT_LIFE_CYCLE_LIST = new ArrayList<>(); - private static final List postProcessAfterChainBuildLifeCycleList = new ArrayList<>(); + private static final List POST_PROCESS_CHAIN_BUILD_LIFE_CYCLE_LIST = new ArrayList<>(); - private static final List postProcessAfterNodeBuildLifeCycleList = new ArrayList<>(); + private static final List POST_PROCESS_NODE_BUILD_LIFE_CYCLE_LIST = new ArrayList<>(); + + private static final List POST_PROCESS_FLOW_EXECUTE_LIFE_CYCLE_LIST = new ArrayList<>(); + + private static final List POST_PROCESS_CHAIN_EXECUTE_LIFE_CYCLE_LIST = new ArrayList<>(); public static void addLifeCycle(LifeCycle lifeCycle){ - if (PostProcessAfterScriptEngineInitLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ - postProcessAfterScriptEngineInitLifeCycleList.add((PostProcessAfterScriptEngineInitLifeCycle)lifeCycle); - }else if(PostProcessAfterChainBuildLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ - postProcessAfterChainBuildLifeCycleList.add((PostProcessAfterChainBuildLifeCycle)lifeCycle); - }else if(PostProcessAfterNodeBuildLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ - postProcessAfterNodeBuildLifeCycleList.add((PostProcessAfterNodeBuildLifeCycle)lifeCycle); + if (PostProcessScriptEngineInitLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ + POST_PROCESS_SCRIPT_ENGINE_INIT_LIFE_CYCLE_LIST.add((PostProcessScriptEngineInitLifeCycle)lifeCycle); + }else if(PostProcessChainBuildLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ + POST_PROCESS_CHAIN_BUILD_LIFE_CYCLE_LIST.add((PostProcessChainBuildLifeCycle)lifeCycle); + }else if(PostProcessNodeBuildLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ + POST_PROCESS_NODE_BUILD_LIFE_CYCLE_LIST.add((PostProcessNodeBuildLifeCycle)lifeCycle); + }else if(PostProcessFlowExecuteLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ + POST_PROCESS_FLOW_EXECUTE_LIFE_CYCLE_LIST.add((PostProcessFlowExecuteLifeCycle)lifeCycle); + }else if(PostProcessChainExecuteLifeCycle.class.isAssignableFrom(lifeCycle.getClass())){ + POST_PROCESS_CHAIN_EXECUTE_LIFE_CYCLE_LIST.add((PostProcessChainExecuteLifeCycle)lifeCycle); } } - public static List getPostProcessAfterScriptEngineInitLifeCycleList() { - return postProcessAfterScriptEngineInitLifeCycleList; + public static List getPostProcessScriptEngineInitLifeCycleList() { + return POST_PROCESS_SCRIPT_ENGINE_INIT_LIFE_CYCLE_LIST; } - public static List getPostProcessAfterChainBuildLifeCycleList() { - return postProcessAfterChainBuildLifeCycleList; + public static List getPostProcessChainBuildLifeCycleList() { + return POST_PROCESS_CHAIN_BUILD_LIFE_CYCLE_LIST; } - public static List getPostProcessAfterNodeBuildLifeCycleList() { - return postProcessAfterNodeBuildLifeCycleList; + public static List getPostProcessNodeBuildLifeCycleList() { + return POST_PROCESS_NODE_BUILD_LIFE_CYCLE_LIST; + } + + public static List getPostProcessFlowExecuteLifeCycleList() { + return POST_PROCESS_FLOW_EXECUTE_LIFE_CYCLE_LIST; + } + + public static List getPostProcessChainExecuteLifeCycleList() { + return POST_PROCESS_CHAIN_EXECUTE_LIFE_CYCLE_LIST; + } + + public static void clean(){ + POST_PROCESS_SCRIPT_ENGINE_INIT_LIFE_CYCLE_LIST.clear(); + POST_PROCESS_CHAIN_BUILD_LIFE_CYCLE_LIST.clear(); + POST_PROCESS_NODE_BUILD_LIFE_CYCLE_LIST.clear(); + POST_PROCESS_FLOW_EXECUTE_LIFE_CYCLE_LIST.clear(); + POST_PROCESS_CHAIN_EXECUTE_LIFE_CYCLE_LIST.clear(); } } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterChainBuildLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainBuildLifeCycle.java similarity index 56% rename from liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterChainBuildLifeCycle.java rename to liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainBuildLifeCycle.java index 305c6716a..9535f344e 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterChainBuildLifeCycle.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainBuildLifeCycle.java @@ -4,12 +4,14 @@ import com.yomahub.liteflow.flow.element.Chain; /** * 生命周期接口 - * 在Chain构造后执行,如果有实现的话 + * 在Chain构造时期,如果有实现的话 * * @author Bryan.Zhang * @since 2.12.4 */ -public interface PostProcessAfterChainBuildLifeCycle extends LifeCycle { +public interface PostProcessChainBuildLifeCycle extends LifeCycle { + + void postProcessBeforeChainBuild(Chain chain); void postProcessAfterChainBuild(Chain chain); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainExecuteLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainExecuteLifeCycle.java new file mode 100644 index 000000000..2434376db --- /dev/null +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainExecuteLifeCycle.java @@ -0,0 +1,17 @@ +package com.yomahub.liteflow.lifecycle; + +import com.yomahub.liteflow.slot.Slot; + +/** + * 生命周期接口 + * 执行Chain的时候 + * + * @author Bryan.Zhang + * @since 2.12.4 + */ +public interface PostProcessChainExecuteLifeCycle extends LifeCycle{ + + void postProcessBeforeChainExecute(String chainId, Slot slot); + + void postProcessAfterChainExecute(String chainId, Slot slot); +} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessFlowExecuteLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessFlowExecuteLifeCycle.java new file mode 100644 index 000000000..b75705996 --- /dev/null +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessFlowExecuteLifeCycle.java @@ -0,0 +1,17 @@ +package com.yomahub.liteflow.lifecycle; + +import com.yomahub.liteflow.slot.Slot; + +/** + * 生命周期接口 + * 执行FLowExecutor的时候 + * + * @author Bryan.Zhang + * @since 2.12.4 + */ +public interface PostProcessFlowExecuteLifeCycle extends LifeCycle{ + + void postProcessBeforeFlowExecute(String chainId, Slot slot); + + void postProcessAfterFlowExecute(String chainId, Slot slot); +} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterNodeBuildLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessNodeBuildLifeCycle.java similarity index 56% rename from liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterNodeBuildLifeCycle.java rename to liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessNodeBuildLifeCycle.java index 763bbb660..7b44fcf43 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterNodeBuildLifeCycle.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessNodeBuildLifeCycle.java @@ -4,12 +4,14 @@ import com.yomahub.liteflow.flow.element.Node; /** * 生命周期接口 - * 在Node构造后执行,如果有实现的话 + * 在Node构造时期,如果有实现的话 * * @author Bryan.Zhang * @since 2.12.4 */ -public interface PostProcessAfterNodeBuildLifeCycle extends LifeCycle { +public interface PostProcessNodeBuildLifeCycle extends LifeCycle { + + void postProcessBeforeNodeBuild(Node node); void postProcessAfterNodeBuild(Node node); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterScriptEngineInitLifeCycle.java b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessScriptEngineInitLifeCycle.java similarity index 55% rename from liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterScriptEngineInitLifeCycle.java rename to liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessScriptEngineInitLifeCycle.java index 2122bbe07..2056842fc 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessAfterScriptEngineInitLifeCycle.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessScriptEngineInitLifeCycle.java @@ -2,12 +2,12 @@ package com.yomahub.liteflow.lifecycle; /** * 生命周期接口 - * 在初始化Script执行器后执行,如果有实现的话 + * 在初始化Script执行器时期,如果有实现的话 * * @author Bryan.Zhang * @since 2.12.4 */ -public interface PostProcessAfterScriptEngineInitLifeCycle extends LifeCycle{ +public interface PostProcessScriptEngineInitLifeCycle extends LifeCycle{ void postProcessAfterScriptEngineInit(Object engine); } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/script/ScriptExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/script/ScriptExecutor.java index 89eb9ef9f..a7715d0e2 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/script/ScriptExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/script/ScriptExecutor.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.script; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import com.yomahub.liteflow.enums.ScriptTypeEnum; import com.yomahub.liteflow.exception.LiteFlowException; @@ -26,9 +27,11 @@ public abstract class ScriptExecutor { } public void lifeCycle(Object engine){ - LifeCycleHolder.getPostProcessAfterScriptEngineInitLifeCycleList().forEach( - postProcessAfterScriptEngineInitLifeCycle -> postProcessAfterScriptEngineInitLifeCycle.postProcessAfterScriptEngineInit(engine) - ); + if (CollUtil.isNotEmpty(LifeCycleHolder.getPostProcessScriptEngineInitLifeCycleList())){ + LifeCycleHolder.getPostProcessScriptEngineInitLifeCycleList().forEach( + postProcessAfterScriptEngineInitLifeCycle -> postProcessAfterScriptEngineInitLifeCycle.postProcessAfterScriptEngineInit(engine) + ); + } } public abstract void load(String nodeId, String script); diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/script/jsr223/JSR223ScriptExecutor.java b/liteflow-core/src/main/java/com/yomahub/liteflow/script/jsr223/JSR223ScriptExecutor.java index 32a50e99f..56a6d39c0 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/script/jsr223/JSR223ScriptExecutor.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/script/jsr223/JSR223ScriptExecutor.java @@ -1,8 +1,6 @@ package com.yomahub.liteflow.script.jsr223; import cn.hutool.core.util.StrUtil; -import com.yomahub.liteflow.lifecycle.LifeCycleHolder; -import com.yomahub.liteflow.lifecycle.PostProcessAfterScriptEngineInitLifeCycle; import com.yomahub.liteflow.log.LFLog; import com.yomahub.liteflow.log.LFLoggerManager; import com.yomahub.liteflow.script.ScriptExecuteWrap; @@ -20,7 +18,6 @@ import javax.script.ScriptException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.function.Consumer; /** * JSR223 script engine的统一实现抽象类 diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java index 00e3032e6..7fcc6373c 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/slot/DataBus.java @@ -21,6 +21,7 @@ import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; import java.util.List; +import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicInteger; @@ -82,7 +83,7 @@ public class DataBus { } public static int offerSlotByBean(List contextList) { - List contextBeanList = contextList.stream().map(object -> { + List contextBeanList = contextList.stream().filter(Objects::nonNull).map(object -> { ContextBean contextBean = AnnoUtil.getAnnotation(object.getClass(), ContextBean.class); String contextKey; if (contextBean != null && StrUtil.isNotBlank(contextBean.value())){ diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/process/holder/SolonNodeIdHolder.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/process/holder/SolonNodeIdHolder.java new file mode 100644 index 000000000..35f250df4 --- /dev/null +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/process/holder/SolonNodeIdHolder.java @@ -0,0 +1,34 @@ +package com.yomahub.liteflow.process.holder; + +import org.noear.solon.core.AppContext; + +import java.util.HashSet; +import java.util.Set; + +/** + * 节点持有人(用于收集 Node 后统一注册) + * + * @author noear 2024/10/12 created + */ +public class SolonNodeIdHolder { + /** + * 作为 AppContext 附件(避免静态化) + * */ + public static SolonNodeIdHolder of(AppContext context) { + return context.attachOf(SolonNodeIdHolder.class, SolonNodeIdHolder::new); + } + + private SolonNodeIdHolder() { + + } + + private Set nodeIdSet = new HashSet<>(); + + public void add(String nodeId) { + this.nodeIdSet.add(nodeId); + } + + public Set getNodeIdSet() { + return nodeIdSet; + } +} diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java index 4a0abd10d..c1f8ad8ac 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/solon/integration/XPluginImpl.java @@ -5,9 +5,9 @@ import com.yomahub.liteflow.annotation.LiteflowMethod; import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.core.proxy.DeclWarpBean; import com.yomahub.liteflow.core.proxy.LiteFlowProxyUtil; -import com.yomahub.liteflow.flow.FlowBus; import com.yomahub.liteflow.lifecycle.LifeCycle; import com.yomahub.liteflow.lifecycle.LifeCycleHolder; +import com.yomahub.liteflow.process.holder.SolonNodeIdHolder; import com.yomahub.liteflow.solon.config.LiteflowAutoConfiguration; import com.yomahub.liteflow.solon.config.LiteflowMainAutoConfiguration; import com.yomahub.liteflow.solon.config.LiteflowMonitorProperty; @@ -15,6 +15,7 @@ import com.yomahub.liteflow.solon.config.LiteflowProperty; import com.yomahub.liteflow.spi.holder.DeclComponentParserHolder; import org.noear.solon.Utils; import org.noear.solon.core.AppContext; +import org.noear.solon.core.BeanWrap; import org.noear.solon.core.Plugin; import java.util.*; @@ -42,6 +43,8 @@ public class XPluginImpl implements Plugin { return; } + SolonNodeIdHolder nodeIdHolder = SolonNodeIdHolder.of(context); + // 放到前面 context.beanMake(LiteflowProperty.class); context.beanMake(LiteflowMonitorProperty.class); @@ -51,20 +54,22 @@ public class XPluginImpl implements Plugin { // 订阅生命周期实现类 context.subBeansOfType(LifeCycle.class, LifeCycleHolder::addLifeCycle); - // 订阅 NodeComponent 组件 - context.lifecycle(()-> { - //扫描完成后,收集组件 - context.beanForeach(bw -> { - if (bw.raw() instanceof NodeComponent) { - FlowBus.addManagedNode(bw.name(), bw.raw()); - } - }); + // 订阅 @Component 或别的方式产生的 NodeComponent + context.subWrapsOfType(NodeComponent.class, bw->{ + if (Utils.isNotEmpty(bw.name())) { + NodeComponent node1 = bw.raw(); + node1.setNodeId(bw.name()); + + nodeIdHolder.add(node1.getNodeId()); + } }); Set> liteflowMethodClassSet = new HashSet<>(); + //添加 @LiteflowMethod 注解处理 context.beanExtractorAdd(LiteflowMethod.class, (bw, method, anno) -> { if (liteflowMethodClassSet.contains(bw.clz())) { + //避免重复处理类 return; } else { liteflowMethodClassSet.add(bw.clz()); @@ -76,22 +81,31 @@ public class XPluginImpl implements Plugin { for (DeclWarpBean declWarpBean : declWarpBeanList) { NodeComponent node1 = LiteFlowProxyUtil.proxy2NodeComponent(declWarpBean); - FlowBus.addManagedNode(node1.getNodeId(), node1); + + BeanWrap node1Bw = context.wrap(node1.getNodeId(), node1); + context.putWrap(node1.getNodeId(), node1Bw); + + nodeIdHolder.add(node1.getNodeId()); } }); + //添加 @LiteflowComponent 注解处理 context.beanBuilderAdd(LiteflowComponent.class, (clz, bw, anno) -> { - if (NodeComponent.class.isAssignableFrom(clz)) { - NodeComponent node1 = bw.raw(); + if(NodeComponent.class.isAssignableFrom(clz)) { String nodeId = Utils.annoAlias(anno.id(), anno.value()); + if (Utils.isNotEmpty(nodeId)) { + NodeComponent node1 = bw.raw(); + node1.setNodeId(nodeId); + node1.setName(anno.name()); - node1.setNodeId(nodeId); - node1.setName(anno.name()); + context.putWrap(node1.getNodeId(), bw); - FlowBus.addManagedNode(nodeId, node1); - } else { - context.beanExtractOrProxy(bw); // 尝试提取 LiteflowMethod 函数,并支持自动代理 + nodeIdHolder.add(node1.getNodeId()); + } } + + // 支持动态代理与函数提取 + context.beanExtractOrProxy(bw); }); } } \ No newline at end of file diff --git a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java index b90697404..360c40c63 100644 --- a/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java +++ b/liteflow-solon-plugin/src/main/java/com/yomahub/liteflow/spi/solon/SolonContextCmpInit.java @@ -1,6 +1,9 @@ package com.yomahub.liteflow.spi.solon; +import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.process.holder.SolonNodeIdHolder; import com.yomahub.liteflow.spi.ContextCmpInit; +import org.noear.solon.Solon; /** * Solon 环境容器上下文组件初始化实现(在 solon 里没有用上;机制不同) @@ -12,7 +15,7 @@ public class SolonContextCmpInit implements ContextCmpInit { @Override public void initCmp() { - // 已在 XPluginImpl 添加组件 + SolonNodeIdHolder.of(Solon.context()).getNodeIdSet().forEach(FlowBus::addManagedNode); } @Override diff --git a/liteflow-testcase-el/liteflow-testcase-el-apollo-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-apollo-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index b3e65fb3a..dff7b3bbc 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-apollo-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-apollo-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -24,6 +25,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/BaseTest.java index ee7430f53..03d6c0ab9 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-builder/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java index e7155d0b5..d64a5634f 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.thread.ExecutorHelper; @@ -17,6 +18,7 @@ public class BaseTest { SpiFactoryInitializing.clean(); LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest1.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest1.java index 10aa7d380..0150cd2d1 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest1.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest1.java @@ -9,13 +9,15 @@ import com.yomahub.liteflow.test.BaseTest; import com.yomahub.liteflow.test.builder.cmp1.*; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.noear.solon.annotation.Import; import org.noear.solon.annotation.Inject; import org.noear.solon.test.SolonTest; //基于builder模式的单元测试 //这里只是最基本的builder模式的测试,只是为了验证在springboot模式下的正常性 //更详细的builder模式测试用例会单独拉testcase去做 -@SolonTest +@SolonTest(scanning = false) +@Import(scanPackages={ "com.yomahub.liteflow.test.builder.domain" }) public class BuilderELDeclMultiSpringbootTest1 extends BaseTest { @Inject diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest2.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest2.java index 3442ad682..05cf955ae 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest2.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELDeclMultiSpringbootTest2.java @@ -6,12 +6,14 @@ import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.test.BaseTest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.noear.solon.annotation.Import; import org.noear.solon.annotation.Inject; import org.noear.solon.test.SolonTest; //基于builder模式的单元测试 //这里测试的是通过spring去扫描,但是通过代码去构建chain的用例 -@SolonTest +@SolonTest(scanning = false) +@Import(scanPackages = { "com.yomahub.liteflow.test.builder.cmp2" }) public class BuilderELDeclMultiSpringbootTest2 extends BaseTest { @Inject diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index e51937f26..ba2a8f025 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.process.holder.SpringCmpAroundAspectHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; @@ -20,6 +21,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); SpringCmpAroundAspectHolder.clean(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a9298c861..88b1fed90 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.process.holder.SpringCmpAroundAspectHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; @@ -21,6 +22,7 @@ public class BaseTest { FlowInitHook.cleanHook(); FlowBus.clearStat(); SpringCmpAroundAspectHolder.clean(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-etcd-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-etcd-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-etcd-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-etcd-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 4dd443067..865ad954c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nacos-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,5 +20,6 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/BaseTest.java index faad1f704..de9e9be5b 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowExecutorHolder; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.thread.ExecutorHelper; @@ -19,6 +20,7 @@ public class BaseTest { FlowExecutorHolder.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 66b8b1677..3e5e7d0b7 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-redis-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,5 +20,6 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-routechain/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-routechain/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-routechain/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-routechain/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-aviator-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-graaljs-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-graaljs-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-graaljs-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-graaljs-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-groovy-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-java-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-java-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-java-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-java-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javascript-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-kotlin-springboot/src/test/java/com/yomahub/liteflow/test/script/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-kotlin-springboot/src/test/java/com/yomahub/liteflow/test/script/BaseTest.java index d339cd820..986816be9 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-kotlin-springboot/src/test/java/com/yomahub/liteflow/test/script/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-kotlin-springboot/src/test/java/com/yomahub/liteflow/test/script/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test.script; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-lua-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-lua-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-lua-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-lua-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-multi-language-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-multi-language-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-multi-language-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-multi-language-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-python-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-python-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-python-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-python-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-script-qlexpress-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-script-qlexpress-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-script-qlexpress-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-script-qlexpress-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java index f56fe4ecd..5865761b6 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.thread.ExecutorHelper; @@ -17,6 +18,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELSpringbootTest2.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELSpringbootTest2.java index 9362a869b..e670dc5f7 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELSpringbootTest2.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/builder/BuilderELSpringbootTest2.java @@ -6,7 +6,6 @@ import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.test.BaseTest; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; import org.noear.solon.annotation.Inject; import org.noear.solon.test.SolonTest; diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/fallback/FallbackELSolonTest.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/fallback/FallbackELSolonTest.java index 03a3d9cad..64b318edf 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/fallback/FallbackELSolonTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/fallback/FallbackELSolonTest.java @@ -169,7 +169,7 @@ public class FallbackELSolonTest extends BaseTest { LiteflowResponse response = flowExecutor.execute2Resp("concurrent2", "arg"); Assertions.assertTrue(response.isSuccess()); String stepStr = response.getExecuteStepStrWithoutTime(); - Assertions.assertTrue("fb_comm_cmp==>fb_bool_cmp".equals(stepStr) || "ifn2==>c".equals(stepStr)); + Assertions.assertTrue("fb_comm_cmp==>fb_bool_cmp".equals(stepStr) || "fb_bool_cmp==>fb_comm_cmp".equals(stepStr) || "ifn2==>c".equals(stepStr)); } @Test diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java index 54b5f3250..c5e46682d 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java @@ -2,13 +2,18 @@ package com.yomahub.liteflow.test.lifecycle.impl; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.flow.element.Chain; -import com.yomahub.liteflow.lifecycle.PostProcessAfterChainBuildLifeCycle; +import com.yomahub.liteflow.lifecycle.PostProcessChainBuildLifeCycle; import org.noear.solon.annotation.Component; @Component -public class TestChainLifeCycle implements PostProcessAfterChainBuildLifeCycle { +public class TestChainLifeCycle implements PostProcessChainBuildLifeCycle { + @Override + public void postProcessBeforeChainBuild(Chain chain) { + System.out.println(StrUtil.format("Chain Build(前)生命周期——[{}]已被加载",chain.getChainId())); + } + @Override public void postProcessAfterChainBuild(Chain chain) { - System.out.println(StrUtil.format("Chain生命周期——[{}]已被加载",chain.getChainId())); + System.out.println(StrUtil.format("Chain Build(后)生命周期——[{}]已被加载",chain.getChainId())); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java index aea25b033..a6450811e 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java @@ -2,13 +2,18 @@ package com.yomahub.liteflow.test.lifecycle.impl; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.flow.element.Node; -import com.yomahub.liteflow.lifecycle.PostProcessAfterNodeBuildLifeCycle; +import com.yomahub.liteflow.lifecycle.PostProcessNodeBuildLifeCycle; import org.noear.solon.annotation.Component; @Component -public class TestNodeLifeCycle implements PostProcessAfterNodeBuildLifeCycle { +public class TestNodeLifeCycle implements PostProcessNodeBuildLifeCycle { + @Override + public void postProcessBeforeNodeBuild(Node node) { + System.out.println(StrUtil.format("Node生命周期(前)——[{}]已被加载",node.getId())); + } + @Override public void postProcessAfterNodeBuild(Node node) { - System.out.println(StrUtil.format("Node生命周期——[{}]已被加载",node.getId())); + System.out.println(StrUtil.format("Node生命周期(后)——[{}]已被加载",node.getId())); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a9298c861..88b1fed90 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.process.holder.SpringCmpAroundAspectHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; @@ -21,6 +22,7 @@ public class BaseTest { FlowInitHook.cleanHook(); FlowBus.clearStat(); SpringCmpAroundAspectHolder.clean(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainExecuteLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainExecuteLifeCycle.java new file mode 100644 index 000000000..aced28b07 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainExecuteLifeCycle.java @@ -0,0 +1,19 @@ +package com.yomahub.liteflow.test.lifecycle.impl; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.lifecycle.PostProcessChainExecuteLifeCycle; +import com.yomahub.liteflow.slot.Slot; +import org.springframework.stereotype.Component; + +@Component +public class TestChainExecuteLifeCycle implements PostProcessChainExecuteLifeCycle { + @Override + public void postProcessBeforeChainExecute(String chainId, Slot slot) { + System.out.println(StrUtil.format("Chain Execute 生命周期(前)——[{}]已被加载",chainId)); + } + + @Override + public void postProcessAfterChainExecute(String chainId, Slot slot) { + System.out.println(StrUtil.format("Chain Execute 生命周期(后)——[{}]已被加载",chainId)); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java index e8a071ae3..6d831eac7 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainLifeCycle.java @@ -2,13 +2,18 @@ package com.yomahub.liteflow.test.lifecycle.impl; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.flow.element.Chain; -import com.yomahub.liteflow.lifecycle.PostProcessAfterChainBuildLifeCycle; +import com.yomahub.liteflow.lifecycle.PostProcessChainBuildLifeCycle; import org.springframework.stereotype.Component; @Component -public class TestChainLifeCycle implements PostProcessAfterChainBuildLifeCycle { +public class TestChainLifeCycle implements PostProcessChainBuildLifeCycle { + @Override + public void postProcessBeforeChainBuild(Chain chain) { + System.out.println(StrUtil.format("Chain Build生命周期(前)——[{}]已被加载",chain.getChainId())); + } + @Override public void postProcessAfterChainBuild(Chain chain) { - System.out.println(StrUtil.format("Chain生命周期——[{}]已被加载",chain.getChainId())); + System.out.println(StrUtil.format("Chain Build生命周期(后)——[{}]已被加载",chain.getChainId())); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestFlowExecuteLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestFlowExecuteLifeCycle.java new file mode 100644 index 000000000..561ef95cd --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestFlowExecuteLifeCycle.java @@ -0,0 +1,19 @@ +package com.yomahub.liteflow.test.lifecycle.impl; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.lifecycle.PostProcessFlowExecuteLifeCycle; +import com.yomahub.liteflow.slot.Slot; +import org.springframework.stereotype.Component; + +@Component +public class TestFlowExecuteLifeCycle implements PostProcessFlowExecuteLifeCycle { + @Override + public void postProcessBeforeFlowExecute(String chainId, Slot slot) { + System.out.println(StrUtil.format("FlowExecutor 生命周期(前)——[{}]已被加载",chainId)); + } + + @Override + public void postProcessAfterFlowExecute(String chainId, Slot slot) { + System.out.println(StrUtil.format("FlowExecutor 生命周期(后)——[{}]已被加载",chainId)); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java index c0e14a487..078b9b004 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestNodeLifeCycle.java @@ -2,13 +2,18 @@ package com.yomahub.liteflow.test.lifecycle.impl; import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.flow.element.Node; -import com.yomahub.liteflow.lifecycle.PostProcessAfterNodeBuildLifeCycle; +import com.yomahub.liteflow.lifecycle.PostProcessNodeBuildLifeCycle; import org.springframework.stereotype.Component; @Component -public class TestNodeLifeCycle implements PostProcessAfterNodeBuildLifeCycle { +public class TestNodeLifeCycle implements PostProcessNodeBuildLifeCycle { + @Override + public void postProcessBeforeNodeBuild(Node node) { + System.out.println(StrUtil.format("Node Build生命周期(前)——[{}]已被加载",node.getId())); + } + @Override public void postProcessAfterNodeBuild(Node node) { - System.out.println(StrUtil.format("Node生命周期——[{}]已被加载",node.getId())); + System.out.println(StrUtil.format("Node Build生命周期(后)——[{}]已被加载",node.getId())); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java index a9298c861..88b1fed90 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.process.holder.SpringCmpAroundAspectHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; @@ -21,6 +22,7 @@ public class BaseTest { FlowInitHook.cleanHook(); FlowBus.clearStat(); SpringCmpAroundAspectHolder.clean(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 1d34c8659..6e621862d 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-solon/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.thread.ExecutorHelper; @@ -17,5 +18,6 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot-dynamic/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot-dynamic/src/test/java/com/yomahub/liteflow/test/BaseTest.java index e18fb281b..9792c59b0 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot-dynamic/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot-dynamic/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -23,6 +24,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index e18fb281b..9792c59b0 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-sql-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -23,6 +24,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-zk-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java b/liteflow-testcase-el/liteflow-testcase-el-zk-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java index 14f3bdf59..891764c42 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-zk-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-zk-springboot/src/test/java/com/yomahub/liteflow/test/BaseTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test; import com.yomahub.liteflow.core.FlowInitHook; import com.yomahub.liteflow.flow.FlowBus; +import com.yomahub.liteflow.lifecycle.LifeCycleHolder; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.spi.holder.SpiFactoryInitializing; import com.yomahub.liteflow.spring.ComponentScanner; @@ -19,6 +20,7 @@ public class BaseTest { LiteflowConfigGetter.clean(); FlowInitHook.cleanHook(); FlowBus.clearStat(); + LifeCycleHolder.clean(); } } diff --git a/pom.xml b/pom.xml index ee8c90939..00b1a1998 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ 1.14.10 1.8.13 1.2.3 - 2.9.2 + 3.0.1 4.1.84.Final 4.5.13 1.9.4 @@ -329,8 +329,6 @@ - - @@ -403,6 +401,7 @@ + org.codehaus.mojo