diff --git a/liteflow-core/pom.xml b/liteflow-core/pom.xml
index 80149c804..84d8ce59b 100644
--- a/liteflow-core/pom.xml
+++ b/liteflow-core/pom.xml
@@ -9,7 +9,7 @@
com.yomahub
liteflow
- 2.6.0
+ 2.6.1
diff --git a/liteflow-script-common/pom.xml b/liteflow-script-common/pom.xml
index c392952f1..59a493a91 100644
--- a/liteflow-script-common/pom.xml
+++ b/liteflow-script-common/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-script-groovy/pom.xml b/liteflow-script-groovy/pom.xml
index c1baeedd2..13763d6f1 100644
--- a/liteflow-script-groovy/pom.xml
+++ b/liteflow-script-groovy/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-script-groovy/src/main/java/com/yomahub/liteflow/script/groovy/GroovyScriptExecutor.java b/liteflow-script-groovy/src/main/java/com/yomahub/liteflow/script/groovy/GroovyScriptExecutor.java
index a64a7910a..518d8a35a 100644
--- a/liteflow-script-groovy/src/main/java/com/yomahub/liteflow/script/groovy/GroovyScriptExecutor.java
+++ b/liteflow-script-groovy/src/main/java/com/yomahub/liteflow/script/groovy/GroovyScriptExecutor.java
@@ -41,7 +41,7 @@ public class GroovyScriptExecutor implements ScriptExecutor {
compiledScriptMap.put(nodeId, compiledScript);
}
}catch (Exception e){
- String errorMsg = StrUtil.format("script loading error for node[{}]", nodeId);
+ String errorMsg = StrUtil.format("script loading error for node[{}], error msg:{}", nodeId, e.getMessage());
throw new ScriptLoadException(errorMsg);
}
diff --git a/liteflow-script-qlexpress/pom.xml b/liteflow-script-qlexpress/pom.xml
index e23e99b01..a9a9a626b 100644
--- a/liteflow-script-qlexpress/pom.xml
+++ b/liteflow-script-qlexpress/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-script-qlexpress/src/main/java/com/yomahub/liteflow/script/qlexpress/QLExpressScriptExecutor.java b/liteflow-script-qlexpress/src/main/java/com/yomahub/liteflow/script/qlexpress/QLExpressScriptExecutor.java
index c38a7365e..0bab4d843 100644
--- a/liteflow-script-qlexpress/src/main/java/com/yomahub/liteflow/script/qlexpress/QLExpressScriptExecutor.java
+++ b/liteflow-script-qlexpress/src/main/java/com/yomahub/liteflow/script/qlexpress/QLExpressScriptExecutor.java
@@ -1,7 +1,10 @@
package com.yomahub.liteflow.script.qlexpress;
+import cn.hutool.core.io.resource.ResourceUtil;
+import cn.hutool.core.util.ReflectUtil;
import cn.hutool.core.util.StrUtil;
import com.ql.util.express.DefaultContext;
+import com.ql.util.express.ExpressLoader;
import com.ql.util.express.ExpressRunner;
import com.yomahub.liteflow.entity.data.DataBus;
import com.yomahub.liteflow.entity.data.Slot;
@@ -36,7 +39,7 @@ public class QLExpressScriptExecutor implements ScriptExecutor {
try{
expressRunner.loadMutilExpress(nodeId, script);
}catch (Exception e){
- String errorMsg = StrUtil.format("script loading error for node[{}]", nodeId);
+ String errorMsg = StrUtil.format("script loading error for node[{}],error msg:{}", nodeId, e.getMessage());
throw new ScriptLoadException(errorMsg);
}
}
@@ -46,7 +49,7 @@ public class QLExpressScriptExecutor implements ScriptExecutor {
List errorList = new ArrayList<>();
try{
Slot slot = DataBus.getSlot(slotIndex);
- DefaultContext context = new DefaultContext();
+ DefaultContext context = new DefaultContext<>();
context.put("slot", slot);
return expressRunner.executeByExpressName(nodeId, context, errorList, true, false, null);
}catch (Exception e){
@@ -61,5 +64,6 @@ public class QLExpressScriptExecutor implements ScriptExecutor {
@Override
public void cleanCache() {
expressRunner.clearExpressCache();
+ ReflectUtil.setFieldValue(expressRunner,"loader",new ExpressLoader(expressRunner));
}
}
diff --git a/liteflow-spring-boot-starter/pom.xml b/liteflow-spring-boot-starter/pom.xml
index f870f22b7..d2e4c1f14 100644
--- a/liteflow-spring-boot-starter/pom.xml
+++ b/liteflow-spring-boot-starter/pom.xml
@@ -10,7 +10,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
diff --git a/liteflow-testcase-script-groovy/pom.xml b/liteflow-testcase-script-groovy/pom.xml
index 4085f712d..0de155ef9 100644
--- a/liteflow-testcase-script-groovy/pom.xml
+++ b/liteflow-testcase-script-groovy/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowScriptGroovyTest.java b/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowScriptGroovyTest.java
index b4dce59f5..fff40be3c 100644
--- a/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowScriptGroovyTest.java
+++ b/liteflow-testcase-script-groovy/src/test/java/com/yomahub/liteflow/test/script/groovy/LiteflowScriptGroovyTest.java
@@ -1,8 +1,11 @@
package com.yomahub.liteflow.test.script.groovy;
+import cn.hutool.core.io.resource.ResourceUtil;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.entity.data.DefaultSlot;
import com.yomahub.liteflow.entity.data.LiteflowResponse;
+import com.yomahub.liteflow.enums.FlowParserTypeEnum;
+import com.yomahub.liteflow.flow.FlowBus;
import com.yomahub.liteflow.test.BaseTest;
import org.junit.Assert;
import org.junit.Test;
@@ -46,4 +49,22 @@ public class LiteflowScriptGroovyTest extends BaseTest {
Assert.assertTrue(response.isSuccess());
Assert.assertEquals("d==>s2[条件脚本]==>a", response.getSlot().printStep());
}
+
+ //测试脚本的热重载
+ @Test
+ public void testScript3() throws Exception{
+ //根据配置,加载的应该是flow.xml,执行原来的规则
+ LiteflowResponse responseOld = flowExecutor.execute2Resp("chain2", "arg");
+ Assert.assertTrue(responseOld.isSuccess());
+ Assert.assertEquals("d==>s2[条件脚本]==>a", responseOld.getSlot().printStep());
+ //更改规则,重新加载,更改的规则内容从flow_update.xml里读取,这里只是为了模拟下获取新的内容。不一定是从文件中读取
+ String newContent = ResourceUtil.readUtf8Str("classpath: /script/flow_update.xml");
+ //进行刷新
+ FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_XML, newContent);
+
+ //重新执行chain2这个链路,结果会变
+ LiteflowResponse responseNew = flowExecutor.execute2Resp("chain2", "arg");
+ Assert.assertTrue(responseNew.isSuccess());
+ Assert.assertEquals("d==>s2[条件脚本_改]==>b==>s3[普通脚本_新增]", responseNew.getSlot().printStep());
+ }
}
diff --git a/liteflow-testcase-script-groovy/src/test/resources/script/flow_update.xml b/liteflow-testcase-script-groovy/src/test/resources/script/flow_update.xml
new file mode 100644
index 000000000..bc38a9913
--- /dev/null
+++ b/liteflow-testcase-script-groovy/src/test/resources/script/flow_update.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+ 150){
+ return "b";
+ }else{
+ return "a";
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-script-qlexpress/pom.xml b/liteflow-testcase-script-qlexpress/pom.xml
index 6ebc6fd00..935483108 100644
--- a/liteflow-testcase-script-qlexpress/pom.xml
+++ b/liteflow-testcase-script-qlexpress/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/script/qlexpress/LiteflowScriptQLExpressTest.java b/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/script/qlexpress/LiteflowScriptQLExpressTest.java
index 3b1365d31..996a384db 100644
--- a/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/script/qlexpress/LiteflowScriptQLExpressTest.java
+++ b/liteflow-testcase-script-qlexpress/src/test/java/com/yomahub/liteflow/test/script/qlexpress/LiteflowScriptQLExpressTest.java
@@ -1,8 +1,11 @@
package com.yomahub.liteflow.test.script.qlexpress;
+import cn.hutool.core.io.resource.ResourceUtil;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.entity.data.DefaultSlot;
import com.yomahub.liteflow.entity.data.LiteflowResponse;
+import com.yomahub.liteflow.enums.FlowParserTypeEnum;
+import com.yomahub.liteflow.flow.FlowBus;
import com.yomahub.liteflow.test.BaseTest;
import org.junit.Assert;
import org.junit.Test;
@@ -46,4 +49,21 @@ public class LiteflowScriptQLExpressTest extends BaseTest {
Assert.assertTrue(response.isSuccess());
Assert.assertEquals("d==>s2[条件脚本]==>b", response.getSlot().printStep());
}
+
+ @Test
+ public void testScript3() throws Exception{
+ //根据配置,加载的应该是flow.xml,执行原来的规则
+ LiteflowResponse responseOld = flowExecutor.execute2Resp("chain2", "arg");
+ Assert.assertTrue(responseOld.isSuccess());
+ Assert.assertEquals("d==>s2[条件脚本]==>b", responseOld.getSlot().printStep());
+ //更改规则,重新加载,更改的规则内容从flow_update.xml里读取,这里只是为了模拟下获取新的内容。不一定是从文件中读取
+ String newContent = ResourceUtil.readUtf8Str("classpath: /script/flow_update.xml");
+ //进行刷新
+ FlowBus.refreshFlowMetaData(FlowParserTypeEnum.TYPE_XML, newContent);
+
+ //重新执行chain2这个链路,结果会变
+ LiteflowResponse responseNew = flowExecutor.execute2Resp("chain2", "arg");
+ Assert.assertTrue(responseNew.isSuccess());
+ Assert.assertEquals("d==>s2[条件脚本_改]==>a==>s3[普通脚本_新增]", responseNew.getSlot().printStep());
+ }
}
diff --git a/liteflow-testcase-script-qlexpress/src/test/resources/script/flow_update.xml b/liteflow-testcase-script-qlexpress/src/test/resources/script/flow_update.xml
new file mode 100644
index 000000000..8b6d44e73
--- /dev/null
+++ b/liteflow-testcase-script-qlexpress/src/test/resources/script/flow_update.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+ 150){
+ return "b";
+ }else{
+ return "a";
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/liteflow-testcase-springboot/pom.xml b/liteflow-testcase-springboot/pom.xml
index a3d06bcaa..7a40bc38d 100644
--- a/liteflow-testcase-springboot/pom.xml
+++ b/liteflow-testcase-springboot/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/liteflow-testcase-springnative/pom.xml b/liteflow-testcase-springnative/pom.xml
index 8df8a997f..4a815adc7 100644
--- a/liteflow-testcase-springnative/pom.xml
+++ b/liteflow-testcase-springnative/pom.xml
@@ -5,7 +5,7 @@
liteflow
com.yomahub
- 2.6.0
+ 2.6.1
4.0.0
diff --git a/pom.xml b/pom.xml
index 0d8fefe85..d76ef4484 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.yomahub
liteflow
pom
- 2.6.0
+ 2.6.1
liteflow
a lightweight and practical micro-process framework
https://github.com/bryan31/liteflow