0

我正在尝试在 kie 服务器上使用 DMN 制定一些业务规则。

我有结构数据对象及其列表,这是我的输入。我正在使用规则来验证我的结构列表并只获取那些通过我的条件的人。

我正在使用 BusinessKnowledgeModel,它对每个对象都有实际条件,并且我有决策逻辑,它遍历我的列表并调用 BusinessKnowledgeModel 函数。

决策迭代器感觉语言代码:

对于 InputList 中的 inputParam,返回 BusinessKnowledgeModel(inputParam)

在 BusinessKnowledgeMode 中,我的函数由决策表组成,该决策表通过感觉表达式检查我的状况。

我不想从函数中获取 null 作为 otput,我只想跳过它。

我的努力:

我确实尝试过探索尝试找到各种方法;比如查找是否可以在 for 循环中使用 continue 关键字。甚至尝试在数据对象上添加约束,但不能在结构上添加空约束。

4

1 回答 1

2

continue;由于 FEEL 是一种表达式语言,因此没有过程语言中典型的运算符等效项。如果您熟悉 Java,则可以得出的类比是,您需要与 JDK Stream 相同的东西,例如:在这种情况下进行过滤听起来很合适。

您可能可以通过过滤表达式来实现所需的功能:

(for inputParam in InputList return BusinessKnowledgeModel(inputParam))[item!=null]

示范

在这个示例 DMN 模型中,我有inputList一个数字列表,bkm()如果它可以被 2 整除,它是一个返回相同数字的函数,否则null

if (modulo(p1, 2) = 0) then p1 else null

Decision-1节点: 决策节点是从返回的列表中过滤的,for只有数字元素,可以看到输入列表大小是10个元素,Decision-1列表大小只有5个元素,过滤掉nulls

完整的例子: 完整的例子

请注意输出列显示带有索引的列表元素,元素索引 0 是值2,元素索引 1 是值4,等等。

于 2021-08-11T12:27:59.167 回答