Drools学习 入门实例
http://blog.sina.com.cn/s/blog_67d6d5df0100jyqk.html
在Eclipse新建Drools工程就可以导入自带的例子进行学习。
接下来:
如此,就可以对实例进行学习了。
下面只是参照HelloWorld写的一个小例子,当做笔记。
设计场景是银行借贷,当借贷款额小于1000时,直接借出,否则,需交由总经理处理。
1 新建工程,命名:drools,导入Drools相关jar包。
2 新建Package,命名:aaron.loan,在此包中建立class文件:pojo.java
int moneycount;
return moneycount;
}
this.moneycount = moneycount;
}
}
3 新建规则文件:DecisionRule.drl
rule "A"
when
$m:pojo(moneycount<1000);
then
System.out.println("Done!");
end
when
$m:pojo(moneycount>=1000);
then
System.out.println("Pass it to the management!");
end
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class deploy {
public void loanrool(int moneycount) throws Exception {
// TODO Auto-generated method stub
pojo p=new pojo();
try {
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory
.newFileLogger(ksession, "test");
p.setMoneycount(moneycount);
ksession.insert(p);
ksession.fireAllRules();
System.out.print("moneycount:"+p.getMoneycount());
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("DecisionRule.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error : errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
public class test {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
deploy dp=new deploy();
pojo pj=new pojo();
pj.setMoneycount(900); //此处900是任意设的值。
int mc=pj.getMoneycount();
dp.loanrool(mc);
}
Done!
moneycount:900
到此,Drools小实例就运行成功了。
another drl example:
#ident "%W%"
#created on: Nov 4, 2011
package rules.com.citi.gcd.ptrs
#list any import classes here.
import com.citi.apollo.fmk.limit2.LimitRequest;
import java.util.List;
import java.util.ArrayList;
import com.citi.apollo.fmk.limit.PortfolioLimitResult;
import com.citi.apollo.fmk.limit.PortfolioLimitStatus;
import com.citi.apollo.fmk.util.aggregation.Aggregate;
import com.citi.apollo.fmk.limit.LimitAggregate;
import com.citi.apollo.fmk.limit.LimitRange;
# functions
import function com.citi.apollo.fmk.limit2.Limit2Util.setDefaultResult;
import function com.citi.apollo.fmk.limit2.Limit2Util.totalOf;
function void calcSomething(LimitRequest req, Double value, Double total) {
List<Aggregate> l = new ArrayList<Aggregate>();
LimitAggregate a = new LimitAggregate(new Aggregate(value, total));
a.setPercentValue(total/total);
l.add(a);
req.result.addAggregates(l);
req.result.setStatus(PortfolioLimitStatus.PASS);
LimitRange lr = new LimitRange(req.getLimit().getMinValue(),
req.getLimit().getMaxValue(),
req.getLimit().getMinPerValue(),
req.getLimit().getMaxPerValue());
lr.setExcessConcentration(false);
req.result.setLimitRange(lr);
}
#declare any global variables here
rule "Commitment"
no-loop true
when
$req : LimitRequest ( limit.limitName == "Commitment" )
then
double total = totalOf($req, "commitmentamount");
calcSomething($req, total, total);
setDefaultResult($req, total, total);
end
Drools学习 入门实例相关推荐
- React学习:入门实例-学习笔记
文章目录 React学习:入门实例-学习笔记 React的核心 需要引入三个库 什么是JSX react渲染三步骤 React学习:入门实例-学习笔记 React的核心 1.组件化:把整一个网页的拆分 ...
- 李宏毅《深度学习》:深度学习入门实例
1.Keras 在这里我们推荐使用keras进行深度学习编程,比起tensorflow来说更容易学习,操作简单, 2.手写识别实例 这里手写识别的数据集来自于minst,一个非常常用的数据集,从ker ...
- mint-ui的学习入门实例
今早上看了一下mint-ui,官网看的虽然不是完全学会使用,但是通过自己百度了解,现在已经可以掌握对mint-ui的基本使用,下面是我自己练习的一些小案例集合,仅供参考,代码如下: <templ ...
- 深度学习入门实例——基于keras的mnist手写数字识别
本文介绍了利用keras做mnist数据集的手写数字识别. 参考网址 http://www.cnblogs.com/lc1217/p/7132364.html mnist数据集中的图片为28*28的单 ...
- Matlab深度学习入门实例:基于AlexNet的红绿灯识别(附完整代码)
AlexNet于2012年出现在ImageNet的图像分类比赛中,并取得了当年冠军,从此卷积神经网络开始受到人们的强烈关注.AlexNet是深度卷积神经网络研究热潮的开端,也是研究热点从传统视觉方法过 ...
- JUnit学习摘要+入门实例 (junit4)
http://www.cnblogs.com/xwdreamer/archive/2012/03/29/2423136.html 1.学习摘要 看<重构-改善既有代码的设计>这本书的时候, ...
- Vue学习(入门实例、常用指令)-学习笔记
文章目录 Vue学习(入门实例.常用指令)-学习笔记 实例 常用指令 v-on v-bind v-for v-html v-if event v-model 双向数据绑定实现 - defineProp ...
- 计量经济学学习与Stata应用笔记(三)Stata入门实例
计量经济学学习与Stata应用笔记(三)Stata入门实例 使用的版本为stata15. 电力行业规模报酬的经典研究 本例为Nerlove(1963)对电力行业规模的经典研究. 导入数据 Excel的 ...
- 强化学习入门简单实例 DQN
[强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...
最新文章
- 【图论专题】Floyd算法及其扩展应用
- 使用Silverlight Toolkit TreeView(树形控件)
- DIV+CSS常见问题的14条原因分析
- Java里的线程控制
- 《源码分析转载收藏向—数据库内核月报》
- Linq GroupJoin 使用
- php利用mht导出word,解析掌握PHP导出Word文档原理
- 网络性能测试工具iperf的安装与使用
- java架构师证书_java架构师证书怎么考?做架构师有什么要求?
- php 车牌号 正则,php正则验证车牌格式的函数
- Exchange邮件服务器渗透
- Python爬取QQ音乐评论数据
- 关于Android studio Translation插件提示“更新 TKK 失败,请检查网络连接”问题
- iOS 开源图形库 Core Plot 使用教程
- 实在智能签约上海联通,共创美好智慧生活
- 税点怎么用计算机算出来,2017个税计算器具体要怎么算
- utools配置内网穿透
- 用应用软件UCCW Widget制作出属于你独一无二的梦幻桌面吧!
- MySQL 8.0 全文检索功能 根据中文字符检索相关数据
- OCR文字识别软件如何操作?
热门文章
- OpenGL之控制渲染图形的移动
- 编写你的第一个 Django 应用,第 2 部分
- 《信息学奥赛一本通》 高精度乘法。输入两个正整数,求它们的积。
- 【Protocol Buffer】Protocol Buffer入门教程(五):repeated限定修饰符
- jmeter达梦数据库
- 分布式理论、架构设计(自定义RPC)
- 51nod 1127 最短的包含字符串(尺取法)
- Mysql(9)——排序的方法order by与limit的用法
- android activity 渐变,关于Android的径向渐变高级编程的实现
- VBScript在服务器上创建目录