Как интегрировать jBPM и Spring через скрипты и EL
-
06-09-2019 - |
Вопрос
Я использую/ожидаю следующий стек технологий:
- JSF
- Шов
- jBPM
- Весна
Конечно, мне бы хотелось, чтобы Seam имел прямой доступ к bean-компонентам Spring и чтобы все это работало нормально.Теперь я хотел бы перейти к jBPM и разработать доказательство определения концептуального процесса, которое обращается к bean-компонентам Spring для выполнения действий и принятия решений.
Чтобы обеспечить разделение задач и гарантировать, что процессы могут выполняться без Seam в пути к классам, мне нужно решение, которое НЕ разрешает доступ ко всем управляемым компонентам Seam.
Я знаю, что компания Seam использует специальный преобразователь EL, но с чего мне начать, кроме этого?
Решение
Можно создать подтип VariableResolver и указать свой подтип в файле jbpm.cfg.xml.Это может позволить #{myBean} разрешить ваш компонент.
<jbpm-configuration>
<bean name="jbpm.variable.resolver" class="com.your.jbpm.VariableResolver" singleton="true" >
<field name="backingVariableResolver"><ref bean="jbpm.variable.backingResolver" /></field>
</bean>
<bean name="jbpm.variable.backingResolver" class="org.jbpm.jpdl.el.impl.JbpmVariableResolver" singleton="true" />
</jbpm-configuration>
но для доступа из скриптов и действий можно внедрить переходные переменные в экземпляр процесса, имея в виду, что вам может потребоваться обойти ошибку ДЖБПМ-304, напримервведите Script и настройте связанные файлы сопоставления спящего режима.Эту инъекцию необходимо повторять перед каждым сигналом для каждого экземпляра процесса.
Эти методы можно использовать, чтобы гарантировать, что у вас есть доступ к нужным компонентам, но на самом деле они не дают вам специального EL.Это потребует серьёзного взлома класса JbpmExpressionEvaluator.