Skip to Content

Recent forum posts on Receiver Determination and XPATH, if you might have noticed have opened up more options for XI developers to ponder on. This weblog will look into some ‘enhancements’ we can do to the XPATH expressions that we use in the condition editor during Receiver Determination.   Lets first start with one of the recent Re: Conditions in  Xpath (Receiver determination).

To acheive such a condition we could actually go in and change the XPATH expression to what we choose, a special thanks to Stefan Grube who suggested the same. 

Lets explore those options. Say I have a Message Type as shown below;


image

Take the query in the post. Simulating the same in accordance with the Message Type we have defined, lets say we need to check the following condition in the Header segment; (field1 = “100” OR field1 = “200” OR field1 = “300”) AND (field3 = “AA” OR field3 = “BB” OR field3 = “CC”) We can go and write our own XPATH expression to acheive the above condition.

Refer the below screenshot;


image

As suggested by Stefan in the post, we can write a whole XPATH expression in one line and use the EX operator for this purpose. The important thing to consider is the Parent node

In our case the parent node is /p1:MT_Pickfile/Header and moving forward our expression would be  /p1:MT_Pickfile/Header[(field1 = “100” or field1 = “200” or field1 = “300”) and (field3 = “AA” or field3 = “BB” or field3 = “CC”)]

Note : All the operators would be in lower case. For more details visit this link for a list of XPATH operators. Now in case we have a condition as follows, (field3 = “100” or field3 = “200” or field3 = “300”)and (field5 = “AA” or field5 = “BB” or field5 = “CC”) where field3 is from Header and field5 is from Body.

Here our expression would be; /p1:MT_Pickfile[(Header/field3 = “100” or Header/field3 = “200” or Header/field3 = “300” ) and (Body/field5 = “AA” or Body/field5 = “BB” or Body/field5 = “CC”)]Note : It is not possible to have any operator like ‘and’, ‘or’ etc outside the brackets [ ]. 

We can even involve XPATH functions in our expression.  Let me illustrate this with an example. Suppose I need to check if the sum of field3 in Body (0 – Unbounded) is greater than 10000 and then route it to a different receiver, we can use the XPATH function sum() in our expression as follows;

/p1:MT_Pickfile/Body[sum(field3) > 10000] and then use the EX operator.

image

Similarly we could use various such XPATH functions like compare(), substring(), string-length() etc according to the needs of design. 

On a second thought we could even change the scenario in this XPath to show the path (Multiple Receivers) and pull out the BPM. Well that’s for you to try out !!!! 🙂 

Further References:  Weblogs on Receiver Determination / XPATH :


1. XPath to show the path (Multiple Receivers)

2. Illustration of Enhanced Receiver Determination – SP16

To report this post you need to login first.

3 Comments

You must be Logged on to comment or reply to a post.

  1. Kavita Laddha
    Hi Shabz,

    Once again you have presented contents in easily accessable and readable way.

    Keep Blogging

    -Kavita

    (0) 
    1. Nagendra Krishna
      Hi Vijay,

      Where I can create expression for XPATH mentioned in your blog. I am bit confused in how to put this condition in IR?!.

      Please suggest me how to get into screenshot displayed in your blog.

      Best Regards,
      Nagendra Krishna

      (0) 

Leave a Reply