diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/pom.xml b/liteflow-benchmark/liteflow-benchmark-script-groovy/pom.xml new file mode 100644 index 000000000..b2e0ea09a --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/pom.xml @@ -0,0 +1,24 @@ + + + + liteflow-benchmark + com.yomahub + ${revision} + ../pom.xml + + 4.0.0 + + liteflow-benchmark-script-groovy + + + + com.yomahub + liteflow-script-groovy + ${revision} + test + + + + \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/ScriptGroovyBenchmark.java b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/ScriptGroovyBenchmark.java new file mode 100644 index 000000000..77bf63be0 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/ScriptGroovyBenchmark.java @@ -0,0 +1,76 @@ +package com.yomahub.liteflow.benchmark; + +import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.builder.LiteFlowNodeBuilder; +import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.FlowBus; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import org.openjdk.jmh.runner.options.TimeValue; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.PropertySource; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@EnableAutoConfiguration +@PropertySource(value = "classpath:application.properties") +@ComponentScan("com.yomahub.liteflow.benchmark.cmp") +public class ScriptGroovyBenchmark { + + private ConfigurableApplicationContext applicationContext; + + private FlowExecutor flowExecutor; + + @Setup + public void setup() { + applicationContext = SpringApplication.run(ScriptGroovyBenchmark.class); + flowExecutor = applicationContext.getBean(FlowExecutor.class); + } + + @TearDown + public void tearDown() { + applicationContext.close(); + } + + //普通执行 + @Benchmark + public void test1(){ + flowExecutor.execute2Resp("chain1"); + } + + //LF动态创建组件和规则,并执行 + @Benchmark + public void test2(){ + String scriptContent = ResourceUtil.readUtf8Str("classpath:script.groovy"); + LiteFlowNodeBuilder.createScriptNode().setId("ds").setScript(scriptContent).build(); + + if(!FlowBus.containChain("chain2")){ + LiteFlowChainELBuilder.createChain().setChainId("chain2").setEL("THEN(ds)").build(); + } + flowExecutor.execute2Resp("chain2"); + } + + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include(ScriptGroovyBenchmark.class.getSimpleName()) + .mode(Mode.Throughput) + .warmupIterations(1)//预热次数 + .measurementIterations(3)//执行次数 + .measurementTime(new TimeValue(10, TimeUnit.SECONDS))//每次执行多少时间 + .threads(100)//多少个线程 + .forks(1)//多少个进程 + .timeUnit(TimeUnit.SECONDS) + .build(); + new Runner(opt).run(); + } +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java new file mode 100644 index 000000000..8c9d02813 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("a") +public class ACmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java new file mode 100644 index 000000000..1dc6a517f --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("b") +public class BCmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java new file mode 100644 index 000000000..95ee9b80c --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("c") +public class CCmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java new file mode 100644 index 000000000..372571b11 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java @@ -0,0 +1,13 @@ +package com.yomahub.liteflow.benchmark.cmp; + +import org.springframework.stereotype.Component; + + +@Component +public class TestDomain { + + public String sayHello(String name){ + return "hello," + name; + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/application.properties b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/application.properties new file mode 100644 index 000000000..970b6d155 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/application.properties @@ -0,0 +1,3 @@ +liteflow.rule-source=flow.xml +liteflow.print-execution-log=false +liteflow.script-setting.javax-is-cache=false \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/flow.xml b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/flow.xml new file mode 100644 index 000000000..ee2649be2 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/flow.xml @@ -0,0 +1,55 @@ + + + + + + list = ListUtil.toList("a", "b", "c") + + List resultList = list.stream().map(s -> "hello," + s).collect(Collectors.toList()) + + defaultContext.setData("resultList", resultList) + + class Student { + int studentID + String studentName + } + + Student student = new Student() + student.studentID = 100301 + student.studentName = "张三" + defaultContext.setData("student", student) + + def a = 3 + def b = 2 + defaultContext.setData("s1", a * b) + ]]> + + + + + + + + + + + + + THEN(FOR(s2).DO(THEN(a, b, c, s1)), SWITCH(s3).TO(a,b)); + + \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/script.groovy b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/script.groovy new file mode 100644 index 000000000..aa5bcc4f2 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-groovy/src/test/resources/script.groovy @@ -0,0 +1,29 @@ +import cn.hutool.core.collection.ListUtil +import cn.hutool.core.date.DateUtil + +import java.util.function.Consumer +import java.util.function.Function +import java.util.stream.Collectors + +def date = DateUtil.parse("2022-10-17 13:31:43") +defaultContext.setData("demoDate", date) + +List list = ListUtil.toList("a", "b", "c") + +List resultList = list.stream().map(s -> "hello," + s).collect(Collectors.toList()) + +defaultContext.setData("resultList", resultList) + +class Student { + int studentID + String studentName +} + +Student student = new Student() +student.studentID = 100301 +student.studentName = "张三" +defaultContext.setData("student", student) + +def a = 3 +def b = 2 +defaultContext.setData("s1", a * b) \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/pom.xml b/liteflow-benchmark/liteflow-benchmark-script-java/pom.xml new file mode 100644 index 000000000..139f0c987 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/pom.xml @@ -0,0 +1,24 @@ + + + + liteflow-benchmark + com.yomahub + ${revision} + ../pom.xml + + 4.0.0 + + liteflow-benchmark-script-java + + + + com.yomahub + liteflow-script-java + ${revision} + test + + + + \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaBenchmark.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaBenchmark.java new file mode 100644 index 000000000..607b40bac --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaBenchmark.java @@ -0,0 +1,76 @@ +package com.yomahub.liteflow.benchmark; + +import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.builder.LiteFlowNodeBuilder; +import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; +import com.yomahub.liteflow.core.FlowExecutor; +import com.yomahub.liteflow.flow.FlowBus; +import org.openjdk.jmh.annotations.*; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import org.openjdk.jmh.runner.options.TimeValue; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.PropertySource; + +import java.util.concurrent.TimeUnit; + +@State(Scope.Benchmark) +@EnableAutoConfiguration +@PropertySource(value = "classpath:application.properties") +@ComponentScan("com.yomahub.liteflow.benchmark.cmp") +public class ScriptJavaBenchmark { + + private ConfigurableApplicationContext applicationContext; + + private FlowExecutor flowExecutor; + + @Setup + public void setup() { + applicationContext = SpringApplication.run(ScriptJavaBenchmark.class); + flowExecutor = applicationContext.getBean(FlowExecutor.class); + } + + @TearDown + public void tearDown() { + applicationContext.close(); + } + + //普通执行 + @Benchmark + public void test1(){ + flowExecutor.execute2Resp("chain1"); + } + + //LF动态创建组件和规则,并执行 + @Benchmark + public void test2(){ + String scriptContent = ResourceUtil.readUtf8Str("classpath:javaScript.java"); + LiteFlowNodeBuilder.createScriptNode().setId("ds").setScript(scriptContent).build(); + + if(!FlowBus.containChain("chain2")){ + LiteFlowChainELBuilder.createChain().setChainId("chain2").setEL("THEN(ds)").build(); + } + flowExecutor.execute2Resp("chain2"); + } + + + public static void main(String[] args) throws RunnerException { + Options opt = new OptionsBuilder() + .include(ScriptJavaBenchmark.class.getSimpleName()) + .mode(Mode.Throughput) + .warmupIterations(1)//预热次数 + .measurementIterations(3)//执行次数 + .measurementTime(new TimeValue(10, TimeUnit.SECONDS))//每次执行多少时间 + .threads(300)//多少个线程 + .forks(1)//多少个进程 + .timeUnit(TimeUnit.SECONDS) + .build(); + new Runner(opt).run(); + } +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java new file mode 100644 index 000000000..8c9d02813 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/ACmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("a") +public class ACmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java new file mode 100644 index 000000000..1dc6a517f --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/BCmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("b") +public class BCmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java new file mode 100644 index 000000000..95ee9b80c --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/CCmp.java @@ -0,0 +1,20 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; + +@LiteflowComponent("c") +public class CCmp extends NodeComponent { + + @Override + public void process() { + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/DCmp.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/DCmp.java new file mode 100644 index 000000000..d78b2ea33 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/DCmp.java @@ -0,0 +1,23 @@ +/** + *

Title: liteflow

+ *

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

+ * @author Bryan.Zhang + * @email weenyc31@163.com + * @Date 2020/4/1 + */ +package com.yomahub.liteflow.benchmark.cmp; + +import com.yomahub.liteflow.annotation.LiteflowComponent; +import com.yomahub.liteflow.core.NodeComponent; +import com.yomahub.liteflow.slot.DefaultContext; + +@LiteflowComponent("d") +public class DCmp extends NodeComponent { + + @Override + public void process() { + DefaultContext context = this.getFirstContextBean(); + context.setData("count", 198); + } + +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/Person.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/Person.java new file mode 100644 index 000000000..be665958d --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/Person.java @@ -0,0 +1,28 @@ +package com.yomahub.liteflow.benchmark.cmp; + +public class Person { + private String name; + + private Integer salary; + + public Person(String name, Integer salary) { + this.name = name; + this.salary = salary; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getSalary() { + return salary; + } + + public void setSalary(Integer salary) { + this.salary = salary; + } +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java new file mode 100644 index 000000000..bbd999956 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/java/com/yomahub/liteflow/benchmark/cmp/TestDomain.java @@ -0,0 +1,25 @@ +package com.yomahub.liteflow.benchmark.cmp; + +import cn.hutool.core.collection.ListUtil; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class TestDomain { + + public String sayHello(String name){ + return "hello," + name; + } + + public static void main(String[] args) { + List personList = ListUtil.toList( + new Person("jack", 15000), + new Person("tom", 13500), + new Person("peter", 18600) + ); + + int totalSalary = personList.stream().mapToInt(Person::getSalary).sum(); + System.out.println(totalSalary); + } +} diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/application.properties b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/application.properties new file mode 100644 index 000000000..970b6d155 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/application.properties @@ -0,0 +1,3 @@ +liteflow.rule-source=flow.xml +liteflow.print-execution-log=false +liteflow.script-setting.javax-is-cache=false \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/flow.xml b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/flow.xml new file mode 100644 index 000000000..210ff5ba6 --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/flow.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + THEN(FOR(s2).DO(THEN(a, b, c, s1)), SWITCH(s3).TO(a,b)); + + \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/javaScript.java b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/javaScript.java new file mode 100644 index 000000000..527822ebc --- /dev/null +++ b/liteflow-benchmark/liteflow-benchmark-script-java/src/test/resources/javaScript.java @@ -0,0 +1,20 @@ +import com.yomahub.liteflow.benchmark.cmp.TestDomain; +import com.yomahub.liteflow.slot.DefaultContext; +import com.yomahub.liteflow.spi.holder.ContextAwareHolder; +import com.yomahub.liteflow.script.body.JaninoCommonScriptBody; +import com.yomahub.liteflow.script.ScriptExecuteWrap; + +public class Demo implements JaninoCommonScriptBody { + public Void body(ScriptExecuteWrap wrap) { + int v1 = 2; + int v2 = 3; + DefaultContext ctx = (DefaultContext) wrap.getCmp().getFirstContextBean(); + ctx.setData("s1", v1 * v2); + + TestDomain domain = (TestDomain) ContextAwareHolder.loadContextAware().getBean(TestDomain.class); + String str = domain.sayHello("jack"); + ctx.setData("hi", str); + + return null; + } +} \ No newline at end of file diff --git a/liteflow-benchmark/liteflow-benchmark-script-javax/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaxBenchmark.java b/liteflow-benchmark/liteflow-benchmark-script-javax/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaxBenchmark.java index 209feaf6d..02a8e52f3 100644 --- a/liteflow-benchmark/liteflow-benchmark-script-javax/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaxBenchmark.java +++ b/liteflow-benchmark/liteflow-benchmark-script-javax/src/test/java/com/yomahub/liteflow/benchmark/ScriptJavaxBenchmark.java @@ -1,6 +1,7 @@ package com.yomahub.liteflow.benchmark; import cn.hutool.core.io.resource.ResourceUtil; +import cn.hutool.core.util.StrUtil; import com.yomahub.liteflow.builder.LiteFlowNodeBuilder; import com.yomahub.liteflow.builder.el.LiteFlowChainELBuilder; import com.yomahub.liteflow.core.FlowExecutor; @@ -68,7 +69,7 @@ public class ScriptJavaxBenchmark { .warmupIterations(1)//预热次数 .measurementIterations(3)//执行次数 .measurementTime(new TimeValue(10, TimeUnit.SECONDS))//每次执行多少时间 - .threads(300)//多少个线程 + .threads(100)//多少个线程 .forks(1)//多少个进程 .timeUnit(TimeUnit.SECONDS) .build(); diff --git a/liteflow-benchmark/pom.xml b/liteflow-benchmark/pom.xml index 7d92fb1b9..2cef30800 100644 --- a/liteflow-benchmark/pom.xml +++ b/liteflow-benchmark/pom.xml @@ -44,6 +44,9 @@ liteflow-benchmark-script-javax + liteflow-benchmark-script-java + liteflow-benchmark-script-groovy + liteflow-benchmark-script-kotlin