drool-6.5的自学demo
先丢代码地址
https://gitee.com/a247292980/drools
再丢pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.yy</groupId>
<artifactId>drools</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>drools Maven Webapp</name>
<url>http://maven.apache.org</url> <properties>
<runtime.version>6.5.0.Final</runtime.version>
</properties> <repositories>
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
</repositories> <dependencies>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-api</artifactId>
<version>${runtime.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${runtime.version}</version>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>${runtime.version}</version>
</dependency> <dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-test</artifactId>
<version>${runtime.version}</version>
</dependency> <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency> </dependencies>
</project>
最后丢目录结构
老规矩要说的基本都在注释里面,想看的去看源码就好了,只说几个重要的
Message
pojo类
DecisionTableTest
drools使用xxx.xls的例子
public class DecisionTableTest { public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
// 写名字则取相应的ksession下的东西
// KieSession kSession = kContainer.newKieSession("ksession-dtables");
// 不写名字则全取了
KieSession kSession = kContainer.newKieSession(); // go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
kSession.insert(message);
kSession.fireAllRules();
} catch (Throwable t) {
t.printStackTrace();
}
} }
DroolsTest
drools操作xxxx.drl的例子
public class DroolsTest { public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-rules"); // go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO); kSession.insert(message);
kSession.fireAllRules();
} catch (Throwable t) {
t.printStackTrace();
}
} }
ProcessTest
drools操作xxxx.bpmn的例子
public class ProcessTest { public static final void main(String[] args) {
try {
// load up the knowledge base
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
KieSession kSession = kContainer.newKieSession("ksession-process"); // start a new process instance
kSession.startProcess("com.sample.bpmn.hello");
} catch (Throwable t) {
t.printStackTrace();
}
} }
StatelessTest
用来区分StatelessKieSession和KieSession
public class StatelessTest {
protected KieServices kieServices; protected KieContainer kieContainer; protected KieSession kieSession;
protected StatelessKieSession statelessKieSession; @Before
public void init() {
//从Factory得到Services
kieServices = KieServices.Factory.get();
// 在类路径中找到的所有DRL文件
kieContainer = kieServices.getKieClasspathContainer();
//得到kmodule的ksession
kieSession = kieContainer.newKieSession("ksession-rules");
//stateless必须注释kmodule里全部的kbase
// statelessKieSession=kieContainer.newStatelessKieSession();
} //kieSession和statelessKieSession的调用是不一样的
@Test
public void testKieSession() {
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO); kieSession.insert(message);
kieSession.fireAllRules();
} @Test
public void testStatelessKieSession() {
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO); statelessKieSession.execute(message); }
}
kmodule.xml
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://www.drools.org/xsd/kmodule">
<!--<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">-->
<!--name kbase的唯一标志
packages 路径必须正确可少写可多写可不写
不写的话放于根目录(不建议)
ksession 的唯一标记-->
<!--<kbase name="rules" packages="Drools.rules">-->
<kbase name="rules" packages="rules">
<!--<kbase name="rules" packages="">-->
<!--<kbase name="rules" packages="myrules">-->
<!--默认用最后一个-->
<!--<kbase name="rules" packages="rules,myrules">-->
<ksession name="ksession-rules"/>
</kbase> <kbase name="dtables" packages="dtables">
<ksession name="ksession-dtables"/>
</kbase>
<kbase name="process" packages="process">
<ksession name="ksession-process"/>
</kbase>
</kmodule>
drool-6.5的自学demo的更多相关文章
- [转帖]关于Java中SQL语句的拼接规则
关于Java中SQL语句的拼接规则 自学demo 的时候遇到的问题 结果应该是 '"+e.getName()+"' 注意 一共有三组标点符号 (除去 方法函数后面的括号) 实现目标 ...
- egg 自学入门demo分享
目录 安装 项目 连接数据库 编写model 编写controller 添加路由 2018-08,本文适用于对egg有兴趣想要了解的同学 完整项目代码:https://github.com/NameH ...
- scrapy 自学入门demo分享
[toc] 本文基于python 3.7.0,win10平台: 2018-08 完整项目代码:https://github.com/NameHewei/python-scrapy 安装 安装pytho ...
- 从零自学Hadoop(18):Hive的CLI和JDBC
阅读目录 序 Hive CLI(old CLI) Beeline CLI(new CLI) JDBC Demo下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出 ...
- 自学 web 前端人怎么找工作?
1,你做过的项目可以体现你的价值.2,你的个人博客可以反映你的思考.3,你的GitHub页面可以展示你的项目.4,你项目中的代码可以看出你编程的风格.1,2,3,4之间有交集.当你能证明,你能创造的价 ...
- 我是如何自学Android,资料分享(2015 版)
自己学了两三个月的Android,最近花了一周左右的时间写了个App——Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的——&l ...
- Cocos2d-x 学习(1)—— 通过Cocos Studio创建第一个Demo
近期在工作上有了比較大的转变,自学情绪也慢慢高涨,本来一直在研究unity的技术.由于换了工作会開始接触cocos2d-x.但并不意味着停止研究unity,以后有时间还是会继续的. 公司的cocos2 ...
- Android自学反思总结(上)
从接触Android到现在有几个月的时间了,基本全部都是靠自学,从大一上学期学习完c语言,接着利用寒假时间和开学一个月左右的时间自学完javase,接着在导员的督促下,开始了Android学习之旅,现 ...
- 史诗手册!微信小程序新手自学入门宝典!
一.小程序官方指南 1:官方开发工具下载: https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201714 0.12 ...
随机推荐
- 4-51单片机WIFI学习(开发板51单片机自动冷启动下载原理)
上一篇链接 http://www.cnblogs.com/yangfengwu/p/8743936.html 这一篇说一下自己板子的51单片机自动冷启动下载原理,我挥舞着键盘和鼠标,发誓要把世界写个明 ...
- centOs6.5配置jdk及其注意事项
1.下载jdk1.7 百度云链接: https://pan.baidu.com/s/15vXLO2eV18eVvmt-R5jGnQ 密码: 1gd6 2.解压压缩包 通过终端在/usr/local下新 ...
- python基础——生成器表达式
生成器表达式 1 生成器表达式定义 生成器表达式并不真正的创建数字列表,而是返回一个生成器对象,此对象在每次计算出一个条目后,把这个条目"产生"(yield)出来.生成器表达式使用 ...
- WPF在在设计模式,使用动态样式
1.问题分析 WPF有时候要用到主题样式,比如颜色主题(红色.黄色之类的)通常是key相同,而value不同,比如会这么写: Background="{DynamicResource Bac ...
- z-index的权重是叠加的
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- C语言 时间函数的学习
一直都是以简单的time_t t,time(&t),ctime(&t)来表示时间,后来要以时间为日志文件的名字时,就有点蒙逼了.学习一下. tm结构: struct tm { int ...
- 如何设计一款APP,才能吸引用户眼球
有APP分析机构研究表明,人们每天耗费在手机和平板上的平均时长为158分钟,其中127分钟是耗费在各类APP中,而仅有31分钟是花费在浏览网页上.随着人们对互联网的依赖性越来越强,移动APP发展迅速已 ...
- JavaScript数据结构与算法(一) 栈的实现
TypeScript版本源码 class Stack { items = []; public push(element) { this.items.push(element); } public p ...
- 0323-DOM基础操作
dom操作 1.找到元素(标签对象) 标签名: document.getElementsByTagName()[]; //返回的是数组类型,需要有下标来找内容 属性: document.getElem ...
- Shiro集成Web
Shiro不仅可以集成到web中,也可以集成Spring. 1.在WEB中添加Shrio支持 2.WEB中INI配置 3.JSP/GSP标签 在WEB中添加Shrio支持 如果要想在web中使用Shr ...