Junky's IT Notebook

          統計

          留言簿(8)

          積分與排名

          WebSphere Studio

          閱讀排行榜

          評論排行榜

          drools之helloworld

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

          先看一段精簡又實用的HelloWorld,由兩部分組成, 一個是調用規則的test.jsp :

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

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

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

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

          一個是規則文件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>

          整個規則分成三段, 第一段定義剛剛放入的對象; 第二段用Java語法判斷條件; 第三段為條件符合時的執行語句
          真的非常簡單吧


          經過小范圍的試用,發現沒有這么簡單,因為Drools主要提供了一個RETE的規則匹配算法和一個Script Engine,具體怎么用,還很靠自己。如果drl文件的定義方式和RETE算法能夠使條件的表達大大簡化,那么它就是有用的。否則,一段重構后的代碼能夠達到和drl文件相仿的功能。所以,還是要多看點基礎,把Business Rules用在正確的地方。



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

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

          主站蜘蛛池模板: 永德县| 宜良县| 福海县| 改则县| 安阳市| 枣阳市| 太白县| 瑞丽市| 罗定市| 威信县| 柘城县| 金山区| 阿合奇县| 雷波县| 嘉禾县| 铁力市| 灵武市| 泸溪县| 维西| 临沂市| 吴堡县| 定州市| 安陆市| 弥渡县| 观塘区| 新民市| 珲春市| 兴宁市| 重庆市| 崇州市| 岚皋县| 雷波县| 双柏县| 理塘县| 美姑县| 金堂县| 苍南县| 二连浩特市| 商城县| 和林格尔县| 泰州市|