決策表模式: 一種業務規則引擎實現方式
決策表是業務邏輯建模的表格形式,表示所有可能的條件組合。特別是在複雜的系統中,當多個業務規則共享同一組屬性時,可以使用決策表輕鬆對映所有場景。
決策表具有用於對映條件及其操作的列和行。因此,可以使用不同的條件和操作來構建每個業務規則,而不會丟失所有可能的組合。
為了進一步解釋所有組合,讓我們考慮一個根據學生的分數、年齡和州/地區確定獎學金百分比的場景。
這些是屬性集和每個屬性的可能值數量。
if score >= 80 and age >= 18 and states and territories is VIC then scholarship percentage is 80 |
我們可以使用上表中的相同屬性和可能值對場景上下文進行建模。
傳統手工方法
軟體開發人員使用程式語言將邏輯寫入應用程式是傳統方法。這可能會導致大型專案以及擴充套件專案中的多個問題。
傳統方法
- 需要特定程式語言的知識
- 它是程式碼庫的一部分,使得在不影響程式碼庫的情況下更難進行更改
- 難以理解複雜的場景
- 很難對映場景的所有組合並對其進行測試
- 領域專家和業務分析師無法根據業務規則的變化更新程式碼
- 很容易錯過所有可能的組合,因為它們是以句子的形式寫的
決策表
- 不需要程式語言
- 與應用程式程式碼庫分離,使得在不影響程式碼庫的情況下更容易進行更改
- 複雜的場景可以很容易地以表格的形式進行對映。
- 所有組合都可以以表格形式對映並一一測試
- 無需編碼,領域專家和業務分析師可以根據業務規則的變化更新程式碼
- 所有可能的組合都可以輕鬆建模,因為有表格形式的視覺化表示
決策表模式只能表達簡單業務規則嗎?
這個問題的答案是堅決不!儘管決策表的簡單性以及它們如何輕鬆地讓您對業務規則進行建模,但這並不意味著它僅適用於簡單的業務規則。
決策表允許對非常複雜的業務規則進行建模,同時它們看起來簡單且易於理解。決策表支援複雜的條件和規則輸入。這將允許在單元格中輸入不同型別的值,例如範圍、常量和文字值以及公式和表示式。
另一方面,您可以在條件列中組合複雜的布林運算子。此外,使用框式表示式構建和重用複雜表示式作為條件或操作列的一部分,將允許您將任何複雜邏輯簡單地放入任何決策表的結構化模型中。
在所有這些之上,決策表允許在設計時進行語義和結構驗證,這將使您能夠了解您是否擁有正確和完整的決策表。
當處理複雜資料時,即關係和資料集合作為條件列的一部分,一元運算子將允許您處理任何與資料相關的複雜邏輯。
相關文章
- 使用 Drools 規則引擎實現業務邏輯
- Java中最流行的幾種業務規則引擎簡介Java
- 規則引擎模式 - upperdine模式
- 【java規則引擎】規則引擎RuleBase中利用觀察者模式Java模式
- Java各種規則引擎Java
- 【java規則引擎】一個基於drools規則引擎實現的數學計算例子Java
- uwegeercken/jare:Java業務規則引擎(Jare)JARJava
- Drools 業務規則引擎的完整教程
- 如何用Go快速實現規則引擎Go
- 【java規則引擎】之規則引擎解釋Java
- 單例模式:5種實現方式單例模式
- DDD中實現業務規則的驗證 - Marcin
- Java中動態規則的實現方式Java
- hyperjumptech/grule-rule-engine: Golang的規則引擎實現Golang
- 設計模式學習(一)單例模式的幾種實現方式設計模式單例
- 在Java中用規則引擎模式替代ifelse - VitaliJava模式
- 如何學習Java的規則引擎模式? - plagovJava模式Go
- 五種方式實現 Java 單例模式Java單例模式
- java幾種代理模式的實現方式Java模式
- 第2-4-4章 規則引擎Drools規則屬性-業務規則管理系統-元件化-中臺元件化
- 【java規則引擎】java規則引擎搭建開發環境Java開發環境
- 用規則引擎開發靈活配置的業務系統
- 開放封閉原則與規則引擎設計模式 - devgenius設計模式dev
- 規則引擎模式的.NET開源專案案例模式
- 單例模式的各種實現方式(Java)單例模式Java
- DDD 中的那些模式 — 使用 Specification 管理業務規則模式
- Drools規則引擎實踐直白總結
- 潤乾報表中進度條的一種實現方式
- cerner/clara-rules: Clojure的業務規則引擎與專家系統
- Drools決策引擎——Docker部署Docker
- 實現觀察者模式(Observer Pattern)的2種方式模式Server
- 資料驅動決策的13種思維方式
- Java設計模式——實現單例模式的七種方式[JZOF]Java設計模式單例
- 實現微前端的十種方式 【第一種】前端
- postgresql通過建立規則(RULE)實現表記錄SQL
- 一個規則引擎的視覺化方案視覺化
- 小明歷險記:規則引擎drools教程一
- Java規則引擎 Easy RulesJava