斷點(diǎn)

          每天進(jìn)步一點(diǎn)點(diǎn)!
          posts - 174, comments - 56, trackbacks - 0, articles - 21

          Drools 規(guī)則測試

          Posted on 2010-03-10 23:00 斷點(diǎn) 閱讀(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;
           }

          }

          ++++++++++++++++++++++++++++++++++++++
          執(zhí)行后的一部分:
          #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 規(guī)則測試  回復(fù)  更多評論   

          2012-03-06 11:16 by sunjiahaoz
          你好,我想問你得xls文件寫些神馬呢?
          主站蜘蛛池模板: 防城港市| 阿巴嘎旗| 辛集市| 临猗县| 尖扎县| 张掖市| 二连浩特市| 乐都县| 太保市| 平原县| 苍南县| 江北区| 德保县| 惠来县| 阳信县| 富锦市| 大同县| 峨眉山市| 吴川市| 佳木斯市| 乌拉特前旗| 宜兴市| 彰化县| 通山县| 门头沟区| 兴宁市| 西宁市| 会宁县| 衡阳市| 石河子市| 高青县| 谷城县| 洛扎县| 宜宾县| 陵川县| 石河子市| 澄城县| 太原市| 江川县| 雅江县| 宁国市|