Как интегрировать jBPM и Spring через скрипты и EL
Я использую / ожидаю следующий стек технологий:
- JSF
- шов
- jBPM
- весна
Конечно, я бы хотел, чтобы Seam получил прямой доступ к бобам Spring и сделал так, чтобы все работало нормально. Теперь я хотел бы перейти к jBPM и разработать определение концептуального процесса, которое обращается к бинам Spring для выполнения действий и принятия решений.
Чтобы способствовать разделению интересов и гарантировать, что процессы могут выполняться без Seam в пути к классам, я бы хотел решение, которое НЕ разрешает доступ ко всем управляемым компонентам Seam.
Я знаю, что Seam использует сделанный на заказ распознаватель EL, но кроме этого, с чего мне начать?
1 ответ
Возможно использовать подтип 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>
но для доступа из сценариев и действий способ заключается в том, чтобы внедрить временные переменные в экземпляр процесса, помня о том, что вам может потребоваться обойти ошибку JBPM-304, например, путем ввода типа Script и настройки связанных файлов отображения гибернации. Это внедрение должно повторяться перед каждым сигналом для каждого экземпляра процесса.
Эти методы могут использоваться для обеспечения доступа к bean-компонентам, к которым вы хотите получить доступ, но на самом деле вам не предоставляется пользовательский EL. Это может привести к серьезному взлому класса JbpmExpressionEvaluator.