隨筆-16  評論-54  文章-0  trackbacks-0
          (本文檔的全篇可以到博客下面的文件列表下載,地址下面) 
          http://www.aygfsteel.com/jspark/admin/Files.aspx


          為了讓盡快對
          jbossRules有一個感官的認識,下面先開發一個HelloWorld的程序。

          建立一個java工程,目錄如下:

           

           

          如上所示,建立一個com包,然后在下面分別建立一個Sample.drl文件和DroolsTest.java文件。

          Sample.drl是一個規則文件,內容如下:

           

          package com

           

          import com.DroolsTest.Message;

           

          rule "Hello World"

              when

                 m : Message( status == Message.HELLO, message : message )

              then

                 System.out.println( message );

                 m.setMessage( "Goodbye cruel world" );

                 m.setStatus( Message.GOODBYE );

                 update( m );

          end

           

          rule "GoodBye"

              no-loop true

              when

                 m : Message( status == Message.GOODBYE, message : message )

              then

                 System.out.println( message );

                 m.setMessage( message );

                

          end

           

          DroolsTest.java是測試以上規則的JAVA程序,內部代碼如下:

           

           

          package com;

           

          import java.io.InputStreamReader;

          import java.io.Reader;

           

          import org.drools.RuleBase;

          import org.drools.RuleBaseFactory;

          import org.drools.WorkingMemory;

          import org.drools.compiler.PackageBuilder;

          import org.drools.rule.Package;

           

          /**

           * This is a sample file to launch a rule package from a rule source file.

           */

          public class DroolsTest {

           

              public static final void main(String[] args) {

                  try {

                 

                  //load up the rulebase

                      RuleBase ruleBase = readRule();

                      WorkingMemory workingMemory = ruleBase.newStatefulSession();

                     

                      //go !

                      Message message = new Message();

                      message.setMessage(  "Hello World" );

                      message.setStatus( Message.HELLO );

                      workingMemory.insert( message );

                      workingMemory.fireAllRules();  

                     

                     

                  } catch (Throwable t) {

                      t.printStackTrace();

                  }

              }

           

              /**

               * Please note that this is the "low level" rule assembly API.

               */

              private static RuleBase readRule() throws Exception {

                 //read in the source

                 Reader source = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/com/Sample.drl" ) );

                

                 //optionally read in the DSL (if you are using it).

                 //Reader dsl = new InputStreamReader( DroolsTest.class.getResourceAsStream( "/mylang.dsl" ) );

           

                 //Use package builder to build up a rule package.

                 //An alternative lower level class called "DrlParser" can also be used...

                

                 PackageBuilder builder = new PackageBuilder();

           

                 //this wil parse and compile in one step

                 //NOTE: There are 2 methods here, the one argument one is for normal DRL.

                 builder.addPackageFromDrl( source );

           

                 //Use the following instead of above if you are using a DSL:

                 //builder.addPackageFromDrl( source, dsl );

                

                 //get the compiled package (which is serializable)

                 Package pkg = builder.getPackage();

                

                 //add the package to a rulebase (deploy the rule package).

                 RuleBase ruleBase = RuleBaseFactory.newRuleBase();

                 ruleBase.addPackage( pkg );

                 return ruleBase;

              }

             

              public static class Message {

                 public static final int HELLO = 0;

                 public static final int GOODBYE = 1;

                

                 private String message;

                

                 private int status;

                

                 public String getMessage() {

                     return this.message;

                 }

                

                 public void setMessage(String message) {

                     this.message = message;

                 }

                

                 public int getStatus() {

                     return this.status;

                 }

                

                 public void setStatus( int status ) {

                     this.status = status;

                 }

              }

          }

           

          運行DroolsTest.java程序,可以看到如下輸出結果:

           

          Hello World

          Goodbye cruel world

           

          以上就是一個最簡單的jbossRules規則系統的例子。下面將具體講解jbossRules的詳細結構和語法。

          posted on 2008-10-28 15:54 jspark 閱讀(1638) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 博乐市| 徐闻县| 富阳市| 长宁县| 奉化市| 天镇县| 深圳市| 昔阳县| 招远市| 临沭县| 盐津县| 和田市| 观塘区| 昔阳县| 洪洞县| 静安区| 临颍县| 连江县| 云和县| 娄烦县| 泽普县| 宁强县| 嘉义县| 咸丰县| 无锡市| 刚察县| 芦山县| 双城市| 沙湾县| 贺州市| 溧阳市| 马边| 简阳市| 兰西县| 永宁县| 卓资县| 襄城县| 锦屏县| 搜索| 锡林浩特市| 林州市|