вторник, 25 октября 2016 г.

Убираем пустые поля из интеграционного объекта при мэппинге или как условно мэппить поля.

Часто при интеграции конечная система требует чтобы поля, которые не будут изменяться, или пустые поля не передавались в сообщении или поля передавались при определенных обстоятельствах.
Эту задачу позволяет решить мэппинг. Как это реализовать в DTEScript мэппинге или XSLT мэппинге известно. А вот для стандартного DTE мэппинга по данному вопросу документации от вендора я не встречал.
Обычно при прямом мэппинге поле в поле, это выглядит так:



Для реализации данной задачи используется особенность DTE мэппера. Он не мэппит системные поля интеграционного компонента(Integration Component Field)(это видно на изображении). Поэтому для того, чтобы по какому либо условию исключить поле из конечного объекта достаточно написать выражение, которое условно вернет нам системное поле.
IfNull([Main Fax Number],[Id])

Пример системного поля:

Вот так будет выглядеть мэппинг и результат мэппинга:


Мы видим, что поле из выражение не заполнилось, т.к. оно пустое.
Выражение в мэппинге может быть гораздо сложнее, чем в данном примере.