Как настроить маппинг для справочника

Материал из 3v-wiki
Перейти к навигации Перейти к поиску

Если приемник данных - справочник, то настройка выглядит следующим образом:

1 "Destination": {
2                  "discriminator": "DictionaryDataOptions",
3                  "SaveMode": "Postgres",
4                  "mapperOptions": [ {}, {}],
5                  "expressions": [{}],
6                  "clearData": false,
7                  "dictionaryIdent": ""
8                }

Шаг 1. Настройка самого справочника-приемника

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

Атрибуты источника.png

Из этих данных необходимо, чтобы загружались атрибуты name (тип String), root_id (тип Integer), start_date (тип DateTime):

выбранные атрибуты источника.png

Поэтому справочник следует настроить соответствующим образом:

Конструктор приемника.png

Шаг 2. Настройка полей

Настройка полей выглядит следующим образом:

 1 "mapperOptions": [
 2                    {
 3                     "propertyName": "name",
 4                     "filedName": "NAME",
 5                     "dataType": "String",
 6                     "isPrimary": false,
 7                     "discriminator": "MapperOption"
 8                    },
 9                    {
10                     "propertyName": "root_id",
11                     "filedName": "root_id",
12                     "dataType": "Int32",
13                     "isPrimary": true,
14                     "discriminator": "MapperOption"
15                    },
16                    {
17                     "propertyName": "start_date",
18                     "filedName": "start_date",
19                     "dataType": "DateTime",
20                     "isPrimary": false,
21                     "discriminator": "MapperOption"
22                    }
23                  ]

Откуда берется:

  • propertyName - название атрибута из источника
  • filedName - название атрибута из конструктора справочника
  • dataType - тип данных, который должен совпадать в приемнике и источнике
  • isPrimary - является ли данный атрибут первичным ключом (хотя бы один из атрибутов должен содержать настройку "isPrimary": true)
  • discriminator - здесь всегда необходимо ставить "MapperOption"

Типы данных, которые поддерживает DataManager

Тип Как записать в настройке Небольшой комментарий
Строка String Если в источнике приходит тип guid или длинное число, то лучше записать в приемник в атрибут с типом "String"
Целое число (Integer) Int32 Int64 не поддерживается
Вещественное число (Double) Double Формат записи через запятую ("370,70")

Шаг 3. Завершение настройки

Остается добавить только верный дискриминатор (DictionaryDataOptions), dictionaryIdent (код справочника-приемника), SaveMode

 1 "Destination": {
 2                 "discriminator": "DictionaryDataOptions",
 3                 "SaveMode": "Postgres",
 4                 "mapperOptions": [
 5    {
 6     "propertyName": "name",
 7     "filedName": "NAME",
 8     "dataType": "String",
 9     "isPrimary": false,
10     "discriminator": "MapperOption"
11    },
12    {
13     "propertyName": "root_id",
14     "filedName": "root_id",
15     "dataType": "Int32",
16     "isPrimary": true,
17     "discriminator": "MapperOption"
18    },
19  {
20     "propertyName": "start_date",
21     "filedName": "start_date",
22     "dataType": "DateTime",
23     "isPrimary": false,
24     "discriminator": "MapperOption"
25    }
26   ],
27   "dictionaryIdent": "New_Dictionary_5535"
28  }

Шаг 4. Результат работы

ОБЯЗАТЕЛЬНО НЕ ЗАБЫВАЕМ ВСТАВИТЬ В НАСТРОЙКУ SOURCE И ПРОВЕРИТЬ ВСЮ НАСТРОЙКУ НА СИНТАКСИЧЕСКИЕ ОШИБКИ

Готовую настройку можно загрузить с помощью задач загрузки данных или сваггер, затем посмотреть результат

результат работы.png

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

сам справочник.png