How to use Camunda in legacy system?

Hi all,

I have one concern about system architecture when putting Camunda BPM into a Legacy System. That is should I build one service layer middleware between Camunda and Legacy system. That middleware will take care of every incoming request to Camunda, then transfer to Camunda before responding to client. We can do a lot with the middle layer which is difficult to implement in the Camunda project:

  • Authentication and Authorization
  • Logging with a specific format
  • Custom API (like only one API to get list task and some business data for UI)
  • Custom response data
    How do you think about this approach?

Hi @DucAnh, Welcome to the forum :partying_face:

Camunda can be easily pluggable into the either legacy monolith application or microservice/micronaut frameworks also.

You can find various formats of camunda packaging and you can download it according to your requirement: https://docs.camunda.org/manual/7.13/introduction/downloading-camunda/

And you can find various deployment models: https://docs.camunda.org/manual/7.13/introduction/architecture/#embedded-process-engine

For rest api: https://docs.camunda.org/manual/7.13/reference/rest/overview/authentication/

Identity service: https://docs.camunda.org/manual/7.13/user-guide/process-engine/identity-service/

https://docs.camunda.org/manual/latest/user-guide/logging/

Register the custom api:

https://docs.camunda.org/manual/7.13/reference/rest/overview/embeddability/#required-steps

@ApplicationPath("/")
public class MyApplication extends Application {
  @Override
  public Set<Class<?>> getClasses() {
    Set<Class<?>> classes = new HashSet<Class<?>>();
    // add your own custom classes
    classes.add(CustomController.class);
    ...
    // add all camunda engine rest resources (or just add those that you actually need)
    classes.addAll(CamundaRestResources.getResourceClasses());

    // mandatory
    classes.addAll(CamundaRestResources.getConfigurationClasses());

    return classes;
  }
}

Not required to implement additional service layer to integrate with camunda. Either you can embed the camunda with your legacy application itself (can leverage the camunda built-in java api) or else you can externalize as standalone/container managed service (built-in java api or rest api).

2 Likes

Thank @Aravindhrs
Very clearly and exactly what I need.
Thank so much.