Платформа 3V/DataManager/Маппинг справочников: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
Строка 124: Строка 124:
  
 
=== Ссылки на пример ===
 
=== Ссылки на пример ===
 +
Пример справочника-приемника (полезно обратить внимание на тип данных и на наименования атрибутов)
 +
https://3v.3v-group.net/navigator/#/?viewId=436077

Версия 08:52, 12 декабря 2022

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

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")
Дата и время DateTime Формат записи через запятую 01.01.2000 (даже, если приходят данные в формате "2020-01-01")
Логический тип Boolean -
Json Json Данные должны приходит в таком "кавычках", если необходимо атрибуты занести в формат json, то следует использовать выражение: "expression": "[атрибут]" и не прописывать в настройках "SaveMode"

Шаг 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

Ссылки на пример

Пример справочника-приемника (полезно обратить внимание на тип данных и на наименования атрибутов) https://3v.3v-group.net/navigator/#/?viewId=436077