DMN Table 每个条件

DMN Table per condition

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

我不想为国家/地区类别添加列并将其全部保留在同一个 table 中,因为这将构成一个超大的 table,并且每个列都将由一个如果可能的话,将不同的用户集分开会更简单。

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

我知道 BPMN 可以用来决定调用哪个 table 但很好奇是否单独使用 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 确实可以由一组不同的用户维护
  • 已定义的国家/地区特定决策服务的可重用性

缺点:

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

示例:

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

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

我想展示这个示例,因为它比您的用例更广泛,但如前所述,您可以将其简化。

仅 DMN,选项 2

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

亲:

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

缺点:

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

示例:

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

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

我认为这是利用平台集成方面(例如 invoke() 功能)实际有意义的极少数情况之一,因为导入不同 ISO 国家/地区变体的 249 个模型是幼稚的..