Josh Wulf: Here is the complete round-trip in one place:
- Workflow instance is started via
- BPMN flow enters task node.
- Zeebe worker fetches job for this task-type from the engine, and constructs request, appending the Zeebe Job Id for eventual correlation at completion.
- Zeebe worker publishes message to the appropriate RabbitMQ req/command channel.
- Remote service/subscriber picks up relevant message from RabbitMQ req/command channel and processes request.
- Remote service publishes response to RabbitMQ res channel.
- RabbitMQ worker picks up response (which has Zeebe Job Id for correlation) and completes job in Zeebe (“Zeebe fulfiller”). Optionally, publish a message with a correlation value to model the service return state in your BPMN using event-based gateways. Use a standardised pattern for this to keep the adapter layer generic.
- Zeebe engine moves on to next BPMN node.
- Repeat from step 2 until done.
Note: This post was generated by Slack Archivist from a conversation in the Zeebe Slack, a source of valuable discussions on Zeebe (get an invite). Someone in the Slack thought this was worth sharing!
If this post answered a question for you, hit the Like button - we use that to assess which posts to put into docs.