每个条件的DMN表 [英] DMN Table per condition
问题描述
我希望利用DMN创建计算,但此计算的规则因国家/地区而异,因此规则USA和Category 1与USA和Category 2的规则不同,加拿大和Category 1的规则也不同。
我不想添加国家/地区类别的列并将其全部保存在同一个表中,因为这将使表变得非常大,而且由于每个表将由不同的用户组维护,因此如果可能的话,将其分开保存会更简单。
有没有办法用DMN对此进行建模?
我知道BPMN可以用来决定调用哪个表,但我很好奇是否只有DMN可以处理这种情况。
提前谢谢
推荐答案
我知道BPMN可以用来决定调用哪个表,但我很好奇是否只有DMN可以处理这种情况。
在您的案例中,最合适的方法指南确实是结合BPMN的力量来协调评估哪个决策服务(DMN)。
在此前提下,您可能有两个单独使用DMN的替代选项。
仅DMN,选项1
您可以为每个DMN模型文件定义一个决策服务,每个文件都对特定的国家/地区进行建模。然后,在主管&DMN模型中,您可以评估所有导入DMN模型的国家/地区的相应决策服务。专业:
- 仅限DMN
- 每个DMN确实可以由一组不同的用户维护
- 已定义的国别决策服务的可重用性
缺点:
- 可伸缩性受到选项数量的限制,如果要导入许多特定国家/地区的型号
示例:
此示例实际显示了要选择哪个决策,即:评估所有变体,然后只选择所需的一个。
但您绝对可以重构模型,以便仅调用您想要的导入的决策服务(例如:s.Standard card ds()
或g.Gold card ds()
)。
我想展示这个示例,因为它比您的用例稍微广泛一些,但是如前所述,您可以让它更简单。
仅DMN,选项2
您可以使用非DMN标准invoke()
函数从给定的DMN模型动态调用所需的DMN模型,前提是调用的DMN模型可由特定平台API解析--即:on Drools是同一KieContainer
的一部分,on Kogito是同一Kogito应用程序的一部分。
专业:
- 仅限DMN
- 每个DMN确实可以由一组不同的用户维护
缺点:
invoke()
函数是Drools扩展的内置函数,不是DMN规范的一部分。
示例:
在本例中,Country用于查找模型的名称,该模型包含我们要调用以评估购买年龄的决策表;然后使用扩展的内置函数调用所需的模型,传递所需的输入:
第二个屏幕截图从左到右显示:特定于国家/地区的DMN模型的示例、执行调用的主管DMN模型的示例、针对几个选定国家/地区运行该模型并显示购买年龄的方案测试示例。
我认为这是极少数真正有意义地利用平台集成方面(如invoke()
功能)的情况之一,因为引入不同ISO国家/地区变体的249个型号将是天真的。
这篇关于每个条件的DMN表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!