Generic PI Async-Sync Bridge Configuration for Any Adapters
PI provides async-sync bridge for the JMS adapter. The configuration is well documented in SAP Help and various blogs and documents on SCN. The configuration involves JMS specific parameters, e.g. JMS correlation id. These parameters are not valid or available for other types of adapters that can process asynchronous messages, e.g. File, JDBC, Mail, IDoc.
In this blog, we will take a look at another configuration option that can use the async-sync bridge, but without any JMS-type of dependencies. The configuration is generic; therefore, we can use any asynchronous communication channels without any other changes. This means for JMS, we will not have to deal with all the special JMS async-sync bridge configurations; you will only need to configure JMS communication channel as a “normal” configuration.
Below denotes the basic integration flows:
The following interfaces are needed:
- Asynchronous outbound request interface from the Sender side
- Asynchronous inbound response interface from the Receiver side
- Synchronous inbound interface to the Receiver
- Asynchronous outbound response interface from the Receiver (this interface should be based on the response message of the synchronous interface in #3)
The following Integrated Configurations (or iFlows) are needed:
- Asynchronous outbound request interface (#1) –> Synchronous inbound interface (#3)
- For Operations Mapping, only the request message type needs to be mapped
- The synchronous Receiver Communication Channel needs to have the following module configurations added (example of a SOAP web service):
Please note the processing sequence. They must be in the order as above. The 2 additional modules are:
- AF_Modules/RequestResponseBean (Module Key: RequestResponseBean)
- AF_Modules/ResponseOnewayBean (Module Key: ResponseOnewayBean module)
- The Module Key can be any name you want. Here is just an example.
The Module Key’s Parameter Names and Values are:
- RequestResponseBean: passThrough = true
- ResponseOnewayBean module: interface = interface name for #4 above
- ResponseOnewayBean module: interfaceNamespace = interface namespace for #4 above
- ResponseOnewayBean module: replaceInterface = true
Note: The rest of the configurations are the same as the standard configurations.
- Asynchronous outbound response interface of the receiver (#4) –> Asynchronous inbound response interface (#2) :
- The sender communication channel must be an asynchronous sender. In this example, it is an asynchronous SOAP sender communication channel.
- When creating the ICO (or iFlow), you must specify a receiver. The receiver is the business system/component to receive the response.
Note: All other configurations are the same as the standard configurations.
For my testing, I used (on the sender side) a File sender communication channel and a File receiver communication channel. Then I replace the File communication channels with JMS communication channels. Everything worked just as well without making any other changes.