規則引擎教程--多維決策表

在交叉決策表以及關聯決策表中,條件之間的通常是一對一的關係(也可以實現一對多),但是在實際情況中往往會出現一對多的關係。如在下面的列子中,一個學生要考很多學科,一個學期又要考很多場試。若用交叉決策表會造成邏輯上的冗餘,而多維決策卻很容易的實現一對多的關係。學生考試的考試情況如下圖所示:

 

我們可以看到,每個學生每學期要有三次考試,而每次考試要考三門學科。這樣多維決策表的條件部分應該有三個:學生姓名、考試類型、學科。而結果只有一個:分數。

需要注意的是:雖然多維決策表可以實現多對多的關係,但是在每個條件之間必須公用同一個條件。例如,在本例子中若實際情況中有的學生沒有學習英語,但是在多維決策表中還是會有該學生的英語成績的。若要實現每個條件下的子條件不同,就要用交叉決策表來實現了。

 

右鍵名爲“功能解析”的工程,點擊“新建規則包”,創建一個名爲:“多維決策表的”規則包,如下圖所示:

 

需要在該規則包的對象庫中,定義四個變量:學生姓名(stuName),考試(test),學科(subject),得分(score)。如下圖所示:

 

創建名爲“學生考試得分”的多維決策表,創建過程如下圖所示:

 創建好了“多維決策表”我們需要設置其屬性,首先要在屬性窗口,把條件個數設置爲3,賦值元素設置成“得分”(score)。操作流程如下所示:

屬性設置好了之後,我們要在 “多維決策表”的條件部分中設置具體的邏輯以及該條件下的“得分”。條件設置過程如下:

 

 

按照上述的步驟,再添加兩個學生,添加完成後,如下圖所示:

這樣學生姓名就設置好了,然後我們再添加考試信息,完成後如下圖:

考試信息的條件設置完成之後,我們還要給學科添加信息,其添加完成後如下圖所示:

 

學科的條件設置完成之後,這樣多維決策表的條件部分就完成。多維決策表的條件,如下圖所示:

 

最後,我們要爲每個學生的每次考試中的每個學科,賦予相應的分數。如下圖:

規則邏輯完成後,我們需要對規則進行編譯,步驟如下:

 

我們選擇“全部保存”,然後在消息窗口出現,下圖所示的信息:

 

在規則包完成之後,我們需要測試該規則包的輸入,輸出結果值是否正確。首先,我們爲該規則包添加一個“批量測試”,步驟如下圖所示:

 

添加完成後,如下圖所示:

 

然後我們需要給該“批量測試”添加若干個測試用例,點擊上圖中黑色框中的添加按鈕,彈出的界面如下所示,其中“傳入值”是你輸入值,“期望結果值”是在該輸入值下希望輸出結果值,若“期望結果值”與實際輸出結果值相同,則說明該條測試數據測試成功!

 

我們多爲該規則包添加幾條測試數據,完成後結果如下:

保存之後,點擊測試按鈕,分別在批量測試和消息窗口出現下圖所示的提示消息:

 

最後,可以在消息窗口欄查看該“批量測試”的測試結果。如下圖所示:

 

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