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

How to activate a scripting engine in activiti?

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

<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 环境中 运行ning,使用以下包:

可能缺少包裹?

这是 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 的 class。

环境:
Java: jdk1.8.0_92 64 位
Spring: 4.2.5
活动:5.21.0

我找到了解决方案。

创建文件META-INF/javax.script.ScriptEngineFactory 在 spring 流程引擎配置所在的包中。

以下行启用 juel 脚本:

org.activiti.engine.impl.scripting.JuelScriptEngineFactory