規則引擎Ilog Jrules開發基礎教程【連載5】-- 開發篇3

3.5規則編寫

Ilog Jrules提供的規則形式有四種:普通規則,決策表,決策樹,規則流

3.5.1普通規則

普通規則是最簡單的規則形式,形式和編程語言中的IF…ELSE語句是一樣的,不同的地方在於,規則引擎的IF…ELSE是不可以嵌套的,且每個規則中只允許有一個IF和一個ELSE,例如:

如果

    'customerInfo' age小於18

那麼

     設置'customerInfo'的當前rusult"REJECT" ;

否則 

設置'customerInfo'的當前rusult"APPROVE" ;

3.5.2決策表

決策表是以表格的形式展現規則,決策表能羅列出所有的可能情況,並清晰的指出相應的處理方式,而所有可能情況的平面羅列,也能避免在程序語言編寫中,因爲邏輯上的層層嵌套而產生遺漏,尤其在if-then-else結構中else部分是可選的情況下。

決策表的條件列和操作列是需要初始化的,之後纔可以像填表一樣填寫規則。新建一個決策表之後,選中雙擊決策表,就會在規則編輯器中打開一個空的決策表,決策表分爲條件列和操作列,用顏色深淺區分。

操作過程:

定義條件列:將鼠標放於條件列頭à右鍵à編輯條件列...à在測試下面輸入條件,點擊應用à輸入標題(標題即列名)à確定。

Rule Studio對決策表的條件的輸入的幫助功能支持得不是很好,最好先將條件在普通規則中寫好,去掉“如果”關鍵字,將表達式佔位符用<>括起來,例如:'customerInfo'age小於 <一個數字>。這樣一個條件列就準備好了,在其下面的表格中即可以輸入數字類型的參數,輸入不符合定義類型的參數,決策表將會報錯。

    

     

設置好條件的決策表:

      

同樣也可以設置子條件列:

例如:'customerInfo'age大於<一個數字>小於 <一個數字>,注意“大於<一個數字>小於 <一個數字>”中間沒有“並且”關鍵字,那麼其形成的條件列如下圖所示:

   

“否則”的設置:選中條件單元格à右鍵à添加à否則。

定義操作列:將鼠標放於操作列頭à右鍵à編輯操作列...à在測試下面輸入操作à輸入標題(標題即列名)à確定。

定義操作列和定義條件列大致相同,不同的是在操作中要輸入相應的操作,例如:設置 'customerInfo'的當前rusult<一個字符串>

可以鼠標點中<輸入一個操作>,即會出現如下提示:

   

操作表的上方有一排功能圖標,常用的有增加條件列,減少條件列,增加操作列,減少操作列,也可以像excel那樣在內容相同的條件下並同單元格。

“禁用”功能:“禁用”功能只能在操作列使用,因爲操作列的操作已經指定,如果在操作列的表格中什麼也不輸入,就會執行參數爲空的操作。禁用後則說明也不會執行。圖標是。而在條件列中什麼也不輸入時,規則引擎會忽略掉這個條件的判斷。

決策表的侷限:在於操作列定義適用於不同參數的相同操作方法,不能不同條件執行不同的方法。

3.5.3決策樹

決策樹是規則引擎中最靈活的表現形式,任何規則都可以用決策樹來表示。

其中菱形表示條件部分,如同決策表的列頭部分,可以帶參數;箭頭表示時間走向,裏面是填充好了參數的條件;矩形則爲要執行的操作部分,可以執行任意個數的操作。

 

如上決策表的規則,用決策樹表示如下:

       
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章