dialect设置规则当中要使用的语言类型 ,默认除了java还有mevl。本文简单介绍mvel。
mvel是一种嵌入式脚本语言,在规则文件上可以用这种语言建立他们的断言、返回值、Eval和推论。mvel分解析模式(Interpreted Mode)和编译模式(Compiled Mode)
mvel语法:
表示对象的属性
user.name 相当于java代码 user.getName()
user.manager.name 相当于java代码 user.getManager().getName()
比较
user.name == 'John Doe'
(user.name == 'John Doe') && ((x * 2) - 1) > 20
返回值
a = 10;
b = (a = a * 2) + 10; 相当于java代码 a=10; a= a*2; b= a + 10;
return a;
数组和list访问:user[5] 相当于java代码 user.get(5);
Map访问:user["foobar"] 相当于java代码 user.get("foobar")
创建对象:
new String("foo")
对一个对象,多个属性赋值
with (user = new User()) {
name = "John Doe",
age = 28,
sex = Sex.MALE,
admin = true
}
脚本:
note:
语法跟一些函数语言或脚本语言差不多,如scala
调用某些方法
String test = "Hello";
Object result = MVEL.eval("toUpperCase()", test);
获取pojo的属性值
User user = new User();
user.setName("Bob");
user.setPassword("Despot");
user.setAge(30);
String name = (String) MVEL.eval("name", user);
比较
public class Person {
private String name;
public void setName(String name) { this.name = name; }
public String getName() { return this.name; }
}
Person
personInst = new Person();
personInst.setName("Mr. Foo");
Object result = MVEL.eval("name == 'Mr. Foo' ", personInst);
赋值
Map vars = new HashMap();
vars.put("x", new Integer(5));
vars.put("y", new Integer(10));
Integer result = (Integer) MVEL.eval("x * y", vars);
相当于java代码 Integer result = (Integer)vars.get("x") * (Integer)vars.get(" y ")
assert result.intValue() == 50; // Mind the JDK 1.4 compatible code
规则文件使用mvel示例
示例1:
package com.demo.mvel import com.demo.* rule "rule1" dialect "mvel" when #设是规则引擎语法 $a : Applicant( age < 18 ) then #mvel 语法 $a.valid = false; end
示例2:
package com.demo.mvel import com.demo.* import java.util.List; rule "rule1" salience 2 dialect "java" when eval(true); then Applicant app = new Applicant("依晨",20); insert(app); end rule "rule2" salience 1 dialect "mvel" #no-loop true 不会循环 when $app:Applicant(name == "依晨",age<30) then #update方法2 #$app.age + 1是mvel语法 Applicant app = new Applicant("依晨",$app.age + 1); update(drools.getWorkingMemory().getFactHandleByIdentity($app),app); #update方法1 #$app.setAge($app.getAge() + 1); #update($app); System.out.println("------" + $app.name+"("+ $app.age + ")"); end
相关推荐
drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行官方drools-distribution-7.7.0.Final drools使用的jar包,运行...
Drools中文使用教程 Drools(JBoss Rules )具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎,符合业内标准,速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则,从而检验是否已...
规则引擎Drools使用手册(中文),对于学习和研究Drools技术很有帮助的~~
drools drools drools drools drools
mvel2-2.1.0.drools16.jar mvel2-2.1.0.drools16.jar
jboss的Drools规则引擎使用说明
Drools由Java语言开发,但是可以运行在Java环境和.NET环境下。 Drools被设计为允许插入语言实现。当前,可以由Java、Python和Groovy实现业务规则。对于其它实现,Drools通过使用Schema定义XML提供Declarative ...
drools calendar 使用demo
drools最新版本学习资料,里面系统的介绍了drools规则引擎的简介以及集成到项目的教程内容。欢迎下载,收集不易,欢迎点赞。
drools
Drools7_PDF教程 Drools中文文档 内容全面。...1. 内容更加全面,更多细节,更多知识点全部在新版本中有所体现,并且会附上小编做的例子 ,更多内容不断更新中 2. 目前国内最全的Drools中文文档。也是目前国内唯一一本
drools的使用说明,包含示例和自定义规则
Drools开发最全中文版技术指南。 Drools开发最全中文版技术指南,介绍了常见的drools如何进行开发,注意是:中文版中文版中文版! drools 中文文档 规则引擎 drools6 drools7 Java
A.I.(Artificial Intelligence)是一个关注于“使计算机像人类一样思考“的广泛的研究领域,包括Neural Networks(神经...Drools是一个使用基于规则的方法实现的专家系统的规则引擎,更准确的说属于产生式规则系统。
后面通过搭建具体的项目并结合springboot框架联合使用Drools的相关知识包括决策表的使用,囊括一般项目中所需要的知识点,理论结合实际,让真正入门到熟练。 1 Drools简介1.1 Drools的作用1.2 使用规则引擎的优势1.3...
规则引擎Drools在J2EE项目开发中的应用.pdf
Drools5规则引擎开发教程.pdf 博文链接:https://haroldxie.iteye.com/blog/1167148
drools5.0使用帮助文档,包括规则调用的库,类 ,接口,方法
规则引擎一般是一下情况使用 1.为提高效率,管理流程必须自动化,即使现代商业规则异常复杂。 2.市场要求业务规则经常变化,IT系统必须依据业务规则的变化快速、低成本的更新。 3.为了快速、低成本的更新,业务人员...
antlr-runtime.jar drools-compiler.jar drools-core.jar drools-decisiontables.jar drools-jsr94.jar droolsService.jar jsr94.jar jxl.jar mvel.jar xpp3.jar