on 04-13-2010 4:57 PM
I am using PI 7.0. My scenario is ABAP Proxy -> PI -> JDBC (all synchronous).
I need to be able to map some of my request values back to SAP with the rest of the JDBC response. Since Global Container does not work across maps and Dynamic Configuration does not appy to JDBC, it seems like I have to use BPM to get this working. In fact, I have developed a similar scenario in the past but it was synchrous and the request/response "double-map" was for another receiver (asychronous).
In this scenario I cannot figure out where the "double-map" map belongs within the synchonous chain. Can anyone help or point me to a blog (that I have yet to find)?
Thanks,
Keith
Can you tell me what a Double-Map means....never heard of this term....and as far as your requirement is concerned, yes you have to use a BPM.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You will receive a message...then send it ot target to get back response....then map this response with original message and then send it to original sender....is the flow correct? If yes, then below is the BPM design for it:
Receive --> Transformation1 --> SendSYNC --> Transformation2 --> Send.
transformation1 can be placed ouside the BPM...in Interface Determination.
Transformation2 will be in the BPM and will be a 2:1 mapping...two source messages..Original request Message and Response Message....target will have the format as expected by the original sender.
Regards,
Abhishek.
What about the modes? On the Receive step, I assume I need to have "start process" checked but then the mode choices are either 'Async' or 'SyncAsyncBridge'. I have doubts as there is no async piece in this scenario. The process starts with a synchronous proxy call from ECC and then has a synchronous call to the database.
Spent some time on this yesterday evening, but still have a disconnect somewhere.
When I do configuration and then run a test, the BPM seems to be trying to respond to ECC prior to actually performing its own steps.
I know it is not easy to follow information presented like this, but if you notice anything...it seems like I have a sync or async interface that may need flipping.
Message Types:
ECCRequest
ECCResponse
DatabaseRequest
DatabaseRequest_response
I need the ECCRequest to map to the DatabaseRequest. Then a synchronous call to the database and get the response. Then map the DatabaseRequest and DatabaseResponse to ECCResponse. Finally send the ECCResponse back to ECC system (synchronous connection still open from original start).
BPM Receive1
Message: Container_Abstract_Async_DatabaseRequest
Start Process: Checked
Mode: Open S/A Bridge (I don't understand where Async part comes in.)
Sync Interface: Abstract_Sync_DatabaseCall (OutputMsg=DatabaseRequest, InputMsg=DatabaseRequest_response)
SendDBCall
Mode: Sync
Sync Interface: Abstract_Sync_DatabaseCall
Request Msg: Container_Abstract_Async_DatabaseRequest
Response Msg: Container_Abstract_Async_DatabaseResponse
Receiver From: Send Context
Transformation
Interface Mapping: Request_and_Response_to_AbstractAsyncECCResponse
Source Messages: Container_Abstract_Async_DatabaseRequest and Container_Abstract_Async_DatabaseResponse
Target Message: AbstractAsyncECCResponse
SendResponse
Mode: Closes S/A Bridge
Message: ??? (figured it would be Container_Abstract_Async_ECC_Response, but this errors...used Container_Abstract_Async_DatabaseResponse, since it activates, to test)
Opened By: Receive1
Raj,
I am talking to the ABAP team as Stefan recommended, but I would still like to get this BPM figured out.
I followed your flow, but am having problems figuring out the Message Interfaces at the beginning of the flow. I have 4 messages (ECCRequest, ECCResponse, DBRequest, DBResponse).
What type of message interface do I need to be using at the Receive step? I think it needs to be synchronous to start the S/A Bridge, but it has to be abstract. But then what messages?
I have tried numerous combinations, but to no avail.
Thanks,
Keith
> What type of message interface do I need to be using at the Receive step? I think it needs to be synchronous to start the S/A Bridge, but it has to be abstract. But then what messages?
> I have tried numerous combinations, but to no avail.
for a sync call you need three interfaces. One abstract sync and two abstract async for request and response each.
the async interfaces are used to define the container elements.
> I am using PI 7.0. My scenario is ABAP Proxy -> PI -> JDBC (all synchronous).
>
> I need to be able to map some of my request values back to SAP with the rest of the JDBC response.
Wha you need this? You can combine the data inside the ABAP program which calls the Proxy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> That is how I received the requirements,
I hear that a lot
> but I will attempt to negotiate this suggestion with the ABAP team.
Ask them, why they want the ABAP code to receive data, which it has already in memory.
> Still, is this possible in BPM?
Yes, very easiy: just do as you described by yourself.
> I was going to be adding a BPM block with timeout anyway.
If you do not use the multimapping, this is a waste of system ressources.
The ABAP program has to do some error handling anyway in a sync scenario.
BPM is difficult to develop, error prone, hard to monitor and ressource intensive.
Before you use BPM, think about alternatives.
User | Count |
---|---|
83 | |
10 | |
10 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.