cancel
Showing results for 
Search instead for 
Did you mean: 

Correlations - Usage and performance

Former Member
0 Kudos

Hello forum users,

I would like to know until where I can go with BPM using correlation.

My need is to initiate a BPM with a first message and finish it at the arrival of a second one (different message) using a correlation Identifier. Such a standard case.

My question is : It is a problem if the second message is able to arrive many weeks after the first. and during this time many and many other instance of the same BPM will be initiate....

Must I care with performance issue ?

How ?

BPM steps in detail :

Flat file representing a customer sales order is received => Init BPM

Syncrhonous BAPI call on R/3. Response give sd document number => Activation of correlation

BPM send a first (technical) acknowledgement file to original sender.

Now a second acknowledgement file (more business one) must be send when all the items are ok (It may have been errors in automatic integration...). In order to be in this configuration, user actions may be required and this can take a long time (many days, week)

When user decide sd documents is full and ok, SAP R/3 send the second message that close the correlation and trigger the end of BPM (generating ack flat file N°2)

(I imagine the second message as an ORDRSP trigger by an output SAP Control)

Thanks for your advices.

JC.

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

>>: It is a problem if the second message is able to arrive many weeks after the first. and during this time many and many other instance of the same BPM will be initiate....

Must I care with performance issue ?

How ?

Yes. Many active instances of BPM waiting for correlation messages is definitely gonna hit your performance. As a rule of thumb we ensure no BPM instance is kept active after 5 days (using the control block).

But in your case I dont understand some thing. A file comes in and initiates the BPM, this file is mapped and sent to R/3(synch) as a RFC call and using the response you send a final confirmation message to sender File. Am I correct here?

If so, then you dont have any correlation here in the design at all.

Regards,

Jaishankar

Former Member
0 Kudos

Thanks for your response.

I need a correlation because after the first acknowledgement file, a second one must be created using information of the initial message when another message arrives.

I conclude it is not possible to wait messages with correlation many weeks.

Former Member
0 Kudos

hi,

To explain you the correlation in simple terms...take a simple example of BPM with a send step(async request) and receive step(async response). I am sending a PO request using the send step and waiting for a PO response using the recieve step. Assume that i have two instances of this BPM running i.e two PO request's going simultaneously. when i get the response back for these two requests , there will be two recieve steps waiting for the response since there are two instances of BPM running. the response need to be assigned the corresponding requests. This is where correlation comes into picture. I can use PO number as my correlation field. i.e I activate my correlation in the send step and use this correlation in receive step (this is configurable in BPM).

Example: PO number needs to be part both request and the response message structure.

BPM instance1:

send step -> activate correlation -> send message with PO Number1

Receive step -> use correlation -> receive response message with PO Number 1.

BPM instance1:

send step -> activate correlation -> send message with PO Number2

Receive step -> use correlation -> receive response message with PO Number 2.

There are many different scenario's whre you can use the correlation..this is one of them...The weblog shows another way of using correlation.

Also Refer SAP help...

Correlating Messages

Use

You use a correlation to assign messages that belong together to the same process instance. A correlation joins messages that have the same value for one or more XML elements. A correlation is therefore a loose coupling of messages: at design time, it enables you to define which message a receive step must wait for, without knowing the message ID.

For example, in a process, receivestep_1receives the message purchaseorder, while receivestep_2receives the message salesorder. Receivestep_1creates a correlation that defines that the corresponding sales order must have the same purchase order number. Receivestep_2uses this correlation. This means that an instance of the process processes a purchase order and the corresponding sales order, which has the same purchase order number.

If it satisfies the relevant correlations, a message can be processed in multiple processes. However, a message is only delivered once per process.

For more details.. visit the blog by sravya

/people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi

Thanks,

Vijaya