我创建了一个BPMN协作模型,其中包含一个类型为Javascript的脚本任务。然后,我实例化一个流程实例与过程变量,像这样:在Javascript中修改ArrayList导致Camunda中的序列化失败
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);
并重新部署,重新实例化;并惊讶它导致了一个错误:
Cannot submit task form xxx: Cannot serialize object in variable 'arr': jdk.nashorn.internal.scripts.JO4
有人可以告诉我,我做错了什么?
[更新]
我只是发现一些新的东西,如果我修改的ArrayList是这样的:
var arr = execution.getVariable("arr");
arr.add(2);
execution.setVariable("arr2", arr);
它工作得很好!而修改后的值是:
[{ "id": 10 }, 2]
这意味着setVariable
有问题序列化修改后的列表。那么我应该如何序列化它呢?
我不知道,如果存在一个或没有,但我认为一个文档解释这些将会非常有帮助。谢谢。 – Mehran