如何在Camunda中的Javascript脚本任务中使用序列化变量
考虑使用如下流程变量:如何在Camunda中的Javascript脚本任务中使用序列化变量,javascript,java,camunda,script-task,Javascript,Java,Camunda,Script Task,考虑使用如下流程变量: 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
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:无法评估脚本:类型错误:
ObjectValue[value=[{“id”:1,“name”:“John”},{“id”:2,“name”:
“Jane”]],isDeserialized=true,
serializationDataFormat=应用程序/x-java-serialized-object,
objectTypeName=java.util.ArrayList,serializedValue=X chars]没有
这样的函数“大小”在
在这种情况下,表示它同时具有
大小
和添加
。发生了什么事?检查您正在调用的Camunda API:(DelegateExecution实现VariableScope)。此方法返回的实例
使用
execution.getVariableType(“arr”,true).getValue();
或execution.getVariable(“arr”);
访问实际的数组列表。谢谢。您还知道如何用Javascript处理变量类吗?我尝试了org.camunda.bpm.engine.variable.Variables
但它说找不到类!?我想调用org.camunda.bpm.engine.variable.objectValue(v)
,但我不能!