The Camunda BPMN process engine supports two ways of executing service tasks:
- Internal Service tasks: Synchronous invocation of a service (locally or remotely)
- External Service tasks: Providing a unit of work in a list that can be polled by (external) workers
External (service) tasks work in a way that the process engine publishes a unit of work to a worker to fetch and complete. This pattern provide some very interesting advantages:
- Temporal Decoupling: No need for Message Queues.
- Polyglot Architectures: Easier to call Camunda REST API from a .NET client than expose a REST API on top of your .NET service so that Camunda might call it.
- Better Scaling Patterns: Easier to start/stop workers that call Camunda REST API than set up a load balancing for your workers (services).
- Connect Cloud BPM to On Premise Services: Easier to call Camunda REST API from behind a firewall than let Camunda BPM call your service behind the firewall.
- Avoid Timeouts: Easier to handle long-running services since you do not need to implement an asynchronous service call / wait for callback.
In this webinar, we look at some practical examples that will help you to apply the external task pattern in your own process applications, if appropriate.