如何在 DMN 中访问 FEEL 列表文字表达式中的列表元素?

How to access list element in FEEL list literal expression in DMN?

我有以下对象列表:

"animals":[
{
  "family":"cat",
  "color":"grey"
},
{
  "family":"dog",
   "color":"white"
}
]

我想访问 dog family and white color 中的第一个 animal 对象。我正在尝试通过这样做来实现它:

animals[family = "dog" and color = "white"][0]

但是显示警告如下:

FEEL WARN while evaluating literal expression 'animals[ family = .... [string clipped after 50 chars, total length is 82]': Index out of bound: list of 1 elements, index 0; will evaluate as FEEL null

这里到底有什么不正确的地方?我觉得我在语义上做错了什么。我也参考了 FEEL 的规范,但无法弄清楚哪里出了问题。我还从 Redhat 参考了 DMN 的 dmn 决策建模文档,但我仍然一无所知。请帮忙。

在 FEEL 中,列表的元素索引从 1 开始。

所以你想要访问第一个动物对象的表达式实际上是:

animals[family = "dog" and color = "white"][1]

这在第 126 页的 DMN specification 中有记录:

The first element of a list L can be accessed using L[1] and the last element can be accessed using L[-1].

为了提供更友好的参考,这是记录在Drools documentation

Elements in a list can be accessed by index, where the first element is 1. Negative indexes can access elements starting from the end of the list so that -1 is the last element.

...等同于产品化的 Red Hat documentation 版本: