diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Node.java b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Node.java index 4d7b73e68..f7d8baf35 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Node.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/entity/flow/Node.java @@ -108,14 +108,13 @@ public class Node implements Executable,Cloneable{ Slot slot = DataBus.getSlot(slotIndex); try { + //把tag和condNodeMap赋给NodeComponent + //这里为什么要这么做?因为tag和condNodeMap从某种意义上来说是属于某个chain本身范围,并非全局的 + instance.setTag(tag); + instance.setCondNodeMap(condNodeMap); + //判断是否可执行,所以isAccess经常作为一个组件进入的实际判断要素,用作检查slot里的参数的完备性 if (instance.isAccess()) { - - //把tag和condNodeMap赋给NodeComponent - //这里为什么要这么做?因为tag和condNodeMap从某种意义上来说是属于某个chain本身范围,并非全局的 - instance.setTag(tag); - instance.setCondNodeMap(condNodeMap); - //这里开始进行重试的逻辑和主逻辑的运行 int retryCount = instance.getRetryCount(); List> forExceptions = Arrays.asList(instance.getRetryForExceptions()); diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootJsonTest.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootJsonTest.java index cb3468c96..da9014c7e 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootJsonTest.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootJsonTest.java @@ -56,4 +56,12 @@ public class NodeTagSpringbootJsonTest extends BaseTest { Assert.assertEquals(3, testSet.size()); } } + + //测试tag是否能在isAccess中起效 + @Test + public void testTag4() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain4", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("g", response.getSlot().printStep()); + } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootXmlTest.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootXmlTest.java index 329ddda0c..053643dcf 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootXmlTest.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/NodeTagSpringbootXmlTest.java @@ -56,4 +56,12 @@ public class NodeTagSpringbootXmlTest extends BaseTest { Assert.assertEquals(3, testSet.size()); } } + + //测试tag是否能在isAccess中起效 + @Test + public void testTag4() throws Exception{ + LiteflowResponse response = flowExecutor.execute2Resp("chain4", "arg"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals("g", response.getSlot().printStep()); + } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/FCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/FCmp.java new file mode 100644 index 000000000..2f670578e --- /dev/null +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/FCmp.java @@ -0,0 +1,25 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.tag.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("f") +public class FCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("FCmp executed!"); + } + + @Override + public boolean isAccess() { + return Boolean.parseBoolean(this.getTag()); + } +} diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/GCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/GCmp.java new file mode 100644 index 000000000..f6180b563 --- /dev/null +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/tag/cmp/GCmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

Description: 轻量级的组件式流程框架

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.tag.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("g") +public class GCmp extends NodeComponent { + + @Override + public void process() { + System.out.println("GCmp executed!"); + } +} diff --git a/liteflow-testcase-springboot/src/test/resources/tag/flow.json b/liteflow-testcase-springboot/src/test/resources/tag/flow.json index dd2c7aaa7..49c902e4a 100644 --- a/liteflow-testcase-springboot/src/test/resources/tag/flow.json +++ b/liteflow-testcase-springboot/src/test/resources/tag/flow.json @@ -19,6 +19,12 @@ {"type": "then", "value": "b1"}, {"type": "when", "value": "b[1],b[2],b[3]"} ] + }, + { + "name": "chain4", + "condition": [ + {"type": "then", "value": "f[false],g"} + ] } ] } diff --git a/liteflow-testcase-springboot/src/test/resources/tag/flow.xml b/liteflow-testcase-springboot/src/test/resources/tag/flow.xml index ceea87217..b7ceb903d 100644 --- a/liteflow-testcase-springboot/src/test/resources/tag/flow.xml +++ b/liteflow-testcase-springboot/src/test/resources/tag/flow.xml @@ -12,4 +12,8 @@ + + + + \ No newline at end of file