Форматы данных в процессах

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

Главная точка вхождения в функциональность Spin — это статическая функция io.openbpm.spin.Spin.S, которая может использоваться для обработки документов или осуществлять маппинг Java объектов на формат документа. Значение, возвращаемое данной функцией — это Spin wrapper, который является промежуточным представлением документа и предоставляет функции для манипуляций с изначальным документом. Кроме того, могут использоваться функции io.openbpm.spin.Spin.XML и io.openbpm.spin.Spin.JSON, которые возвращают строго типизированную обертку от Spin для предоставленных документов, что полезно при написании программ на Java. См. справочную документацию по Spin, чтобы узнать, как можно использовать эти методы и какой API предлагается обертками от Spin.

Следующие подразделы описывают точки интеграции движка обработки процессов со Spin. Для получения специфической документации по форматам данных, а именно, XML и JSON, см. раздел по XML и the раздел по JSON.

Интеграция языка выражений

Плагин движка от Spin регистрирует функции входа в Spin API в контексте, используемом для вычисления значений выражений. Поэтому, он может использоваться во всех точках, где движок разрешает язык выражений.

Интеграция механизма написания скриптов

Подобно интеграции языка выражений, к функциям Spin можно получать доступ из кастомизированных скриптов на поддерживаемых языках, а именно, JavaScript, Groovy, Python и Ruby. См. раздел по скриптам, чтобы узнать, как конфигурируется функциональность написания скриптов в целом в Camunda 7.

Значения нативных переменных в JSON и XML

При работе с рабочими нагрузками нв JSON или XML было бы неудобно относиться к этой рабочей нагрузке как к строке, потому что в этом случае невозможно использовать такие функции как выражения путей и оценка свойств. Более того, вам не всегда нужны в вашей системе классы, представляющие JSON/XML.

Поэтому Spin предоставляет функционал "значения нативных переменных", чтобы вы могли работать с JSON и XML. Spin API разрешает доступ и предоставляет простую возможность манипуляций с данными. Парсинг и сериализация могут быть произведены одной командой.

Сериализация процессных переменных

Каждый раз, когда кастомизированные Java объекты устанавливаются как процессные переменные, их необходимо сохранять в базе данных. Это означает, что экземпляры Java объектов необходимо сериализовать. Сериализация, используемая движком по умолчанию, использует стандартный механизм сериализации Java объектов, результатом работы которого становятся наборы байтов в базе данных, понятные компьютеру. Такой подход имеет свои ограничения, в частности, значения в базе данных нельзя подвергнуть самоанализу, а клиентское приложение, считывающее объект, должно иметь в своем составе соответствующий Java класс. Чтобы устранить эти проблемы с использованием плагина движка Spin, переменные можно сериализовать, используя форматы данных от Spin. Плагин регистрирует сериализатор, который просматривает все доступные форматы данных и предлагает их для сериализации.

Расширение сериализации

Spin предлагает два интерфейса, которые можно реализовать, чтобы предоставить кастомизированные форматы данных и сконфигурировать сериализацию. Каждое приложение с процессами может предоставлять свой уникальный набор провайдеров и конфигураторов форматов данных. Camunda 7 затем инстанциирует форматы данных, специфичные для этого приложения, и гарантирует, что они доступны только тогда, когда код выполняется внутри контекста приложения. См. раздел, посвященный доступу к ресурсам в приложении с процессами для лучшего понимания того, когда движок управления процессами работает внутри контекста приложения с процессами и как можно осуществить вынужденное переключение контекста.

ОГРАНИЧЕНИЕ:
Предоставленные или сконфигурированные на уровне приложения форматы данных в настоящее время применяются только к сериализации или переменным типа Object. Нативные переменные Spin и автономный (standalone) Spin API (e.g. S("{…​}").prop("…​")) используют только глобально сконфигурированные форматы данных.

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org