Junky's IT Notebook

          統(tǒng)計(jì)

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評(píng)論排行榜

          drools之helloworld

          所有項(xiàng)目都是被需求變更累死的,eXtreme Programing提供了一種哲學(xué),一種態(tài)度,但更實(shí)際的,是那些能夠應(yīng)付需求變更的技術(shù)。
          比如用OLAP支持復(fù)雜報(bào)表的快速定制,用script語言如Groovy支持客戶自定義公式,
          還有Rule Engine,我們一天到晚掛在口上的親愛的商業(yè)規(guī)則。
          Rule Engine并不新鮮,但通常只要一些名詞已經(jīng)足夠把所有普通項(xiàng)目組震退,CLisp、Rete、前向推導(dǎo).... 惟有Drools,終于把java和xml帶回我們身邊,讓規(guī)則引擎簡(jiǎn)單到和JSP一樣可以進(jìn)入所有的程序組。

          先看一段精簡(jiǎn)又實(shí)用的HelloWorld,由兩部分組成, 一個(gè)是調(diào)用規(guī)則的test.jsp :

          //設(shè)置一個(gè)測(cè)試用的VO
          Vo vo = new Vo();
          vo.setPoStatus("A:draft");

          //讀入規(guī)則
          RuleBase ruleBase = RuleBaseBuilder.buildFromURL("rule.drl");

          //把vo放入WorkingMemory中并執(zhí)行
          WorkingMemory workingMemory = ruleBase.newWorkingMemory( );
          workingMemory.assertObject( vo );
          workingMemory.fireAllRules( );

          //顯示結(jié)果
          out.print(po.getPoStatus());

          一個(gè)是規(guī)則文件rule.drl:

          <rule-set name="test rules"
          <rule name="Bob Likes Cheese">
          <parameter identifier="vo">
          <java:class>com.ito.vo</java:class>
          </parameter>

          <java:condition>vo.getStatus().equals("A:draft")</java:condition>

          <java:consequence>
          vo.setStatus("B:order");
          </java:consequence>
          </rule>
          </rule-set>

          整個(gè)規(guī)則分成三段, 第一段定義剛剛放入的對(duì)象; 第二段用Java語法判斷條件; 第三段為條件符合時(shí)的執(zhí)行語句
          真的非常簡(jiǎn)單吧


          經(jīng)過小范圍的試用,發(fā)現(xiàn)沒有這么簡(jiǎn)單,因?yàn)镈rools主要提供了一個(gè)RETE的規(guī)則匹配算法和一個(gè)Script Engine,具體怎么用,還很靠自己。如果drl文件的定義方式和RETE算法能夠使條件的表達(dá)大大簡(jiǎn)化,那么它就是有用的。否則,一段重構(gòu)后的代碼能夠達(dá)到和drl文件相仿的功能。所以,還是要多看點(diǎn)基礎(chǔ),把Business Rules用在正確的地方。



          提供一個(gè)eclipse的插件 url: http://www.zymose.com/index.html

          posted on 2007-06-28 08:57 junky 閱讀(375) 評(píng)論(0)  編輯  收藏 所屬分類: 規(guī)則引擎


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 贺州市| 甘德县| 靖江市| 武定县| 万源市| 定兴县| 邓州市| 潞西市| 阿拉善右旗| 巴南区| 南澳县| 东台市| 邯郸市| 东莞市| 临湘市| 牡丹江市| 盘锦市| 久治县| 溧水县| 多伦县| 昆明市| 吴桥县| 诸城市| 华宁县| 北安市| 渑池县| 谢通门县| 全椒县| 兰考县| 梁平县| 成都市| 邵阳市| 施甸县| 洛扎县| 宝兴县| 望城县| 呈贡县| 沛县| 大名县| 双流县| 亳州市|