cancel
Showing results for 
Search instead for 
Did you mean: 

BPM scenario question

Former Member
0 Kudos

Hello all,

I have a scenario: which will require a BPM, it feels pretty straight forward, but im running into issues as i start the development of the BPM, I would appreciate your help in guiding me:

Scenario:

> Webservice call from an application to PI.

> Depending on the content of the request PI must make a sync call to ECC(AND/OR) BI systems

> Once response is received from the target system, PI shuld combine the response and send it back in the response to the application.

I would like to know what all steps need to be defiend in the BPM.

Currently im thinking,

1. Recv step - Open S/A bridge

2. Transformation step - (I don't knw if i am right here)

3. Recv determination

4. Block ParFrEach - Send sync

5. Transformation outside block

6. Send response to application.

Can someone correct and guide me please?

Thanks,

Hank

Accepted Solutions (1)

Accepted Solutions (1)

former_member200962
Active Contributor
0 Kudos
1. Recv step - Open S/A bridge

This step is fine as you need to send back the response.

2. Transformation step - (I don't knw if i am right here)

Instead of Transofrmation as step 2 have a Switch block...which will validate the message and then decide which receiver should be called (SYS1 and/ or SYS2)

First Condition branch of Switch will be for SYS1 system and will have below steps:

a. Transformation step ... it will convert the message from SOAP into the SYS1 format

b. Synchronous Send ... send the request and get back the response.

First branch ends.

Second Branch of the Switch will be for SYS2 and will have below steps:

a. Transformation Step ... it will convert the SOAP message into SYS2 format

b. Synchronous Send ... send the request and get back the response.

Second Branch ends here.

After the Switch block place a Transformation step will be combine the responses from SYS1 and SYS2 (if both the systems are called)....it will be a 2:1 mapping (with both the source messages defined as optional 0..1 in the message and interface mapping)

Send step which closes the bridge and ends the process.

You have to properly define & assign the container variables...especially in the Switch branches to avoid the messages being over-written.

Regards,

Abhishek.

Former Member
0 Kudos

Thank you Abhishek!!

Instead of Transformation as step 2 have a Switch block...which will validate the message and then decide which receiver should be called (SYS1 and/ or SYS2)

So according to you , I can invoke a call to both SYS1 & SYS2? with a switch block?

Another aspect i wanted to ask you was about error handling, Say SYS1 happens to be down, how do you suggest i handle that scenario?

Please advice.

Hank

former_member206760
Active Contributor
0 Kudos

Hi Jovani,

I agree with Abhiseks design... As far as your doubt on that is concerned...in the switch step you can define condition like

if field equals A then in that branch put transformation step for sys A and then the sync send step to sysA

elseif field equals B then in that branch put transformation step for sys B and then sync send step to sys B

otherwise if field equals A&B then put transformation step for sys A and sync send step for sys A after that transformation step for sys B and sync send step for sys B

after the switch there would be another transformation taht would merge the above message if they occur

former_member200962
Active Contributor
0 Kudos
So according to you , I can invoke a call to both SYS1 & SYS2? with a switch block?

You mentioned that SYS1 and/ or SYS2 will be called....from this i assumed that there will be some field in the input payload which will indicate wether SYS1 or SYS2 (or both) need to be called....hence suggested that make use of the Switch block which will check for the field and then execute the appropriate set of steps.....is my assumption right?

Another aspect i wanted to ask you was about error handling, Say SYS1 happens to be down, how do you suggest i handle that scenario? 

The best approach will be to make the call to SYS1 (or SYS2) as synchronous....if any error you will be immediatlye intimated....place this Send step inside a block which will have a Exception block....so if any this goes wrong in posting the request or getting back the response this Exception Branch will be triggered (where-in you can define appropriate error-handling mechanism).....this is the standard procedure followed.

If only Async send is possible then amke use of the Transport Application property of the Send step (blog available by Michal)

Regards,

Abhishek.

Former Member
0 Kudos
You mentioned that SYS1 and/ or SYS2 will be called....from this i assumed that there will be some field in the input payload which will indicate wether SYS1 or SYS2 (or both) need to be called....hence suggested that make use of the Switch block which will check for the field and then execute the appropriate set of steps.....is my assumption right?

Yes Abhishek your assumption is correct.

Thank you very much on the tip for handling exceptions.

Will update the thread once i've implemented the design.

Thank you all folks.

Appreciate your help a lot!

Hank

Former Member
0 Kudos

Works as Abhishek mentioned!!

Thnk you

Edited by: hankovak jovani on Feb 4, 2010 2:59 PM

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Hank,

For better responce to your question, post this in BPM forums.

Any how find the answers below as of my knowledge.

> 1. Recv step - Open S/A bridge

To receive the source message this step is require.

> 2. Transformation step - (I don't knw if i am right here)

this is used when you have the options like message split or merge like that

> 3. Recv determination

I don't think it is required to you

> 4. Block ParFrEach - Send sync

In your scenario you want to do any loop statements then you can use this

> 5. Transformation outside block

This is also same, if you are sending the responce as it is coming then this is not required.

> 6. Send response to application.

This is required

Regards

Ramesh