決策表模式: 一種業務規則引擎實現方式

banq發表於2022-02-17
決策表是業務邏輯建模的表格形式,表示所有可能的條件組合。特別是在複雜的系統中,當多個業務規則共享同一組屬性時,可以使用決策表輕鬆對映所有場景。

決策表具有用於對映條件及其操作的列和行。因此,可以使用不同的條件和操作來構建每個業務規則,而不會丟失所有可能的組合。

為了進一步解釋所有組合,讓我們考慮一個根據學生的分數、年齡和州/地區確定獎學金百分比的場景。

這些是屬性集和每個屬性的可能值數量。

if score >= 80 and
age >= 18 and
states and territories is VIC
then
scholarship percentage is 80

我們可以使用上表中的相同屬性和可能值對場景上下文進行建模。

 

傳統手工方法

軟體開發人員使用程式語言將邏輯寫入應用程式是傳統方法。這可能會導致大型專案以及擴充套件專案中的多個問題。

傳統方法    

  • 需要特定程式語言的知識    
  • 它是程式碼庫的一部分,使得在不影響程式碼庫的情況下更難進行更改    
  • 難以理解複雜的場景    
  • 很難對映場景的所有組合並對其進行測試    
  • 領域專家和業務分析師無法根據業務規則的變化更新程式碼    
  • 很容易錯過所有可能的組合,因為它們是以句子的形式寫的    

決策表

  • 不需要程式語言
  • 與應用程式程式碼庫分離,使得在不影響程式碼庫的情況下更容易進行更改
  • 複雜的場景可以很容易地以表格的形式進行對映。
  • 所有組合都可以以表格形式對映並一一測試
  • 無需編碼,領域專家和業務分析師可以根據業務規則的變化更新程式碼
  • 所有可能的組合都可以輕鬆建模,因為有表格形式的視覺化表示

決策表模式只能表達簡單業務規則嗎?

這個問題的答案是堅決不!儘管決策表的簡單性以及它們如何輕鬆地讓您對業務規則進行建模,但這並不意味著它僅適用於簡單的業務規則。

決策表允許對非常複雜的業務規則進行建模,同時它們看起來簡單且易於理解。決策表支援複雜的條件和規則輸入。這將允許在單元格中輸入不同型別的值,例如範圍、常量和文字值以及公式和表示式。

另一方面,您可以在條件列中組合複雜的布林運算子。此外,使用框式表示式構建和重用複雜表示式作為條件或操作列的一部分,將允許您將任何複雜邏輯簡單地放入任何決策表的結構化模型中。

在所有這些之上,決策表允許在設計時進行語義和結構驗證,這將使您能夠了解您是否擁有正確和完整的決策表。

當處理複雜資料時,即關係和資料集合作為條件列的一部分,一元運算子將允許您處理任何與資料相關的複雜邏輯。

 

相關文章