Файл конфигурации импорта. Тег <...-converter>

Тег <...-converter> преобразует значение из источника импорта в какой-то специальный вид. Если не указан, то преобразователь будет определен на основе метаинформации.

Вложен в <attr>.

<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

Copy
<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>