决策表模式: 一种业务规则引擎实现方式
决策表是业务逻辑建模的表格形式,表示所有可能的条件组合。特别是在复杂的系统中,当多个业务规则共享同一组属性时,可以使用决策表轻松映射所有场景。
决策表具有用于映射条件及其操作的列和行。因此,可以使用不同的条件和操作来构建每个业务规则,而不会丢失所有可能的组合。
为了进一步解释所有组合,让我们考虑一个根据学生的分数、年龄和州/地区确定奖学金百分比的场景。
这些是属性集和每个属性的可能值数量。
if score >= 80 and |
我们可以使用上表中的相同属性和可能值对场景上下文进行建模。
传统手工方法
软件开发人员使用编程语言将逻辑写入应用程序是传统方法。这可能会导致大型项目以及扩展项目中的多个问题。
传统方法
- 需要特定编程语言的知识
- 它是代码库的一部分,使得在不影响代码库的情况下更难进行更改
- 难以理解复杂的场景
- 很难映射场景的所有组合并对其进行测试
- 领域专家和业务分析师无法根据业务规则的变化更新代码
- 很容易错过所有可能的组合,因为它们是以句子的形式写的
决策表
- 不需要编程语言
- 与应用程序代码库分离,使得在不影响代码库的情况下更容易进行更改
- 复杂的场景可以很容易地以表格的形式进行映射。
- 所有组合都可以以表格形式映射并一一测试
- 无需编码,领域专家和业务分析师可以根据业务规则的变化更新代码
- 所有可能的组合都可以轻松建模,因为有表格形式的可视化表示
决策表模式只能表达简单业务规则吗?
这个问题的答案是坚决不!尽管决策表的简单性以及它们如何轻松地让您对业务规则进行建模,但这并不意味着它仅适用于简单的业务规则。
决策表允许对非常复杂的业务规则进行建模,同时它们看起来简单且易于理解。决策表支持复杂的条件和规则输入。这将允许在单元格中输入不同类型的值,例如范围、常量和文字值以及公式和表达式。
另一方面,您可以在条件列中组合复杂的布尔运算符。此外,使用框式表达式构建和重用复杂表达式作为条件或操作列的一部分,将允许您将任何复杂逻辑简单地放入任何决策表的结构化模型中。
在所有这些之上,决策表允许在设计时进行语义和结构验证,这将使您能够了解您是否拥有正确和完整的决策表。
当处理复杂数据时,即关系和数据集合作为条件列的一部分,一元运算符将允许您处理任何与数据相关的复杂逻辑。