Я создал модель сотрудничества 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
есть проблема с сериализацией измененного списка. Итак, как мне его сериализовать?