cancel
Showing results for 
Search instead for 
Did you mean: 

NW BPM Collect Pattern (with in the BPM, not as collecting messages from Outside)

VijayKonam
Active Contributor
0 Kudos

Hi,

I am working on a requirement where I need to call an SAP RFC (or a web service for that matter) in a loop and collect all the message responses, combine them in to and send it to another system or another BPM process.

I am completely lost as to how collect the data objects into lists something similar to the containerization operation in classic ccBPM. I can then used an n:1 operation mapping to merge the messages. However, I am struck at collecting them itself.

Any help is appreciated.

Thanks,

VJ

Accepted Solutions (1)

Accepted Solutions (1)

tobias_breyer
Contributor
0 Kudos

Hi VJ,

I suppose what you are looking for is the APPEND mapping option. Perhaps have a look at the following nice write-up which shows that one in a screenshot and other nice expression features.

Regards,

Tobias

VijayKonam
Active Contributor
0 Kudos

Thanks Tobias. But somehow, the append option is disabled for me and could not get how to set the cardinality to o--unbound for a data object that is using a data type provided by an interface.

VJ

tobias_breyer
Contributor
0 Kudos

It is disabled due to just being cardinality 0 to 1 or 1 at the target of the mapping.

In ccBPM, you could easily set a container element to multiline. There is no such feature in BPM. Here, if none of the imported, suitable types has parts where you can store a multiline element, you have to define your own WSDL-based type, with the respective cardinality for a suitable part, and use that as an intermediate Data Object to store the data, until you e. g. send out the collected data, taken from this Data Object.

Answers (2)

Answers (2)

VijayKonam
Active Contributor
0 Kudos

I think I did get it. Defined an Operation mapping with n:1 cardinality and used the input parameter as the data type for the collection data object.

Thank you guys for the help.

Closing the thread.

VJ

nitinlpatil12
Participant
0 Kudos

Hi Vijay,

We are running into a requirement where we nee to request a system for Pending data and then call the same system multiple time to get that data.

1st interface triggered and in response we find out that there are pending data to be picked up say 100.

2nd interface will be used to pick up max 20 and hence it needs to be called 5 times

Question is how to use the response of 1st interface and call 2nd interface and continue till all the 100 data are picked up.

Can you please suggest any solution in detail?

Regards,

Nitin Patil

Former Member
0 Kudos

Nitin,

1. Create a data object -  isMore .

2. In the Output Mapping of the 1st call map the field which tells you there are more records to isMore. Assume this writes 100 (as in 100 more records)

3. Then call an Uncontrolled Merge .

4. Then create an Exclusive Choice where you have 2 options - either isMore > 0 or isMore = 0.

5. If isMore > 0 , call Automated activity to make another call to your backend and loop it back to the Uncontrolled Merge. Remember to update the isMore in the Output Mapping.

6. If isMore = 0 , call the next activity or End.

Former Member
0 Kudos

Hello VJ,

Please check the link -

Al the supported patterns such as aggregation are discussed and examples provided.

regards, Nick

VijayKonam
Active Contributor
0 Kudos

Thank Nich. I did check that but unfortunately, this scenario is not tried by anyone I believe. The aggregator pattern actually collects the messaged reaching BPM, but not from a service call initiated by BPM.

VJ

Former Member
0 Kudos

Hi VJ

As Tobias mentions, you need to use APPEND. The aggregator pattern isn't specific to incoming messages. In your case you are mapping the response (output message) of a synchronous service.

regards, Nick

VijayKonam
Active Contributor
0 Kudos

Append option is disabled and could not change the Data Object cardinality to accept multiple messages. What needs to be done?

VJ