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 ...
随机推荐
- myeclipse的导航器
在myeclipse的导航器下面可以看到编译后的文件目录结构 如何打开导航器试图呢? 窗口->显示视图->导航器 windows->show view->Navigator 这 ...
- jquery实现对div的拖拽功能
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- OAuth2.0学习(1-13)oauth2.0 的概念:资源、权限(角色)和scope
mkk 关于资源的解释 : https://andaily.com/blog/?cat=19 resource用于将系统提供的各类资源进行分组管理, 每一个resource对应一个resource-i ...
- Windows10下的docker安装与入门 (一)使用docker toolbox安装docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何 ...
- Windows10 64位系统安装 .NET Framework 3.5
1)下载NET Framework 3.5 [地址:https://pan.baidu.com/s/1c1FhXLY] 2)编辑NET Framework 3.5.bat ,修改sxs文件存放路径: ...
- POJ-1789 Truck History---最小生成树Prim算法
题目链接: https://vjudge.net/problem/POJ-1789 题目大意: 用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数.一 ...
- python常见异常
- CSS3 3D transform变换
.实际应用-图片的旋转木马效果 您可以狠狠地点击这里:图片的旋转木马效果demo 建议在足够新版本的FireFox浏览器或Safari浏览器下观看,Chrome可能需要居中定位查看,下图为效果缩略图: ...
- Batch训练的反向传播过程
Batch训练的反向传播过程 本文试图通过Softmax理解Batch训练的反向传播过程 采用的网络包含一层全连接和一层softmax,具体网络如下图所示: 交叉熵成本函数: \[L = - \fra ...
- 【SQL.基础构建-第一节(1/4)】
-- Tips:数据库与sql-- 一.What's 数据库-- 1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.-- ...