gpt4 book ai didi

javascript - 如何在 Camunda 的 Javascript 脚本任务中使用序列化变量

转载 作者:行者123 更新时间:2023-12-02 04:19:30 26 4
gpt4 key购买 nike

考虑有一个像这样的流程变量:

Object type name: java.util.ArrayList
Serialization Data Format: application/x-java-serialized-object
Value: [{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"]

我正在尝试在脚本任务中编写一个Javascript,它提取一个变量,如上面所示,并使用它。这是我已经走了多远:

var arr = execution.getVariableTyped("arr", true);

for (var i=0; arr.size(); i++) {
var item = arr.get(i);
//Do somthing with `item`
}
//Add an object to the end of the array
arr.add({ "id": 3, "name": "Jack" });

execution.setVariable("arr", arr);

但是当我运行它时,它会抛出以下错误:

Cannot complete task xxx: Unable to evaluate script: TypeError: ObjectValue [value=[{"id": 1, "name": "John"}, {"id": 2, "name": "Jane"]], isDeserialized=true, serializationDataFormat=application/x-java-serialized-object, objectTypeName=java.util.ArrayList, serializedValue=X chars] has no such function "size" in <eval>

情况是ArrayList's reference说它有 sizeadd 两者!这是怎么回事?

最佳答案

检查您正在调用的 Camunda API:
VariableScope#getVariableTyped (DelegateExecution 实现 VariableScope)。此方法返回 TypedValue 的实例。

使用 execution.getVariableTyped("arr", true).getValue();execution.getVariable("arr"); 访问实际的 ArrayList。

关于javascript - 如何在 Camunda 的 Javascript 脚本任务中使用序列化变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32942853/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com