Drools学习(三)实例

来源:互联网 发布:卡尔曼滤波算法库 编辑:程序博客网 时间:2024/06/05 09:59

Drools学习(三)实例

(2010-07-10 15:28:11)
 
Drools学习(三)实例在Eclipse新建Drools工程就可以导入自带的例子进行学习。
Drools学习(三)实例
    接下来:
Drools学习(三)实例

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


 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小实例就运行成功了Drools学习(三)实例

原创粉丝点击