Skip to Content

Many Architects , across organizations using PI (dual stack), tend to be very discouraging of using ccBPM in integration scenarios. They are happy to go to any extend in recommending workarounds so that ccBPM based designs are negated. This skepticism had prompted me to write the blog ‘Why are most skeptic about ccBPM and its usage in PI?’.

One of the points emphasized in the blog is around proper exception handling. Exception handling is key to any program, application or even a process. So as one moves from the traditional BPEL based ccBPM Integration scenario to BPMN based Integration centric processes, exception handling will continue to be the key. In this blog, we will focus on these aspects and hopefully for consultants who are migrating from PI dual stack to Process Orchestration will provide the ease of adoption.

Note: SAP Process Orchestration Details – Release NW731 SP 10

The Scenario:

For simplicity sake, the scenario we will use follows the below processing logic;

1. Read an XML file from a FTP server which has the input fields as FName, LName and Age.

2. If Age is Greater than 70, then perform a simple mapping (modeled inside BPM itself) of setting the FName as the FullName of the output file.

3. If Age is Less than 70, then call a PI mapping (modeled inside ESR) which will concatenate FName and LName into FullName of the output file.

The Input File Structure;

dt_in_18nov.JPG

The Output File Structure;

dt_out_18nov.JPG

The scenario will be modeled as below;

exep1.JPG

Now lets make things interesting.

The automated activity PI_Mapping in the above Process Model is making a call from the BPM engine into PI and executing a mapping that was created in ESR.

The mapping is a very simple mapping as described in the below screenshot;

mapping_18nov.JPG

Now, in a real time scenario, one of the common exception to be handled is of the mapping failing on execution. To make our Process Model efficient, lets introduce an exception handler so that in case of the message mapping failing in PI, we can take appropriate actions. In our case, we will catch the exception and then write the exception to an Exception Output File.


Lets assume that the Exception file is of the below format;


dt_outexp_18nov.JPG

How to introduce Exception Handling?

In our scenario, we want to handle exceptions for the PI mapping step. So in the Process Model, go to the Properties of the PI_Mapping automated activity. In the tab Boundary Events, add an event of the type TechnicalError.

addboundaryevent.JPG

Now we will perform an Output mapping for the newly created Boundary Event. You will find a standard data object ‘parameters’ that will hold runtime data related to an exception. We will use two of the fields from this object (logId and rootErrormessage) and map it to the Data object of the exception file.

addboundaryevent2.JPG

We will now create a final automated activity to write the details of the exception to the Output Exception File to an FTP server. The final Process Model will be as below;

addboundaryeventfinal.JPG

Build and Deploy the Process.

Now to ensure that the Exception handling is working, lets try and simulate a mapping exception. The easiest way would be modify the message mapping in ESR to ensure a failure 🙂

Change the mapping for the Age field and introduce a substring function so that we will mock a String Out of range exception.

mappingfail_18nov.JPG

Test the mapping in ESR to ensure that we do get a mapping failure;

mappingfailerror_18nov.JPG

Now if we test the scenario end to end, we should find that the BPM process to have triggered the boundary event and the exception details captured into the Exception Output file.

exceptionfile.JPG

Hope this acts as a starting point to help you factor in appropriate Exception Handling measures in your integration centric processes.

PS:

One can extend the error management strategy by introducing TechnicalError boundary events to not only individual steps but also to Sub-Processes. You can also model the process to implement Retries on particular steps (a good scenario will be a when a Webservice call fails due to the webserver being down) so that instead of immediately taking action on a failed action, the step can be re-triggered (as appropriate). I recommend the TechEd && d-code session INT361 that will provide further details into error resolution strategies.

Reference Links:

1. Using NetWeaver PI’s Mapping in NetWeaver BPM

2. Modeling Exceptions and Exceptions Handling

3. INT361 : Error Handling in BPM-Based Processes Using SAP Process Orchestration

Want to take it to the next level? Then refer this blog.

To report this post you need to login first.

6 Comments

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

  1. Ashok Babu Kumili

    Hello Vijay Kumar.

    Great read.. Indeed, Very helpful… Awesome article…. rating this blog as 5 Star Content.  Nice post on ” SAP PI – BPM “. This is a brilliant way to go.

    Regards-Ashok

    (0) 
  2. Suresh Sakthivel

    Hi Shabarish Vijaya kumar,

    Great blog.

    Could you pls confirm on below query also ?

    We need to handle mapping Exception (try/catch exception in UDF) and if there is an exception we need to route it to other system and mapping else the flow should continue..

    Is it possible with above mentioned example?

    Also, Global Container value passed from JAVA mapping is it possible to handling in NW BPM? ie., via Context ?  pls confirm. Awaiting your response.

    Thank you in Advance!!

    Best Regards,

    Suresh S

    (0) 

Leave a Reply