斷點

          每天進步一點點!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          Drools 規則測試

          Posted on 2010-03-10 23:00 斷點 閱讀(920) 評論(1)  編輯  收藏 所屬分類: Drools

          package rules;

          import java.io.InputStream;
          import java.io.StringReader;
          import java.util.ArrayList;
          import java.util.List;

          import org.drools.RuleBase;
          import org.drools.RuleBaseFactory;
          import org.drools.WorkingMemory;
          import org.drools.compiler.PackageBuilder;
          import org.drools.decisiontable.InputType;
          import org.drools.decisiontable.SpreadsheetCompiler;
          import org.drools.rule.Package;


          public class TestPremium {
           public static final String path = "rules\\premium\\0326\\02\\030006\\rate.xls";
           
           public static void main(String[] args) throws Exception {
            try {
             RuleBase ruleBase = readDecisionTable();
             WorkingMemory workingMemory = ruleBase.newStatefulSession();
             int flag = path.indexOf("FormulaOrder");   
             ElementResultVO r = new ElementResultVO();
             PremiumHelper helper = new PremiumHelper();
             workingMemory.setGlobal("r", r);
             workingMemory.setGlobal("helper", helper);
             
             AppBaseVO base  = new AppBaseVO();
             AppVhlVO vhl = new AppVhlVO();
             AppPrmCoefVO prmCoef = new AppPrmCoefVO();
                
             base.setCAmtCur("01");
             base.setNAmt(4000000d);
             
             workingMemory.insert(base);
             workingMemory.insert(vhl);
             workingMemory.insert(prmCoef);
             
             workingMemory.fireAllRules();
             
             System.out.println("==========compile success!===========");
             
            } catch (Exception e) {
             System.out.println("==========compile failure!===========");
             e.printStackTrace();
            }
           }
           
           private static RuleBase readDecisionTable() throws Exception {
                   final SpreadsheetCompiler converter = new SpreadsheetCompiler();
                   InputStream is = TestPremium.class.getClassLoader().getResourceAsStream(path);
                    final String drl = converter.compile( is, InputType.XLS );
                    PackageBuilder builder = new PackageBuilder();
                    builder.addPackageFromDrl( new StringReader( drl ) );
                    Package pkg = builder.getPackage();
                    RuleBase ruleBase = RuleBaseFactory.newRuleBase();
                    ruleBase.addPackage( pkg );
                    return ruleBase;
           }

          }

          ++++++++++++++++++++++++++++++++++++++
          執行后的一部分:
          #From row number: 369
          rule "_369"
            salience 65167
            activation-group "x"
           when
                vhl:AppVhlVO(CUsageCde == "374015", CVhlTyp == "365012", 
                eval(helper.getVhlYear(vhl.getCFstRegYm())>=4 && helper.getVhlYear(vhl.getCFstRegYm())<1000))
           then
                r.putCoef("rate",0.67);
                r.putField("Table.col","Cvrg.NRate");
          end

          Feedback

          # re: Drools 規則測試  回復  更多評論   

          2012-03-06 11:16 by sunjiahaoz
          你好,我想問你得xls文件寫些神馬呢?
          主站蜘蛛池模板: 普安县| 射洪县| 浦东新区| 沙田区| 诸城市| 沂水县| 茌平县| 马公市| 鹤庆县| 奉化市| 玛多县| 郸城县| 资阳市| 怀仁县| 英德市| 和政县| 华宁县| 东丽区| 瑞昌市| 巴南区| 玉树县| 葫芦岛市| 洪江市| 聂荣县| 阿瓦提县| 庆元县| 沙洋县| 芜湖县| 贵溪市| 长丰县| 东城区| 六枝特区| 岚皋县| 茌平县| 孟连| 年辖:市辖区| 柳林县| 邹城市| 布尔津县| 铅山县| 贞丰县|