2.5. 盡可能在一個規則或者一個規則集中完成所有動作
充分利用規則集和規則的初始化動作、起始動作、進入條件、多條件和動作等。盡可能在一個規則或者一個規則集中完成一個任務。不過多的分層次。
最初設計規則集和規則時,每個規則都是由條件和動作組成的。是以一個标準的規則就是
如果 條件1
那麼 動作1
組成的,這種是最基本的規則。
但是當規則具有兩個條件時,可以将此條件放到規則的條件中,變成
如果 條件1并且條件2
那麼 動作1。
這是第二種标準的規則形式。
此時如果兩個條件間有多種組合,不同組合間進行不同的動作。比如
如果條件1并且條件2
那麼動作1
否則如果條件1或者條件2
那麼動作2
這是第三種标準的規則形式。
如果條件中的某些判斷時,需要實作處理一下,那麼可以将規則設定成支援初始化。比如:
初始化動作1
如果條件1并且條件2
那麼動作1
否則如果條件1或者條件2
那麼動作2
這是第四種标準的規則形式
如果所有這些條件的判斷,都需要滿足一個公共條件,隻有當滿足了此條件之後,才能對此規則進行處理。可以将規則設定成支援進入條件,比如:
進入條件:進入條件1
初始化動作1
如果條件1并且條件2
那麼動作1
否則如果條件1或者條件2
那麼動作2
這種方式并不屬于規則的标準格式。這隻是為了能否顯示檢視友善,而進行的配置。這種方式和添加一個規則集,将規則放到規則集下面的方式是一樣的。
規則集:
進入條件:進入條件1
規則1:
初始化動作1
如果條件1并且條件2
那麼動作1
否則如果條件1或者條件2
那麼動作2
在規則的配置時,盡可能的少加層次,特别是循環中套循環。不便于了解,并且其他使用者檢視起來也不容易。
2.6. 充分利用決策樹的功能。
如果需要調用外部的規則包,盡可能采用決策樹的功能,來更加直覺的展現邏輯。
目前采用規則來處理時,是按照順序執行的方式來運作的。是以當配置完規則後,預設會根據順序形成一個流程圖。如果設定了規則集,則相當于定義了流程的分支。當在規則中定義了調用外部規則包後,相當于調用了子流程。
通過順序執行的規則集、規則、和調用外部規則包功能,就實作了流程圖、流程分支和子流程的功能。
但是為了更加直覺的展現流程,特别是需要調用外部規則包時,則使用決策樹功能會更加直覺。
決策樹,采用流程圖方式來定義順序,每個流程的節點可以是某個規則或者是某個外部的規則包。同時多個節點之間可以采用連線方式來定義執行順序和執行條件。