Friday, August 23, 2013

Interview questions on Orchestration

This post intends to cover the answers to orchestration related questions, which a BizTalk developer can face during an interview.

Questions and answers:

1.     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 (see MSDN Constructing Messages Jump ). There are several ways to create a new instance of a message in an orchestration, see Michael Stephenson blog post Message Construction in an Orchestration Jump 

2.     Where is information about promoted properties stored?

The information about the promoted properties is extracted and stored in the bts_DocumentSpec table in the Management database.

3.     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.

4.     Can we use message metadata in Orchestration?


5.     How does Orchestration subscribes to messages?

In Orchestration, the first Receive shape is responsible for creating a subscription. Following two properties are involved in it,

o    Message : This tells what message this Orchestration is subscribing to
o    Activate : This tells to consume the message when found in a MessageBox

6.     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. See TechNet Wiki articles BizTalk Server 2010: Orchestration Patterns and BizTalk: Enterprise Integration Patterns

7.     Types of messages?

Two types of message 

o    Typed message : A message created in Orchestration is bound to the schema
o    Untyped message : A message is bound to System.Xml.XmlDocument instead of the schema.

8.     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. 


9.     Can recursion be achieved in Orchestration?


10.   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.

11.   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.

12.   Is it necessary for all .Net components being called from orchestration to be serializable? 

Yes it is necessary (good practice) for all .Net components being called to be serializable. If not then Atomic scope is to be used which has its own limits.

13.   Is it possible : Orchestration A calls another Orchestration B and vice versa?

No it is not, since it forms cyclic dependency.

14.   What is XLANG and where it is used?

XLANG/s can be viewed as a messaging language with some of the expression capabilities of C#. However, code is not portable between XLANG/s and C#. The language is used for orchestrations. XLANG/s statements generally fall into one of two categories: simple statements that act on their own, such as receive or send, and complex statements that contain or group either simple statements or other complex statements, such as scopeparallel, and listen. The semantics embodied in XLANG/s are a reflection of those defined in the Business Process Execution Language for Web Services (BPEL4WS) specification published by Microsoft, IBM, and BEA for the definition of business process semantics. See MSDN XLANG/s Language Jump 

15.   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. 

16.   What is persistence point?

At various points within a running orchestration the state can persist. See MSDN Persistence and the Orchestration Engine Jump .

17.   XMLDocument is non-serializable still it's called without atomic scope with no error, why?

It is the only exception to the requirement of types for variables having to be serializable and treated as special case. See more here Jump 

18.   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.   Can an Atomic scope can have an exception handler of their own?

No, it can only have a Compensation Block.

20.   Pro's and Con's of Direct binding? 


a.     Loose coupling  
b.     Not bounded to any physical port (explicitly)
c.     Can lead to subscribing to messages published by another publisher

21.   Can orchestration use components other than listed in Toolbox?

Yes. It is possible to use components like pipeline, business rule policy, .net component etc.

22.   When is convoy used?

The convoy is used to receive multiple messages in sequence or parallel to achieve a goal/result. 

23.   Is it possible to enforce Orchestration to behave in singleton way?

Yes it is possible with the help of correlation. 

24.   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. 

25.   When is property "Synchronized=true" used?

When a variable is shared across the branches of parallel shape. 

26.   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.   Which language does expression shape support?

Expression shape allows for writing XLANG/S statements that provide C# -like coding capabilities. 

28.   What is relation between Orchestration instance and correlation?

Correlation is the process of matching an incoming message with the appropriate instance of an Orchestration.  

29.   What are the ways to add properties in context?

Promoting a node to a property field means to make a node value available in the context of the message.Adapters and pipeline components write in the context. 

30.   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.

31.   What is correlation type?

A correlation type is a list of properties that eventually populates with values for use in routing messages. 

32.   What are conditional persistence points?

The Receive shape, Listen Branch and Delay shape are conditional persistence points. 

33.   What are Scopes used for?

Scopes are used for following reasons: 

 .      To configure transaction (long running and atomic)
a.     To handle exceptions
b.     To trigger compensating logic
34.   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. 

35.   Which scope can have an Exception Handling?

A scope configured with the transaction type of None or Long running  can have exception handling added but not Atomic scope.

36.   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.

37.   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. See more here Jump .

38.   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.  See more here Jump 

39.   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". 

40.   When a persistence point occurs at the Orchestration level?

The engine will save the state of an orchestration in the following circumstances:

o    Send Shape (after a message is sent)
o    Start Orchestration Shape
o    Suspend Shape
o    End of a Transactional Scope (atomic or long-running)
o    An Orchestration Debugger breakpoint is hit
o    Orchestration Engine determines that the instance needs to be dehydrated
o    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.
See more here Jump 
41.   Can persistence point occur in the Delay or Receive shape?

Yes, but only if the Orchestration Engine determines that the instance needs to be dehydrated.

42.   Is it possible to use Message Assignment shape and Transform shape individually? 

No, it is not possible, Transform and Message assignment shape must run under construct shape.

43.   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.

44.   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.

No comments:

Post a Comment