cancel
Showing results for 
Search instead for 
Did you mean: 

bpm collect message

Former Member
0 Kudos

I am doing a bpm message dependent scenario. It keeps collecting messages till a particular message is received.

I more or less used the message dependent pattern given in SAP BASIS.

The data types are as follows.

Dt_In

Name

OverallID

Dt_In

Name

OverallID

1 to 1 mapping

I used the OverallId for correlation. The receive step inside the infinte loop collects the messages with OverallID '1' while the receive step below collects messages with OverallId '2'.

In the container elements i defined 2 separate message interfaces. One for OverallID '1' and the other for OverallID '2. The 2 message interfaces have the same Message type. Only values will be different.

For the parallel fork step i have given end condition OverallID = 2.

When i execute the scenario the messages are all comingin a queue. The status is wait for event.

What could be the problem?

Thanks

Accepted Solutions (1)

Accepted Solutions (1)

dharamveer_gaur2
Active Contributor
0 Kudos

Use only one recieve step, because your sturcture is same.use container operation with multiline check.U can put your conditon.

Former Member
0 Kudos

Hi,

I changed the scenario. I created a new message type and new interface which the 2nd receive step will receive.

The 2nd message interface is supposed to stop the collecting of messages.

I want the BPM to stop collecting messages once the stop message is received.

I did the pattern according to SAP BASIS pattern collect message. Still even when the BPM receives 2nd message, the receive step does not capture it.

The infinte loop keeps on executing. Why does this happen. How can i fix it?

Regards

Pratichi

dharamveer_gaur2
Active Contributor
0 Kudos

There r 4-5 collect pattern BPM avail, can u tell me exact name that one u r doing.so i would be able to proper ans.

Former Member
0 Kudos

hi

BpmCollectMessage

The one that stops collecting on receiving a particular file

dharamveer_gaur2
Active Contributor
0 Kudos

try one thing, check Start process also in second recieve.

if still error,then put whole logic in to block step and select create New transaction.it would be help to trace your workflow in detail.

Former Member
0 Kudos

nope not working

checking the 2nd receive step didnt work

it actually doesnt get activated cos of sum correlation errors

m not sure abt the correlations. can u tell me how many correlations to put?

is there supposed to be a common field in the stop message and collect message?

dharamveer_gaur2
Active Contributor
0 Kudos

you does'nt require any correlation.

correlation is used for message have the same value for one or more XML elements.

To define correlation,use correlation editor.

To uderstand correlation use TBIT43(in this see ccBPM in XI.pdf) of SAP or https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/10377. [original link is broken] [original link is broken] [original link is broken]

common field dosent matter,due to u r using diffrent message type ..

Former Member
0 Kudos

Hey,

you need to have a correlation betwwen the 1st receive step(oe in the loop) and the second receive step.

For this what you can do is define a field in both the message types and then correlate them in the bpm.

pass the same value for the common field in your data so that the messages are correlated.

also check the start process for both the recieve steps.

but it is also possible to do it using a single recieve step.

regards,

Milan

dharamveer_gaur2
Active Contributor
0 Kudos

use this blog, your collect pattern process is described in it.

Former Member
0 Kudos

Hi guys,

It's still not working.

I checked both the receive steps.

The control is still not coming out of the infinte loop.

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi,

In your case one MT and Interface is sufficient.Use if condition to check the OVERIID value instead of fork.You can use fork, when you want to pick messages by multiple receivers. This step in the bpm makes it to waits till all the branches of fork step are executed.

Regards,

Yuga

Former Member
0 Kudos

Hey,

Seems your message with OverallID=2 is also delivered to the first receive step(the one in the loop). Because both the message types are same.Hence the second receive step will keep waiting for the message

You need not use a fork in this case you can break out of loop incase if OverallId=2.

regards,

Milan

VijayKonam
Active Contributor
0 Kudos

I dont think you should be using two receive steps as long as the two message types are same. Try using one receive in loop with condition to break on ID = 2.

Otherwise, change the datatype of one message to something else and update your interfaces. I think right now the bpm is confused as which receive step should be receiving the message. Kind of ambiguous situation..

VJ