安裝環(huán)境有了,下面開始做第一個(gè)例子。 新建一個(gè)Drools工程,新建時(shí)就會(huì)生成一個(gè)hello world的例子。這個(gè)例子我看了一下,沒(méi)多看。從網(wǎng)上找了一個(gè)更復(fù)雜的例子。例子的具體內(nèi)容自己去看。下面主要說(shuō)說(shuō)在做這個(gè)例子時(shí)遇到的問(wèn)題。 Drools工程的目錄結(jié)構(gòu): 1、關(guān)于Drl文件:addpoint.drl和subpoint.drl,放到rule文件夾下。注意:drl規(guī)則文件中有pacakage,比 如例子中就是com.drools.demo.point。但不能在rule建相應(yīng)的包,然后吧drl文件放進(jìn)去,這樣會(huì)導(dǎo)致java類 (PointRuleEgineImpl)報(bào)錯(cuò),我開始就是這么做的。 2、關(guān)于PointRuleEngineImpl文件:例子中的代碼用的是Drools5.2.0。現(xiàn)在我們的環(huán)境是6.0.0,相對(duì)以前的版本有 了很大的改動(dòng)。一些類的位置變了,這是小問(wèn)題。關(guān)鍵是Drools6.0.0采用了一個(gè)叫KIE的東西,來(lái)管理整個(gè)系統(tǒng)。有關(guān)KIE的詳細(xì)信息,看這里。我們這里只關(guān)注如何在我們的例子中使用KIE。 PointRuleEngine.java
1. package com.jd.drools.test; 2. 3. 4. import org.kie.api.KieServices; 5. import org.kie.api.runtime.KieContainer; 6. import org.kie.api.runtime.KieSession; 7. 8. import com.jd.drools.test.PointDomain; 9. 10. public class PointRuleEngineImpl { 11. 12. 13. public static void main(String[] args) { 14. // load up the knowledge base 15. KieServices ks = KieServices.Factory.get(); 16. KieContainer kContainer = ks.getKieClasspathContainer(); 17. KieSession kSession = kContainer.newKieSession("ksession-rules"); 18. PointDomain pointDomain=new PointDomain(); 19. pointDomain.setUserName("hello kity"); 20. pointDomain.setBackMondy(100d); 21. pointDomain.setBuyMoney(500d); 22. pointDomain.setBackNums(1); 23. pointDomain.setBuyNums(5); 24. pointDomain.setBillThisMonth(5); 25. pointDomain.setBirthDay(true); 26. pointDomain.setPoint(0l); 27. kSession.insert(pointDomain); 28. kSession.fireAllRules(); 29. 30. } 31. 32. } 沒(méi)錯(cuò),就是這么簡(jiǎn)單。和helloworld例子中沒(méi)啥區(qū)別。為啥這么簡(jiǎn)單? 首先,沒(méi)有了讀取規(guī)則文件drl的代碼。KIE默認(rèn)加載Resource文件夾和其子文件夾下的所有規(guī)則文件。 還有,一些相關(guān)的配置信息挪到了/META-INF/kmodule.xml中。KIE默認(rèn)讀取kmodule.xml,生成文件里定義的KSession等。 至此,我們初步學(xué)習(xí)了Drools。知道了Drools是什么,是計(jì)算機(jī)那個(gè)領(lǐng)域中的東西,采用的是什么算法,如何搭建開發(fā)環(huán)境,規(guī)則文件是什么樣的,放在哪,有了規(guī)則文件后,該如何讀取并運(yùn)行規(guī)則。對(duì)Drools整體有了初步的印象。下面就可以開始做項(xiàng)目了。至于規(guī)則如何定義,規(guī)則語(yǔ)言的語(yǔ)法等等,開一邊做項(xiàng)目邊學(xué)習(xí)。這幾篇文章只是分享給像我一樣的初學(xué)者,將初期容易遇到的問(wèn)題曝光,以便我們盡快入門,節(jié)省時(shí)間。 PS:當(dāng)然,如果你的項(xiàng)目還要集成其他框架,那你還得再準(zhǔn)備準(zhǔn)備。我的項(xiàng)目沒(méi)有用的別的框架,到這就可以開工了! |
|
來(lái)自: 賈朋亮博客 > 《Drools引擎》