camunda-platform-7-rest-client-java icon indicating copy to clipboard operation
camunda-platform-7-rest-client-java copied to clipboard

Why is it a separate extension?

Open zambrovski opened this issue 2 years ago • 3 comments

Hey guys,

we already have an official Camunda Platform 7 extension called camunda-rest-client-spring-boot building a Java client embedded in SpringBoot. In it's core it is creating the client and in addition it wraps into the implementations of the Camunda Java API. So you might choose between a Java API provided by the generated client or Camunda Java API (Runtime Service, Task Service, etc...)

Would it make sense to unify the work on those extension into one project?

Cheers,

Simon

zambrovski avatar Jun 09 '22 16:06 zambrovski

Hi Simon (@zambrovski)

The main reason I started a separate project is that I wanted to keep it as lean as possible (to be able to easily maintain and support it). So this project is really "just" providing the OpenAPI code - and not trying to hide this behind the embedded-engine classes (like RuntimeService). I find that it is also easier for newbies to follow along if this is aligned with our REST API for Remote Engine setups.

So from my perspective, I think it is quite OK to have both projects as they simply do different things (expose OpenAPI vs. mimicking the RuntimeService but delegating to REST).

So if you agree I would close this issue - the only thing I would see for now is that we might want to add something to the readme about it?

Best Bernd

berndruecker avatar Jun 14 '22 21:06 berndruecker

Hi Bernd!

Hmm. To be honest - I don't like it.

We are currently implementing the same things twice... You probably had to deal with incompatibilities of the OpenAPI generator and some request/response patterns used in Camunda Platform 7 REST API, and we had to deal with it too...

My approach would be to create one extension producing several libraries:

  1. Pure Open API Java Client (is currently implemented twice)
  2. A starter of the Open API Java client (is implemented in this extension)
  3. A bridge between the pure Open API Java Client and Camunda Platform Java API (is implemented in our extension)
  4. A starter allowing to inject "remote" version of Camunda Platform Java API (is implemented in our extension)

This would be much more clear for the user and having the same code base, the user can just decide what library to use...

What do you think?

Cheers,

Simon

zambrovski avatar Jun 15 '22 09:06 zambrovski

But the REST API is not complete,eg.deleteCandidateUser

w-sf avatar May 17 '23 04:05 w-sf