cancel
Showing results for 
Search instead for 
Did you mean: 

In BPM sync/async Step , can you have different message schema?

Former Member
0 Kudos

Scenario:

File to XI to BPM to SOAP to RFC

In order to trigger the webservice , I use a dummy file which will be polled at a certain frequency- once in 30 minutes in Test mode - this will call the Webservice. The answer of webservice is sent to RFC Async.

so these are the Repository objects I created :

1. File Outbound Async Message Interface- Output Message (File_Request_MT)

2.File Abstract Message Interface-Output Message (File_Request_MT)

3.Async/ sync bridge Abstract interface to call the Webservice

4 Webservice Inbound Sync Message interface- with both input and output message

5.RFC Inbound Async message interface- input message (RFC_Request)

6 RFC Abstract Async Message interface-input message (RFC_Request)

BPM

a) Receive step which uses the the object 2.

b) Sync send which uses object 3

c) Send step which uses Object 5

I am using a BPM to Receive the file data/ "request " by using the File abstract message interface

Then use the the object 3 to call the webservice in BPM .

My question is on this step

Can I have for the abstract Interface(Object 3) the Request message as File_Request_MT and

response message as (RFC_Request) ?

I use a message mapping to map Input and Ouput message of Object 3 with Object 4.

Thanks for your insight

Accepted Solutions (1)

Accepted Solutions (1)

VijayKonam
Active Contributor
0 Kudos

HI,

You do not need a sync async bridge here, since you are entering the BPM and finally calling the RFC in async mode.

Simply receive the message in BPM async, call the web service sync, use transformation after this sync call if at all the response from Web Service is different from the RFC expected message. Call Send step to call the RFC async.

VJ

Former Member
0 Kudos

First off , thanks VJ for the quick repsonse. I have couple of questions based on your response.

You do not need a sync async bridge here, since you are entering the BPM and finally calling the RFC in async mode

.- File to BPM is Async, then BPM to Web service is SYNc , then BPM to RFC is ASync. so, shouldn't we have a ASync/Sync bridge?

This is similar to what has been described in weblog https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1926- [original link is broken] [original link is broken] [original link is broken] but, Webservice replacing RFC.

Simply receive the message in BPM async

, - this is done using Object 2. Do you agree with my thought?

call the web service sync
- This is done using Object 3. Here is where I had a question - the Request/input message for the Abstract Interface is what is in the File(File_request_MT) , the response from Webservice has to be Sent as the Request for Async RFC(RFC_Request)-

use transformation after this sync call if at all the response from Web Service is different from the RFC expected message

. Are you suggesting that I use Transformation to Transfer the Webservice Repsonse to RFC request? Let me know.

Call Send step to call the RFC async

- This is what is done by Object 6.Do you agree with my thought?

Thanks once again!

Edited by: h r on Feb 8, 2008 10:54 PM

Edited by: h r on Feb 8, 2008 10:56 PM

Answers (4)

Answers (4)

Former Member
0 Kudos

Raj,

Thanks for the quick response.Please see my repsonse. Correct, me if I am wrong. As far as why :

{

One more thing why u created two interfaces for Webservice and RFC like inbound and abstract?"

Ans) Are you talking about MI_RFC_REQUEST_sync_abs and MI_RFC_REQUEST_async?-

The reason for using MI_RFC_REQUEST_ABS is for

a)The definition of container element will be:

Cont. element Category Type

RFC_REQUEST Abstract MI_RFC_REQ._ABS

_CONTAINER

As for Interface MI_FILE_REQUEST_ABS,

It is used for:

a) Container type "File_Request_container"

Cont. element Category Type

File_REQUEST Abstract MI_FILE_REQ._ABS

_CONTAINER

b) Also, for the Receiver determination for BPM service .

As for Webservice interfaces:

MI_webservice_sync_in.

a) This is used to make the call to Webservice.

b) Receiver determination for Webservice call

Abstract Interface MI_webservice_sync_abs-

Input message - MT_soapresponse

Output message- MT_fierequest

Used:

a) used for BPM sync send step ,

b)Interface mapping between MI_Webservice_sync_in and MI_webservice_sync_abs.

The reason for the mapping is that element names of messages are different, eventhough types are the same .

c)Container element-SOAP_response

And again u did mapping btw inbound and abstract! why is it needed? U can directly use the abstract interface isn't it?

Ans : are you talking about Interface mapping between MI_Webservice_sync_in and MI_webservice_sync_abs.?

The reason for the mapping is that element names of messages are different, eventhough types are the same .

The abstract interface MI_webservice_sync_abs uses FILE_REQUEST_MT as Output message and SOAP_RESPONSE as INPUT. This is different from elements of interface MI_Webservice_sync_in

U said that u are going to send the Message received by file directly to the webservice isn't it? Then why u r doing mapping btw File Request and Soap Request? The messages between File request and Soap request are different?

Ans: If you look at the flow of MT_file_request,it goes like this

MI_FILE_REQUEST

V

Receive step of BPM( Filerequest_container)

V

Sync Send step (represented by Message interface

MI_Webservice_sync_ABS - uses container element

File_request_container for Output and

uses

SOAP_Response_container as Input .These elements are different from element in the Web service interface created from External defintion namely MI_Webservice_sync_in. Hence, the need for Message mapping and Interface mapping)

V

MI_Webservice_sync_in

V

Transform step in BPM maps container element

SOAP_response container TO RFC_Request_container

V

Send Async step in BPM sends the

RFC_request_container (which is defined by "category" Abstract Interface and "Type" = MI_RFC_REQUEST_ASYNC_ABS

V

MI_RFC_REQUEST_ASYNC_IN

Edited by: h r on Feb 10, 2008 10:05 PM

justin_santhanam
Active Contributor
0 Kudos

...........

raj.

Edited by: Raj on Feb 10, 2008 4:25 PM

Former Member
0 Kudos

Raj,

Thanks for the feedback , but I have a question regarding your reply

Interface Objects

Object 1: File_Request_Abs

Object 2: Soap_Response_Abs
Object 3:Soap_Abs_Synch

Output Message:File_Request_Abs
Input Message:Soap_Response_Abs
Object 4:Rfc_Request_Abs

The question is about

a)SOAP_RESPONSE_ABS : could you please tell me why do we need an abstract interface -SOAP_RESPONSE_ABS?

I created a message type MT_SOAP_RESPONSE and used that in the BPM sync Send step as the Input message.

b)Soap_Abs_Synch- I am using message types

MT_File_request and MT_SOAP_Response From your reponse, it looks like you are suggesting to use

Abstract Interfaces as Output message and Input Message, am I correct? Could you please tell me whether this has advantages over using message types MT_file_request and MT_soap_reponse? I haven't used Abstract interfaces before as Input message and output message; infact, I wasn't even aware that it can be. Please confirm that it is possible. Thank you for increasing my knowledge !!!

These are the Objects I created

Message Type :

a) MT_Filerequest

b) MT_SOAPresponse

Message Interface

a)MI_Filerequest_out_async -

Output message

Mess. type MT_filerequst

b)MI_filerequest_async_abs-

Mess. type MT_filerequst

Used

i) used for BPM receiver step- container definition

ii) receiver determination

c)MI_webservice_sync_in - This is created from External definition

d)MI_webservice_sync_abs-

Input message - MT_soapresponse

Output message- MT_fierequest

Used:

i) used for BPM sync send step ,

ii)Interface mapping between MI_Webservice_sync_in and MI_webservice_sync_abs

iii)Container element-SOAP_response

e) MI_RFC_async_out

Input message

RFC_Request(This is imported from RFC definition)

g) MI_RFC_async_abs

Input message

RFC_Request(This is imported from RFC definition)

Mapping

Message mapping

i)Filerequest_TO_SOAPrequest

Source: MT_Filerequest

Target: SOAPrequest(Got from External definition)

ii)SOAPresponse_TO_BPM_response

Source : SOAPresponse(got from External definition)

Target : MT_SOAPresponse

Interface Mapping

i)IM_BPM_TO_SOAP

Source Interface : MI_webservice_sync_abs

Target :MI_webservice_sync_in

uses following message mapping

Request : filerequest_TO_SOAPrequest

Response:SOAPresponse_TO_BPM_response

BPM container element

i)Receiver_container TYPE MI_Filerequest_out_async

ii)SOAP Responsecontainer TYPE MI_webservice_sync_abs

iii)RFC_Request_container TYPE MI_RFC_async_abs

BPM flow

Receive---->Send Synch-->Transformation----->Send Asynch

Receive -


> receiver_container

Send Synch -


> receiver_container(Request Message), Soap_response_container(Response Message)

Transformation -


> Source(Soap_response_container), Target(RFC_request_container)

Send Asynch -


> RFC_request_container

Thanks for your help!!!

justin_santhanam
Active Contributor
0 Kudos

Ooops! I'm sorry, actually it's mistyped it. U can't assign Message Interface again to Message Interface.

Actually it has to be

Object 3:Soap_Abs_Synch

Output Message:File_Request_MT

Input Message:Soap_Response_MT

it's my mistake, I apologize. One more thing why u created two interfaces for Webservice and RFC like inbound and abstract? And again u did mapping btw inbound and abstract! why is it needed? U can directly use the abstract interface isn't it?

U said that u are going to send the Message received by file directly to the webservice isn't it? Then why u r doing mapping btw File Request and Soap Request? The messages between File request and Soap request are different?

As far as my understanding and from ur inputs u need only one mapping. From Webservice response to RFC request.

raj.

Former Member
0 Kudos

Raj,

As for your question on what is being used for SOAP request:

1)File - Message type - FILE_REQUEST_MT

V

2) This is Received in the BPM Receive step , and then, onto Synchronous Send Step.

V

3){ Synchronous send Step in BPMhas output Message - FiLe_request_MT and

here is my question

Can the input message be

RFC_Request

V ^

SOAP }

V

4) Send Step which has RFC_REQUEST

I have a message mapping and Interface mapping for

the step to Map :

File_Request -> SOAP_request

&

SOAP_Response ->RFC_REquest

Hope this helps in understanding my question.

justin_santhanam
Active Contributor
0 Kudos

Hi,

I got the flow. Could you please confirm whether u've created the objects as I mentioned below.

Interface Objects

Object 1: File_Request_Abs

Object 2: Soap_Response_Abs

Object 3:Soap_Abs_Synch

Output Message:File_Request_Abs

Input Message:Soap_Response_Abs

Object 4:Rfc_Request_Abs

Mapping Objects

Soap_Response_to_RFC_Request

Source: Object2

Target: Object4

BPM Container Elements

recv_container----


Object1

Soap_response_container-------Object2

RFC_request_container----


Object4

BPM Flow

Receive---->Send Synch-->Transformation----->Send Asynch

Receive -


> recv_container

Send Synch -


> recv_container(Request Message), Soap_response_container(Response Message)

Transformation -


> Source(Soap_response_container), Target(RFC_request_container)

Send Asynch -


> RFC_request_container

I hope the above design helps a bit!!

raj.

justin_santhanam
Active Contributor
0 Kudos

Hello,

As far as my understanding u don't need any bridge.It's very simple scenario. I have couple of question, you said that u r triggering ur BPM with dummy file, it's fine. While calling the SOAP request which message are u using? Does the file contains the message for SOAP request?

raj.