Каковы преимущества использования выражений Delegates над классами Java?

Есть ли какие-то преимущества в использовании делегата выражения по сравнению с классом java в camunda?


person Paul Guey    schedule 17.12.2018    source источник


Ответы (1)


Единственное, что я могу представить, используя делегаты выражений вместо классов Java, это то, что всякий раз, когда мой пользовательский класс кода требуется для загрузки из Spring bean-компонентов с использованием внедрения зависимостей, особенно когда вы хотите контролировать жизненный цикл экземпляра делегирования вашим приложением , а не двигатель выполнения Camunda.

Проще говоря, используя делегаты выражения, мы можем инициализировать класс делегата, как мы хотим, используя Spring DI, не позволяя движку Camunda инициализировать его. И используйте все преимущества DI.

Сценарий заключается в том, что мы хотим загрузить наш класс делегирования из bean-компонентов Spring, где требуется внедрение зависимостей времени выполнения до запуска нашего кода делегирования. Таким образом, мы можем использовать bean-компоненты spring для инициализации зависимостей других объектов и создать bean-компонент, ссылающийся на класс делегирования, внедряющий другие инициализированные bean-компоненты. Например,

<serviceTask id="paymentTask" camunda:delegateExpression="${myPaymentBean}" />

В приведенном выше примере myPaymentBean разрешается из spring, и это будет экземпляр JavaDelegate, который уже инициализирован необходимыми зависимостями посредством внедрения зависимостей (DI). Мы использовали DI, потому что наша бизнес-логика должна быть тщательно протестирована перед запуском в производство, и поверх нее проще писать автоматические тесты.


Если вы используете классы Java, то часть инициализации экземпляра будет выполняться движком camunda, и есть ограничение, что должен быть общедоступный конструктор по умолчанию. Это очень ограничено, поскольку большинство практических приложений имеют зависимости и должны быть уже инициализированы до кода. Либо вам нужно сделать свои зависимости как синглтоны (чего я никогда не рекомендую), либо использовать фабрики для создания экземпляров перед кодом (что неэффективно и сложнее тестировать).

Надеюсь, это прояснит ваш вопрос.

person isuru89    schedule 26.12.2018