From 448fa820239f9ae20fedaba324818f4380df07b0 Mon Sep 17 00:00:00 2001 From: bryan31 Date: Wed, 10 Nov 2021 00:42:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E5=BC=82=E6=AD=A5=E7=BA=BF=E7=A8=8B?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=E7=94=A8=E4=BE=8B=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E4=BA=86=E9=87=8D=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/asyncNode/AsyncNodeSpringbootTest.java | 3 ++- .../yomahub/liteflow/test/asyncNode/cmp/ACmp.java | 11 +++++++++++ .../yomahub/liteflow/test/asyncNode/cmp/BCmp.java | 11 +++++++++++ .../yomahub/liteflow/test/asyncNode/cmp/CCmp.java | 11 +++++++++++ .../yomahub/liteflow/test/asyncNode/cmp/DCmp.java | 13 ++++++++++++- .../yomahub/liteflow/test/asyncNode/cmp/GCmp.java | 13 ++++++++++++- .../yomahub/liteflow/test/asyncNode/cmp/HCmp.java | 15 +++++++++++++++ 7 files changed, 74 insertions(+), 3 deletions(-) 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!"); } }