我在 Java 14 上的 Camunda 7.16 中有一个名为
ListItems
的变量。基于“变量”选项卡的变量类型是 Object
,其值是 java.util.ArrayList
。当我尝试将 ListItems
中的项目计数作为 http-connector
负载中的参数(分配类型为字符串或表达式)时,我感到很困惑。
{
"ProcessNo": "${execution.processBusinessKey}",
"TotalItem": "${S(ListItems).length}"
}
我尝试了以下操作:
${S(ListItems).length}
、${S(ListItems).length()}
、${S(ListItems).size()}
、${(ListItems).size()}
以及以下脚本任务(内联 Javascript)
execution.getVariable("ListItem").size();
我不知道下一步该尝试什么。
最后我有一个解决方法,而不是将变量作为对象或列表,我将其作为 JSON 存储在 Camunda 中并以这种方式获取长度:
S(execution.getVariable("ListItem")).elements().length;
注:
execution.getVariable("ListItem")
解析 ListItem json。
.elements()
获取 JSON 列表中的所有项目。
最后
.length
得到它的大小。
将变量存储为“本机”格式(无论是对象、映射、列表)有时在 Camunda 中很难使用。但它们似乎有更好的大小限制(文本变量限制为 4000 个字符)。