由于在工作流设计中需要为条件分支设定条件表达式,所以需要可以动态执行的语言脚本作为工作流的规则引擎.工作流条件分支纯粹使用sql脚本肯定是不行的,经过试验,groovy的脚本可以返回为java接受的变量.在具体的工作流实现中,我们既可以把groovy的脚本单独存放在文本文件,也可以将脚本直接存放在数据库中,在使用的时候再取出来,当然,可可以放在xml文件中.
以下是java调用groovy脚本的实例:
package org.openjweb.core.groovy.test;
import groovy.lang.GroovyClassLoader;
import java.io.File;
public class InvokeGroovy {
public static void main(String[] args) {
ClassLoader cl = new InvokeGroovy().getClass().getClassLoader();
GroovyClassLoader groovyCl = new GroovyClassLoader(cl);
try
{
//从文件中读取
//Class groovyClass = groovyCl.parseClass(new File("D:/project/openjweb/src/java/org/openjweb/groovy/Foo.groovy"));
//直接使用Groovy字符串,也可以获得正确结果
//Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.groovy.test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return 23}}");
Class groovyClass = groovyCl.parseClass("package org.openjweb.groovy; \r\n import org.openjweb.core.groovy.test.IFoo;\r\n class Foo implements IFoo {public Object run(Object foo) {return 2+2>1}}");//这个返回true
IFoo foo = (IFoo) groovyClass.newInstance();
System.out.println(foo.run(new Integer(2)));
} catch (Exception e) {
e.printStackTrace();
}
}
}
下面是Foo.groovy的文本:
package org.openjweb.groovy;
import org.openjweb.core.groovy.test.IFoo;
class Foo implements IFoo
{
public Object run(Object foo)
{
return 3+2
}
}
从上面的代码看出,可以直接执行字符串的groovy脚本,运行后返回运算结果,例如2+2>1会返回true.
使用Groovy或 Jruby动态语言脚本作为规则引擎解决方案将会越来越普及.
分享到:
相关推荐
自创Groovy DSL 动态规则(rule)执行引擎, 流程引擎. 特色 风控系统, 规则引擎, 动态接口配置(低代码)Groovy DSL 动态规则(rule)执行引擎。DSL(特定领域语言): 开发 和 业务 共识的语言。方便业务表达需求, 方便开发...
自创Groovy DSL 动态规则(rule)执行引擎, 流程引擎. 特色 风控系统, 规则引擎, 动态接口配置(低代码)
java 动态脚本语言 精通 Groovy
规则是使用领域专家可以理解的简单语言定义的。 一环旨在针对多个小型应用程序进行连续处理,而不是数十亿个实体的批处理。 它重量很轻,可以作为WAR部署在Tomcat之类的容器中。 出于处理目的,没有理由不能在同一...
Java中使用Groovy的三种方式,详细见我的博客。
Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...
实时风控引擎(Risk Engine),自定义规则引擎(Rule Script),完美支持中文,适用于反欺诈(Anti-fraud)应用场景,移动互联网时代的风险管理利器,
Groovy作可以运行为在JVM上的动态语言,为java开发者带来另一片天地
[Groovy入门]第十讲.使用模板引擎开发界面
groovy快速入门指南(中文),想了解groovy的朋友可以下载看看
用于soapui中,groovy语言开发的插件之一用于soapui中,groovy语言开发的插件之一
groovy 敏捷 开发 动态 语言 急速 web 应用 开发
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
课程基于flink和groovy作为核心组件,实现可以任意在线动态制定规则的实时智能运营推送。 涉及的技术栈包括:flink streaming,flink sql,flink cdc,groovy ,redis ,elastic search, roaringbitmap 等; 项目的...
Groovy 是基于Java的脚本语言。是Java语言扩展,因此可以与Java语言互相...由于Groovy的超级灵活性,你可以使用Groovy快速编写基于领域的小语言,从而将编码量进一步减少,程序更容易维护。越少的代码表明越少的错误。
groovy脚本语言bin groovy-binary-1.6.5.zip
Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,设计时充分考虑了Java集成,这使 ...
由于具有动态弱类型,以及无缝访问JavaAPI等特性,Groovy语言非常适合子开发中小型规模的应用程序。 相对于Java语言,Groovy语言的表述性更强,抽象程度更高。它使得应用程序开发更加快捷,提升了程序员生产力。...
下载的资源文件中,封装了并发计算以及内存溢出解决方案的工具类GroovyEngine.java,调用示例: GroovyEngine engine = GroovyEngine.getInstance(); engine.put("a",1); engine.put("b",2); Object v1 = engine....
软件项目的可扩展性和动态维护性是非常重要的,例如在微服务的网关动态过滤器中,要实现过滤器的动态更新而不影响项目的持续运行,就需要借助groovy的动态编译功能,而这个功能是通过 .groovy文件实现的。...