我正在尝试在我的工作流程中运行一个简短的脚本,这是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环境中运行:
可能是一个包丢失了?
这是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
答案 0 :(得分:0)
我找到了解决方案。
创建文件META-INF/javax.script.ScriptEngineFactory
在弹簧处理引擎配置所在的捆绑包中。
以下行启用juel
脚本编写:
org.activiti.engine.impl.scripting.JuelScriptEngineFactory