1

我正在使用/期待以下技术堆栈:

  • JSF
  • 接缝
  • jBPM
  • 春天

当然,我希望 Seam 可以直接访问 Spring bean,并且可以正常工作。我现在想进入 jBPM 并开发一个概念验证流程定义,该流程定义访问 Spring bean 以执行操作和做出决策。

为了促进关注点分离并确保进程可以在类路径中没有 Seam 的情况下运行,我想要一个不允许访问所有 Seam 托管组件的解决方案。

我知道 Seam 使用定制的 EL 解析器,但除此之外,我从哪里开始?

4

1 回答 1

0

可以对 VariableResolver 进行子类型化并在 jbpm.cfg.xml 文件中指定子类型。这可以允许 #{myBean} 解析为您的 bean。

<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。这种注入必须在每个流程实例的每个信号之前重复。

这些技术可用于确保您可以访问您想要访问的 bean,但并不真正为您提供自定义 EL。这将需要对 JbpmExpressionEvaluator 类进行一些严重的黑客攻击。

于 2009-03-02T18:35:42.413 回答