on 09-24-2008 2:54 PM
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
Use only one recieve step, because your sturcture is same.use container operation with multiline check.U can put your conditon.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
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 ..
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
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
93 | |
11 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.