如何在activiti中激活脚本引擎?

时间:2016-06-15 12:39:09

标签: java spring osgi activiti

我正在尝试在我的工作流程中运行一个简短的脚本,这是taskListener上的userTask

<activiti:taskListener event="create" class="org.activiti.engine.impl.bpmn.listener.ScriptTaskListener" >
  <activiti:field name="script" stringValue="${state='CREATED'}">
  </activiti:field>
  <activiti:field name="language" stringValue="JavaScript" />
</activiti:taskListener>

我的环境似乎缺少脚本引擎,但这是我得到的错误:

org.activiti.engine.ActivitiException: Can't find scripting engine for 'JavaScript'
    at org.activiti.engine.impl.scripting.ScriptingEngines.getEngineByName(ScriptingEngines.java:124)
    at org.activiti.engine.impl.scripting.ScriptingEngines.evaluate(ScriptingEngines.java:85)
    at org.activiti.engine.impl.scripting.ScriptingEngines.evaluate(ScriptingEngines.java:73)
    at org.activiti.engine.impl.bpmn.listener.ScriptTaskListener.notify(ScriptTaskListener.java:43)
    at org.activiti.engine.impl.delegate.TaskListenerInvocation.invoke(TaskListenerInvocation.java:34)
    at org.activiti.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:37)
    at org.activiti.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocation(DefaultDelegateInterceptor.java:25)
    at org.activiti.engine.impl.bpmn.helper.ClassDelegate.notify(ClassDelegate.java:121)
    ... 192 common frames omitted

使用默认引擎juel也会引发相同的异常 Activiti使用以下捆绑包在OSGi / Spring环境中运行:

  • Activiti的-BPMN-变换器5.21.0.jar
  • Activiti的-BPMN-模型5.21.0.jar
  • Activiti的-CXF-5.21.0.jar
  • Activiti的引擎-5.21.0.jar
  • Activiti的图像 - 发电机 - 5.21.0.jar
  • Activiti的过程验证-5.21.0.jar
  • 的Activiti - 弹簧 - 5.21.0.jar

可能是一个包丢失了?

这是Spring进程引擎配置:

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
    <property name="dataSource" ref="dataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="databaseSchemaUpdate" value="true" />
    <property name="jobExecutorActivate" value="true" />
    <property name="history" value="full" />
</bean>

我可能需要添加另一个属性scriptingEngines,但我必须将其设置为value?在我的环境中,我没有任何扩展ScriptingEngines的类。

环境:
Java:jdk1.8.0_92 64位
春天:4.2.5
Activiti:5.21.0

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

创建文件META-INF/javax.script.ScriptEngineFactory 在弹簧处理引擎配置所在的捆绑包中。

以下行启用juel脚本编写:

org.activiti.engine.impl.scripting.JuelScriptEngineFactory