斷點

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

          Drools 規則測試

          Posted on 2010-03-10 23:00 斷點 閱讀(913) 評論(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文件寫些神馬呢?
          主站蜘蛛池模板: 老河口市| 汪清县| 元朗区| 肥东县| 蒲城县| 库尔勒市| 桐柏县| 黎平县| 皋兰县| 喀什市| 揭东县| 博白县| 天全县| 岑溪市| 诏安县| 忻州市| 临潭县| 拉孜县| 龙岩市| 石景山区| 祁东县| 商都县| 江川县| 浮山县| 佛山市| 石棉县| 特克斯县| 枣强县| 桦川县| 罗田县| 安多县| 新竹市| 铜川市| 贵阳市| 尉犁县| 临沧市| 彭泽县| 扶余县| 盖州市| 威信县| 鲁山县|