Flowable 6 and JUEL 2.1.2

Hi Team,

We are migrating from Activiti v5 to Flowable 6.

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?

Thanks in advance for any hints
Alexander

Hi Alex.

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.

Regards
Martin

Thanks Martin, will try it.

Hi Alex,

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.

Thanks!

Tijs

Hi Martin, Tijs

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

Thank you
Alexander

Hi Alexander,

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?

Best regards,

Tijs

Hi Tijs,

Yes, I used 6.1.0-SNAPSHOT version.

It is Nuxeo 5.6 server. http://cdn.nuxeo.com/nuxeo-5.6/nuxeo-cap-5.6-tomcat.zip
Nuxeo is based on Tomcat and uses OSGi architecture.

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?

Thanks
Alexander

Hi Alexander,

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?

Best regards,

Tijs

Thanks a lot, I see that JUEL dependency has been removed. Will check it today evening.

Hi Tijs, it works fine now. Thank you