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

Механизм импорта SimpleOne поддерживает:

  • различные типы источников данных.
  • различные форматы файлов (если в качестве типа источника выбран Файл).

Выберите источник данных, поместите данные из него во временную таблицу Набора для импорта. С помощью схемы трансформации и соотношения полей сопоставьте данные из источника и целевой таблицы.

Требуемая роль: admin.

Ниже представлено графическое представление процесса импорта:

    

    

Ключевые понятия

ПонятиеОписание
Источник импортаЗапись, указывающая, какие данные набора для импорта должны быть импортированы.
Набор для импортаЗапись, содержащая ссылки на необработанные данные, загруженные в промежуточную таблицу. Запись также возвращает информацию о статусе процесса импорта.
Таблица импортаАвтоматически сгенерированная таблица, используемая в качестве временного хранилища для импортированных записей перед преобразованием. Структура таблицы формируется автоматически в зависимости от импортируемых данных.
ПреобразованиеПроцесс преобразования данных в соответствии со схемой трансформации и скриптами, определяющими исходную таблицу набора для импорта и целевую таблицу.
Схема трансформацииЗапись, указывающая корреляцию между исходной и целевой таблицами.
Скрипт преобразованийСкрипт, который позволяет настраивать операции импорта с помощью нативного JavaScript, расширенного с помощью серверного API SimpleOne.
Соотношение полейЗапись, указывающая связь между полем в исходной таблице и полем в целевой таблице.
Объединение данных

Эта опция позволяет обновлять существующие записи таблицы в процессе преобразования. 

Для дополнительной информации перейдите к части статьи Объединение данных (COALESCE).

Источники импорта

Создание источника импорта необходимо для загрузки необработанных данных в систему для дальнейшей обработки и преобразования. Вы можете настроить источник импорта с различными типами источников данных и форматами файлов.

  1. Перейдите в Импорт → Источники импорта.
  2. Нажмите Создать и заполните поля
  3. Если вы выбрали тип Файл, нажмите на иконку скрепки и прикрепите нужный файл.

  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Источник импорта

ПолеОбязательноОписание
НаименованиеДаУкажите название источника импорта.
Наименование таблицы импортаДаУкажите название временной таблицы импорта.

Тип

Нет

Выберите тип источника импорта. Доступные опции:

  • Файл
  • Текст
  • LDAP
Способ получения файлаНет

Выберите метод добавления файла в источник импорта. Доступные опции:

  • Вложение

Это поле появляется, когда выбран тип Файл.

ФорматДа

Выберите формат файла и прикрепите его к форме. Доступные опции:

  • JSON
  • XML
  • Excel (опция доступна только когда выбран тип Файл)

Это поле появляется, если выбран тип Файл или Текст.

Текст импортаНет

Укажите текст, который вам нужно импортировать. Это поле появляется, когда выбран тип Текст.

Текст
[
  {
    "property": "value"
  },
  {
    "property": "value"
  }
]
Настройка LDAPНет

Нажмите на иконку лупы, чтобы выбрать протокол, который вам необходим. Это поле появляется, когда выбран тип LDAP

Подробнее читайте в статье Импорт LDAP.

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

ДействиеОписание
Пробная загрузка (20 записей)

Нажмите, чтобы создать пробный набор для импорта из 20 записей для анализа структуры данных импорта.

Не используйте тестовый набор для дальнейшего преобразования.

Загрузить все

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

Этот набор для импорта можно использовать для дальнейшего преобразования.

После загрузки данных в источник импорта, сохранения записи и вызова одного из действий загрузки данных, в связанном списке Наборы для импорта появляется новая запись.

Использование формата JSON


В качестве источника импорта можно использовать файлы, содержащие данные в формате JSON. В этом случае убедитесь, что файлы соответствуют следующим критериям:

  1. Файлы JSON должны быть актуальными. Используйте документ RFC 8259 в качестве руководства. 
  2. Типы данных, доступные для использования в структуре JSON, перечислены ниже. Использование dot-walking не поддерживается.
Объект JSON
  {
    "top500": 1,
    "name": "More",
    "sector": "Oil and gas"
  }

Результат: один элемент. В таблице есть поля top500namesector и одна запись.

Массив объектов
[ 
 {
    "top500": 1,
    "name": "More",
    "sector": "Oil and gas"
  },
  {
    "top500": 2,
    "name": "Nevermore",
    "sector": "Oil and gas"
  }
]

Результат: создан набор для импорта со связанной таблицей. Таблица имеет поля top500namesector и содержит две записи.

Объект с массивом объектов
// Path for Each Row == exportField
{
   "exportField":[
      {
         "top500":1,
         "name":"More",
         "sector":"Oil and gas"
      },
      {
         "top500":2,
         "name":"Nevermore",
         "sector":"Oil and gas"
      },
	  {
		"top500": 4,
		"name": "Givememore",
		"sector": "Oil and gas",
		"more_info": "https://instance.example.com/company/34"
	  }
   ]
}

Результат: создан набор для импорта со связанной таблицей. Таблица имеет поля top500namesector и содержит три записи.

Преобразование имени таблицы импорта и колонок


Во время конвертации данных для импорта системные названия колонок и системные названия таблиц, которые отображаются в поле Наименование таблицы импорта в таблице Источники для импорта, транслитерируются и преобразуются по следующим правилам:

  1. Каждый символ из списка символов кириллицы заменяется на символ, соответствующий порядковому номеру в списке символов латиницы:
    КириллицаЛатиница
    аАaA
    бБbB
    вВvV
    гГgG
    дДdD
    еЕeE
    ёЁioIo
    жЖzhZh
    зЗzZ
    иИiI
    йЙjJ
    кКkK
    лЛlL
    мМmM
    нНnN
    оОoO
    пПpP
    рРrR
    сСsS
    тТtT
    уУuU
    фФfF
    хХhh
    цЦtsTs
    чЧchCh
    шШshSh
    щЩshchShch
    ъЪ\\
    ыЫyY
    ьЬ\\
    эЭee
    юЮyuYu
    яЯyaYa
  2. Затем все символы, не удовлетворяющие регулярному выражению /[^A-Za-z0-9_]+/uзаменяются на нижнее подчеркивание _ . То есть все символы, кроме больших и маленьких букв, цифр и нижнего подчеркивания, заменяются на _.
  3. Текущее имя колонки разбивается на части по символу _, а затем они склеиваются символом _, например, для _DOC_____1 в итоге получим doc_1. При этом повторяющиеся символы нижнего подчеркивания сливаются в один. 
  4. Текущее имя колонки приводится к нижнему регистру.

    Если полученное во время конвертации имя колонки пустое, то устанавливается имя imp_invalid_column + номер колонки. Номер колонки определяется ее порядком в таблице, нумерация начинается с 0, например imp_invalid_column0.

  5. К имени добавляется префикс imp, например, imp_spisok_klientov.

Набор для импорта

Набор для импорта создается автоматически на основе необработанных данных, загруженных в источник импорта. Набор для импорта – временное хранилище записей, импортируемых из источника данных.

Поля формы Набор для импорта

ПолеОписание
Номер

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

Источник импорта

Поле содержит соответствующее наименование источника импорта и заполняется автоматически. 

Таблица набора импорта

Поле содержит наименование временной таблицы импорта и заполняется автоматически.

Системные имена полей таблицы начинаются с префикса imp

Статус

Состояние загрузки набора для импорта. Поле заполняется автоматически и доступно только для чтения. Возможные значения:

  • Загружается – идет загрузка данных в набор для импорта.
  • Загружен – загрузка данных в набор для импорта завершена.
  • Обработан – преобразование набора для импорта обработано.
  • Отменен – загрузка данных отменена.
Краткое описание

Поле описывает структуру созданной таблицы и заполняется автоматически.

Пример значения поля:

Table structure: (top500 | name | sector)

Записи Набора для импорта находятся в отношениях родитель-потомок с записями таблицы Элементы наборов

Схема трансформации

Схема трансформации представляет собой набор соотношений полей. В этом наборе соотношений полей указывается корреляция между полями временной таблицы импорта и полями целевой таблицы.

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

После создания первого набора для импорта, создайте запись схемы. Для этого выполните следующие шаги:

  1. Нажмите на Схемы трансформации на форме записи источника импорта, который вы настраиваете. 
  2. В появившемся всплывающем сообщении пройдите по ссылке Создать схему трансформации
  3. Заполните поля в появившейся форме. 
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Схемы трансформаций также можно создать с нуля. Для этого выполните следующие шаги:

  1. Перейдите в Импорт → Схемы трансформаций, чтобы открыть список схем. 
  2. Нажмите Создать и заполните поля. 
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.


Поля формы Схема трансформации

ПолеОбязательноеОписание
НаименованиеДаУкажите отображаемое название схемы трансформации таблиц.
АктивнаНетУстановите флажок, чтобы сделать схему трансформации доступной для использования.
Исходная таблицаДаВыберите таблицу, содержащую набор для импорта.
Целевая таблицаДа

Выберите таблицу, в которую необходимо поместить импортированные данные. 

Форсированный импортНет

Установите флажок, чтобы игнорировать бизнес-правилаправила уведомлений и другие механизмы на стороне сервера, которые могут запускаться действиями создания или обновления записей. В частности, рабочие процессы, связанные с этой записью, не запустятся, история изменений поля не будет записана и не будет отображаться в Ленте активности.

Вы можете найти порядок выполнения механизмов и бизнес-правил в статье Порядок выполнения.

Игнорировать обязательные поля

НетУстановите флажок, чтобы игнорировать обязательные поля в целевой таблице.
Использовать скриптНет

Установите флажок, чтобы отобразить поле Скрипт, в котором можно определить скрипт трансформации.

Если вы снимите флажок после создания скрипта, скрипт не будет применяться в трансформации.

СкриптНет

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

Для расширенного импорта, используйте доступные классы и методы API.

Используйте функцию runTransformRow() со следующими параметрами:

  • source – запись Элемента набора. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, source.imp_name.
  • map – запись Схемы трансформации, которая используется для процесса преобразования.
  • log – объект, который содержит методы info, warn, error. Методы предназначены для регистрации процесса трансформации. 
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, target.name = source.imp_name.
    При указании объекта параметра target учитывайте тип поля в целевой таблице.
  • isUpdate – Boolean параметр, который проверяет, обновилась ли целевая запись.

Этот скрипт можно использовать для определения связей полей перед трансформацией. Вы также можете настроить соотношения, создав связанные записи на вкладке Соотношения полей схемы трансформации.

Если вы настраиваете соотношения полей с помощью скрипта, создайте еще одну запись соотношения полей, чтобы определить настройку объединения данных (флажок Объединить данные на форме соотношения полей) для этого сеанса трансформации.

Скрипт преобразования

Скрипт преобразования позволяет настроить импорт данных с помощью JS-скриптов и классов серверного API после создания схемы трансформации. Для этого выполните следующие шаги:

  1. Перейдите на нужную форму записи Схемы трансформации
  2. В области Связанные списки выберите вкладку Скрипты преобразований.
  3. Нажмите Создать и заполните поля. 
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Скрипты преобразований также можно создать с нуля. Для этого выполните следующие шаги:

  1. Перейдите в Импорт → Скрипты преобразований, чтобы открыть список скриптов. 
  2. Нажмите Создать и заполните поля. 
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

Поля формы Скрипт преобразования

ПолеОбязательноеОписание
Схема трансформацииДаУкажите схему трансформации, для которой будет выполняться скрипт.
АктивенНетУстановите флажок, чтобы активировать скрипт.
КогдаДа

Выберите, когда выполнять скрипт. Доступные опции:

  •  При старте импорта – скрипт запускается в начале преобразования до того, как будет прочитана какая-либо запись элемента набора для импорта.
  • В начале трансформации – скрипт запускается в начале преобразования записи элемента набора для импорта в целевую таблицу.
  • По окончании трансформации – скрипт запускается после преобразования каждой записи элемента набора для импорта в целевую таблицу.
  • При завершении импорта – скрипт запускается, когда все записи элементов набора для импорта преобразованы.
ПорядокНет

Укажите порядок, в котором будет выполняться скрипт преобразования. Заполните это поле целым числом.

Поле Порядок временно работает некорректно. Наша команда работает над улучшением его логики, чтобы сделать его работу полноценной. Об изменениях мы сообщим вам в одном из следующих релизов.


СкриптНет

Введите скрипт, используя серверный API SimpleOne.

Используйте функцию runTransformScript() со следующими параметрами:

  • source – запись Элемента набора. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, source.imp_name.
  • map – запись Схемы трансформации, которая используется для процесса преобразования.
  • log – объект, который содержит методы info, warn, error. Методы предназначены для регистрации процесса трансформации. 
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, target.name = source.imp_name.
    При указании объекта параметра target учитывайте тип поля в целевой таблице. Пример заполнения полей скриптом В начале трансформации:
    Скрипт заполнения полей в начале трансформации
     (function runTransformScript(source, map, log, target /*undefined onStart*/) {
      target.email = source.imp_mail; // string
      target.username = source.imp_samaccountname; // string
       
      const parsedPhoneDigits = source.imp_mobile.match(/\d/g);
      target.phone = parsedPhoneDigits ? parsedPhoneDigits.join('') : null;  // phone
     
      const company = new SimpleRecord('org_company');
      company.addQuery('name', 'like', source.imp_company);
      company.selectAttributes('sys_id');
      company.setLimit(1);
      company.query();
      target.company = company.next() ? company.sys_id : null;  // reference
    })(source, map, log, target);
  • ignore – Boolean параметр, который позволяет пропустить запись Элемента набора для импорта.
  • status_message – сообщение, которое описывает процесс трансформации записи.
    Скрипт пропуска импорта в начале трансформации
    (function runTransformScript(source, map, log, target /*undefined onStart*/) {
      const duplicate = new SimpleRecord('task');
      duplicate.addEncodedQuery(`number=${source.imp_number}^sys_id!=${target.sys_id}`);
      duplicate.selectAttributes('sys_id');
      duplicate.setLimit(1);
      duplicate.query();
      if (duplicate.next()) {
        ignore = true; // пропуск Элемента набора
        status_message = 'The "Number" [number] field should be an unique.'; // сообщение записывается в поле "Описание" Элемента набора
      }
    })(source, map, log, target);

Соотношение полей

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

В процессе импорта может потребоваться обновить существующие записи в целевой таблице. Чтобы настроить отношения между исходной и целевой таблицами, создайте хотя бы одну запись соотношения полей с установленным флажком Объединить данные. Этот атрибут должен быть включен для соотношения полей, которые содержат уникальные значения. Это может быть электронная почта для пользователя или серийный номер для конфигурационной единицы (КЕ).

Вы можете устанавливать флажок на нескольких записях соотношения полей.

Чтобы создать соотношение полей, выполните следующие действия:

  1. Перейдите в Импорт → Схемы трансформаций.
  2. Откройте запись соотношения таблиц, которую вам нужно настроить. 
  3. Нажмите Создать соотношения полей, чтобы открыть виджет Соотношения полей. Смотрите скриншот в таблице ниже.
  4. Настройте соотношения полей в текущем процессе преобразования.
  5. Нажмите Создать, чтобы сохранить изменения.

Еще один способ создания соотношения полей:

  1. Перейдите в Импорт → Схемы трансформаций.
  2. Откройте запись соотношения таблиц, которую вам нужно настроить.
  3. В связанном списке Соотношения полей нажмите Создать и заполните поля.
  4. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
  5. Повторите предыдущие шаги для каждой записи соотношения полей, которое необходимо установить.

Поля формы Соотношение полей

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

Объединить данные

Нет

Установите флажок, чтобы в процессе преобразования, механизм проверял, равны ли значения в Целевой таблице значениям в Исходной таблице импорта. 

Если значения равны, запись в Целевой таблице будет обновлена; в противном случае, будет создана новая запись.

Вы можете настроить эту опцию в виджете. Нажмите на Создать соотношения полей на форме записи соотношения таблицы, чтобы открыть виджет, содержащий кнопки Добавить COALESCE или Убрать COALESCE.

Использовать исходный скриптНет

Установите флажок, чтобы определить скрипт преобразования в поле Скрипт.

СкриптДа

Добавьте скрипт, чтобы определить функцию, которая принимает объект записи таблицы Набор для импорта в качестве аргумента и возвращает значение для помещения в Целевое поле.

Поле появляется, когда установлен флажок Использовать исходный скрипт.

Не снимайте флажок Использовать исходный скрипт после создания скрипта; иначе он не применится.

Для расширенного импорта, используйте доступные классы и методы API.

Используйте функцию transformEntry() со следующими параметрами:

  • source – запись Элемента набора. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, source.imp_name.
  • target – запись в целевой таблице, которая будет создана или обновлена при трансформации исходной записи. Вызовите определенное поле из записи так же, как обычный объект SimpleRecord. Например, target.name = source.imp_name. При указании объекта параметра target учитывайте тип поля в целевой таблице.

Запуск преобразования

  1. Перейдите в Импорт → Наборы для импорта.
  2. Откройте набор для импорта, который вам нужно преобразовать. Убедитесь, что статус набора Загружен.
  3. Нажмите Трансформировать.

В результате появится всплывающее сообщение Импорт завершен. Импортированные данные будут перенесены в целевую таблицу.

Последовательность трансформации


 На схеме ниже показана последовательность событий, вызванных преобразованием:

  1. Последовательность начинается со скрипта преобразования При старте импорта. Он выполняется в начале преобразования до того, как будет прочитана какая-либо запись Элемента набора.
  2. (опционально) Скрипт, указанный в записи Соотношения полей, принимает объект записи таблицы Элемент набора в качестве аргумента и возвращает значение для помещения в целевое поле.
  3. (опционально) Скрипт, указанный в записи Схемы трансформации, преобразует значения полей из исходной строки в целевую строку.
  4. Скрипт преобразования В начале трансформации выполняется до преобразования исходной строки в целевую.
  5. Между выполнением скриптов В начале трансформации и По окончании трансформации создается или обновляется целевая запись.
  6. Скрипт преобразования По окончании трансформации запускается, когда исходная строка преобразуется в целевую.
  7. Сценарий преобразования При завершении импорта выполняется, когда преобразуются все исходные строки.

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

  • No labels