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



考虑使用这样的过程变量:

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);

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

无法完成任务xxx:无法评估脚本:TypeError:ObjectValue [value = [{" id ": 1、"名称":"约翰"},{" id ": 2,"名字":"简"]],isDeserialized = true,serializationDataFormat =应用程序/x-java-serialized-object,objectTypeName = java.util。ArrayList, serializedValue=X charars]没有

在这种情况下,ArrayList的引用说它有sizeadd !这是怎么呢

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

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

最新更新