Как интегрировать 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.

Другие вопросы по тегам