如何通过脚本和EL集成jBPM和Spring
-
06-09-2019 - |
题
我正在使用/预期以下技术堆栈:
- 日本科学基金会
- 接缝
- jBPM
- 春天
当然,我希望 Seam 能够直接访问 Spring beans,并且已经完成了这么多工作。我现在想进入 jBPM 并开发一个概念验证流程定义,该定义访问 Spring bean 来执行操作并做出决策。
为了促进关注点分离并确保进程可以在类路径中没有 Seam 的情况下运行,我想要一个不允许访问所有 Seam 托管组件的解决方案。
我知道 Seam 使用定制的 EL 解析器,但除此之外,我该从哪里开始呢?
解决方案
可以对 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 类进行一些认真的修改。
不隶属于 StackOverflow