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 909504009..501d4e7e9 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 @@ -278,6 +278,10 @@ public class FlowExecutor { this.execute(chainId, param, slotClazz, slotIndex, true); } + public DefaultSlot execute(String chainId) throws Exception { + return this.execute(chainId, DefaultSlot.class, null, false); + } + public DefaultSlot execute(String chainId, Object param) throws Exception { return this.execute(chainId, param, DefaultSlot.class, null, false); } @@ -292,6 +296,15 @@ public class FlowExecutor { //data slot is a ConcurrentHashMap, so null value will trigger NullPointerException throw new NullParamException("data slot cann't accept null param"); } + return this.execute0(chainId, param, slotClazz, slotIndex, isInnerChain); + } + + public T execute(String chainId, Class slotClazz, + Integer slotIndex, boolean isInnerChain) throws Exception { + return this.execute0(chainId, null, slotClazz, slotIndex, isInnerChain); + } + + private T execute0(String chainId, Object param, Class slotClazz, Integer slotIndex, boolean isInnerChain) throws Exception { T slot = this.doExecute(chainId, param, slotClazz, slotIndex, isInnerChain); if (ObjectUtil.isNotNull(slot.getException())) { throw slot.getException(); @@ -300,6 +313,10 @@ public class FlowExecutor { } } + public LiteflowResponse execute2Resp(String chainId) { + return this.execute2Resp(chainId, DefaultSlot.class, null, false); + } + public LiteflowResponse execute2Resp(String chainId, Object param) { return this.execute2Resp(chainId, param, DefaultSlot.class); } @@ -312,11 +329,21 @@ public class FlowExecutor { public LiteflowResponse execute2Resp(String chainId, Object param, Class slotClazz, Integer slotIndex, boolean isInnerChain) { - LiteflowResponse response = new LiteflowResponse<>(); if (null == param) { //data slot is a ConcurrentHashMap, so null value will trigger NullPointerException throw new NullParamException("data slot cann't accept null param"); } + return execute2Resp0(chainId, param, slotClazz, slotIndex, isInnerChain); + } + + public LiteflowResponse execute2Resp(String chainId, Class slotClazz, Integer slotIndex, + boolean isInnerChain) { + return execute2Resp0(chainId, null, slotClazz, slotIndex, isInnerChain); + } + + private LiteflowResponse execute2Resp0(String chainId, Object param, Class slotClazz, Integer slotIndex, boolean isInnerChain) { + LiteflowResponse response = new LiteflowResponse<>(); + T slot = doExecute(chainId, param, slotClazz, slotIndex, isInnerChain); if (ObjectUtil.isNotNull(slot.getException()) && !notFailExceptionList.contains(slot.getException().getClass())) { @@ -356,10 +383,14 @@ public class FlowExecutor { } if (!isInnerChain) { - slot.setRequestData(param); + if (null != param) { + slot.setRequestData(param); + } slot.setChainName(chainId); } else { - slot.setChainReqData(chainId, param); + if (null != param) { + slot.setChainReqData(chainId, param); + } } Chain chain = null;