-
Feature Request
-
Resolution: Unresolved
-
L3 - Default
-
None
-
None
-
None
User Story (Required on creation):
As a user, in modeling resources (e.g., on sequence flows), I can define expressions that call methods on a bean.
Functional Requirements (Required before implementation):
E.g., in a sequence flow camunda:expression attribute, I can use the following expression:
${myService.checkCondition('foo')}
Technical Requirements (Required before implementation):
Quarkus ArC does not support the API method BeanManager#getELResolver. Replace it with something else.
Limitations of Scope (Optional):
Hints (Optional):
Right now, only a simple JUEL expression referencing a delegate bean directly can be resolved: ${myDelegateBean}. Referencing a delegate bean via a more complex expression is not possible ${myBean.getDelegateBean()} due to missing support in Quarkus ArC of BeanManager#getELResolver. Let's evaluate if and how we can fix this.
Solution ideas
- Shade de.odysseus.juel into the Quarkus extension like we already do it in the legacy JUEL FEEL Engine.
- Or even cleaner: create a shaded jar containing de.odysseus.juel the DMN legacy FEEL Engine, as well as Quarkus, uses.
- Identify Quarkus environment by catching the UnsupportedOperationException when BeanManager#getELResolver is called in CdiResolver#getWrappedResolver.
- Register the javax.el.BeanELResolver instead.
- Tries to create a ExpressionFactory by looking up the SPI.
- Register an ExpressionFactory SPI in the Qurkus extension pointing to de.odysseus.el.ExpressionFactoryImpl.
- See prototypical implementation (shading is missing): fix-quarkus-el-support.patch.txt
- Wait until Quarkus supports BeanManager#getELResolver