Файл конфигурации импорта. Тег <...-converter>
Тег <...-converter> преобразует значение из источника импорта в какой-то специальный вид. Если не указан, то преобразователь будет определен на основе метаинформации.
Вложен в <attr>.
- <ad-image-converter>
- <boolean-converter>
- <case-list-converter>
- <collection-converter>
- <complex-object-converter>
- <datetime-converter>
- <double-converter>
- <file-content-converter>
- <hyperlink-converter>
- <integer-converter>
- <localized-column>
- <object-converter>
- <script-converter>
- <string-converter>
- <time-interval-converter>
<ad-image-converter>
Тег <ad-image-converter> указывает, что нужно импортировать картинки из AD, используется для преобразования и сравнения картинок.
Логика работы
- Если mode = CREATE, то атрибуты заполняются, как обычно.
- Если mode = UPDATE, то если в атрибуте лежал такой-же файл - редактирование не происходит.
- Если было пусто, либо файлов больше 1, либо 1, но другой - устанавливается новое значение.
- Если старое значение было не пусто, а новое = null, то старое значение затрется, либо нет — в зависимости от флага eraseOld.
Параметры
-
title — название загружаемого файла.
Тип: Строка. Необязательный. По умолчанию picture
-
mimeType — формат хранения (Mime Type) загружаемого файла.
Тип: Строка. Необязательный. По умолчанию image/jpeg
-
eraseOld — определяет, нужно ли удалять старое значение атрибута, если его значение не пусто, а новое значение пусто.
Возможные значения параметра:
- true — старое не пустое значение файла удаляется;
- false — старое не пустое значение файла сохраняется.
Тип: Логический. Необязательный. По умолчанию false
Пример
<attr name="idHolder" column="id"> <ad-image-converter title='pic.jpg' mimeType='image/jpeg' eraseOld='true'/> </attr>
<boolean-converter>
Тег <boolean-converter> преобразует импортируемое значение в логическое значение.
Параметр
-
true-value — задает значение соответствующее "истине".
Если значение атрибута не задано, то импортируемые данные считаются true, в случаях если значение "true" или "yes".
Тип: Строка. Обязательный.
Пример
<attr name="idHolder" column="id"> <boolean-converter true-value="goodValue" /> </attr>
<case-list-converter>
Тег <case-list-converter> преобразует импортируемое значение в набор типов класса.
Параметры
-
delimiter — символ, которым отделены объекты.
Тип: Символ. Обязательный.
-
class — класс, среди типов которого производится поиск типов.
Тип: Строка. Обязательный.
Пример
<attr name="idHolder" column="id"> <case-list-converter delimiter="," class="ou"/> </attr>
<collection-converter>
Тег <collection-converter> преобразует коллекцию значений (для атрибутов типа "Набор ссылок на бизнес-объект" и "Набор элементов справочника") — определяет соответствие для каждого объекта во входящих данных и перенаправляет преобразование к конкретному конвертеру.
Параметры
-
delimiter — символ, которым отделены объекты.
Тип: Символ. Обязательный
Пример
<attr name="idHolder" column="id"> <collection-converter delimiter=","> <object-converter attr="idHolder" metaclass="ou"/> <script-converter></script-converter> </collection-converter> </attr>
<complex-object-converter>
Тег <complex-object-converter> указывает, что нужно преобразовать импортируемое значение в объект. Задает одно или более правил поиска объекта complex-object-converter и выполняет указанные в нем правила последовательно. В порядке определения в xml конвертер переходит к следующему правилу, только если предыдущий вернул null.
Пример
<attr name="idHolder" column="id"> <complex-object-converter> <object-converter attr="" metaclass=""/> <script-converter>a + b</script-converter> </complex-object-converter> </attr>
<datetime-converter>
Тег <datetime-converter> преобразует импортируемое значение (строку) в дату или дату /время. Используется, если в источнике импорта дата хранится в виде строки с использованием шаблона даты, например, 2022-02-22 12:34:56 (yyyy-MM-dd HH:mm:ss).
Если в источнике импорта дата хранится как количество миллисекунд, прошедших с 1 января 1970 года 00:00:00, необходимо использовать преобразование даты с помощью тега <script-converter>.
Если в качестве источника импорта используется AD, дата может храниться в нестандартном формате, подробнее см. Импорт отделов и сотрудников из Active Directory - Особенности загрузки даты из AD.
Параметр
-
format — параметр, в котором задается формат даты из источника импорта:
yyyy-MM-dd (дата);
yyyy-MM-dd HH:mm:ss (дата/время в 24-часовом формате);
yyyy-MM-dd hh:mm:ss a (дата/время в 12-часовом формате).
Тип: Строка. Обязательный.
Пример 1
Дата в источнике импорта:
2022-02-22 12:34:56 (в формате yyyy-MM-dd HH:mm:ss).
Параметр:
<attr name="idHolder" column="id"> <datetime-converter format="yyyy-MM-dd HH:mm:ss"/> </attr>
Если в параметре будет указан формат даты, который отличается от формата в источнике импорта, то преобразование завершится с ошибкой, например, если в источнике импорта содержится дата в формате yyyy-MM-dd, а в параметре указан формат yyyy-MM-dd HH:mm:ss.
Пример 2
Конвертор дат с указанием часового пояса time-zone, в котором приходит дата в импортируемых данных.
<attr name="creationDate" column="whenCreated"> <datetime-converter format="yyyyMMddHHmmss'.0Z'" time-zone="GMT+0:00"/> </attr>
<double-converter>
Тег <double-converter> преобразует импортируемое значение в вещественное число.
Параметров нет.
Пример
<attr name="idHolder" column="id"> <double-converter/> </attr>
<file-content-converter>
Тег <file-content-converter> преобразует импортируемое значение в строку.
Параметры
-
titleColumn — колонка, в которой хранится название файла.
Тип: Строка. Обязательный.
-
mimeTypeColumn — колонка, в которой указывается mimeType файла.
Тип: Строка. Обязательный.
<hyperlink-converter>
Тег <hyperlink-converter> преобразует импортируемое значение в гиперссылку.
Параметр
-
delimiter — символ, которым разделены названия ссылки и URL ссылки.
Тип: Символ. Обязательный.
Пример
<attr name="idHolder" column="id"> <hyperlink-converter delimiter=";"/> </attr>
<integer-converter>
Тег <integer-converter> преобразует импортируемое значение в целое число.
Параметров нет.
Пример
<attr name="idHolder" column="id"> <integer-converter /> </attr>
<localized-column>
Тег <localized-column> используется только для системного локализованного атрибута "title" и указывает в какой язык какое значение нужно сохранить. Если тег указан, а "title" не локализован, то тег игнорируется.
Параметры
-
lang — язык, в который нужно сохранить значение из источника. Возможные значения: "ru", "en", "client".
Тип: Строка. Обязательный.
-
column — название колонки, из которой надо взять значение.
Тип: Строка. Обязательный.
Пример
<attr name="title" column="title"> <localized-column lang="ru" column="title_ru"/> <localized-column lang="en" column="title_en"/> <localized-column lang="client" column="title_client"/> </attr>
<object-converter>
Тег <object-converter> преобразует импортируемое значение в объект. Если найдено более одного значения, то возвращает произвольный объект.
Параметры
-
attr — имя атрибута, по которому производится поиск объекта.
Тип: Строка. Обязательный. По умолчанию ${idHolder}
-
metaclass — код метакласса, среди объектов которого производится поиск.
Тип: Строка. Обязательный. По умолчанию ${metaclass}
-
required — определяет, нужно ли обязательно искать объекты.
Возможные значения параметра:
-
true — конвертор обязательно должен найти объект, а если объект не нашелся, то сообщать об ошибке и импорт объекта не производить.
Если конвертируемое значение пусто, то результатом преобразования будет NULL вне зависимости от значения параметра.
Если значение false и объект не будет найден, то будет возвращен null
- false — объект может быть не найден.
Тип: Логический. Обязательный. По умолчанию true
-
-
removed — определяет, нужно ли искать архивные объекты. Если не указан, то ищутся все объекты
Возможные значения параметра:
- true — ищет только архивные объекты
- false — ищет только не архивные объекты.
Тип: Логический. Необязательный.
Пример
<attr name="idHolder" column="id"> <object-converter attr="idHolder" metaclass="ou"/> </attr>
<script-converter>
Тег <script-converter> задает произвольное правило преобразования значения на основе скрипта.
Содержимое тега
Внутри тега задается содержание скрипта.
В скрипте доступны контекстные переменные:
- parameters — параметры импорта.
- ctx — значение выражения (параметра), используется как ctx.evluate("parameter");
- item — строка импортируемых данных;
- value — конвертируемое значение;
- subject — импортируемый объект;
-
storage — значение, передаваемое из одного скрипта в другой, в рамках конфигурации импорта.
Доступна только для чтения глобальная переменная subject соответствующая проимпортированному объекту.
Параметр
-
mime-type — тип скрипта.
Тип: Строка. Необязательный. По умолчанию "application/x-groovy"
Пример 1
<attr name="idHolder" column="id"> <script-converter mime-type="application/x-groovy"> a + b </script-converter> </attr>
Пример 2. Назначение категории в соответствии с группами AD
<script-converter mime-type="application/x-groovy">
if(null == value || value.trim().isEmpty())
{
return utils.get('categoriesUsers',['code':'regular']);
}
if(value.contains('CN=_SMP_vip,OU=SMP,OU=Servers,DC=bank,DC=ru'))
{
return utils.get('categoriesUsers',['code':'VIP']);
}
return utils.get('categoriesUsers',['code':'regular']);
</script-converter>
Пример 3
Преобразование даты, которая хранится в источнике импорта как число миллисекунд, прошедших с 1 января 1970 года 00:00:00.
<attr name="discardDate" column="discardDate" > <script-converter> <![CDATA[ if (value == null) { return null } return new Date(value) ]]> </script-converter>
Если количество миллисекунд передано в строке (а не числом), необходимо value указывать следующим образом:
return new Date(value.toInteger())
<string-converter>
Тег <string-converter> преобразует импортируемое значение в строку.
Параметры
-
trim — определяет, нужно ли удалять пробелы в начале и конце строки.
Возможные значения параметра:
- true — пробелы удаляются;
- false — пробелы сохраняются.
Тип: Логический. Необязательный.
Пример
<attr name="idHolder" column="id"> <string-converter trim="true"/> </attr>
<time-interval-converter>
Тег <time-interval-converter> преобразует импортируемое значение во временной интервал.
Параметры
-
interval — используемая единица измерения, возможные значения: SECOND, MINUTE, HOUR, DAY, WEEK.
Если параметр не заполнен, то единица измерения берется из файла с импортируемыми данными.
Тип: Строка. Обязательный.
Пример
<attr name="idHolder" column="id"> <time-interval-converter interval="SECOND"/> </attr>