Integration with external applications

Hi everyone. I recently found out about workflow engines. I’ve studied JBPM, Activiti, imixs workflows, and decided to go with Camunda as it has great documentation, features, and community.

We want to integrate Camunnda with our other(external) applications. now the thing I wanted to know is what are the best ways to do that other than External service task. I know about external service tasks and I’ve tried it by building a simple app and workers in nodejs. I was just wondering that what are the other ways to do that?

P.S
Most of our apps are built in nodejs and some in python. I am a full-stack dev who hasn’t worked in Java. so I would prefer the solutions that don’t require Java.

Any help would be greatly appreciated :slight_smile:

Thanks in advance.

Hi @maavuz,

Awesome :slight_smile:

There are generally two approaches:

  1. The engine creates tasks that are polled by the external application (=> external task pattern)
  2. The engine calls the service directly, e.g. via a REST API

The second approach requires executing custom code in the context of the process engine, i.e. it must run in the engine’s JVM. In the Java world, people write JavaDelegate implementations that they reference from their process, see for example [1]. If you want to avoid coding Java, you can also express this logic in a scripting language that can be executed by the JVM, e.g. in Python using Jython. This script can be part of the process model, so no extra deployment artifact is needed. See [2] for details.

All that said, I recommend the external task approach as it keeps the process engine and worker decoupled. For example, this avoids failure scenarios that may be hard to understand if you are not familiar with Java application servers.

Cheers,
Thorben

[1] https://docs.camunda.org/manual/7.9/reference/bpmn20/tasks/service-task/#calling-java-code
[2] https://docs.camunda.org/manual/7.9/user-guide/process-engine/scripting/

3 Likes

Thank you @thorben. that was very helpful. I will check the reference links and will get back if i have more questions :slight_smile: