Non-blocking process applications

Hello,

I try to wrap my mind around the concepts of non blocking programming. I hear often that this should be more efficient in the terms of the runtime; e.g. the CPU should be better utilized. Several “modern” API (e.g. Kafka and Spring’s WebFlux) state they were non blocking.

While I still have not understood all the benefits and drawbacks (frankly said, I see more drawbacks as of now), one thing that I see often is that if one wants to implement a system in a non-blocking way, all its components should be implemented this way. If some are blocking, all the efforts would be in vain.

So my question is: How does Camunda BPM support this way of programming? Has anyone tried to implement a process application in the non-blocking way?

I understand that the question is very vague because I don’t tell which part of the application should be non-blocking and what is being blocked. But let’s say I’m only interested in the API Camunda provides, i.e. Java Delegates.

Thank you for sharing your thoughts!

Hi,

In terms of non-blocking architecture, I’d suggest a good place to start is with asynchronous continuations

Another technique is to replace synchronous service calls with asynchronous service calls. This is readily achieved using the BPMN Send & Receive tasks

Another aspect to look at is external tasks

These patterns will get you a long way…

regards

Rob

Hello,

thank you for the quick response. I meant asnychronous not at the process level (I know what async points are and how to use them) but rather at the level of java code.