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

SOAP receiver: очищается динамическая конфигурация
https://sapboard.ru/forum/viewtopic.php?f=70&t=93751
Страница 1 из 1

Автор:  Андрей Петин [ Сб, окт 01 2016, 20:41 ]
Заголовок сообщения:  SOAP receiver: очищается динамическая конфигурация

Добрый день.

Сделан асинхронно-синхронный мост: JDBC -> SOAP -> JDBC.
Некоторые поля из исходного сообщения нужны в обратном мэппинге.
Для этого я их в "прямом" мэппинге кладу в динамическую конфигурацию, ожидая их видеть и в ответном сообщении, т.к. получатель синхронный.

Однако в ответе этих новых полей в динамической конфигурации нет.
Вроде пишут, что SOAP-канал всё это очищает. А можно как-нибудь обойти эту проблему?


P.S.: в сценарии FILE -> JDBC (синх.) -> FILE в ответе динамическая конфигурация сохранялась.

Автор:  Chaser009 [ Пн, окт 03 2016, 05:06 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Здравствуйте!
Попробую угадать: это, скорее всего, ICo. Да, именно так и происходит, это известный "прикол".

Решить можно просто:
До XISOAPAdapterBean ставите АF_Modules/DynamicConfigurationBean с параметрами:
key.1 write <dc key namespace> <dc key name>
value.1 module.MyValue

Этим вы сохраните значение из DC в переменную модуля MyValue.

После SOAP-модуля еще раз для обратной операции (чтения):
key.1 read <dc key namespace> <dc key name>
value.1 module.MyValue

Естественно, Module Key должен быть отдельный для каждого.

Автор:  Андрей Петин [ Пн, окт 03 2016, 09:50 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Добрый день!

Да, ICo (у меня 7.4 без абапа).
Проблема в том, что значений произвольное количество.
То есть, допустим, в запросе есть 10 объектов с идентификаторами и другими данными (номер телефона).
Во внешнюю систему (на веб-сервис) передаются только телефоны, а полученные 10 ответов нужно склеить с 10 исходными идентификаторами.

Я эти идентификаторы пытался записывать в динамическую конфигурацию в цикле как id[1], id[2] и т.д., а в ответе - считывать.
В общем, видимо, придётся осваивать технологию новых BPM.

Автор:  Андрей Петин [ Пн, окт 03 2016, 11:32 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Chaser009 написал:
Решить можно просто


Подумал, что можно склеить весь набор идентификаторов в одну строку, т.е. если есть значения 11, 22, 33, то сделать 11#22#33 и сохранять её с неким единственным ключом и использовать ваш способ. А на обратном пути расклеивать в 3 значения.
Правда, всё вместе получается как-то не очень изящно, но больше вариантов и не вижу. Либо действительно BPM.

Автор:  Chaser009 [ Пн, окт 03 2016, 11:49 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Попробуйте, например, запихать целиком XML-дерево.
Сам не пробовал, но как вариант.
Или параметры в разных местах?

Автор:  Андрей Петин [ Пн, окт 03 2016, 11:58 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

XML записать в переменную с помощью модуля DynamicConfigurationBean?

Попробую изучить такой вариант. Проблема в том, что значения в динамической конфигурации вроде должны укладываться в 200 символов.

Автор:  Chaser009 [ Пн, окт 03 2016, 12:14 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Тогда еще вариант: в Supplemental Data модуля запихать. Но там, скорее всего, модуль для адаптера писать надо будет.

Автор:  Андрей Петин [ Пн, окт 03 2016, 12:28 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Ага. Как я понял, предложенный вами в первом сообщении вариант как раз туда и пишет эти данные.
То есть нужно понять, как их туда писать не с помощью фиксированного набора ключей из динамической конфигурации, а как-то в цикле.
Т.е. например, искать все ключи определенного пространства имён, или начинающиеся на ID*.

Если существующие модули не позволяют такое делать, то да, наверное, надо свой писать.

Автор:  Chaser009 [ Пн, окт 03 2016, 12:32 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

А что за сценарий в целом?

Автор:  Chaser009 [ Пн, окт 03 2016, 12:47 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Просто если вы с веб-сервиса просто данные тянете какие-то, а не пишете туда что-то, то можно простой асинхронный сценарий с лукапом сделать и не заморачиваться с мостами и сохранениями данных. Дешево и сердито.

Автор:  Андрей Петин [ Пн, окт 03 2016, 12:56 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Сценарий - отправка SMS-сообщений с использованием внешнего сервиса.
С нашей стороны - ID + телефон + текст (читается из БД как JDBC), с той стороны в ответе - только телефон + результат обработки (результат нужно записать также по JDBC).
Но множественность - 1..N.
И телефон как ключ тут не срабатывает, он может и повторяться.

Да может, и lookup сделать лучше, действительно.
Просто с Java-мэппингом это сразу станет несколько сложнее в поддержке - если что, перекомпилировать и снова загружать класс, всё такое.
Думал, может, без этого получится.

Автор:  Chaser009 [ Пн, окт 03 2016, 13:03 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Да нет, тут другое: лукапы используются для получения данных - и только. Они не должны изменять состояние данных.
Вот представьте: запрос вы выполнили, данные по СМС вылетели, а где-то дальше в сценарии ошибка. При перезапуске повторно СМСки полетят - а это плохо.

Автор:  Chaser009 [ Пн, окт 03 2016, 13:09 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Если данных много, попробуйте все-таки Supplemental data. Туда, если правильно помню, можно, например, Map с параметрами закинуть.

Автор:  Андрей Петин [ Пн, окт 03 2016, 13:44 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Chaser009 написал:
При перезапуске повторно СМСки полетят - а это плохо.


Имеете в виду, что желательно иметь staging на стадии "После мэппинга"?
Чтоб если что, то перезапускать не с самого начала?

Автор:  Chaser009 [ Вт, окт 04 2016, 03:38 ]
Заголовок сообщения:  Re: SOAP receiver: очищается динамическая конфигурация

Ну это по ситуации. Я просто имел в виду, что всяческие лукапы настоятельно рекомендуется использовать исключительно для получения данных, без внесения изменений или выполнения каких-то побочных действий.

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