Quarkus and camunda

I want to try using quarkus.io and camunda… is anyone here with some experience ? I tried to use spring-cdi-egine but got some errors:

15:13:58,396 ERROR [io.qua.dev.DevModeMain] Failed to start Quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 6 deployment problems:
[1] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.BusinessProcess and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.CurrentProcessInstance#businessProcess
- declared on CLASS bean [types=[org.camunda.bpm.engine.cdi.CurrentProcessInstance, java.lang.Object], qualifiers=[@Default, @Any], target=org.camunda.bpm.engine.cdi.CurrentProcessInstance]
[2] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.BusinessProcess and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.ProcessVariables#businessProcess
- declared on CLASS bean [types=[org.camunda.bpm.engine.cdi.ProcessVariables, java.lang.Object], qualifiers=[@Default, @Any], target=org.camunda.bpm.engine.cdi.ProcessVariables]
[3] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.impl.ProcessVariableLocalMap and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.ProcessVariables#processVariableLocalMap
- declared on CLASS bean [types=[org.camunda.bpm.engine.cdi.ProcessVariables, java.lang.Object], qualifiers=[@Default, @Any], target=org.camunda.bpm.engine.cdi.ProcessVariables]
[4] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.impl.ProcessVariableMap and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.ProcessVariables#processVariableMap
- declared on CLASS bean [types=[org.camunda.bpm.engine.cdi.ProcessVariables, java.lang.Object], qualifiers=[@Default, @Any], target=org.camunda.bpm.engine.cdi.ProcessVariables]
[5] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.BusinessProcess and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.impl.annotation.CompleteTaskInterceptor#businessProcess
- declared on INTERCEPTOR bean [bindings=[@CompleteTask], target=Optional[org.camunda.bpm.engine.cdi.impl.annotation.CompleteTaskInterceptor]]
[6] Unsatisfied dependency for type org.camunda.bpm.engine.cdi.BusinessProcess and qualifiers [@Default]
- java member: org.camunda.bpm.engine.cdi.impl.annotation.StartProcessInterceptor#businessProcess
- declared on INTERCEPTOR bean [bindings=[@StartProcess(value = “”)], target=Optional[org.camunda.bpm.engine.cdi.impl.annotation.StartProcessInterceptor]]

Hey cpiepel,

I also was curious if this works and tried it. Ths big issue is, that Quarkus’ CDI system is not reall CDI. It is called “ArC” and does not support the full CDI spec. This is where your exception is coming from: Quarkus does not support implicit bean discovery, but the beans in the camunda cdi module are not annotated with a supported scope. You would need to change those, and add @Dependent to them. Even after I forked the module and did so, it did not work great, as Camunda also uses the @ConversationScope, which is not supported by Quarkus ArC. You can either write your own CDI providers which will (maybe) work with Quarkus, or you can switch to another framework

I wrote a blog entry about this: https://javahippie.net/java/microprofile/quarkus/camunda/cdi/2020/02/07/camundaquarkus.html

3 Likes

That is a great summary, @javahippie; thanks for sharing your experiences!