cancel
Showing results for 
Search instead for 
Did you mean: 

Need your thoughts on simplest design for our requirement

Former Member
0 Kudos

Dear SCN Experts,

We have roughly 10 -14 interfaces with the below requirement and more over these interfaces run very frequently .So looking for simplest design possible.

Requirement:

We have 3 systems say A,B and C .B and C systems are like copy systems.

A system sends employee related data to PI ,PI need to update these details in B system and get the acknowledgement back (response may include fault message) .

If the above transaction is successful then only update the above details in C system .Skip the response from C system (Don't need to bother about C system data updation ) .

ECC expects only response from B system.

Below are some of the options I can think as of now.

1)Split into 2 simple synchronous interfaces and triggering secondary interface logic need to handle by A system folks ,but hurdle here is A,B,C systems are reluctant to do any code changes in there systems.

2)Handling in PI with complex BPM logics. I'm in confusion to handle fault in bpm in this requirement

Not able to judge my self in finalizing best design by balancing requirement achievement and performance consideration  .

Please share your valuable thoughts on the design.

Regards

Venkat

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi Venkat,

If you are using PI 7.31, you can implement NW BPM. you can handle fault messages inside BPM.

I think it will be the easiest approach.

Regards,

Gavaksh

Former Member
0 Kudos

Hi Gavaksh Saxena,

We are using PI 7.31 dual stack (ccBPM) .

Regards

Venkat

former_member184720
Active Contributor
0 Kudos

Hi Venkat - I think i'm missing something.

A is sending the request to B -> Is it synchronous?

If so you have mentioned that "ECC expects only response from B system". Can i assume ECC is nothing but system A or is it something else?

>>>Skip the response from C system

That means all your interfaces are synchronous??

Former Member
0 Kudos

Hi Hareesh,

Thanks for your quick response .

Yes .A system is ECC.B,C are two CLICK systems (primary,secondary).

>>That means all your interfaces are synchronous??

yes.

Regards

Venkat

former_member184720
Active Contributor
0 Kudos

How about posting the response/confirmation from system "B" using the soap look up during the response mapping???

former_member184720
Active Contributor
0 Kudos

n some valuable comments by Shabz..

Former Member
0 Kudos

Hi,

If the look up to system "B" fails (Ex:Due to connectivity issue) then I couldn't able to post the acknowledgement message back to system A.

Even if i handle the above using java code .Main hurdle is I need to send payload from A system to C .Response payload from B doesn't contain request payload from A .

Regards

Venkat

former_member184720
Active Contributor
0 Kudos

I think you can make use of the GetPayloadValuebean for this purpose..

Former Member
0 Kudos

Hi ,

I'm exited by seeing your reply .Let me assess this .I will get back to you soon.

Thanks

Regards

Venkat

Former Member
0 Kudos

Hi,

We don't know whether fault or normal response comes from system B .So for example is normal response comes then getting error for put xpath for fault .similarly if fault response comes getting error for put xpath for normal .

Getting below error after invoking putpayloadvalue bean

>

Transmitting the message using connection RFC_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: java.lang.NullPointerException: while trying to invoke the method org.w3c.dom.Node.appendChild(org.w3c.dom.Node) of a null object loaded from local variable 'template_parent'

Regards

Venkat

Former Member
0 Kudos

Hi,

Below is the config screenshot for your reference.

Regards

Venkat

Former Member
0 Kudos

Hi Venkat

I think the easy and best way would be use synchronous proxy in sending system A ( ECC ).

Inside the proxy code, check the response from B , if it is successful then trigger one more aync proxy

to send the information to C system.

Former Member
0 Kudos

Hi ,

We have a cache here code in ECC is developed by some third party company long back .Now changing anything at ECC end is costly .So this option is ruled out .

Regards

Venkat

Former Member
0 Kudos

Hi Venkat

Only one design is coming in my mind. Here is the approach

For the interface between system A to B

1. Create a table with two fields in abap stack of PI and then in the request message mapping perform a RFC look up and save the entire source xml as a string in one field.In the other field use any value which can uniquely identify the entire source xml , example vendor number , PO number etc.

2. In the response mapping, check if the response is successful or not. If successful, then perform one more RFC look up to get the source xml data and then save it as a file in a NFS directory or FTP server.

Create one more async interface which will read the file that has been saved by the previous interface and then send it to system C.

Former Member
0 Kudos

Hi Indrajit,

Thanks .We have already proposed 3 solutions .Waiting for confirmation from architect .

1)RFC lookup

2)JDBC lookup by storing in PI internal d/b

03)File lookup

Storing file(request payload from A system) in PI local server in folder A (filename_currenttimestamp) while executing request mapping .In response mapping if it successful then we are moving to other folder say B and delete the existing file in A folder .

If the response is fault then we are simple deleting the file in A folder.

New file to soap interface which polls the folder B and picks the file and process to C machine.

Regards

Venkat