drools決策表的使用


決策表我們在drools規則引擎初探里做了簡單介紹,這里主要是介紹如何通過java代碼來把這個excel文件和drools關聯起來,如何使其達到我們想要的效果。

這里假設我們在resources目錄下有這么一個文件:/drools/decisiontable/mydecisiontable.xls

然后在http://docs.jboss.org/drools/release/6.4.0.Final/drools-docs/html_single/index.html#d0e5549中對決策表的使用也提了一下,一定要有個對應的

kmodule.xml ,在這里我們並沒有提供這個文件,因為在kie-api的介紹和使用中我們已經知道了可以通過程序來獲得。

具體代碼如下:

//1.獲取一個KieServices
KieServices kieServices = KieServices.Factory.get();
//2.創建kiemodule xml對應的class
KieModuleModel kieModuleModel = kieServices.newKieModuleModel();
//3.創建KieFileSystem虛擬文件系統
KieFileSystem kieFileSystem = kieServices.newKieFileSystem();

//4.添加具體的KieBase標簽
KieBaseModel kieBaseModel = kieModuleModel.newKieBaseModel("mydecision").
addPackage("mydecision");//kie fileSystem 中資源文件的文件夾
//<KieBase></KieBase>標簽添加KieSession屬性
kieBaseModel.newKieSessionModel("kiession-mydecision");//a
 
//5.添加kiemodule.xml文件到虛擬文件系統
String kieModuleModelXml = kieModuleModel.toXML();
kieFileSystem.writeKModuleXML(kieModuleModelXml);//kieModuleModel
//6.把規則文件加載到虛擬文件系統
Resource resource = getResource("drools/decisiontable/mydecisiontable.xls");
String fileName = "mydecision-table" + resource.getResourceType().getDefaultExtension();
//這里是把規則文件添加到虛擬系統,第一個參數是文件在虛擬系統中的路徑,這里的文件目錄和4.處的addPackage必須一致,否則失敗
String kieFilePath = new StringBuilder("src/main/resources/").
append("mydecision").append("/").append(fileName).toString();
kieFileSystem.write(kieFilePath, resource);

//7.構建所有的KieBase並把所有的KieBase添加到倉庫里
kieServices.newKieBuilder(kieFileSystem).buildAll();
KieContainer kieContainer = kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());//創建kie容器

//8.從容器中獲取一個會話,這里和a處添加的是一個key,否則找不到 找不到任何一個會報異常
KieSession kieSession = kieContainer.newKieSession("kiession-mydecision");
kieSession.insert(new Student(11, "max"));
kieSession.insert(new Student(13, "max"));
kieSession.fireAllRules();

看注釋應該能基本看明白了。這里用到了kie-api的一些組件,具體介紹可參見


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM