我想利用DMN来创建一个计算,但是每个国家的规则不同,所以规则USA和category1将不同于美国和category2的规则,加拿大和类别1的规则也会有所不同。
我不想为country类别添加列,并将所有列保持在同一个表中,因为这将构成一个超级大表,而且由于每个表都由不同的用户维护,因此如果可能的话,将其保持单独只会更简单。
有什么方法可以用DMN来模拟吗?
我知道BPMN可以用来决定调用哪个表,但我很好奇是否只有DMN才能处理这种情况。
提前感谢
发布于 2021-08-18 14:43:33
我知道BPMN可以用来决定调用哪个表,但我很好奇是否只有DMN才能处理这种情况。
在您的案例中,最合适的方法指导方针确实是结合BPMN的能力来协调要评估的决策服务(DMN)。
在此前提下,您可能有两个单独使用DMN的备选方案。
仅限DMN,备选方案1
您可以为每个DMN模型文件定义一个决策服务,每个模型都是针对特定国家的。然后,在“监督者”DMN模型中,您可以评估来自所有国家进口DMN模型的适当决策服务。
专业:
)的另一组users
缺点:
时。
示例:

这个例子实际上显示了选择哪个决定,即:评估所有变化,然后只选择所需的变化。
但是,您肯定可以重构模型,但只能调用您想要的导入的决策服务(例如:s.Standard card ds()或g.Gold card ds())。
我想展示这个例子,因为它比用例要宽一些,但是正如前面提到的,您可以让它更简单。
仅限DMN,备选方案2
您可以使用非DMN标准的invoke()函数从给定的DMN模型动态调用所需的DMN模型,条件是所调用的DMN模型可由特定平台API解析-即: on是同一个KieContainer的一部分,Kogito是同一个Kogito应用程序的一部分。
专业:
维护。
缺点:
Specification.
invoke()函数是一个Drools扩展的内建函数,而不是DMN 示例:

在本例中,国家用于查找包含我们要调用的用于计算购买年龄的决策表的模型的名称;然后使用扩展的内置函数调用所需的模型,传递所需的输入:

第二个屏幕截图从左到右显示:一个特定于国家的DMN模型的例子,执行调用的“监督者”DMN模型,几个选定国家运行它并显示购买年龄的场景测试示例。
我认为这是少数几个实际有意义地利用平台集成方面(如invoke()功能)的案例之一,因为它将天真地导入249个不同的国际标准化组织国家变体的模型。
https://stackoverflow.com/questions/68832897
复制相似问题