SAPфорум.RU https://sapboard.ru/forum/ |
|
Интерфейс с сайтом ЦБ РФ по закачке курсов валют https://sapboard.ru/forum/viewtopic.php?f=70&t=85355 |
Страница 1 из 3 |
Автор: | Добрыня [ Пт, дек 20 2013, 16:06 ] |
Заголовок сообщения: | Интерфейс с сайтом ЦБ РФ по закачке курсов валют |
Здравствуйте, уважаемые коллеги, форумчане! Сейчас я делаю первые шаги в PI 7.4 и недавно возникла такая вот задачка: получить курсы валют с сайта ЦБР , то есть Реализовать интеграционный сценарий SAP(ABAP Proxy) -> (SOAP Adapter/XI 3.0 Format) PI (SOAP Adapter/SOAP 1.1) -> (Web Service) Сайт ЦБР. Собственно, веб-сервис http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL Применив Web service Navigator я получил -> Запрос: Code: <?xml version="1.0" encoding="utf-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <pns:GetCursOnDate xmlns:pns="http://web.cbr.ru/"> <pns:On_date>2013-12-19T08:42:15.170+04:00</pns:On_date> </pns:GetCursOnDate> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Ответ: Code: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetCursOnDateResponse xmlns="http://web.cbr.ru/"> <GetCursOnDateResult> <xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" id="ValuteData"> <xs:element name="ValuteData" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:OnDate="20131219"> <xs:complexType> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="ValuteCursOnDate"> <xs:complexType> <xs:sequence> <xs:element name="Vname" type="xs:string" minOccurs="0"/> <xs:element name="Vnom" type="xs:decimal" minOccurs="0"/> <xs:element name="Vcurs" type="xs:decimal" minOccurs="0"/> <xs:element name="Vcode" type="xs:int" minOccurs="0"/> <xs:element name="VchCode" type="xs:string" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element> </xs:choice> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <ValuteData xmlns=""> <ValuteCursOnDate diffgr:id="ValuteCursOnDate1" msdata:rowOrder="0"> <Vname>Австралийский доллар</Vname> <Vnom>1</Vnom> <Vcurs>29.3532</Vcurs> <Vcode>36</Vcode> <VchCode>AUD</VchCode> </ValuteCursOnDate> ..................................................................................... <ValuteCursOnDate diffgr:id="ValuteCursOnDate35" msdata:rowOrder="34"> <Vname>Японская иена</Vname> <Vnom>100</Vnom> <Vcurs>31.9918</Vcurs> <Vcode>392</Vcode> <VchCode>JPY</VchCode> </ValuteCursOnDate> </ValuteData> </diffgr:diffgram> </GetCursOnDateResult> </GetCursOnDateResponse> </soap:Body> </soap:Envelope> Как я понимаю, дальше поэтапно: 1. Я должен создать программные компоненты SAP ERP и ЦБР 2. В Enterprise Service Repository (ESR) создать data type, message type, service interface, mapping 3. В Integration Directory (ID): - Создать Business Component в ID для обозначения сайта ЦБР - Собрать интеграционный сценарий Собственно вопрос, уважаемые гуру: =) У нас всё-таки 2 интерфейса или можно обойтись одним? Сообщения 1) GetCursOnDate { On_date } 2) ValuteCursOnDate { Vname Vnom Vcurs Vcode VchCode } Как реализовать mapping 2-х разных структур и правильно ли я рассуждаю? Надеюсь на вашу помощь! Заранее спасибо! |
Автор: | pitroff [ Пт, дек 20 2013, 22:48 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
Добрый вечер! Интерфейсов будет 2: исходящий из ЦБ (SOAP) и входящий в ERP (PROXY или RFC). Оба - синхронные. Мэппинг между синхронными интерфейсами включает в себя два message mappings: запрос ERP -> запрос в ЦБР и ответ ЦБР -> ответ в ERP. Порядок действий, в принципе, изложен правильно, только программные компоненты тут не сильно важны - можно и все интерфейсы в один вложить. |
Автор: | Добрыня [ Сб, дек 21 2013, 19:16 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
pitroff Спасибо большое!!! |
Автор: | doleynikov [ Вт, дек 24 2013, 14:47 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
привет, коллеги. Я тут пробую решить одну задачку в плане самообразования: есть файловый канал, на котором появляется файл с датой. Нужно, чтобы по этой дате вернулся файл с курсом ЦБ. Что-то мне не приходилось такого делать. Тут без БПМ не получается, поскольку асинк-синк-асинк. нашел http://scn.sap.com/people/kokil.handa/blog/2010/07/07/use-of-bpm-in-file--soap--file-pi-71-scenario--design-approach, я запутался в интерфейсах. получается я не правильно понимал абстрактный интерфейс, наверное? Подскажите вкратце, что это. Какой-то тупейший провал в моих знаниях - не приходилось BPM применять на практике. |
Автор: | Добрыня [ Вт, дек 24 2013, 17:47 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
doleynikov, я бы помог, но сам новичок pitroff дело было так... 1. я реализовал все data types, message mappings, интерфейсы, actions в 1-м компоненте, но разных namespace-ах когда дело дошло до Сценария, то при загрузке actions и создании связи между ними все поля пустые это потому что они синхронные? или делается по-другому? Немного не по теме. Касательно ABAP Proxy Генерация прокси, а затем активация прошли успешно но при попытки тестирования F8 ругается на "No implementing class registered for the interface (ABAP interface, request message, namespace)" хотя всё реализовано... Заранее спасибо |
Автор: | molochko_mf [ Ср, дек 25 2013, 05:35 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
Всем привет, немного выпал из жизни форума. doleynikov написал(а): привет, коллеги. Я тут пробую решить одну задачку в плане самообразования: есть файловый канал, на котором появляется файл с датой. Нужно, чтобы по этой дате вернулся файл с курсом ЦБ. Что-то мне не приходилось такого делать. Тут без БПМ не получается, поскольку асинк-синк-асинк. нашел http://scn.sap.com/people/kokil.handa/blog/2010/07/07/use-of-bpm-in-file--soap--file-pi-71-scenario--design-approach, я запутался в интерфейсах. получается я не правильно понимал абстрактный интерфейс, наверное? Подскажите вкратце, что это. Какой-то тупейший провал в моих знаниях - не приходилось BPM применять на практике. Решенить твою задачу file-ws-file без BPM можно File-RFC-File(Without BPM) по аналогии. Абстрактный интерфейс используется для работы в ccBPM (может в ховых версиях системы что изменилось). |
Автор: | pitroff [ Ср, дек 25 2013, 11:53 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
Добрыня, ох, чувствую, порядка нет в Ваших знаниях. Сценарий нужен, когда Вы разрабатываете интерфейс "от дизайна к наполнению", то есть сначала рисуете будущий сценарий, а потом наполняете его деталями. Ну или для удобства и красоты. ) В Вашем случае, actions и сценарий можно пока пропустить и, если интерфейсы и мэппинг готовы - перейти уже к конфигурированию. P.S.: по Proxy - лучше отдельной темой и со скриншотом. |
Автор: | pitroff [ Ср, дек 25 2013, 12:22 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
doleynikov написал(а): привет, коллеги. Я тут пробую решить одну задачку в плане самообразования: есть файловый канал, на котором появляется файл с датой. Нужно, чтобы по этой дате вернулся файл с курсом ЦБ. Что-то мне не приходилось такого делать. Тут без БПМ не получается, поскольку асинк-синк-асинк. нашел http://scn.sap.com/people/kokil.handa/blog/2010/07/07/use-of-bpm-in-file--soap--file-pi-71-scenario--design-approach, я запутался в интерфейсах. получается я не правильно понимал абстрактный интерфейс, наверное? Подскажите вкратце, что это. Какой-то тупейший провал в моих знаниях - не приходилось BPM применять на практике. molochko_mf правильно написал, async-sync bridge спасет от BPM. Эти модули изначально под JMS адаптер написаны, но работают с любым: http://help.sap.com/saphelp_nwpi71/help ... ontent.htm Делаем два синхронных интерфейса, в одном из них запрос - это формат файла-запроса, ответ - формат файла с курсами; второй интерфейс - запрос-ответ ЦБ. По сути, все настройки стандартные, кроме sender comm channel, который "поднимает" файл с запросом: 1) Используем AF_Modules/RequestResponseBean до модуля адаптера, AF_Modules/ResponseOnewayBean - после. 2) Для RRB ставим параметр passThrough со значением true 3) Для ROB ставим параметры, указывающие куда отправить ответ: receiverParty = <Party> (если есть, если нет - можно пропустить) receiverService = <Имя бизнес-системы - получателя> (в нашем случае - та, что за файлы отвечает) receiverChannel = <Канал связи> (receiver, записывающий файл с курсами) Как-то так. В другую сторону тоже работает, sync-async bridge, только настройки делаются в receiver comm channel. |
Автор: | vick [ Пн, окт 13 2014, 15:32 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
pitroff написал: Добрый вечер! Интерфейсов будет 2: исходящий из ЦБ (SOAP) и входящий в ERP (PROXY или RFC). Оба - синхронные. Мэппинг между синхронными интерфейсами включает в себя два message mappings: запрос ERP -> запрос в ЦБР и ответ ЦБР -> ответ в ERP. Порядок действий, в принципе, изложен правильно, только программные компоненты тут не сильно важны - можно и все интерфейсы в один вложить. Всем доброго дня Также новичок в PI. При чтении данной темы возник вопрос: почему интерфейсы исходящий из ЦБ (SOAP) и входящий в ERP (PROXY или RFC). Не наоборот - исходящий/outbound из ERP и входящий/inbound в ЦБ? Тип интерфейса ведь определяется относительно системы отправителя/получателя. В данном случае отправитель - ERP, запрашивает данные, получатель ЦБ возвращает данные в ответ. И еще вопрос - возможно ли настроить сценарий таким образом, чтобы запрос поступал не из ERP, а PI сам отправлял запрос в ЦБ и, получив ответ, передавал данные в ERP (по аналогии с файловым адаптером, где можно настроить период чтения каталога с искомым файлом, или jdbc адаптер - суть та же)? |
Автор: | Chaser009 [ Ср, окт 15 2014, 02:28 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
vick написал(а): И еще вопрос - возможно ли настроить сценарий таким образом, чтобы запрос поступал не из ERP, а PI сам отправлял запрос в ЦБ и, получив ответ, передавал данные в ERP (по аналогии с файловым адаптером, где можно настроить период чтения каталога с искомым файлом, или jdbc адаптер - суть та же)? Ну если я не ошибаюсь (пусть коллеги поправят), PI сам не особо может что-то стартовать. Всегда нужен какой-то инициатор (файл на файловом канале, мэйл на почту, вызывающий веб-сервис), одним словом, входное сообщение в PI. |
Автор: | Chaser009 [ Ср, окт 15 2014, 02:36 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
doleynikov написал(а): привет, коллеги. Я тут пробую решить одну задачку в плане самообразования: есть файловый канал, на котором появляется файл с датой. Нужно, чтобы по этой дате вернулся файл с курсом ЦБ. Что-то мне не приходилось такого делать. Тут без БПМ не получается, поскольку асинк-синк-асинк. нашел http://scn.sap.com/people/kokil.handa/blog/2010/07/07/use-of-bpm-in-file--soap--file-pi-71-scenario--design-approach, я запутался в интерфейсах. получается я не правильно понимал абстрактный интерфейс, наверное? Подскажите вкратце, что это. Какой-то тупейший провал в моих знаниях - не приходилось BPM применять на практике. Ну абстрактный интерфейс используется внутри IP для хранения/обработки данных. Поэтому у него нет деления на входящий/исходящий - может работать в любом направлении. Кстати, мы у себя от BPM не бегаем Временами очень удобно: при отправке, допустим, сразу в несколько систем со сбором и обработкой статусов или, как я недавно делал, при забрасывании данных в SQL и вызовом пары хранимых процедур и юзерских функций по результату заброса вам адаптерные мосты могут не помочь. Поэтому, будет нелишним поизучать |
Автор: | Chaser009 [ Ср, окт 15 2014, 02:54 ] |
Заголовок сообщения: | Re: Интерфейс с сайтом ЦБ РФ по закачке курсов валют |
Кстати, по поводу инициирования в PI: тут уважаемый chumpa бросал клич на заявки по разработке адаптера. Вот пару раз посещала мысль, что хорошо бы иметь некий адаптер-планировщик, который бы по неким условиям или по расписанию мог бы формировать сообщение заданного типа с указанными значениями и отправлять его в PI, а дальше уже тот же IP ловил бы его и выполнял определенную последовательность действий. |
Автор: | chumpa [ Ср, окт 15 2014, 14:38 ] |
Заголовок сообщения: | Re: Интерфейс с сайтом ЦБ РФ по закачке курсов валют |
вопрос лишь -- как генерировать XML по расписанию, то есть как задавать в канале что константа а что по каким правилам должно генерироваться. Если всё выносить в модули, будет ненамного легче использовать. |
Автор: | chumpa [ Ср, окт 15 2014, 14:51 ] |
Заголовок сообщения: | Re: Вопрос Новичка: задача по курсу валют |
Chaser009 написал: Ну если я не ошибаюсь (пусть коллеги поправят), PI сам не особо может что-то стартовать. Всегда нужен какой-то инициатор (файл на файловом канале, мэйл на почту, вызывающий веб-сервис), одним словом, входное сообщение в PI. Официальный способ -- сделать исходящий джава-прокси и сделать шедулерный Message-driven bean. Запланировать джоб и дёргать в бине абап-прокси. Как-то так Ну и разные способы с BPMN, но там везде изначально надо стартовать процесс, а стандартного джоба старта чего-либо кастомного после рестарта системы нет. |
Автор: | chumpa [ Ср, окт 15 2014, 17:01 ] |
Заголовок сообщения: | Re: Интерфейс с сайтом ЦБ РФ по закачке курсов валют |
как вариант по адаптеру, представляются два варианта генерации сообщения -- через XSLT и через XML+изменения: 1. Реализовать только отправитель, что логично 2. Есть в АПИ кнопочка загрузки файла. Правда, в стандартных адаптерах она не задействована. Так вот, через неё загрузить некий xml-payload или xslt. 3. Для режима XML+Изменения, сделать табличку с полями: Адрес (XPath) Выражение (тоже XPath) и в ней для нужных XPath указывать, что по данному адресу надо прописывать 4. Расписание задавать или в кроновском стиле или как это в NWA есть. |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |