我创建了一个 BPMN 协作模型,其中包含一个 Javascript 类型的脚本任务。然后我用这样的流程变量实例化了一个流程实例:
Variable name: arr
Object type name: java.util.ArrayList
Serialization Data Format: application/x-java-serialized-object
Value: [{ "id": 10 }]
然后我使用以下代码传递了脚本任务:
var arr = execution.getVariable("arr");
execution.setVariable("arr2", arr);
它运行成功。然后我修改了这样的脚本任务:
var arr = execution.getVariable("arr");
arr.add({ "id" : 2 });
execution.setVariable("arr2", arr);
并重新部署,重新实例化;令我惊讶的是,它导致了一个错误:
无法提交任务表单 xxx:无法序列化变量“arr”中的对象:jdk.nashorn.internal.scripts.JO4
有人可以告诉我我做错了什么吗?
[更新]
我刚刚发现了一些新的东西,如果我像这样修改 ArrayList:
var arr = execution.getVariable("arr");
arr.add(2);
execution.setVariable("arr2", arr);
它工作得很好!修改后的值为:
[{ "id": 10 }, 2]
这意味着setVariable
序列化修改后的列表有问题。那么我应该如何序列化呢?