SAPфорум.RU
https://sapboard.ru/forum/

асинхронно-синхронный маппинг (idoc->soap->proxy/mail)
https://sapboard.ru/forum/viewtopic.php?f=70&t=92696
Страница 1 из 1

Автор:  Blood Angel [ Ср, мар 23 2016, 13:04 ]
Заголовок сообщения:  асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

есть ERP, генерирует IDOC, его отправляем во внешнюю систему, получаем синхронный ответ и транслируем его асинхронно в прокси в ерп. если в ответе есть определенное значение в поле, то вместо прокси ответ посылается в почту. реализовано все через модули в soap адаптере:
1) сервис интерфейс1 синхроный входящий, в нем реквест и респонс
2) сервис интерфейс2 асинхронный исходящий, в нем респонс.
3) сервис интерфейс3 асинхронный входящий, в нем респонс.
4) сервис интерфейс4 асинхронный, в нем шаблон письма

сделан следующий маппинг:
1) маппинг1 idoc->интерфейс1 реквест
2) маппинг2 интерфейс2->интерфейс3
3) маппинг3 интерфейс2->интерфейс4

создано ICO1, в котором на входе IDOC, ресивер внешняя система, в интерфейсе маппинг1, в outbound processing soap канал со следующими настройками
1 AF_Modules/RequestResponseBean Local Enterprise Bean RequestResponseBean
2 sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean Local Enterprise Bean soap
3 AF_Modules/ResponseOnewayBean Local Enterprise Bean ResponseOnewayBean module

RequestResponseBean passThrough true
ResponseOnewayBean module interface сервис интерфейс 2
ResponseOnewayBean module interfaceNamespace сервис интерфейс 2 наймспейс
ResponseOnewayBean module replaceInterface true

и ICO2 в котором на входе сервис интерфейс2, в ресивере по условиям либо ERP, либо почта, в интерфейсе маппинг2 или маппинг3, ну и соответсвенно вызовы каналов в ERP или почту.

все прекрасно работает, пока внешняя система вместо респонса не захочет послать Fault сообщение.. тогда в мониторинге входящее сообщение ICO1 падает в ошибку, а в логах у него написано http 500 ошибка и он не может определиться что делать с таким ответом.
3/21/2016 09:42:26.890 AM Error SOAP: Response message contains an errorXIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
3/21/2016 09:42:26.890 AM Information SOAP: Continuing to response message 137a19da-ef30-11e5-9b7f-000012156852
3/21/2016 09:42:26.890 AM Information SOAP: Processing completed
3/21/2016 09:42:26.906 AM Error Exception caught by adapter framework: No sender agreement configured that matches the messages header fields (sender party: "", sender service: "внешняя система", interface: "интерфейс1", receiver party: "", receiver service: "ERP")
3/21/2016 09:42:26.906 AM Error MP: exception caught with cause com.sap.engine.interfaces.messaging.api.exception.ConfigException: No sender agreement configured that matches the messages header fields (sender party: "", sender service: "внешняя система", interface: "интерфейс1", receiver party: "", receiver service: "ERP")
3/21/2016 09:42:26.906 AM Error Transmitting the message to endpoint <local> using connection IDoc_AAE_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.ConfigException: No sender agreement configured that matches the messages header fields (sender party: "", sender service: "внешняя система", interface: "интерфейс1", receiver party: "", receiver service: "ERP")

если через wsnavigator сделать вызов с теми же параметрами, то получаем в ответ структуру Fault
вопрос: как-куда добавить обработку Fault, чтобы оно слало на почту?
наверное несколько сумбурно получилось.

Автор:  LadyWind [ Ср, мар 23 2016, 17:16 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

ОН НАСТОЯЩИЙ!!!

Автор:  Blood Angel [ Ср, мар 23 2016, 17:34 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

Я думал ответил кто, а тут лв говорит, что привидение увидела

Автор:  Chaser009 [ Чт, мар 24 2016, 02:22 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

Blood Angel написал(а):
вопрос: как-куда добавить обработку Fault, чтобы оно слало на почту?
наверное несколько сумбурно получилось.


Здравствуйте!

С ошибками SOAP - это отдельная песня. Было уже несколько тем по этому поводу.

В общем случае, fault, если это не Application Fault (который может быть описан в wsdl сервиса), генерирует System Error в PI.

Можно попытаться отключить SOAP Envelop в настройках адаптера, сгенерировать "обертку" самому через Java/XSLT, в структуре ответного сообщения описать как структуру ответа, так и структуру fault-сообщения, двумя сегментами. В адаптере выставить также признак, что не надо реагировать на ошибку. В таком случае, по идее, Вам назад в любом случае прилетит структура ответа, где в зависимости от того, был fault или нет, будет заполнена либо структура ответа, либо структура fault. А дальше уже в зависимости от результата бросаете его туда, куда Вам нужно.

P.S. Я в свое время на этот бардак глянул и сделал мост в ccBPM. Там этого гемороя нет. System Error (точнее, сам факт его возникновения) прекрасно ловится и дальше уже все разруливается. Правда, работает медленнее, ну и только для Dual Stack. Ну и минус в том, что сообщение исходное уже перезапустить не получится, в отличие от адаптерного моста, потому что исходное сообщение будет со статусом "Delivered".

Автор:  Blood Angel [ Чт, мар 24 2016, 13:03 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

это именно fault, который описан в wsdl, но он там просто описан как message. т.е. при обращении к внешней системе она может вернуть сообщение двух типов: респонс или фаулт. как их научиться отлавливать и корректно раскидывать. с одним типом проблем нет.

Автор:  Chaser009 [ Пт, мар 25 2016, 02:20 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)  Тема решена

Ну, может быть, в этом случае стоит поиграться с параметрами "interfaceOnFault", "replaceInterfaceOnFault" и "interfaceNamespaceOnFault". Ну и отдельный ICO для ошибочного ответа.

Автор:  Blood Angel [ Пн, мар 28 2016, 12:47 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

Спасибо, помогло.

Автор:  mona_lisa [ Вс, июл 16 2017, 22:03 ]
Заголовок сообщения:  Re: асинхронно-синхронный маппинг (idoc->soap->proxy/mail)

А не могли бы вы расписать решение. Какой и как параметры выставили? ICo отдельный сделали?

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/