The switch to Flowable 5 was easy in TEST and PROD (we are using Nuxeo 5.6 server).
After I did the migration to v6 (all unit tests are running fine), I tried to deploy the code to Nuxeo which is using JUEL 2.1.2 (I can not replace it as it brakes Nuxeo components), Flowable expects 2.2.7.
I see that starting from v6 JUEL has been decoupled from Flowable sources (before it was a part of it with support for method invocations and therefore it worked in our Nuxeo environment).
Is there a way to configure Flowable 6 engine to use JUEL 2.1.2 with method invocations support as it was in v5?
Try the latest Flowable 6.1.0-SNAPSHOT. Exactly for this purpose (to support backward compatibility) flowable 6.1.0-SNAPSHOT supports direct odysseus JUEL instantiation.
Like Martin said, we ran into this issue before and we think it’s solved on the current Github master. But it would be great if you can let us know if it works for you as well.
Unfortunately, I have no success. Could you tell me the exact steps I need pls?
In our PROD we have juel-impl-2.1.2.jar, I can not remove it. Also we need to support processes created with Activiti v5, some of them are still active.
Here is my pom.xml, I tried different possibilities…
<!-- Flowable (BPMN 2.0) -->
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable-spring</artifactId>
<version>${flowable.version}</version>
<exclusions> <-- here I try to exclude version 2.2.7 -->
<exclusion>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-api</artifactId>
</exclusion>
<exclusion>
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency> <!-- and simulate having 2.1.2 in the classpath -->
<groupId>de.odysseus.juel</groupId>
<artifactId>juel-impl</artifactId>
<version>2.1.2</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId>
<artifactId>flowable5-spring-compatibility</artifactId>
<version>${flowable.version}</version>
</dependency>
Also I tried META-INF/services/javax.el.ExpressionFactory with content:
de.odysseus.el.ExpressionFactoryImpl
or
org.activiti.engine.impl.juel.ExpressionFactoryImpl
and el.properties in calsspath with content:
javax.el.methodInvocations=true
javax.el.varArgs=true
Did you test with the master version (6.1.0-SNAPSHOT) ?
Can you please explain what you mean with “in our PROD we have juel-impl-2.1.2.jar”? Is it in the same WAR file? Or something different?
Which servlet container / application server are you using?
We deploy a set of OSGi modules (jar without packaged dependencies) for our application.
All OSGi modules should be placed in nuxeo-cap-5.6-tomcat\nxserver\bundles while all libraries should be in nuxeo-cap-5.6-tomcat\nxserver\lib (here we have juel-impl-2.1.2.jar which is coming with Nuxeo).
In v5 we copied all Activiti libs and deps to nuxeo-cap-5.6-tomcat\nxserver\lib. v5 does not require juel as I understand, it uses a copy of it inside in different package.
With v6 there is a dependency to juel 2.2.7. If I copy juel 2.2.7 to Nuxeo lib, I have a conflict.
If I use juel 2.1.2 I am missing expressions with methods.
How to say Flowable not to use juel 2.2.7 but support expressions with methods like it was in v5?
We’ve concluded that the JUEL dependency brings in some cases where you will run into issues due to classloading, different JUEL versions etc. So we’ve included the JUEL classes in the Flowable Engine (flowable-engine-common) again, similar to how it worked in Flowable 5. Could you check with the current Github master version if it works ok for you now?