diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/AsyncNodeSpringbootTest.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/AsyncNodeSpringbootTest.java index 8a6ec6226..6a2a4739f 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/AsyncNodeSpringbootTest.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/AsyncNodeSpringbootTest.java @@ -105,12 +105,13 @@ public class AsyncNodeSpringbootTest extends BaseTest { Assert.assertEquals(TestException.class, response.getCause().getClass()); } - //d g h并行,配置了any=true,其中d耗时3秒,g耗时1秒,其他都不设耗时 + //d g h并行,配置了any=true,其中d耗时1秒,g耗时0.5秒,其他都不设耗时 //最终执行效果应该是h先返回,然后执行abc,最后gd //这里要注意的是,由于step是先加入,所以step的打印顺序并不是这样的。但是实际执行是正确的 @Test public void testAsyncFlow8() throws Exception { LiteflowResponse response = flowExecutor.execute2Resp("chain8", "it's a base request"); Assert.assertTrue(response.isSuccess()); + Assert.assertTrue(response.getSlot().getData("check").toString().startsWith("habc")); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/ACmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/ACmp.java index d1891c141..fc2973788 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/ACmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/ACmp.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; @@ -8,6 +9,16 @@ import org.springframework.stereotype.Component; public class ACmp extends NodeComponent { @Override public void process() { + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } System.out.println("Acomp executed!"); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/BCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/BCmp.java index 88f97fc36..33739235e 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/BCmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/BCmp.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; @@ -8,6 +9,16 @@ import org.springframework.stereotype.Component; public class BCmp extends NodeComponent { @Override public void process() { + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } System.out.println("Bcomp executed!"); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/CCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/CCmp.java index 8d72549d0..c1f2427bf 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/CCmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/CCmp.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; @@ -8,6 +9,16 @@ import org.springframework.stereotype.Component; public class CCmp extends NodeComponent { @Override public void process() throws Exception { + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } System.out.println("Ccomp executed!"); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/DCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/DCmp.java index 46624de0d..1d997d095 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/DCmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/DCmp.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; @@ -8,7 +9,17 @@ import org.springframework.stereotype.Component; public class DCmp extends NodeComponent { @Override public void process() throws Exception { - Thread.sleep(3000); + Thread.sleep(1000); + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } System.out.println("Dcomp executed!"); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/GCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/GCmp.java index aa2a754a4..daceb656e 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/GCmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/GCmp.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; @@ -9,7 +10,17 @@ public class GCmp extends NodeComponent { @Override public void process() throws Exception { - Thread.sleep(1000); + Thread.sleep(500); + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } System.out.println("Gcomp executed!"); } } diff --git a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/HCmp.java b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/HCmp.java index fef8fef49..f198bda0c 100644 --- a/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/HCmp.java +++ b/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/asyncNode/cmp/HCmp.java @@ -1,14 +1,29 @@ package com.yomahub.liteflow.test.asyncNode.cmp; import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.core.NodeCondComponent; +import com.yomahub.liteflow.entity.data.Slot; import org.springframework.stereotype.Component; +import java.util.concurrent.atomic.AtomicReference; + @Component("h") public class HCmp extends NodeComponent { @Override public void process() throws Exception { + Slot slot = this.getSlot(); + synchronized (NodeComponent.class){ + if (slot.hasData("check")){ + String str = slot.getData("check"); + str += this.getNodeId(); + slot.setData("check", str); + }else{ + slot.setData("check", this.getNodeId()); + } + } + System.out.println("Hcomp executed!"); } }