You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Camunda中ArrayList类型变量的长度

如何获取Camunda中ArrayList类型变量的长度

我来帮你搞定这个问题!看你试了好几种方法都没成功,大概率是表达式写法或者连接器配置的小细节没到位,咱们一步步来解决:

方法一:直接在HTTP连接器中使用正确的EL表达式

首先,你之前的表达式写法有几个小问题:

  • 不需要用S()函数包裹变量,Camunda的EL表达式可以直接访问Java对象的方法
  • 一定要确保Assignment类型选的是Expression,不是String——如果选String的话,表达式会被当成纯文本输出,不会被解析执行

正确的表达式应该是:

${ListItems.size()}

所以你的HTTP payload应该改成(记得把Assignment类型设为Expression):

{
    "ProcessNo": "${execution.processBusinessKey}",
    "TotalItem": "${ListItems.size()}"
}

方法二:通过脚本任务先计算长度,再引用变量

如果上面的方法还是不行,咱们换个思路,先在脚本任务里计算好列表长度,存到一个新变量里,再在HTTP连接器里引用这个变量:

  1. 添加一个Inline Javascript类型的脚本任务
  2. 注意脚本里的变量名!你之前写成了ListItem,少了个s,这可能是踩坑点,正确的脚本内容:
// 获取ListItems变量
var itemList = execution.getVariable("ListItems");
// 计算长度并存到新变量TotalItem里
execution.setVariable("TotalItem", itemList.size());
  1. 然后在HTTP payload里直接引用这个新变量:
{
    "ProcessNo": "${execution.processBusinessKey}",
    "TotalItem": "${TotalItem}"
}

额外排查点

如果还是没效果,建议先确认变量的真实类型:
可以在脚本任务里加一行打印,看看变量到底是什么类型:

var list = execution.getVariable("ListItems");
print("变量类型:" + list.getClass().getName());

如果输出不是java.util.ArrayList,那可能是变量序列化或者设置的时候出了问题,需要先排查变量的来源是否正确。

备注:内容来源于stack exchange,提问作者Bagus Tesa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:19:42