1. Explain how to Promote Property inside an Orchestration?
The Orchestration can not promote the properties to message context by default like pipelines can do by using the msg.Context.Promote() method. Inside Orchestration one has to create a correlation set and intialize that correlation set while publishing the message. Then the BizTalk Engine will promote the property to the message context.
2. Tell us can we prevent Orchestration from entering a suspended state?
Any exception which is not caught within the exception handlers of the orchestration causes the orchestration instance to be moved to the Suspended state. By applying the appropriate error handling in an orchestration it can be prevented entering the Suspended state.
3. Please explain design patterns in Orchestration?
One of the best practices when implementing orchestrations is to use orchestration patterns when possible. These patterns are basically design pattern, which is a general reusable solution to a commonly occurring problem within a given context of BizTalk orchestration. This article will provide some useful resource links to aid you in using patterns when implementing an orchestration.
4. Tell us what is relation between Orchestration instance and correlation?
Correlation is the process of matching an incoming message with the appropriate instance of an Orchestration.
5. Tell me what is correlation type?
A correlation type is a list of properties that eventually populates with values for use in routing messages.
6. Do you know what is binding?
The term binding refers to the configuration of orchestration ports in order to control the creation of subscriptions and/or promoted properties. Binding is used to control how messages will be routed to or from orchestration ports by the subscription mechanism.
7. Explain me what's the main difference between Call and Start Orchestration?
Calling an orchestration will use the same thread to run another orchestration while using Start Orchestration will create a new thread to run the started orchestration.
A Call Orchestration returns the control back to the caller. A Start Orchestration 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.
8. Tell us pro's and Con's of Direct binding?
Pro's:
☛ Loose coupling
☛ Not bounded to any physical port (explicitly)
Con's:
☛ Can lead to subscribing to messages published by another publisher
9. Do you know what is the difference between written property and promoted property?
Promoted properties can be used as criteria in message routing while written properties cannot. Property field is a Promoted Property in the context. Distinguished field is a Written property in the context.
10. Please explain when a persistence point occurs at the Orchestration level?
The engine will save the state of an orchestration in the following circumstances:
☛ Send Shape (after a message is sent)
☛ Start Orchestration Shape
☛ Suspend Shape
☛ End of a Transactional Scope (atomic or long-running)
☛ An Orchestration Debugger breakpoint is hit
☛ Orchestration Engine determines that the instance needs to be dehydrated
☛ When the Orchestration Engine is shut down; through the controlled shutdown of the host or abnormal circumstances. The engine tries to persist but if that fails, the Orchestration instance will resume from the last successful persistence point.
11. Do you know how to route binary data?
To route binary data you can use pass-through pipelines on the receive location and send port. BizTalk will route (copy) the data from the source (receive location) to the destination (send port). If you want to route the binary data based on some information in the binary data then you write a custom Disassembler to promote the properties you need from the incoming message to route the binary data.
12. Tell us what are the different types of transactions available for orchestration?
Unlike traditional programming, BizTalk Server supports two distinct types of transactions: atomic and long-running.
13. Tell me when is property "Synchronized=true" used?
When a variable is shared across the branches of parallel shape.
It is the only exception to the requirement of types for variables having to be serializable and treated as special case.
15. Do you know which language does expression shape support?
Expression shape allows for writing XLANG/S statements that provide C# -like coding capabilities.
16. Tell me can an Atomic scope can have an exception handler of their own?
No, it can only have a Compensation Block.
17. Tell me how to load message in a variable?
It can be done using the LoadXml method. Say xmlDoc is a variable then following is done to load employee message.
xmlDoc.LoadXml("<Employee><first_name>Jhon</first_name><last_name>Smith</last_name></Employee>");
18. Tell me what is the maximum number of properties that can be used in correlation set?
The correlation set can have a maximum of three properties used for correlation on the receive shapes.
19. Do you know how are messages created in an orchestration?
You construct a message any time that you introduce a message into your orchestration, either by receiving it or by assigning values to a message variable. There are several ways to create a new instance of a message in an orchestration
20. Tell us to which scope compensation block can be added?
A scope configured as Atomic or Long running can have compensation blocks added, but scopes that are configured with no Transaction type cannot.
21. Explain me where is BTS.SPID and BTS.ReceivePortID used?
It is used in Specify Later port binding option. In this model the orchestration ports are bound to messaging ports using BTS.SPID,BTS.ReceivePortID or other related properties.
22. Do you know what are Scopes used for?
Scopes are used for following reasons:
☛ To configure transaction (long running and atomic)
☛ To handle exceptions
☛ To trigger compensating logic
23. Tell me does BizTalk support synchronous communication?
BizTalk Server architecture is asynchronous for scalability reasons. However, the architecture of the BizTalk Messaging Engine enables exposing a synchronous message exchange pattern on top of these asynchronous exchanges. To do this, the engine handles the complex task of correlating the request and response messages across a scaled-out architecture by linking together a number of asynchronous message exchanges to expose a synchronous interface.
24. Tell us is it possible to use IF Then Else logic inside the Message Assignment?
No, It is not possible to use the If Then Else Logic inside the message Assignment. It has to be used in the expression shape.
25. Tell me is it possible to get an exception object from General Exception?
No. General exception in BizTalk is similar to writing a Try-Catch block but without the exception object thus not possible to get the exception object.
26. Explain me what is the maximum number of branches that can be used in a parallel shape?
There are no limitations on the number of branches which can be used in a parallel shape.
27. Tell us is it possible: Orchestration A calls another Orchestration B and vice versa?
No it is not, since it forms cyclic dependency.
28. Do you know what is message metadata?
The message metadata is called Context Properties and on receiving the message, both the adapter and the pipeline will add information to the context.
29. Tell us what is the lifecycle of a Message in BizTalk server?
A message is received through a receive location defined in a given receive port. This message is processed by the pipeline associated with the receive location, and if there are any inbound maps associated with the receive port they are executed. The resulting message is then published to the MessageBox database. The MessageBox evaluates active subscriptions and routes the message to those orchestrations, and send ports with matching subscriptions. Orchestrations may process the message and publish messages through the MessageBox to a send port where it is pushed out to its final destination.
30. Tell me is it possible to skip any particular orchestration from getting compiled?
Yes it is possible. You can do so by setting "Build Action" property of that orchestration to "None". By default value of this property is "BtsCompile".
31. Explain me which shapes are used to implement "AND" and "OR" situation in Orchestration?
Parallel Action shape is used for a AND situation whereas Listen shape is used for OR situation.
32. Do you know when is convoy used?
The convoy is used to receive multiple messages in sequence or parallel to achieve a goal/result.
33. Tell me what is persistence point?
At various points within a running orchestration the state can persist.
34. Tell me can recursion be achieved in Orchestration?
No recursion can not be achieved in Orchestration
35. Tell me can we use message metadata in Orchestration?
Yes we can use message metadata in Orchestration