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

Сохранить имя файла в payload в адаптере
https://sapboard.ru/forum/viewtopic.php?f=70&t=86668
Страница 1 из 1

Автор:  Chaser009 [ Вт, апр 22 2014, 09:13 ]
Заголовок сообщения:  Сохранить имя файла в payload в адаптере

Коллеги, добрый день!

Вопрос: можно ли как-то в файловом адаптере выдернуть имя файла и сохранить его в payload сообщения?

Я пытался так:
В модулях добавляю

AF_Modules/DynamicConfigurationBean dc
AF_Modules/PutPayloadValueBean ppl

В параметрах

dc key.0 write http://sap.com/xi/XI/System/File FileName
dc value.0 module.fileName
ppl put:/ns0:MT_XLS_Message/FileName module.fileName
ppl xmlns xmlns:ns0="urn:XLS_to_XML"

Вылетает в ошибку, как я понимаю, на вызове PutPayloadValueBean. Причем ощущение, что не нравится именно module.fileName в качестве параметра, так как если поставить что-то типа "какое-то значение", то все чудесно работает.

Вот думаю: вообще возможно такое действие?

Автор:  Jey1977 [ Вт, апр 22 2014, 11:25 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

В меппинге достать из динамик конфигурейшн и затолкать в пейлоад.

Автор:  chumpa [ Вт, апр 22 2014, 11:55 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

и не забыть поставить "Set ASMA" в канале.

Автор:  Chaser009 [ Вт, апр 22 2014, 14:28 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

Jey1977 написал(а):
В меппинге достать из динамик конфигурейшн и затолкать в пейлоад.


chumpa написал:
и не забыть поставить "Set ASMA" в канале.


Да не вопрос :-) Дело в том, что мэппинга нет. Структура сообщения рождается в моем модуле адаптера. Я, конечно, уже в модуле выхватил нужные данные и положил, куда нужно. Но просто интересно: вроде теоретически должно работать, хотя именно в таком варианте я примеров не находил. Вроде достать из Dynamic Configuration и положить в переменную контекста модуля можно. Взять из переменной и записать в пэйлоад тоже. Но почему-то оно у меня не работает.

Автор:  Jey1977 [ Вт, апр 22 2014, 14:44 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

Chaser009 написал:
Вроде достать из Dynamic Configuration и положить в переменную контекста модуля можно. Взять из переменной и записать в пэйлоад тоже. Но почему-то оно у меня не работает.


Не логично. А куда писать в пейлоад? В какое место? Преобразовывть его как-то?

Автор:  Chaser009 [ Ср, апр 23 2014, 02:08 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

Jey1977 написал(а):
Не логично. А куда писать в пейлоад? В какое место? Преобразовывть его как-то?


Chaser009 написал:
ppl put:/ns0:MT_XLS_Message/FileName module.fileName
ppl xmlns xmlns:ns0="urn:XLS_to_XML"


Вроде все логично: указываете XPath-выражение, куда писать, и все отлично пишется. Ничем не отличается, на мой взгляд, от записи в мэппинге или java-коде.



Вот что интересно: в адаптере-отправителе просто отказывалось работать с ошибкой "Module exception: null".
Перенес в канал-получатель. Там DynamicConfigurationBean отрабатывает:
write property fileName from key (http://sap.com/xi/XI/System/File)FileName with value XLStoXML.xls;
Дальше пошел PutPayloadValueBean:
PutPayloadValueBean: contextKey =fileName
PutPayloadValueBean: put:xpath =/ns0:MT_XLS_Message/@ReturnAddress
MP: exception caught with cause com.sap.aii.af.lib.mp.module.ModuleException: PutPayloadValueBean: Value cannot be null

Ощущение, что второй модуль не видит переменную, созданную первым.

Автор:  Jey1977 [ Ср, апр 23 2014, 09:45 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

Chaser009 написал:
Ничем не отличается, на мой взгляд, от записи в мэппинге или java-коде.


Наверное. Только еще файл дополнительно парсите. Да и непонятно что делать если ошибка при этом будет.

Автор:  Chaser009 [ Ср, апр 23 2014, 10:03 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

Jey1977 написал(а):
Наверное. Только еще файл дополнительно парсите. Да и непонятно что делать если ошибка при этом будет.


Мы, наверное, не совсем понимаем друг друга :-) Парсинг файла модулем - это отдельная задача. А подхватить атрибут в адаптере - это попутно, возникла позже. И может понадобиться в иных случаях.
Конечно, можно UDF'ы клонировать для каждого компонента, но почему не воспользоваться возможностью получить требуемое без написания кода?

Правда, похоже, фокус не удался...

Автор:  rybalkin [ Чт, ноя 23 2017, 18:08 ]
Заголовок сообщения:  Re: Сохранить имя файла в payload в адаптере

DynamicConfigurationBean stores the value in the module context under keys that begin with "module."
However, PutPayloadValueBean retrieves the value in the module context with prefix "ValueBean.".
So the two modules are not compatible

Взято отсюда
https://archive.sap.com/discussions/thread/3884251

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