<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 瞿祥軍 閱讀(2302) 評論(0)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 美国毛片亚洲社区在线观看| 免费看一级高潮毛片| 麻豆安全免费网址入口| 中文成人久久久久影院免费观看| 91成人在线免费观看| 国产成人综合久久精品免费| 亚洲产国偷V产偷V自拍色戒| 亚洲成_人网站图片| 亚洲区日韩精品中文字幕| 亚洲人成人无码.www石榴| 精品视频在线免费观看| 日韩免费精品视频| 在线视频免费观看www动漫| 亚洲午夜福利精品无码| 亚洲一区二区在线视频| 亚洲人成电影青青在线播放| 亚洲中文字幕无码av| 无人视频免费观看免费视频| 最新久久免费视频| 91成年人免费视频| 全免费一级午夜毛片| 国产偷国产偷亚洲清高动态图| 亚洲熟妇av一区二区三区下载| 亚洲av午夜电影在线观看| 色www永久免费| 免费无码AV电影在线观看| 久久亚洲国产精品五月天婷| 亚洲第一区视频在线观看| 国产亚洲漂亮白嫩美女在线| 久久黄色免费网站| 国产精品免费一级在线观看| 亚洲成在人线av| 亚洲人成网站色7799| 黄网站免费在线观看| 男女啪啪永久免费观看网站| 亚洲AV无码成人精品区蜜桃 | 亚洲av无码乱码国产精品fc2| 亚洲午夜精品一区二区麻豆| 国产真人无码作爱视频免费| 国产无遮挡又黄又爽免费视频| 久久精品国产亚洲av麻豆小说 |