<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产精品无码专区在线观看| 免费观看四虎精品国产永久| 午夜亚洲AV日韩AV无码大全| 成在线人免费无码高潮喷水| 亚洲精品国自产拍在线观看| 羞羞视频免费网站日本| 亚洲一级黄色视频| 一级大黄美女免费播放| 浮力影院亚洲国产第一页| 中文字幕在线免费看| 国产亚洲人成网站观看| 99久久国产免费中文无字幕 | 中文字幕人成人乱码亚洲电影 | 国产亚洲高清不卡在线观看| 精品国产污污免费网站| 亚洲美女中文字幕| 可以免费看黄视频的网站| 亚洲AV永久无码精品一福利| 亚洲成av人在片观看| 国产情侣久久久久aⅴ免费| 一区二区三区亚洲| 色窝窝免费一区二区三区| 国产精品亚洲专区无码唯爱网| 亚洲AV成人潮喷综合网| 日韩视频免费在线观看| 亚洲av成人一区二区三区| 四虎影视在线永久免费观看| 中文字幕不卡免费视频| 亚洲国产精品成人精品小说| 国产精品四虎在线观看免费| GOGOGO高清免费看韩国| 亚洲日本国产乱码va在线观看| 国产黄色片在线免费观看| 成人一区二区免费视频| 97se亚洲国产综合自在线| 亚洲国产中文字幕在线观看| 三年片在线观看免费大全电影| 亚洲国产精品成人AV在线 | 亚洲人成电影网站免费| 亚洲综合网站色欲色欲| 最近中文字幕mv手机免费高清|