Call and Start Orchestration - Interview Question of the Week #1 Day 2

The Call Orchestration shape can be used to synchronously call an orchestration that is referenced in another project. This allows for reuse of common orchestration workflow patterns across BizTalk projects. When we invoke another nested orchestration synchronously with the Call Orchestration shape the enclosing orchestration waits for the nested orchestration to finish before continuing. we can specify parameters that will be passed to the nested orchestration. Parameters can be messages, variables, port references, role links, or correlation sets. Passed-in port references, role links, and correlation sets all perform like self-addressed envelopes: they supply the nested orchestration information it can use to send information back to the enclosing orchestration.
BizTalk assigns one thread for every orchestration; even if you are using parallel shape inside your orchestration!

When you use Call Orchestration shape vs Start Orchestration shape?
The way BizTalk handles messages internally is different when it comes to calling or starting orchestrations.
Calling an Orhestration will use the same thread to run another orchestration while using Start Orchestration will create new thread to run the started orchestration.
A Call Orchestration returns the control back to the caller. A Start Ochestration shape starts the orchestration in a non-deterministic way.
As a conclusion, Calling an Orchestration will be synchronous operation where the caller waits for a response, while Start Orchestration is asynchronous operation.

Call Orchestraion

  • Will reduce latency as call orchestration doesn’t go via messagebox
  • Possible to pass all types of parameters
  • Call shape will tightly bound orchestration

Start Orchestration

  • Allows to execute orchestraions asynchrounsly
  • Will increase latency as strat orchestration call go via messagebox
  • Possible to pass all types of parameters. No return param is supported
  • Start shape will tightly bound orchestration

Short hint: If you call an orchestration from another project you have to set the Type Modifier Property to public. Otherwise the orchestration will not show up in the dialog where to choose the orchestration you call.

Additional Resources:
How to Configure the Call Orchestration Shape
How to Configure the Start Orchestration Shape

No comments:

Post a Comment