Spring (Boot) support for Camunda External Task Client (Java)

Hi.

I started creating Spring and Spring Boot support for Camunda External Task Client (Java).

The main ideas behind:

  • Easy integrate the external task client in Spring based projects.
  • Use the Spring stuff in handlers and interceptors.
  • @EnableTaskSubscription(baseUrl = "...") to configure client.
  • @TaskSubscription(topicName = "...") to configure subscriptions/handlers.
  • Auto registration of interceptors.
  • Properties/yaml based configuration in a Spring Boot environment.

If you are interested in take a look at my hacks at github.

If there is further interest, then I have nothing against thinking about a community extension.

What do you think about that?

Cheers,

Oliver

9 Likes

This would have nothing to do with the camunda-spring-boot-starter project, right? Why not just provide the necessary parts as an additional module inside the external task java extension?
I am thinking of something like I did with camunda reactor: core for basic SE/camunda stuff, spring for preparing usage via spring and a starter module that wraps everything together and allows a bootified approach …

Like it!

Hi Jan.

IMHO: right.

The Spring part could be part of the extension because @EnableTaskSubscription(...) and @TaskSubscription(...) should reflect the builder and subscriptions possibilities. The release versions and dates may be one to one but may differ when there are “only” Spring related changes. Whereas the Spring Boot part is more dependent on Spring Boot releases or on “how to use with Spring Boot” and should/could be separated.

IMHO to decide where the parts life the main questions are:

  • Who is responsible for which part?
  • When and how to make changes and releases?
  • Is it possible to reflect answers for first questions on a multi module project?
  • What does camunda think? :wink:
2 Likes

i tried to use @EnableTaskSubscription(...) but i got ‘ExternalTaskSubscription is not an annotation type’
i m using gradle with this config
||compile “org.springframework:spring-context:5.1.6.RELEASE”|
||compile “org.projectlombok:lombok:1.16.2”|
||compile “org.camunda.bpm:camunda-external-task-client:1.1.1”|
||testCompile “org.springframework:spring-test:5.1.6.RELEASE”|
||testCompile “junit:junit:4.12”|
||testCompile “org.assertj:assertj-core:3.9.1”|
||testCompile “org.springframework:spring-expression:5.1.6.RELEASE”|
||testCompile “org.slf4j:slf4j-simple:1.7.7”|