From 605aab0694bf1b66e582e7d6d92d777eeb5c4e92 Mon Sep 17 00:00:00 2001 From: Dale Lee <1658850308@qq.com> Date: Sat, 8 Jul 2023 23:18:01 +0800 Subject: [PATCH] =?UTF-8?q?feature=20#I7I3LL=20=E5=AE=8C=E5=96=84=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=8F=8A=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../el/operator/MaxWaitSecondsOperator.java | 20 ++++++++++++++++--- ...xWaitSecondsELDeclMultiSpringbootTest.java | 2 +- .../test/maxWaitSeconds/cmp/CmpConfig.java | 9 ++++++--- ...> MaxWaitSecondsELDeclSpringbootTest.java} | 7 +++---- .../test/maxWaitSeconds/cmp/WCmp.java | 11 ++++++++++ .../maxWaitSeconds/MaxWaitSecondsTest.java | 6 ++++++ .../test/maxWaitSeconds/cmp/WCmp.java | 12 +++++++++++ .../MaxWaitSecondsSolonTest.java | 2 +- ...va => MaxWaitSecondsELSpringbootTest.java} | 11 +++++----- .../test/maxWaitSeconds/cmp/DCmp.java | 4 ++-- .../test/maxWaitSeconds/cmp/WCmp.java | 12 +++++++++++ .../MaxWaitSecondsELSpringTest.java | 6 ++++++ .../test/maxWaitSeconds/cmp/WCmp.java | 12 +++++++++++ 13 files changed, 95 insertions(+), 19 deletions(-) rename liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/{MaxWaitSecondsELDeclSpringBootTest.java => MaxWaitSecondsELDeclSpringbootTest.java} (95%) rename liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/{MaxWaitSecondsELSpringBootTest.java => MaxWaitSecondsELSpringbootTest.java} (95%) diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MaxWaitSecondsOperator.java b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MaxWaitSecondsOperator.java index a6b1d5bdc..89bb528be 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MaxWaitSecondsOperator.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/builder/el/operator/MaxWaitSecondsOperator.java @@ -47,7 +47,12 @@ public class MaxWaitSecondsOperator extends BaseOperator { } } - // 将一个 Executable 包装为带有单独超时控制的 WhenCondition + /** + * 将一个 Executable 包装为带有单独超时控制的 WhenCondition + * @param executable 带包装对象 + * @param maxWaitSeconds 最大等待秒数 + * @return 包装后的 WhenCondition + */ private WhenCondition wrappedByWhen(Executable executable, Integer maxWaitSeconds) { WhenCondition whenCondition = new WhenCondition(); whenCondition.addExecutable(executable); @@ -56,13 +61,22 @@ public class MaxWaitSecondsOperator extends BaseOperator { return whenCondition; } - // 判断 THEN 中是否含有 FINALLY 组件 + /** + * 判断 THEN 中是否含有 FINALLY 组件 + * @param executable 判断对象 + * @return 含有 FINALLY 组件返回 true,否则返回 false + */ private boolean containsFinally(Executable executable) { return executable instanceof ThenCondition && CollUtil.isNotEmpty(((ThenCondition) executable).getFinallyConditionList()); } - // 将 FINALLY 排除在超时控制之外 + /** + * 将 FINALLY 排除在超时控制之外 + * @param thenCondition 待处理的 ThenCondition + * @param maxWaitSeconds 最大等待秒数 + * @return 处理后的 ThenCondition + */ private ThenCondition handleFinally(ThenCondition thenCondition, Integer maxWaitSeconds) { // 进行如下转换 // THEN(PRE(a),b,FINALLY(c)) diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclMultiSpringbootTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclMultiSpringbootTest.java index c853b3458..a936a1631 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclMultiSpringbootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclMultiSpringbootTest.java @@ -20,7 +20,7 @@ import javax.annotation.Resource; import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.CmpConfig.CONTENT_KEY; /** - * springboot环境下超时控制测试 + * Spring Boot 环境下超时控制测试 * * @author DaleLee * @since 2.11.0 diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/CmpConfig.java b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/CmpConfig.java index 40abe9009..db6967be4 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/CmpConfig.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-multi-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/CmpConfig.java @@ -8,8 +8,10 @@ import com.yomahub.liteflow.enums.LiteFlowMethodEnum; import com.yomahub.liteflow.enums.NodeTypeEnum; import com.yomahub.liteflow.slot.DefaultContext; +import java.util.HashSet; import java.util.Iterator; import java.util.List; +import java.util.Set; @LiteflowComponent public class CmpConfig { @@ -18,7 +20,8 @@ public class CmpConfig { private int count = 0; - private boolean changed = false; + // 执行过的 chain + Set executedChain = new HashSet<>(); @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS, nodeId = "a") public void processA(NodeComponent bindCmp) { @@ -79,9 +82,9 @@ public class CmpConfig { @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS_WHILE, nodeId = "w", nodeType = NodeTypeEnum.WHILE) public boolean processWhile(NodeComponent bindCmp) throws Exception { // 判断是否切换了 chain - if (bindCmp.getCurrChainId().equals("while2") && !changed) { + if (!executedChain.contains(bindCmp.getCurrChainId())) { count = 0; - changed = true; + executedChain.add(bindCmp.getCurrChainId()); } count++; return count <= 2; diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringBootTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringbootTest.java similarity index 95% rename from liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringBootTest.java rename to liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringbootTest.java index c74ee5796..5aab2d502 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringBootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELDeclSpringbootTest.java @@ -8,7 +8,6 @@ import com.yomahub.liteflow.exception.WhenTimeoutException; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.slot.DefaultContext; import com.yomahub.liteflow.test.BaseTest; -import com.yomahub.liteflow.test.loop.LoopELDeclSpringbootTest; import com.yomahub.liteflow.test.maxWaitSeconds.cmp.ACmp; import com.yomahub.liteflow.test.maxWaitSeconds.cmp.BCmp; import com.yomahub.liteflow.test.maxWaitSeconds.cmp.CCmp; @@ -26,17 +25,17 @@ import javax.annotation.Resource; import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.DCmp.CONTENT_KEY; /** - * springboot环境下超时控制测试 + * Spring Boot 环境下超时控制测试 * * @author DaleLee * @since 2.11.0 */ @RunWith(SpringRunner.class) @TestPropertySource(value = "classpath:/maxWaitSeconds/application.properties") -@SpringBootTest(classes = MaxWaitSecondsELDeclSpringBootTest.class) +@SpringBootTest(classes = MaxWaitSecondsELDeclSpringbootTest.class) @EnableAutoConfiguration @ComponentScan({ "com.yomahub.liteflow.test.maxWaitSeconds.cmp" }) -public class MaxWaitSecondsELDeclSpringBootTest extends BaseTest { +public class MaxWaitSecondsELDeclSpringbootTest extends BaseTest { @Resource private FlowExecutor flowExecutor; diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java index 3f1dbcdd3..4085405c2 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java @@ -7,13 +7,24 @@ import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.enums.LiteFlowMethodEnum; import com.yomahub.liteflow.enums.NodeTypeEnum; +import java.util.HashSet; +import java.util.Set; + @LiteflowComponent("w") @LiteflowCmpDefine(NodeTypeEnum.WHILE) public class WCmp { private int count = 0; + // 执行过的 chain + Set executedChain = new HashSet<>(); + @LiteflowMethod(value = LiteFlowMethodEnum.PROCESS_WHILE, nodeType = NodeTypeEnum.WHILE) public boolean processWhile(NodeComponent bindCmp) throws Exception { + // 判断是否切换了 chain + if (!executedChain.contains(bindCmp.getCurrChainId())) { + count = 0; + executedChain.add(bindCmp.getCurrChainId()); + } count++; return count <= 2; } diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsTest.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsTest.java index 7746dcaa2..51b1aef60 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsTest.java @@ -19,6 +19,12 @@ import org.junit.Test; import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.DCmp.CONTENT_KEY; +/** + * 非 Spring 环境下超时控制测试 + * + * @author DaleLee + * @since 2.11.0 + */ public class MaxWaitSecondsTest extends BaseTest { private static FlowExecutor flowExecutor; diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java index 42f9ca172..ecad318d1 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java @@ -2,10 +2,22 @@ package com.yomahub.liteflow.test.maxWaitSeconds.cmp; import com.yomahub.liteflow.core.NodeWhileComponent; +import java.util.HashSet; +import java.util.Set; + public class WCmp extends NodeWhileComponent { private int count = 0; + + // 执行过的 chain + Set executedChain = new HashSet<>(); + @Override public boolean processWhile() throws Exception { + // 判断是否切换了 chain + if (!executedChain.contains(this.getCurrChainId())) { + count = 0; + executedChain.add(this.getCurrChainId()); + } count++; return count <= 2; } diff --git a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsSolonTest.java b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsSolonTest.java index 61c90dcd6..9ece6166b 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsSolonTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-solon/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsSolonTest.java @@ -21,7 +21,7 @@ import org.noear.solon.test.annotation.TestPropertySource; import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.DCmp.CONTENT_KEY; /** - * solon环境下超时控制测试 + * Solon 环境下超时控制测试 * * @author DaleLee * @since 2.11.0 diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringBootTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringbootTest.java similarity index 95% rename from liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringBootTest.java rename to liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringbootTest.java index 931671042..b654afa19 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringBootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringbootTest.java @@ -22,23 +22,24 @@ import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; +import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.DCmp.CONTENT_KEY; + /** - * springboot环境下超时控制测试 + * Spring Boot 环境下超时控制测试 * * @author DaleLee * @since 2.11.0 */ @RunWith(SpringRunner.class) @TestPropertySource(value = "classpath:/maxWaitSeconds/application.properties") -@SpringBootTest(classes = MaxWaitSecondsELSpringBootTest.class) +@SpringBootTest(classes = MaxWaitSecondsELSpringbootTest.class) @EnableAutoConfiguration @ComponentScan({ "com.yomahub.liteflow.test.maxWaitSeconds.cmp" }) -public class MaxWaitSecondsELSpringBootTest extends BaseTest { +public class MaxWaitSecondsELSpringbootTest extends BaseTest { + @Resource private FlowExecutor flowExecutor; - public static final String CONTENT_KEY = "testKey"; - // 测试 THEN 的超时情况 @Test public void testThen1() { diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/DCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/DCmp.java index 6e5801334..648c2f447 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/DCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/DCmp.java @@ -4,11 +4,11 @@ import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeComponent; import com.yomahub.liteflow.slot.DefaultContext; -import static com.yomahub.liteflow.test.maxWaitSeconds.MaxWaitSecondsELSpringBootTest.CONTENT_KEY; - @LiteflowComponent("d") public class DCmp extends NodeComponent { + public static final String CONTENT_KEY = "testKey"; + @Override public void process() { try { diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java index 5cb8dac0c..1db12e3de 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java @@ -3,11 +3,23 @@ package com.yomahub.liteflow.test.maxWaitSeconds.cmp; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeWhileComponent; +import java.util.HashSet; +import java.util.Set; + @LiteflowComponent("w") public class WCmp extends NodeWhileComponent { private int count = 0; + + // 执行过的 chain + Set executedChain = new HashSet<>(); + @Override public boolean processWhile() throws Exception { + // 判断是否切换了 chain + if (!executedChain.contains(this.getCurrChainId())) { + count = 0; + executedChain.add(this.getCurrChainId()); + } count++; return count <= 2; } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringTest.java index bc2dbd790..df18a9e49 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/MaxWaitSecondsELSpringTest.java @@ -21,6 +21,12 @@ import javax.annotation.Resource; import static com.yomahub.liteflow.test.maxWaitSeconds.cmp.DCmp.CONTENT_KEY; +/** + * Spring 环境下超时控制测试 + * + * @author DaleLee + * @since 2.11.0 + */ @RunWith(SpringRunner.class) @ContextConfiguration("classpath:/maxWaitSeconds/application.xml") public class MaxWaitSecondsELSpringTest extends BaseTest { diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java index 5cb8dac0c..1db12e3de 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/maxWaitSeconds/cmp/WCmp.java @@ -3,11 +3,23 @@ package com.yomahub.liteflow.test.maxWaitSeconds.cmp; import com.yomahub.liteflow.annotation.LiteflowComponent; import com.yomahub.liteflow.core.NodeWhileComponent; +import java.util.HashSet; +import java.util.Set; + @LiteflowComponent("w") public class WCmp extends NodeWhileComponent { private int count = 0; + + // 执行过的 chain + Set executedChain = new HashSet<>(); + @Override public boolean processWhile() throws Exception { + // 判断是否切换了 chain + if (!executedChain.contains(this.getCurrChainId())) { + count = 0; + executedChain.add(this.getCurrChainId()); + } count++; return count <= 2; }