Как совместно используемый механизм ищет необходимые ресурсы для вызова шага процесса?
Я использую общий процессный механизм в WebSphere и хочу понять, как этот механизм ищет необходимые ресурсы (пользовательский код, поставляемый с моим приложением процесса) для вызова шага процесса. Применяется ли переключение контекста потока?
1 ответ
Механизм общего процесса может использоваться несколькими приложениями, одним из которых является веб-приложение Camunda.
Всякий раз, когда механизм процесса "что-то делает" в экземпляре процесса, например, выполняет задачу службы, он выполняет переключение контекста потока. Это переключение контекста потока выполняется для приложения, которое развернуло BPMN-процесс, выполняемый механизмом в данный момент. Это необходимо для того, чтобы механизм процесса мог использовать ресурсы, локально доступные в этом приложении.
Примеры для этих видов ресурсов:
- Загрузчик классов приложения для создания экземпляров Java-делегатов.
- CDI Bean Manager приложения, чтобы иметь возможность вызывать Bean CDI.
Как это "Thread Context Switch" работает технически?
Процессор выполняет метод обратного вызова на EJB, который должен быть включен в приложение. Вот почему вы включаете camunda-ejb-client.jar. Соответствующая информация: механизм процессов вызывает локальный бизнес-интерфейс этого EJB-компонента.
В результате переключение контекста потока выполняется с семантикой локального вызова EJB. Все, что Websphere создает для локального вызова EJB, будет работать, а все, что Websphere не устанавливает для локального вызова EJB, не будет работать.
Поведение точно такое же, как если бы вы поместили код из ваших Java-делегатов в EJB с локальным бизнес-интерфейсом и вызвали его из другого приложения.