<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    探討Java技術,努力學習,分享心得

    我不是技術控,拿來主義其實也挺好,但是一定要有自己的想法

    統計

    留言簿

    閱讀排行榜

    評論排行榜

    在drools引擎中如果使用規則表

    前提準備:java 虛擬機 
                     Drools核心庫
                     Junit4.0以上版本
                     規則Excel模板表(將下面的圖片的內容新建到Excel中)

    典型的用法就是根據excel創建KnowledgeBase,然后將它丟給session執行,執行的參數和結果都在params里面
      1 package com.xxx.yyyy;
      2 
      3 import java.io.File;
      4 import java.io.FileInputStream;
      5 import java.io.InputStream;
      6 import java.util.Arrays;
      7 import java.util.Collection;
      8 import java.util.HashMap;
      9 import java.util.Map;
     10 import junit.framework.Assert;
     11 import org.drools.KnowledgeBase;
     12 import org.drools.KnowledgeBaseFactory;
     13 import org.drools.builder.DecisionTableConfiguration;
     14 import org.drools.builder.DecisionTableInputType;
     15 import org.drools.builder.KnowledgeBuilder;
     16 import org.drools.builder.KnowledgeBuilderFactory;
     17 import org.drools.builder.ResourceType;
     18 import org.drools.definition.KnowledgePackage;
     19 import org.drools.io.ResourceFactory;
     20 import org.drools.runtime.StatelessKnowledgeSession;
     21 import org.junit.Test;
     22 import org.junit.runner.RunWith;
     23 import org.junit.runners.Parameterized;
     24 import org.junit.runners.Parameterized.Parameters;
     25 
     26 @RunWith(Parameterized.class)
     27 public class IsP4PTest
     28 {
     29     private IsP4P param;
     30 
     31     private String extected;
     32 
     33     public IsP4PTest(IsP4P param, String extected)
     34     {
     35         this.param = param;
     36         this.extected = extected;
     37     }
     38 public Map<String, Object> getParams()
     39         {
     40             Map<String, Object> params = new HashMap<String, Object>();
     41 
     42             params.put("productLine", productLine);
     43             params.put("productType", productType);
     44             params.put("playType", playType);
     45 
     46             return params;
     47         }
     48 public void testExcel(String fileName, Map<String, Object> params)
     49             throws Exception
     50     {
     51         System.out.println("---------------begin------------------------");
     52 
     53         DecisionTableConfiguration dtableconfiguration = KnowledgeBuilderFactory
     54                 .newDecisionTableConfiguration();
     55 dtableconfiguration.setInputType(DecisionTableInputType.XLS);
     56         final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
     57                 .newKnowledgeBuilder();
     58 File file = new File(
     59                 "F:\\juny.qu\\rule_workspace\\com.deppon.rules\\src\\main\\java\\com\\xxx\\yyyy\\"
     60                         + fileName);
     61         InputStream is = new FileInputStream(file);
     62 kbuilder.add(ResourceFactory.newInputStreamResource(is, "UTF-8"),
     63                 ResourceType.DTABLE);
     64         if (kbuilder.hasErrors())
     65         {
     66             System.out.println(kbuilder.getErrors().toString());
     67         }
     68 Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
     69         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
     70         kbase.addKnowledgePackages(pkgs);
     71 
     72 StatelessKnowledgeSession ksession = kbase
     73                 .newStatelessKnowledgeSession();
     74         ksession.execute(Arrays.asList(new Object[] { params }));
     75 
     76 System.out.println("---------------end------------------------");
     77 }
     78 
     79 
     80 @Parameters
     81     public static Collection<?> contructData()
     82     {
     83 return Arrays.asList(new Object[][] {
     84                 { new IsP4P("搜索推廣", "true", "null"), "true" },
     85                 { new IsP4P("網盟推廣", "true", "null"), "true" },
     86                 { new IsP4P("掘金推廣", "true", "非輪播"), "false" },
     87                 { new IsP4P("其他", "false", "其他"), "other" } });
     88 }
     89 
     90 @Test
     91     public void testP4P() throws Exception
     92     {
     93         Map<String, Object> params = new HashMap<String, Object>();
     94         params.putAll(param.getParams());
     95         testExcel("ka/isP4P.xls", params);
     96         Assert.assertEquals(extected, params.get("isP4P"));
     97     }
     98 }
     99 
    100 

     1 package com.xxx.yyyy;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileNotFoundException;
     6 import java.io.InputStream;
     7 
     8 import org.drools.decisiontable.InputType;
     9 import org.drools.decisiontable.SpreadsheetCompiler;
    10 import org.junit.Test;
    11 
    12 public class SpreadsheetCompilerTest {
    13 
    14 @Test
    15     public void compile() throws FileNotFoundException{
    16         //File file = new File("F:\\juny.qu\\rule_workspace\\com.deppon.rules\\src\\main\\java\\com\\xxx\\yyyy\\ka\\isP4P.xls");
    17         //File file = new File("F:\\collections_study\\規則引擎系統開發小組\\規則引擎doc\\02開發\\06-詳細設計\\增值服務折扣測試1.xls");
    18         File file = new File("F:\\rules.xlsx");
    19         
    20         InputStream is = new FileInputStream(file);
    21         
    22         SpreadsheetCompiler converter = new SpreadsheetCompiler();
    23         String drl = converter.compile(is, InputType.XLS); //--------exception here-------- 
    24         System.out.println("\n\n" + drl);
    25         
    26     }
    27 
    28 }
    • 什么時候考慮使用規則表
      如果規則可以表示成 templates+data(模板+數據),可以考慮使用 decision tables。在決策表的每一行,采集數據和模板一起生成規則。使用基于決策表的SpreadsheetAPIDrools-decisiontables模塊中。只有一個類:SpreadsheetCompiler. 這個類可以操作各種格式的Spreadsheet,并生成DRL規則(然后就可以常規的方式使用)。

    一個典型的規則表的格式




    posted on 2015-02-05 14:09 瞿祥軍 閱讀(2292) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 人妻仑刮八A级毛片免费看| 人人狠狠综合久久亚洲高清| 亚洲欧洲日产国码www| 久久久久久99av无码免费网站| 另类图片亚洲校园小说区| 久久久久亚洲AV成人无码网站| 成年免费大片黄在线观看岛国| 精品一区二区三区免费毛片| 亚洲日韩精品A∨片无码| 桃子视频在线观看高清免费完整| 无忧传媒视频免费观看入口| 亚洲午夜精品一区二区| 国产国拍亚洲精品福利| 国产精品免费精品自在线观看| 日韩在线视频播放免费视频完整版 | 亚洲av无码一区二区三区人妖| 亚洲欧洲日本精品| 日本成人免费在线| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 国产精品亚洲专区无码WEB| 亚洲五月激情综合图片区| 亚洲午夜久久久影院| 亚洲AV蜜桃永久无码精品| 日韩精品视频免费观看| 四虎永久在线观看免费网站网址 | 久久被窝电影亚洲爽爽爽| 亚洲 小说区 图片区 都市| 国产精品久久免费视频| 在线观看91精品国产不卡免费| 在线美女免费观看网站h| 1区2区3区产品乱码免费| 午夜视频在线免费观看| 日日麻批免费40分钟无码| 国产成人AV免费观看| 无码日韩精品一区二区免费暖暖 | 免费看美女午夜大片| 久久www免费人成精品香蕉| 国产乱子伦精品免费视频| 无套内射无矿码免费看黄| 黄视频在线观看免费| 一级毛片在线免费观看|