drools - 如何访问 DMN 中 FEEL 列表文字表达式中的列表元素?
问题描述
我有以下对象列表:
"animals":[
{
"family":"cat",
"color":"grey"
},
{
"family":"dog",
"color":"white"
}
]
我想animal
访问dog family and white color
. 我试图通过这样做来实现它:
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 决策建模文档,但我仍然一无所知。请帮忙。
解决方案
在 FEEL 中,列表的元素索引从 1 开始。
因此,您要访问第一个动物对象的表达式实际上是:
animals[family = "dog" and color = "white"][1]
这记录在第 126 页的DMN 规范中:
列表的第一个元素
L
可以使用 访问L[1]
,最后一个元素可以使用 访问L[-1]
。
为了提供更友好的参考,这也记录在Drools 文档中
列表中的元素可以通过索引访问,其中第一个元素是 1。负索引可以访问从列表末尾开始的元素,因此 -1 是最后一个元素。
...同样适用于产品化的Red Hat 文档版本:
推荐阅读
- jquery - jQuery添加类不适用于特定的类名
- nosql - N1QL Analytics 查询中子节点的偏移结果
- java - 在 Observer 内的行中找不到可执行代码 - Android Studio gradle 断点
- javascript - 有什么办法可以防止 NodeJS 中出现这个错误?
- python - 从变量中删除空格/逗号以添加到字符串
- batch-file - 批量将文件名添加到每一行并合并子目录中的多个 TXT 文件
- node.js - 从另一个应用程序运行 Angular 应用程序的部分部分
- asp.net - 什么触发了带有 ClientValidationFunction 的 CustomValidator?
- javascript - 在 Promise 中模拟和断言函数调用
- reactjs - 如何处理来自 Reactjs 中多个输入字段的多个 onChange 函数