Bläddra i källkod

enhancement #IBA89R 期望java脚本引擎支持继承特性

everywhere.z 5 månader sedan
förälder
incheckning
ffe535308e

+ 1 - 1
liteflow-script-plugin/liteflow-script-javax/src/main/java/com/yomahub/liteflow/script/javax/JavaxExecutor.java

@@ -94,7 +94,7 @@ public class JavaxExecutor extends ScriptExecutor {
                 .replaceAll("protected class", "class");
 
         //分析出class的具体名称
-        String className = ReUtil.getGroup1("class\\s+(\\w+)\\s+implements", script1);
+        String className = ReUtil.getGroup1("class\\s+(\\w+)\\s+(implements|extends)", script1);
 
         if (StrUtil.isBlank(className)){
             throw new RuntimeException("cannot find class defined");

+ 8 - 0
liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/script/javax/scriptExtends/DemoClass.java

@@ -0,0 +1,8 @@
+package com.yomahub.liteflow.test.script.javax.scriptExtends;
+
+public class DemoClass {
+
+    public String sayHello(String name) {
+        return "hello " + name;
+    }
+}

+ 33 - 0
liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/java/com/yomahub/liteflow/test/script/javax/scriptExtends/ScriptJavaxScriptExtendsELTest.java

@@ -0,0 +1,33 @@
+package com.yomahub.liteflow.test.script.javax.scriptExtends;
+
+import com.yomahub.liteflow.core.FlowExecutor;
+import com.yomahub.liteflow.flow.LiteflowResponse;
+import com.yomahub.liteflow.slot.DefaultContext;
+import com.yomahub.liteflow.test.BaseTest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.test.context.TestPropertySource;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+
+import javax.annotation.Resource;
+
+@ExtendWith(SpringExtension.class)
+@TestPropertySource(value = "classpath:/scriptExtends/application.properties")
+@SpringBootTest(classes = ScriptJavaxScriptExtendsELTest.class)
+@EnableAutoConfiguration
+public class ScriptJavaxScriptExtendsELTest extends BaseTest {
+
+    @Resource
+    private FlowExecutor flowExecutor;
+
+    // 测试普通脚本节点
+    @Test
+    public void testCommon1() {
+        LiteflowResponse response = flowExecutor.execute2Resp("chain1", "arg");
+        Assertions.assertTrue(response.isSuccess());
+    }
+}

+ 2 - 0
liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/resources/scriptExtends/application.properties

@@ -0,0 +1,2 @@
+liteflow.rule-source=scriptExtends/flow.xml
+liteflow.script-setting.javax-is-cache=false

+ 23 - 0
liteflow-testcase-el/liteflow-testcase-el-script-javax-springboot/src/test/resources/scriptExtends/flow.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE flow PUBLIC  "liteflow" "liteflow.dtd">
+<flow>
+    <nodes>
+        <node id="s1" name="普通脚本1" type="script" language="java">
+            <![CDATA[
+            import com.yomahub.liteflow.script.body.CommonScriptBody;
+            import com.yomahub.liteflow.script.ScriptExecuteWrap;
+
+            public class Demo implements CommonScriptBody {
+                public Void body(ScriptExecuteWrap wrap) {
+                    System.out.println("hello world");
+                    return null;
+                }
+            }
+            ]]>
+        </node>
+    </nodes>
+
+    <chain name="chain1">
+        THEN(s1);
+    </chain>
+</flow>