斷點

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

          Drools 規則測試

          Posted on 2010-03-10 23:00 斷點 閱讀(919) 評論(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文件寫些神馬呢?
          主站蜘蛛池模板: 昔阳县| 怀安县| 平原县| 张北县| 石屏县| 虹口区| 孟连| 毕节市| 迁西县| 驻马店市| 山阳县| 壶关县| 福建省| 淮阳县| 临澧县| 合江县| 晋宁县| 仲巴县| 香格里拉县| 涿州市| 高碑店市| 如东县| 东光县| 伽师县| 金阳县| 淄博市| 喀喇沁旗| 定兴县| 田阳县| 兰溪市| 青河县| 南召县| 西贡区| 江阴市| 平乡县| 明溪县| 天峨县| 江安县| 保山市| 合作市| 贡山|