cancel
Showing results for 
Search instead for 
Did you mean: 

BPM problem: mapping in a transformation step

Former Member
0 Kudos

Hello,

In my current BPM scenario....

1)I created the interfaces below for the Receive step (receives MT_Request):

-MI_async_BPM

-MI_async_abstract

2)Then I created the interface and mapping for the transformation step:

-MI_JDBC_async_abstract

MM(MT_Request to MT_Request2)

IM(MI_async_abstract to MI_JDBC_async_abstract)

3)Then I created the interface and mapping for the Send step:

-MI_JDBC_async_in

MM(MT_Request2 to MT_DB_Insert)

IM(MI_JDBC_async_abstract to MI_JDBC_async_in)

Problem:

However, after I executed the scneario, it appeared the step 2) didn't go through correctly(error message:<b>NO_RECEIVER_CASE_ASYNC</b>). Did I set up the configuration wrong in Integration Process?

Also, I went back to ID to create a Receiver Determination for step 2) (thought this may clear the problem), but in the Sender tab of Integration Process object, MI_async_abstract was not in there. Please give me a hand on this problem. Thanks.

Regards,

Steve

Message was edited by: steve peng

Message was edited by: steve peng

Accepted Solutions (1)

Accepted Solutions (1)

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

Can you give us the steps in your BPM.

From what you have listed , you have a recive step --> transform and then Send.

You need 2 receiver determintations of this. Have you done that?

Regards,

Bhavesh

Former Member
0 Kudos

Bhavesh,

Good to see you.

I have a Receive step:

-Tied to MI_async_abstract

-Receives MT_Request

-a receiver determination to map MI_async_BPM and MI_async_abstract

I have a Transformation step:

-Tied to IM_Transformation(Source:MI_async_abstract/Target:MI_JDBC_async_abstract)

-a MM (Source:MT_Request/Target:MT_Request2)

-no receiver determination

I have a Send step:

-Tied to MI_JDBC_async_abstract

-a MM (Source:MT_Request2/Target:MT_DB_Insert)

-a IM (Source:MI_JDBC_abstract/Target:MI_JDBC_async_in)

-a receiver determination to map the IMs above

Regards,

Steve

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

The interfaces look perfect.

Just make sure if this is correct.

1. Reciver determaintion between sender service and BPM as the reciver service

2, Recever Determination with BPM as sender service and the JDBC as the reciver service.

Regards,

Bhavesh

Former Member
0 Kudos

Bhavesh,

The Receiver Determinations are all right, but somehow when I executed it, in Send step (or Transformation step?), it looked for MI_async_abstract as a the sender (found no receiver determination, of course), instead of MI_JDBC_async_abstract.

Somehow it still looked for a receiver determination for the transformation step.

Regards,

Steve

Message was edited by: steve peng

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

In that case the SEND step in the BPM must be using some container element . Just check the Interface associate with the Container element. Check if it is your JDBC_ABS interface

Regards,

Bhavesh

Former Member
0 Kudos

Bhavesh,

In the Send step:

-Properties/Message:MT_Request2 (in Container Properties, MT_Request2's Type value is MI_JDBC_async_abstract)

-Properties/Activate Correlations:Correlation

-Properties/Correlation:ID - MT_Request/ID

By the way, does Transformation step require a Receiver Determination?

Regards,

Steve

Message was edited by: steve peng

Message was edited by: steve peng

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

Transformation Step does not require a Reciver Determaintion.

Send Step--

Do not activate correaltion in this step . You can activate it in the Recive Step if needed.

Reciver From --> Send Context

Let me know if this works.

Regards,

Bhavesh

Former Member
0 Kudos

Bhavesh,

AHHHHHHH....it did woooooooooooork.......AHHHHHHHHHHHHHH. You are the MAN. But I still have some questions that need your guidance.

1)Why is correlation needed? What is it really for? and why is correlation not needed in a Send Step?

2)What does that Receiver mean?

3)After a FORK (comparing XML values), if I want to make this scenario more complicated, send an email if the comparison fails, how do I do it?

Regards,

Steve

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

Corelation is used when you have multiple Receive Steps in your BPM> Now, when a message is picked by BPM and it has to pick up the next message , correlation is used to indetify which isntance of a bpm a message belongs to.

Consider a case when you have 2 recive step s inside the BPM in afork. And two messages of the first type are avaiable . So 2 BPM's are started.

Now, when the next message comes in, how does XI know which BPM it belongs to. Corealtion Helps here. Helps to correlate messages.

In Send Step, yon get recivers from configuration. For this take a look at this

http://help.sap.com/saphelp_nw04/helpdata/en/11/13283fd0ca8443e10000000a114084/content.htm

QUestion 3 ~~ Need more info.

Regards,

Bhavesh

Former Member
0 Kudos

Bhavesh,

1)How do you usually set up the correlations?

2)ok

3)In my scenario, I have:

a)Receive Step 1 (pick up HTTP request)

b)Receive Step 2 (batch, pick up XML file every 5 seconds)

c)Switch Step to compare the values in both XML

if they match

c1)Transformation Step 1 and Send Step 1 (to JDBC)

if they don't match

c2)Transformation Step 2 and Send Step 2 (to Mail)

When they match, the scenario seems to work as long as Receive Step 1 is executed before Receive Step 2.

When they don't match, it scenario would just stop at Receive Step 2, is it because of the correlation I set restricted the values have to be the same? or I shouldn't use Switch Step?

Regards,

Steve

bhavesh_kantilal
Active Contributor
0 Kudos

Steve,

http://help.sap.com/saphelp_nw04/helpdata/en/de/766840bf0cbf49e10000000a1550b0/content.htm

Look at the examples. Will find how to use Corelations.

<i>When they don't match, it scenario would just stop at Receive Step 2, is it because of the correlation I set restricted the values have to be the same? or I shouldn't use Switch Step?</i>

We had a similar discussion in the thread yesterday.

Like I told use a BLock --> Fork --> Receive Steps ( in side the fork in separate branch ) . Wrap the block with Deadline Monritoing. You will have to use Corelation inside the BPM in the Fork --> Receive Steps.

The 2 messages will be picked only if they match , and if not, there will be active BPM 's waiting for matching correltion . and then use the Send step.

Regards,

bhavesh

Former Member
0 Kudos

Hi Steve,

Below is the explanation for correlation by Anand Torgal which i think will be helpful to u....

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.

http://help.sap.com/saphelp_nw04/helpdata/en/a5/64373f7853494fe10000000a114084/content.htm

Regards,

Abhy

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi Steve,

Please go through these threads and see if it helps....

Regards,

Abhy