Текущее время: Пт, мар 29 2024, 01:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 12:38 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
делаю такую интеграцию:
есть внешний клиент, который будет по SOAP делать запрос, не который должна ответить САПовская RFCшка.
запрос FRC синхронный, запрос по SOAP - асинхронный. запрос и ответ передаются 1:1 как нужно RFC.
Правильно ли я понимаю, что нужно сделать?
ESB
1)в программный компонент импортировать RFC
2)определить синхронный интерфейс для RFC с указанием его запроса и ответа.
3)определить синхронный интерфейс для SOAP и указать запрос-ответ от RFC.

IB
0)импортировать SOFTWARE COMPONENT как Бизнес систему
1) создать 3 коммуникационных канала
a) прием SOAP запроса
b) обращение к RFC (у нас уже определен для других нужд)
с) передача ответа на SOAP
2)Receiver Determination для SOAP->RFC (SAP)

3) соответствующий INTARFACE DETERMINATION

4) SENDER AGREEMENT для отправки SOAP запроса в САП RFC

Вот тут я что-то запутался. Голова усохла - не помещается вся схема.
Помогите привести в порядок. к Этой RFC есть вызовы из других интеграций, как система отделит их при обработке ответа, чтобы мне приходили только ответы на мои вызовы?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC  Тема решена
СообщениеДобавлено: Ср, янв 22 2014, 13:43 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
Async-sync bridge спасет Вашу голову. :)

Для 7.0, для других версий - аналогично:
http://help.sap.com/saphelp_nw70/helpda ... ameset.htm

Суть в следующем:
1) Принять асинхронный вызов SOAP - тут SAP PI должен закрыть соединение с клиентом, но дождаться ответа от RFC. Этим занимается модуль RequestResponseBean
2) Вызвать синхронный RFC и дождаться от него ответа - этим занимается тот же модуль адаптера RequestResponseBean (подробнее - по ссылке выше). Это гарантирует получение нужного ответа от RFC.
3) Отправить ответ на SOAP клиента - отправлять будет модуль ResponseOnewayBean, ответ будет перенаправлен на канал связи SOAP receiver - то, куда PI должен отправить асинхронный SOAP-ответ.


Итого: IB - три интерфейса:
асинхронный SOAP - запрос, синхронный RFC, асинхронный SOAP-ответ.

ID: бизнес-сервис для SOAP
три канала связи: SOAP sender, SOAP receiver, RFC receiver;
связка Reciever Det - Interface Det - RecAgr для пути SOAP -> запрос -> RFC;
связка BusService-CommChannel для отправки ответа -> SOAP
Sender Agr для SOAP канала - получателя исходного запроса

Вроде все. Пишу по памяти, если что-то не пойдет - будем дальше разбираться.

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Последний раз редактировалось pitroff Вт, фев 11 2014, 14:13, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 14:26 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Спасибо

у меня сложность с куском
Цитата:
связка BusService-CommChannel для отправки ответа -> SOAP
Sender Agr для SOAP канала - получателя исходного запроса

у меня 7.1 и таких названий я не вижу. "BusService" Чему это соответствует?

и еще
Цитата:
Sender Agr для SOAP канала - получателя исходного запроса

Это часть цепочки
Цитата:
связка Reciever Det - Interface Det - RecAgr для пути SOAP -> запрос -> RFC;
или нет?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 14:38 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
странно.

Для простоты отладки сделал пока не SOAP а файловые каналы запроса-ответа. Получаю такое сообщение
Code:
Error: com.sap.aii.af.service.cpa.CPAException: com.sap.aii.af.service.cpa.impl.exception.CPALookupException: Channel object configured for adaptertype SOAP|http://sap.com/xi/XI/System, instead of File|http://sap.com/xi/XI/System.

где есть необходимость в SOAP? или такая схема не работает для файлов? или SOAP в именах объектов предполагает использование только SOAP?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 14:52 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
doleynikov написал(а):
Цитата:
связка BusService-CommChannel для отправки ответа -> SOAP
Sender Agr для SOAP канала - получателя исходного запроса

у меня 7.1 и таких названий я не вижу. "BusService" Чему это соответствует?

Business Component?
Это система, которая создается и описывается прямо в ID - без использования SLD.
Проклятые маркетологи :twisted: все время переименовывают - в 7.0 это был Business Service.

Это необязательно (можно и Business System в SLD создать), но проще и чуть быстрее (не нужно создавать technical system и вообще заходить в SLD).
Зависит от принятого у Вас стандарта - либо все пишем в SLD, либо все внешние системы обозначаем как Business Component.

doleynikov написал(а):
и еще
Цитата:
Sender Agr для SOAP канала - получателя исходного запроса

Это часть цепочки
Цитата:
связка Reciever Det - Interface Det - RecAgr для пути SOAP -> запрос -> RFC;
или нет?


Да, верно.
Просто я привык "развязывать" интерфейс на три части - до PI, мэппинг-обработка и путь до получателя. )

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Последний раз редактировалось pitroff Ср, янв 22 2014, 15:04, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 14:55 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
doleynikov написал(а):
странно.

Для простоты отладки сделал пока не SOAP а файловые каналы запроса-ответа. Получаю такое сообщение
Code:
Error: com.sap.aii.af.service.cpa.CPAException: com.sap.aii.af.service.cpa.impl.exception.CPALookupException: Channel object configured for adaptertype SOAP|http://sap.com/xi/XI/System, instead of File|http://sap.com/xi/XI/System.

где есть необходимость в SOAP? или такая схема не работает для файлов? или SOAP в именах объектов предполагает использование только SOAP?


Проверьте активацию всех объектов в ID.
CPAException - это ошибка чтения из cache, возможно что в кэше сейчас активны старые версии объектов.
Посмотрите также sender и receiver agreement на предмет файловых каналов.
Еще вариант - параметры модуля ResponseOnewayBean, там тоже должен быть файловый канал.

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 15:28 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
все активировано. вроде и sender / receiver агрименты правильные.
Насчет БизнесСистемы: у меня есть созданная система для этого объекта интеграции. Там часть процессов уже сделана. в частности уже работает выгрузка номенклатуры. Интеграцию для вызова RFC я создавал в этой системе в непересекающихся объектах.
Правильно ли это?

ЗЫ: сообщения о неправильном типе адаптера возникают только когда есть файл с данными для запроса. Когда его нет - адаптер исправно проверяет ФТП и ошибок не возникает. Может это поможет диагностировать проблему?

ЗЫ:ЗЫ: НАШЕЛ! я - лошара! в настройках модулей указал неправильный ключ модуля. Должно быть 1-3-3, а я сделал 1-2-3. Вот система и не понимала, чего от нее хотят. Как-раз неправильно указанный параметр содержал имя канала! Наверное PI пытался выдать результат в некий "канал по-умолчанию"

Вроде бы все работает. Если появятся вопросы - я еще задам. Спасибо!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Ср, янв 22 2014, 15:57 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
doleynikov написал(а):
Насчет БизнесСистемы: у меня есть созданная система для этого объекта интеграции. Там часть процессов уже сделана. в частности уже работает выгрузка номенклатуры. Интеграцию для вызова RFC я создавал в этой системе в непересекающихся объектах.
Правильно ли это?


Да, правильно. Я всегда делаю так - все внутренние SAP-системы настраиваю на отсылку данных в SLD автоматически (RZ70) и определяю для них Business System.
Все non-SAP настраиваю в ID как Business Component, присваивая ей нужные мне интерфейсы и каналы связи.
Единственное исключение - если у non-SAP огромное количество интерфейсов. Тогда проще прописать ее в SLD, назначить Software Component и все интерфейсы создавать в этом SC - тогда во время настройки ID будет брать список интерфейсов иcходя из SC.

doleynikov написал(а):
Вроде бы все работает. Если появятся вопросы - я еще задам. Спасибо!

Ну и славно. Не за что. )

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Вт, янв 28 2014, 11:34 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Добрый день, коллеги!

Тестирование на файловых каналах прошло отлично, но при переделке на SOAP столкнулся с вопросом, что отдавать программистам?
какие WSDL будут достаточны, чтобы сделать сервис?
то же самое, если приемный сервис уже готов, что делать, чтобы программер добавил интерфейс к своему софту?
я в сервисах не волоку, даже вопрос программеру поставить затрудняюсь. Он говорит, что WSDL нужен, а как правильный получить в PI - не знаю.

Подскажите!


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Вт, янв 28 2014, 12:12 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
Это уже мелочи. :)

[s]WSDL для sender SOAP генерируется на основе созданного интерфейса из Integration builder:
https://scn.sap.com/thread/1560171[/s]
UPD: Отставить, смотреть пост ниже. :oops:

А для receiver - нужен просто wsdl сервиса, он где-то то-ли во вкладках, то-ли в меню Service Interface.
Выгрузить в файл и отдать программеру.

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Последний раз редактировалось pitroff Вт, янв 28 2014, 20:29, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Вт, янв 28 2014, 13:12 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Спасибо, попробуем.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Вт, янв 28 2014, 20:28 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
Прошу прощения, отвечал с утра и без системы - кое-где наврал. )

1) SOAP Sender WSDL
Генерируем в Configuration Builder, меню Tools -> Display WSDL...

Открывается помощник, в котором задаем следующее:
- URL of web server (кнопку Propose URL не тыкать и ей не верить - врет с испокон веков)
Вбиваем строку такого вида http://<host name>:<port name>/XISOAPAdapter/MessageServlet?channel=<party name>:<service name>:<channel name>
Данные подставляем свои, если party не нужен - пропускаем, но двоеточие после этого необходимо, то есть http://блабла?channel =:NashSystem:NashChannel

Этот URL будет занесен в WSDL и именно на него должен будет поступить вызов от внешнего клиента.

- Interface - выбираем тот самый наш Outbound Interface с запросом от внешней системы
- Sender - вносим имя системы-отправителя(как она называется в PI, имя должно быть тем же, что и в URL), имя интерфейса/пространство имен
Проверяем все данные, жмем Finish - получаем WSDL, которую отдаем программисту со словами: "Вот WSDL для вызова PI".

2) Receiver SOAP
Генерируем в Integration Builder, выбираем свой Inbound Service Interface и в нем меню Tools -> Export WSDL
WSDL сохраняется в локальный файл и отдается программисту со словами - "нам нужен вот такой сервис, мы на него будем слать ответ".

Можно, конечно, sender service через SOAMANAGER провести - но это в Вашем случае будет лишний геморрой. )

Правильность первой WSDL можно до передачи проверить в SOAPUI - очень удобный freeware для всяких SOAP дел, рекомендую.

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Пт, янв 31 2014, 15:47 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
А подскажите еще такой вопрос, где можно посмотреть правильный HOST:PORT ?
<service name> - это имя сервиса асинхронного сервиса передачи запроса в Enterprise Service Builder?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Пт, янв 31 2014, 19:54 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Сб, фев 25 2012, 02:52
Сообщения: 141
Откуда: Москва
Пол: Мужской
<service name> - это имя системы-отправителя (Business System или Business Component - как у Вас определено в Configuration Builder)

<host>:<port> - это http-порт J2EE сервера PI, обычно имя хоста + 5XX00, где XX - номер инстанции

Вот тут, в "result" про url подробнее есть:
http://help.sap.com/saphelp_nwpi711/hel ... ameset.htm

P.S.: Кстати, авторы этой статьи хелпа так и не смогли договориться про то, нужно ли двоеточие, если party отсутствует. %)
В Prerequisites написано - с двоеточием, в Result - без. :D
Я двоеточие ставлю - вроде работает.

_________________
Сажаем самолеты по телефону. :)
SAP - фрилансер.
sap.pitroff.ru


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SOAP-2-RFC
СообщениеДобавлено: Пн, фев 03 2014, 11:34 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, ноя 22 2012, 10:25
Сообщения: 322
Что-то не выходит каменный цветок.
У меня SOAP адаптеры сделаны на AXIS фреймворке. У меня в модулях такое:

Code:
1   AF_Adapters/axis/HandlerBean   Local Enterprise Bean   xireq
2   AF_Adapters/axis/AFAdapterBean   Local Enterprise Bean   afreq
3   AF_Modules/RequestResponseBean   Local Enterprise Bean   1
4   CallSapAdapter   Local Enterprise Bean   sap
5   AF_Modules/ResponseOnewayBean   Local Enterprise Bean   3
6   AF_Adapters/axis/AFAdapterBean   Local Enterprise Bean   afresp
7   AF_Adapters/axis/HandlerBean   Local Enterprise Bean   xires


А вот что в параметрах

Code:
1  passTrough  true 
3  ReceiverService  ISTORE 
3  reseiverCannel  SOAP_Receiver_D
sap  module.pivot  true 
xireq  handler.type  java:com.sap.aii.axis.xi.XI30InboundHandler
xires  handler.type  java:com.sap.aii.axis.xi.XI30InboundHandler


Делаю WSDL на SenderAgreement и пробую обратиться из SOAPUI. Заполняю тестовый запрос как делал в текстовом файле, теми-же значениями. в логах канала не появляется никаких сообщений. Получается даже обращение на канал не приходит?

Канал сам в странном статусе:
Code:
ISTORE_SOAP_SENDER  Channel started but inactive


PS: Как я понял, это потому, что не было сообщений, но я не могу отправить сообщение с SOAPUI. может научите, кто знает?

PSS: Проклятый прокси! Теперь обращение прошло, но есть сообщение:
Code:
HTTP/1.1 500 Internal Server Error
server: SAP NetWeaver Application Server 7.20 / AS Java 7.10
content-type: text/xml; charset=utf-8
content-encoding: gzip
date: Tue, 04 Feb 2014 05:52:27 GMT
transfer-encoding: chunked

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
  <soapenv:Fault>
   <faultcode>soapenv:Server.generalException</faultcode>
   <faultstring>failed to invoke the module proessor; nested exception is:
   java.lang.NullPointerException: while trying to invoke the method com.sap.aii.adapter.axis.ra.Adapter.getService() of a null object returned from com.sap.aii.adapter.axis.ra.AdapterManager.getAdapter(java.lang.String)</faultstring>
   <detail>
    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">sap-pi-00-d.xxxxxx.ru</ns1:hostname>
   </detail>
  </soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
Что это?


Последний раз редактировалось doleynikov Вт, фев 04 2014, 08:46, всего редактировалось 3 раз(а).

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB