drools - 每个条件的 DMN 表

标签 drools

我想利用 DMN 来创建计算,但每个国家/地区的每个类别的规则都不同,因此美国和类别 1 的规则将与美国和类别 2 的规则不同,加拿大的规则也不同和类别 1。

我不想为国家/地区类别添加列并将其全部保留在同一个表中,因为这将形成一个 super 大的表,并且每个表都将由一组不同的用户维护,这样会更容易保留如果可能的话,将其分开。

有没有办法用 DMN 对此进行建模?

我知道 BPMN 可以用来决定调用哪个表,但很好奇 DMN 是否可以单独处理这种情况。

提前致谢

最佳答案

I know BPMN could be use to make this decision on which table to call but was curious if DMN alone would handle this case.

在您的案例中,最合适的方法指南确实是结合 BPMN 的力量来协调要评估的决策服务 (DMN)。

在此前提下,单独使用 DMN 可能有两种替代选择。

仅限 DMN,选项 1

您可以为每个 DMN 模型文件定义一个决策服务,每个模型都针对国家/地区特定性进行建模。然后,在“主管”DMN 模型中,您可以评估导入 DMN 模型的所有国家/地区的适当决策服务。

优点:

  • 仅限 DMN
  • 每个 DMN 确实可以由一组不同的用户维护
  • 已定义的特定国家/地区决策服务的可重用性

缺点:

  • 可扩展性受到选项数量的限制,前提是需要导入许多特定于国家/地区的模型

示例:

option1

此示例实际上显示了选择哪个决策,即:评估所有变体,然后仅选择所需的一个。

但是您绝对可以重构模型,仅调用您想要的导入决策服务(例如:s.Standard card ds()g.Gold卡 ds())。

我想展示这个示例,因为它比您的用例更广泛,但正如前面提到的,您可以让它更简单。

仅限 DMN,选项 2

您可以使用非 DMN 标准 invoke() 函数从给定的 DMN 模型动态调用所需的 DMN 模型,前提是所调用的 DMN 模型可由特定平台 API 解析 -即:在 Drools 上是同一个 KieContainer 的一部分,在 Kogito 上是同一个 Kogito 应用程序的一部分。

优点:

  • 仅限 DMN
  • 每个 DMN 确实可以由一组不同的用户维护

缺点:

  • invoke() 函数是 Drools 扩展内置函数,不属于 DMN 规范的一部分。

示例:

option2 drd

在此示例中,国家/地区用于查找模型的名称,该模型包含我们要调用以评估购买年龄的决策表;然后扩展的内置函数用于调用所需的模型,传递所需的输入:

option2 running

第二个屏幕截图从左到右显示:特定于国家/地区的 DMN 模型的示例、执行调用的“主管”DMN 模型、针对几个选定国家/地区运行该模型并显示购买情况的场景测试示例年龄是所要求的。

我相信这是利用平台集成方面(例如 invoke() 函数)真正有意义的极少数情况之一,因为导入不同的 249 个模型是很幼稚的。 ISO 国家变体..

关于drools - 每个条件的 DMN 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68832897/

相关文章:

api - 通过使用 5.5 使用 Drools 6.0 新的 PHREAK 算法。遗留 API

java - Optaplanner/Drools 在solverFactory.buildSolver() 中抛出异常

Drools - 使用累加找到最小值和最大值

java - Drools - 检索输出对象