From bffd69cd8faba6fafee871e2b451a0c01a47e46a Mon Sep 17 00:00:00 2001 From: zendwang Date: Tue, 26 Jul 2022 14:59:32 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#I5IOC5=20LiteFlowResponse?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=B8=AAerrorCode?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../yomahub/liteflow/core/FlowExecutor.java | 12 +-- .../liteflow/exception/LiteFlowException.java | 83 +++++++++++++++++++ .../liteflow/flow/LiteflowResponse.java | 32 +++++-- .../exception/CustomStatefulException.java | 12 +++ .../Exception2ELDeclSpringBootTest.java | 17 ++++ .../liteflow/test/exception/cmp/FCmp.java | 35 ++++++++ .../liteflow/test/exception/cmp/GCmp.java | 28 +++++++ .../src/test/resources/exception/flow.el.xml | 3 + .../exception/CustomStatefulException.java | 12 +++ .../test/exception/Exception2Test.java | 18 ++++ .../liteflow/test/exception/cmp/FCmp.java | 29 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 22 +++++ .../src/test/resources/exception/flow.el.xml | 5 ++ .../exception/CustomStatefulException.java | 12 +++ .../exception/Exception2ELSpringBootTest.java | 18 ++++ .../liteflow/test/exception/cmp/FCmp.java | 31 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 24 ++++++ .../src/test/resources/exception/flow.el.xml | 4 + .../exception/CustomStatefulException.java | 12 +++ .../exception/Exception2ELSpringTest.java | 18 ++++ .../liteflow/test/exception/cmp/FCmp.java | 31 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 24 ++++++ .../src/test/resources/exception/flow.el.xml | 4 + .../exception/CustomStatefulException.java | 12 +++ .../exception/Exception2SpringBootTest.java | 17 ++++ .../liteflow/test/exception/cmp/FCmp.java | 35 ++++++++ .../liteflow/test/exception/cmp/GCmp.java | 28 +++++++ .../src/test/resources/exception/flow.xml | 4 + .../exception/CustomStatefulException.java | 12 +++ .../test/exception/Exception2Test.java | 22 ++++- .../liteflow/test/exception/cmp/FCmp.java | 29 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 22 +++++ .../src/test/resources/exception/flow.xml | 6 ++ .../exception/CustomStatefulException.java | 12 +++ .../exception/Exception2SpringBootTest.java | 17 ++++ .../liteflow/test/exception/cmp/FCmp.java | 31 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 24 ++++++ .../src/test/resources/exception/flow.xml | 4 + .../exception/CustomStatefulException.java | 12 +++ .../test/exception/Exception2SpringTest.java | 18 ++++ .../liteflow/test/exception/cmp/FCmp.java | 31 +++++++ .../liteflow/test/exception/cmp/GCmp.java | 24 ++++++ .../src/test/resources/exception/flow.xml | 4 + 43 files changed, 827 insertions(+), 23 deletions(-) create mode 100644 liteflow-core/src/main/java/com/yomahub/liteflow/exception/LiteFlowException.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java create mode 100644 liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.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 e9177885f..abcfdd160 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 @@ -208,18 +208,8 @@ public class FlowExecutor { private LiteflowResponse execute2Resp(String chainId, Object param, Class[] contextBeanClazzArray, Integer slotIndex, boolean isInnerChain) { - LiteflowResponse response = new LiteflowResponse(); - Slot slot = doExecute(chainId, param, contextBeanClazzArray, slotIndex, isInnerChain); - - if (ObjectUtil.isNotNull(slot.getException())) { - response.setSuccess(false); - response.setMessage(slot.getException().getMessage()); - response.setCause(slot.getException()); - } else { - response.setSuccess(true); - } - response.setSlot(slot); + LiteflowResponse response = new LiteflowResponse(slot); return response; } diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/exception/LiteFlowException.java b/liteflow-core/src/main/java/com/yomahub/liteflow/exception/LiteFlowException.java new file mode 100644 index 000000000..47b1460aa --- /dev/null +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/exception/LiteFlowException.java @@ -0,0 +1,83 @@ + +package com.yomahub.liteflow.exception; + +/** + * LiteFlow架内部逻辑发生错误抛出的异常 + * (自定义此异常方便开发者在做全局异常处理时分辨异常类型) + * + * @author zendwang + * + */ +public class LiteFlowException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + /** 异常状态码 */ + private int code; + + /** + * 构建一个异常 + * + * @param message 异常描述信息 + */ + public LiteFlowException(String message) { + super(message); + } + + /** + * 构建一个异常 + * @param code 异常状态码 + * @param message 异常描述信息 + */ + public LiteFlowException(int code, String message) { + super(message); + this.code = code; + } + + /** + * 构建一个异常 + * + * @param cause 异常对象 + */ + public LiteFlowException(Throwable cause) { + super(cause); + } + + /** + * 构建一个异常 + * @param code 异常状态码 + * @param cause 异常对象 + */ + public LiteFlowException(int code, Throwable cause) { + super(cause); + this.code = code; + } + + /** + * 构建一个异常 + * + * @param message 异常信息 + * @param cause 异常对象 + */ + public LiteFlowException(String message, Throwable cause) { + super(message, cause); + } + + /** + * 构建一个异常 + * @param code 异常状态码 + * @param message 异常信息 + * @param cause 异常对象 + */ + public LiteFlowException(int code, String message, Throwable cause) { + super(message, cause); + this.code = code; + } + + /** + * @return 获得异常状态码 + */ + public int getCode() { + return code; + } +} diff --git a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/LiteflowResponse.java b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/LiteflowResponse.java index d2debd620..53a2e68c0 100644 --- a/liteflow-core/src/main/java/com/yomahub/liteflow/flow/LiteflowResponse.java +++ b/liteflow-core/src/main/java/com/yomahub/liteflow/flow/LiteflowResponse.java @@ -1,5 +1,6 @@ package com.yomahub.liteflow.flow; +import com.yomahub.liteflow.exception.LiteFlowException; import com.yomahub.liteflow.flow.entity.CmpStep; import com.yomahub.liteflow.slot.Slot; @@ -7,9 +8,6 @@ import java.io.Serializable; import java.util.HashMap; import java.util.Map; import java.util.Queue; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; /** * 执行结果封装类 @@ -20,7 +18,9 @@ public class LiteflowResponse implements Serializable { private static final long serialVersionUID = -2792556188993845048L; private boolean success; - + + private int code; + private String message; private Exception cause; @@ -31,8 +31,16 @@ public class LiteflowResponse implements Serializable { this(null); } public LiteflowResponse(Slot slot) { - this.success = true; - this.message = ""; + if (slot != null && slot.getException() != null) { + this.success = false; + this.cause = slot.getException(); + this.message = this.cause.getMessage(); + this.code = this.cause instanceof LiteFlowException ? ((LiteFlowException)this.cause).getCode() : -1; + } else { + this.success = true; + this.code = 0; + this.message = ""; + } this.slot = slot; } @@ -51,7 +59,15 @@ public class LiteflowResponse implements Serializable { public void setMessage(final String message) { this.message = message; } - + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + public Exception getCause() { return cause; } @@ -59,7 +75,7 @@ public class LiteflowResponse implements Serializable { public void setCause(final Exception cause) { this.cause = cause; } - + public Slot getSlot() { return slot; } diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELDeclSpringBootTest.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELDeclSpringBootTest.java index 7f80d6f89..72e94c14c 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELDeclSpringBootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELDeclSpringBootTest.java @@ -56,4 +56,21 @@ public class Exception2ELDeclSpringBootTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..d076170fa --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,35 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.annotation.LiteflowCmpDefine; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +@LiteflowCmpDefine +public class FCmp { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @LiteflowMethod(LiteFlowMethodEnum.PROCESS) + public void process(NodeComponent bindCmp) { + String str = bindCmp.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..109285814 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,28 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.annotation.LiteflowCmpDefine; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +@LiteflowCmpDefine +public class GCmp { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @LiteflowMethod(LiteFlowMethodEnum.PROCESS) + public void process(NodeComponent bindCmp) { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/resources/exception/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/resources/exception/flow.el.xml index e9563a4e3..58eae78ac 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/resources/exception/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-declare-springboot/src/test/resources/exception/flow.el.xml @@ -16,4 +16,7 @@ SWITCH(e).to(b, c); + + THEN(f, g); + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java index 34c56e6b8..9c8e4d262 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java @@ -5,6 +5,7 @@ import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.core.FlowExecutorHolder; import com.yomahub.liteflow.exception.ChainNotFoundException; import com.yomahub.liteflow.exception.FlowSystemException; +import com.yomahub.liteflow.exception.LiteFlowException; import com.yomahub.liteflow.exception.NoSwitchTargetNodeException; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.property.LiteflowConfig; @@ -63,4 +64,21 @@ public class Exception2Test extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..0c777c1d8 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,29 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..c82a95238 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,22 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/exception/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/exception/flow.el.xml index 7ea4ef796..51dfaedae 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/exception/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-nospring/src/test/resources/exception/flow.el.xml @@ -6,6 +6,8 @@ + + @@ -24,4 +26,7 @@ SWITCH(e).to(b, c); + + THEN(f, g); + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringBootTest.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringBootTest.java index d6be100ef..829477144 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringBootTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringBootTest.java @@ -3,6 +3,7 @@ package com.yomahub.liteflow.test.exception; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.exception.ChainNotFoundException; import com.yomahub.liteflow.exception.FlowSystemException; +import com.yomahub.liteflow.exception.LiteFlowException; import com.yomahub.liteflow.exception.NoSwitchTargetNodeException; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.test.BaseTest; @@ -63,4 +64,21 @@ public class Exception2ELSpringBootTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..066549a77 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,31 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..0c1120aa0 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/exception/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/exception/flow.el.xml index e9563a4e3..255a8b8d0 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/exception/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-springboot/src/test/resources/exception/flow.el.xml @@ -16,4 +16,8 @@ SWITCH(e).to(b, c); + + THEN(f, g); + + \ No newline at end of file diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringTest.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringTest.java index 9e7b929ba..7cd712346 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringTest.java +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2ELSpringTest.java @@ -2,6 +2,7 @@ package com.yomahub.liteflow.test.exception; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.exception.ChainNotFoundException; +import com.yomahub.liteflow.exception.LiteFlowException; import com.yomahub.liteflow.exception.NoSwitchTargetNodeException; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.test.BaseTest; @@ -50,4 +51,21 @@ public class Exception2ELSpringTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..066549a77 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,31 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..0c1120aa0 --- /dev/null +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/exception/flow.el.xml b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/exception/flow.el.xml index e9563a4e3..255a8b8d0 100644 --- a/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/exception/flow.el.xml +++ b/liteflow-testcase-el/liteflow-testcase-el-springnative/src/test/resources/exception/flow.el.xml @@ -16,4 +16,8 @@ SWITCH(e).to(b, c); + + THEN(f, g); + + \ No newline at end of file diff --git a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java index d005ee3fc..86fd27194 100644 --- a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java +++ b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java @@ -68,4 +68,21 @@ public class Exception2SpringBootTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..d076170fa --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,35 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.annotation.LiteflowCmpDefine; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +@LiteflowCmpDefine +public class FCmp { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @LiteflowMethod(LiteFlowMethodEnum.PROCESS) + public void process(NodeComponent bindCmp) { + String str = bindCmp.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..109285814 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,28 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.annotation.LiteflowCmpDefine; +import com.yomahub.liteflow.annotation.LiteflowMethod; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.enums.LiteFlowMethodEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +@LiteflowCmpDefine +public class GCmp { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @LiteflowMethod(LiteFlowMethodEnum.PROCESS) + public void process(NodeComponent bindCmp) { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/resources/exception/flow.xml b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/resources/exception/flow.xml index 1863be1d3..328a6cb14 100644 --- a/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/resources/exception/flow.xml +++ b/liteflow-testcase-old/liteflow-testcase-declare-springboot/src/test/resources/exception/flow.xml @@ -18,4 +18,8 @@ + + + + \ No newline at end of file diff --git a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java index 071e78908..88db04afd 100644 --- a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java +++ b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/Exception2Test.java @@ -2,11 +2,8 @@ package com.yomahub.liteflow.test.exception; import com.yomahub.liteflow.core.FlowExecutor; import com.yomahub.liteflow.core.FlowExecutorHolder; -import com.yomahub.liteflow.exception.NoSwitchTargetNodeException; +import com.yomahub.liteflow.exception.*; import com.yomahub.liteflow.flow.LiteflowResponse; -import com.yomahub.liteflow.exception.ChainNotFoundException; -import com.yomahub.liteflow.exception.FlowExecutorNotInitException; -import com.yomahub.liteflow.exception.FlowSystemException; import com.yomahub.liteflow.property.LiteflowConfig; import com.yomahub.liteflow.property.LiteflowConfigGetter; import com.yomahub.liteflow.slot.DefaultContext; @@ -64,4 +61,21 @@ public class Exception2Test extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..0c777c1d8 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,29 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..c82a95238 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,22 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/resources/exception/flow.xml b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/resources/exception/flow.xml index 9852a73cc..58e93b0a7 100644 --- a/liteflow-testcase-old/liteflow-testcase-nospring/src/test/resources/exception/flow.xml +++ b/liteflow-testcase-old/liteflow-testcase-nospring/src/test/resources/exception/flow.xml @@ -6,6 +6,8 @@ + + @@ -26,4 +28,8 @@ + + + + \ No newline at end of file diff --git a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java index 2d738961e..ca3d53707 100644 --- a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java +++ b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringBootTest.java @@ -71,4 +71,21 @@ public class Exception2SpringBootTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..066549a77 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,31 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..0c1120aa0 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/resources/exception/flow.xml b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/resources/exception/flow.xml index 1863be1d3..328a6cb14 100644 --- a/liteflow-testcase-old/liteflow-testcase-springboot/src/test/resources/exception/flow.xml +++ b/liteflow-testcase-old/liteflow-testcase-springboot/src/test/resources/exception/flow.xml @@ -18,4 +18,8 @@ + + + + \ No newline at end of file diff --git a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java new file mode 100644 index 000000000..8a203e46a --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/CustomStatefulException.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.test.exception; + +import com.yomahub.liteflow.exception.LiteFlowException; + +/** + * 用户自定义带状态码的异常 + */ +public class CustomStatefulException extends LiteFlowException { + public CustomStatefulException(int code, String message) { + super(code, message); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringTest.java b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringTest.java index c1681b0bf..5a9cd6499 100644 --- a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringTest.java +++ b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/Exception2SpringTest.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.test.exception; import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.exception.LiteFlowException; import com.yomahub.liteflow.exception.NoSwitchTargetNodeException; import com.yomahub.liteflow.flow.LiteflowResponse; import com.yomahub.liteflow.exception.ChainNotFoundException; @@ -61,4 +62,21 @@ public class Exception2SpringTest extends BaseTest { Assert.assertFalse(response.isSuccess()); throw response.getCause(); } + + @Test + public void testInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "custom-stateful-exception"); + Assert.assertFalse(response.isSuccess()); + Assert.assertEquals(300, response.getCode()); + Assert.assertNotNull(response.getCause()); + Assert.assertTrue(response.getCause() instanceof LiteFlowException); + Assert.assertNotNull(response.getSlot()); + } + + @Test + public void testNotInvokeCustomStatefulException() { + LiteflowResponse response = flowExecutor.execute2Resp("chain6", "test"); + Assert.assertTrue(response.isSuccess()); + Assert.assertEquals(0, response.getCode()); + } } diff --git a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java new file mode 100644 index 000000000..066549a77 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/FCmp.java @@ -0,0 +1,31 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.test.exception.CustomStatefulException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("f") +public class FCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(FCmp.class); + + @Override + public void process() { + String str = this.getRequestData(); + if(StrUtil.isNotBlank(str) && str.equals("custom-stateful-exception")) { + throw new CustomStatefulException(300, "chain execute custom stateful execption"); + } + LOG.info("Fcomp executed!"); + } + +} diff --git a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java new file mode 100644 index 000000000..0c1120aa0 --- /dev/null +++ b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/java/com/yomahub/liteflow/test/exception/cmp/GCmp.java @@ -0,0 +1,24 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.test.exception.cmp; + +import com.yomahub.liteflow.core.NodeComponent; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +@Component("g") +public class GCmp extends NodeComponent { + + private static final Logger LOG = LoggerFactory.getLogger(GCmp.class); + + @Override + public void process() { + LOG.info("Gcomp executed!"); + } +} diff --git a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/resources/exception/flow.xml b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/resources/exception/flow.xml index 1863be1d3..328a6cb14 100644 --- a/liteflow-testcase-old/liteflow-testcase-springnative/src/test/resources/exception/flow.xml +++ b/liteflow-testcase-old/liteflow-testcase-springnative/src/test/resources/exception/flow.xml @@ -18,4 +18,8 @@ + + + + \ No newline at end of file