Уф. Спасибо, очень Вы полезную ссылку выложили, особенно комментарии к посту.
Короче, проверил, все работает и с Вашим вариантом - когда модули моста в sender CC.
Единственное, городить SOAP-сервер не стал, запрос принял по SOAP, а ответ выгрузил в файл.
Итого:
1) три интерфейса: асинхронные SI_SOAP_req_out и SI_File_resp_in, синхронный RFC - импортирован из системы
2) Мэппинги один ОМ + два MM:
- Делаем MM1: запрос SOAP -> RFC (тут все просто)
- Создаем MM2, исходное сообщение -
<RFC_Module_Name>.Response, целевое - ответ во внешнюю систему.
- Делаем ОМ1: Здесь нужно немного повозится, но, спасибо мистеру Ли - все решаемо. )
Обман №1: редактируем исходный интерфейс (SOAP-запрос), ставим тип "синхронный", в качестве ответа подставляем необходимый нам SOAP-ответ.
Сохраняем интерфейс, но НЕ АКТИВИРУЕМ его.
Создаем OM, исходный интерфейс - Запрос из SOAP, целевой - RFC.
Подставляем ММ1 и ММ2 на вкладки request и response соответственно. Активируем ОМ.
ОТМЕНЯЕМ изменения исходного интерфейса (возвращаем его в асинхронный вид, с сообщением-запросом).
3) Строим в ID
ОДИН путь
SOAP sender (для него еще нужен Sender Agreement) -> Rec.det -> Int.Det(+mapping) -> Rec.agreement) -> RFC
4) Параметры модулей в SOAP Sender:
Code:
AF_Modules/RequestResponseBean Local Enterprise Bean 1
CallSapAdapter Local Enterprise Bean soap
AF_Modules/ResponseOnewayBean Local Enterprise Bean 2
1 passThrough true
2 adapterNamespace http://sap.com/xi/XI/System
2 adapterType File
2 receiverChannel CC_ExtSystem_File_Receiver
2 receiverService BS_External_System
Активируем, запускаем, должно работать.
Да, SOAP обычный, AXIS не трогал.
UPD: ошибся, там ОДИН путь маршрутизации. Обратно PI сам подхватит нужный мэппинг.
UPD2: с мэппингами - все еще изящней, чем у Ли получилось - подправил. Ли писал для модулей в ресивере, а у нас - sender.