Tuesday, April 5, 2011

Hierarchy Extraction

Blue is the color of champions and so is the color of siebel. After a month of ups and down services return to normal as cup is brought home,so as me. Time to talk some business now. There are numerous instances in the integration where extracting a hierarchy or reading a property set is required. This could be accomplished in multiple ways. Here we will discuss the plus and minus of different services which can be utilized to perform desired task.
Lets consider an Integration Object with a simple hierarchy with Service Request being parent and Activity being child. Our main aim is to extract SR Number and Activity Id in the hierarchy. Potentially there could be multiple ways to extract property set but here we will discuss most commonly used business services.




1 - Workflow Utilities(My favourite) - This is one of the most powerful business service given by siebel and can do wonders. After using in n number of scenarios still i am not sure what all things this gem can do. "Echo" method can be used to extract any sub-hierarchy or read any property set from hierarchy.

Usage: In the workflow We have extracted siebel message in the SiebelMessage hierarchy. The Input to this business service will be the hierarchy and in the output argument we need to define the exact hierarchy path of SR Number, i.e. "SiebelMessage.ListOfService.Service Request.SR Number"

Input Arguments



Output Arguments

Advantage:
  • Ease of use.
  • Allows Multiple extraction of property set in one go.
  • In case we have multiple child and we have defined any property set to extract it fetches the first child instance in the hierarchy. Consider if we have to extract Activity Id in the above hierarchy and there are two activities for the SR then it will fetch the activity id of first instance. The hierarchy path defined will be "SiebelMessage.ListOfService.Service Request.ListOfAction.Action.Activity Id".

Disadvantage:
  • It allows only 75 characters in the output argument as a result sub-hierarchy extraction is required to reach destination property set.
2 - PRM ANI Utility Service - This is one of the most commonly used business service for hierarchy extraction."GetProperty" is the method which does the trick.

Usage: It takes the IO hierarchy structure and Property Name as input and returns value as output.

Input Arguments


Output Arguments


Advantage:
  • Easy to use as IO hierarchy is clearly defined in system
Disadvantage:
  • It returns only one property value per step. We can't read multiple property sets in one go.
  • If there are multiple child record instances under same tag name in hierarchy then this BS throws an error.
3 - FINS Industry XML Query Service - This is one of the lesser documented BS but can be effectively used for XML hierarchy extraction. We need to have XML hierarchy in place before we extract any property set. The real charm lies in the XPath notation which is used to specify the location in XML hierarchy.

Usage: It takes input as XML hierarchy along with the input arguments defined which needs to be extracted.

Input Arguments


Output Arguments


Advantage:
  • It takes destination property location as XPath notation, which gives more flexibility in defining the destination and thus character limitation constraint could be avoided.
  • Allows Multiple extraction of property set in one go.

Disadvantage:
  • It fails to fetch value in repeated instances of IC's, i.e. in case of multiple child instances with same tag name.
So, we have a choice which one to avoid based on our requirements. Comments are welcome here if anybody can add more to the advantages/disadvantages list.

Bleed Blue!!

2 comments:

Reham Ashor said...

Hi,

Thanks for this post,

But I have one question, as per the post, the above three business service can't search in multiple childs.
So
if I want to query multiple record, what is the business service that I can use or how I can do this to search in multiple childs?

Siebelish said...

Hello,
Unfortunately i am not aware of any out of the box BS to traverse multiple childs. Only way is to write your custom BS or XSLT to parse input message.

Regards,
-Rahul-