How to achieve parallel processing in BizTalk Orchestration
November 12, 2015 Leave a comment
Problem
The requirement is very straight , I need to start/execute two sub processes or BizTalk Orchestrations in parallel. Then wait for the response from each orchestration, and then proceed to end. If there is a sequence diagram it would be something
Solution
The first thing which came into my mind is using parallel shape in BizTalk , but they do not start or execute two processes in parallel , Its a common mistake, there is a blog post The parallel shape DOES NOT give you concurrent parallel processing – a common mistake.
Also there is a very good blog post How Parallel Shape works , this is a very good read and explained in much detail about execution of parallel shape.
The solution was to use parallel shape to start two Orchestrations at same time and use ports to pass the response back from the child orchestrations back to the main orchestration.
Using parallel shape with self correlating ports and start orchestration
In Summary
In summary the solution looks like below
- Main Orchestration Uses a parallel shape to starts two sub orchestrations
- Main orchestration has two ports for each sub orchestrations to pass back the response. The Post gets passed as parameter in start orchestration shape
- the port has following setting
- In summary the main orchestration looks like below
- I have used some trace entries in both sub orchestrations so when they starts following comes in the trace
both the sub process gets started almost same timestamp .
Hope this helps to someone.
There is more to read