cancel
Showing results for 
Search instead for 
Did you mean: 

Message Split and Merge in PO

markbernabe
Active Participant
0 Kudos

Hi experts,

We have a synchronous web service <-> RFC interface.

The web service request must be split into N number of messages based on a certain criteria. The N messages after the split should then be sent to the RFC. The RFC must be called N number of times. The RFC will have N number of responses and this must be merged into 1 response message that will be passed back to the web service.


Here's a sample flow:

The split will be taken care of in PO via graphical mapping. The pending item now is the multiple calls to the RFC based on the result of the split and the merging of its response messages which we think can only be done via BPM.

I'm looking into the Aggregator pattern but the sample is asynchronous. Is this feasible with synchronous? Or is there any other way to achieve this without BPM? We're actually pretty knew to BPM, never done before, so any advice/inputs are highly appreciated.

Thank you.

Accepted Solutions (0)

Answers (1)

Answers (1)

Snavi
Active Participant
0 Kudos

Hi Mark,

In BPM you can use loop in the activity step to split your message and get RFC executed multiple times in parallel. The loop context will be your message from the webservice, for ex, if the message is a list, you can set the list as loop context and as many repetitions in the list, the activity will be executed that many times in parallel.

And in the output mapping, you can use append function to merge all the responses.

1. webservice -> BPM sync

2. BPM -> RFC sync (this activity step in BPM will be looping on the webservice message context)

3. append function on the activity output to append the responses to webservice response.

4. response back to webservice.

your process will have an automated activity to split and call RFC synchronously as in the diagram, here the collection in your loop step will be the list context from your webservice message

and in the output mapping you can use append function