From 60fe9d495ee75799fe84d06a00437eae07b81bb7 Mon Sep 17 00:00:00 2001 From: "everywhere.z" Date: Sat, 12 Oct 2024 22:19:58 +0800 Subject: [PATCH] =?UTF-8?q?feature=20#IAJD9H=20=E6=9C=9F=E6=9C=9Bliteflow?= =?UTF-8?q?=20=E6=9C=89=E8=87=AA=E5=B7=B1=E7=9A=84=E7=94=9F=E5=91=BD?= =?UTF-8?q?=E5=91=A8=E6=9C=9F=E6=89=A9=E5=B1=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/FlowExecutor.java | 17 +++++++ .../com/yomahub/liteflow/flow/FlowBus.java | 37 +++++++++++---- .../yomahub/liteflow/flow/element/Chain.java | 17 +++++++ .../liteflow/lifecycle/LifeCycleHolder.java | 46 +++++++++++++------ ...va => PostProcessChainBuildLifeCycle.java} | 6 ++- .../PostProcessChainExecuteLifeCycle.java | 17 +++++++ .../PostProcessFlowExecuteLifeCycle.java | 17 +++++++ ...ava => PostProcessNodeBuildLifeCycle.java} | 6 ++- ...PostProcessScriptEngineInitLifeCycle.java} | 4 +- .../liteflow/script/ScriptExecutor.java | 9 ++-- .../script/jsr223/JSR223ScriptExecutor.java | 3 -- .../lifecycle/impl/TestChainLifeCycle.java | 11 +++-- .../lifecycle/impl/TestNodeLifeCycle.java | 4 +- .../impl/TestChainExecuteLifeCycle.java | 19 ++++++++ .../lifecycle/impl/TestChainLifeCycle.java | 11 +++-- .../impl/TestFlowExecuteLifeCycle.java | 19 ++++++++ .../lifecycle/impl/TestNodeLifeCycle.java | 11 +++-- 17 files changed, 208 insertions(+), 46 deletions(-) rename liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/{PostProcessAfterChainBuildLifeCycle.java => PostProcessChainBuildLifeCycle.java} (56%) create mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessChainExecuteLifeCycle.java create mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/PostProcessFlowExecuteLifeCycle.java rename liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/{PostProcessAfterNodeBuildLifeCycle.java => PostProcessNodeBuildLifeCycle.java} (56%) rename liteflow-core/src/main/java/com/yomahub/liteflow/lifecycle/{PostProcessAfterScriptEngineInitLifeCycle.java => PostProcessScriptEngineInitLifeCycle.java} (55%) create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestChainExecuteLifeCycle.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/lifecycle/impl/TestFlowExecuteLifeCycle.java 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..c5a4d935a 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 @@ -12,6 +12,8 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.BooleanUtil; import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; 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 +22,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对象,实现可执行器 @@ -98,6 +101,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 +115,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..f248bc5ea 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,48 @@ 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; } } 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-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..593cb791e 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,11 +2,11 @@ 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 postProcessAfterNodeBuild(Node node) { 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/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())); } }