http://blog.sina.com.cn/s/blog_67d6d5df0100jyqk.html

在Eclipse新建Drools工程就可以导入自带的例子进行学习。


    接下来:

如此,就可以对实例进行学习了。

下面只是参照HelloWorld写的一个小例子,当做笔记。
     设计场景是银行借贷,当借贷款额小于1000时,直接借出,否则,需交由总经理处理。
     1 新建工程,命名:drools,导入Drools相关jar包。
     2 新建Package,命名:aaron.loan,在此包中建立class文件:pojo.java

pojo.java
package aaron.loan;
public class pojo {
    int moneycount;
public int getMoneycount() {
      return moneycount;
    }
public void setMoneycount(int moneycount) {
      this.moneycount = moneycount;
    }
   
    }

     3 新建规则文件:DecisionRule.drl
Decision.drl
import aaron.loan.pojo;
    rule "A"
      when
          $m:pojo(moneycount<1000);
      then
          System.out.println("Done!");
    end
rule "B"
      when
          $m:pojo(moneycount>=1000);
      then
          System.out.println("Pass it to the management!");
    end
   
4 在aaron.loan包中新建class文件:deploy.java   
deploy.java
package aaron.loan;
import org.drools.KnowledgeBase;
    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();
    }
  
   }
private KnowledgeBase readKnowledgeBase() throws Exception {
         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;
         }
5 建立测试文件:test.java
test.java
package aaron.loan;

    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);     
       }
}
运行test.java文件,控制台结果如下:

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学习 入门实例相关推荐

  1. React学习:入门实例-学习笔记

    文章目录 React学习:入门实例-学习笔记 React的核心 需要引入三个库 什么是JSX react渲染三步骤 React学习:入门实例-学习笔记 React的核心 1.组件化:把整一个网页的拆分 ...

  2. 李宏毅《深度学习》:深度学习入门实例

    1.Keras 在这里我们推荐使用keras进行深度学习编程,比起tensorflow来说更容易学习,操作简单, 2.手写识别实例 这里手写识别的数据集来自于minst,一个非常常用的数据集,从ker ...

  3. mint-ui的学习入门实例

    今早上看了一下mint-ui,官网看的虽然不是完全学会使用,但是通过自己百度了解,现在已经可以掌握对mint-ui的基本使用,下面是我自己练习的一些小案例集合,仅供参考,代码如下: <templ ...

  4. 深度学习入门实例——基于keras的mnist手写数字识别

    本文介绍了利用keras做mnist数据集的手写数字识别. 参考网址 http://www.cnblogs.com/lc1217/p/7132364.html mnist数据集中的图片为28*28的单 ...

  5. Matlab深度学习入门实例:基于AlexNet的红绿灯识别(附完整代码)

    AlexNet于2012年出现在ImageNet的图像分类比赛中,并取得了当年冠军,从此卷积神经网络开始受到人们的强烈关注.AlexNet是深度卷积神经网络研究热潮的开端,也是研究热点从传统视觉方法过 ...

  6. JUnit学习摘要+入门实例 (junit4)

    http://www.cnblogs.com/xwdreamer/archive/2012/03/29/2423136.html 1.学习摘要 看<重构-改善既有代码的设计>这本书的时候, ...

  7. Vue学习(入门实例、常用指令)-学习笔记

    文章目录 Vue学习(入门实例.常用指令)-学习笔记 实例 常用指令 v-on v-bind v-for v-html v-if event v-model 双向数据绑定实现 - defineProp ...

  8. 计量经济学学习与Stata应用笔记(三)Stata入门实例

    计量经济学学习与Stata应用笔记(三)Stata入门实例 使用的版本为stata15. 电力行业规模报酬的经典研究 本例为Nerlove(1963)对电力行业规模的经典研究. 导入数据 Excel的 ...

  9. 强化学习入门简单实例 DQN

    [强化学习入门 第一讲 MDP](https://zhuanlan.zhihu.com/p/25498081) [随笔分类 - 0084. 强化学习](https://www.cnblogs.com/ ...

最新文章

  1. 【图论专题】Floyd算法及其扩展应用
  2. 使用Silverlight Toolkit TreeView(树形控件)
  3. DIV+CSS常见问题的14条原因分析
  4. Java里的线程控制
  5. 《源码分析转载收藏向—数据库内核月报》
  6. Linq GroupJoin 使用
  7. php利用mht导出word,解析掌握PHP导出Word文档原理
  8. 网络性能测试工具iperf的安装与使用
  9. java架构师证书_java架构师证书怎么考?做架构师有什么要求?
  10. php 车牌号 正则,php正则验证车牌格式的函数
  11. Exchange邮件服务器渗透
  12. Python爬取QQ音乐评论数据
  13. 关于Android studio Translation插件提示“更新 TKK 失败,请检查网络连接”问题
  14. iOS 开源图形库 Core Plot 使用教程
  15. 实在智能签约上海联通,共创美好智慧生活
  16. 税点怎么用计算机算出来,2017个税计算器具体要怎么算
  17. utools配置内网穿透
  18. 用应用软件UCCW Widget制作出属于你独一无二的梦幻桌面吧!
  19. MySQL 8.0 全文检索功能 根据中文字符检索相关数据
  20. OCR文字识别软件如何操作?

热门文章

  1. OpenGL之控制渲染图形的移动
  2. 编写你的第一个 Django 应用,第 2 部分
  3. 《信息学奥赛一本通》 高精度乘法。输入两个正整数,求它们的积。
  4. 【Protocol Buffer】Protocol Buffer入门教程(五):repeated限定修饰符
  5. jmeter达梦数据库
  6. 分布式理论、架构设计(自定义RPC)
  7. 51nod 1127 最短的包含字符串(尺取法)
  8. Mysql(9)——排序的方法order by与limit的用法
  9. android activity 渐变,关于Android的径向渐变高级编程的实现
  10. VBScript在服务器上创建目录