Платформа 3V/DataManager/Начало работы: различия между версиями

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 24 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
{{DISPLAYTITLE: Начало работы с DataManager}}
 
{{DISPLAYTITLE: Начало работы с DataManager}}
Здесь можно найти шаги работы с дата менеджером
 
 
== Подключение DataManager ==
 
== Подключение DataManager ==
 
При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий.  
 
При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий.  
То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса - данный функционал на тестировании
+
То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса
 +
 
 
[[Файл:Начало работы.png|1000px]]
 
[[Файл:Начало работы.png|1000px]]
  
Строка 58: Строка 58:
 
* Data/LoadFromFile - загрузка данных в объекты платформы, если источник - файл
 
* Data/LoadFromFile - загрузка данных в объекты платформы, если источник - файл
 
==== Пример загрузки данных с помощью Data/Load ====
 
==== Пример загрузки данных с помощью Data/Load ====
 +
''На примере [https://3v.3v-group.net/data-manager-public/swagger/index.html#/Data/Data_Load 3v.3v-group.net]''
 +
* Перейти на метод Data/Load
 +
* Нажать "Try it out!"
 +
* Вставить в Request body (тело запроса) настройку маппинга
 +
* Нажать "Execute"
 +
[[Файл:Загрузка через методы апи.gif|700px]]
 +
 +
==== Пример загрузки данных с помощью Data/LoadFromFile ====
 +
1) Для успешной загрузки данных из файла через дата менеджер необходимо для начала с'''оздать справочник- приемник с нужными атрибутами'''.
 +
 +
На стенде 3V-GROUP.NET создан справочник [https://3v.3v-group.net/navigator/#/home?objectId=274752 "Заявки_тест" (код - applications_test)]
 +
 +
[[Файл:атрибуты для выгрузки из файла.png|700px]]
 +
 +
2) '''Проверить файл''' - файл должен содержать одну строку с заголовками, а не две и более
 +
 +
Файл, из которого необходимо грузить данные в справочник, содержит две строки заголовка: на английском и на русском. Строку с русскими заголовками необходимо удалить, так как при дальнейшей работе (маппинге полей) сервис не сможет прочитать столбец, для которого указан тип данных не string, и будет выдавать ошибку
 +
 +
[[Файл:Проверка на заголовок.png|500px]]
 +
 +
3) '''Создать задачу в "DataManagerTasks"''' (справочник "Задачи загрузки данных")
 +
 +
Для данной загрузки в справочнике создана задача с идентификатором 709, где далее будет прописан маппинг полей в атрибуте "Настройки загрузки"
 +
 +
[[Файл:Задача_файл.png|500px]]
 +
 +
4) '''Прописать в атрибуте''' "Настройки загрузки" '''маппинг полей''' и нажать "Сохранить"
 +
Пример настройки для загрузки данных из файла:
 +
<syntaxhighlight lang="JSON" line>
 +
{
 +
"Source": {
 +
        "discriminator": "ConstantDataManagerSource"
 +
          },
 +
"Destination": {
 +
        "discriminator": "DictionaryDataOptions",
 +
        "SaveMode": "Postgres",
 +
        "mapperOptions": [
 +
          {
 +
            "propertyName": "NAME",
 +
            "filedName": "NAME",
 +
            "dataType": "String",
 +
            "isPrimary": true,
 +
            "discriminator":"MapperOption"
 +
          },
 +
          {
 +
          "propertyName": "connectiontype",
 +
          "filedName": "connectiontype",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
          },
 +
          {
 +
          "propertyName": "status",
 +
          "filedName": "status",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
          },
 +
          {
 +
          "propertyName": "created",
 +
          "filedName": "created",
 +
          "dataType": "DateTime",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
          },
 +
        {
 +
          "propertyName": "closed",
 +
          "filedName": "closed",
 +
          "dataType": "DateTime",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "customer",
 +
          "filedName": "customer",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "email",
 +
          "filedName": "email",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "theme",
 +
          "filedName": "theme",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "operator",
 +
          "filedName": "operator",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "amount",
 +
          "filedName": "amount",
 +
          "dataType": "Int32",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "implementers",
 +
          "filedName": "implementers",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "categories",
 +
          "filedName": "categories",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
          "propertyName": "segments",
 +
          "filedName": "segments",
 +
          "dataType": "String",
 +
          "isPrimary": false,
 +
          "discriminator":"MapperOption"
 +
        },
 +
        {
 +
        "propertyName": "system",
 +
        "filedName": "system",
 +
        "dataType": "String",
 +
        "isPrimary": false,
 +
        "discriminator":"MapperOption"
 +
        },
 +
        {
 +
        "propertyName": "time",
 +
        "filedName": "time",
 +
        "dataType": "String",
 +
        "isPrimary": false,
 +
        "discriminator":"MapperOption"
 +
        }
 +
  ],
 +
"clearData": false,
 +
"dictionaryIdent": "applications_test"
 +
              }
 +
}
 +
</syntaxhighlight>
 +
 +
5) Открыть swagger → контроллер "Data" → '''метод "LoadFromFile"'''
 +
 +
В параметре вызова "optionId" прописать идентификатор настройки, загрузить нужный файл и нажать "execute"
 +
 +
[[Файл:метод файл.png|800px]]
 +
 +
6) '''Обновить справочник-приемник''' и убедиться, что все данный выгрузились
 +
 +
[[Файл:Результат.png|800px]]
 +
 +
== Мониторинг выполнения задачи загрузки данных ==
 +
Результаты загрузки данных можно посмотреть в справочнике "Результаты загрузки данных" (код '''DataManagerTasksResults''')
 +
* Наименование - название задачи
 +
* Статус - статус загрузки (Done/Error)
 +
* Дата начала
 +
* Дата завершения
 +
* Результат - результат работы задачи
 +
* Задача - элемент связанного справочника "Задачи загрузки данных"
 +
 +
[[Файл:Результаты загрузки данных.png|1000px]]

Текущая версия на 11:41, 1 декабря 2022

Подключение DataManager

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

Начало работы.png

ПРИ НЕОБХОДИМОСТИ:

если в приложении нет сервиса, то необходимо:

  1. Подать заявку в СТП
  2. В описании к обращению указать необходимость данного расширения

ЛИБО

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

  1. Найти контроллер "Installer" → метод "Install"
  2. Выбрать необходимый объект для установки
  3. Нажать "Execute"
  4. Проверить на стенде наличие объектов с названиями "DataManagerTasks" и "DataManagerTasksResults"

Создание задачи загрузки данных

Создать задачу можно двумя способами:

  • С помощью справочника задач загрузки данных
  • С помощью методов в swagger

Создание задачи с помощью справочника

Чтобы создать задачу, необходимо:

1) Создать атрибут в справочнике задач загрузки данных

создание задачи.png

2) Дать название для задачи

название задачи.png

3) Вставить в атрибут "Настройки загрузки" настройку маппинга

маппинг для задачи.png

4) Заполнить атрибут "Дата последнего запуска" (поставить текущую дату) - если необходимо исправить значение в атрибуте с настройкой, а дата запуска стоит, например, вчерашняя, то необходимо стереть значение из атрибута "дата запуска"

При необходимости заполнить атрибуты "Дата следующего запуска", "Периодичность запуска", "Описание"

  • Дата следующего запуска - та дата, когда будет произведена следующая загрузка
  • Периодичность - повторяемость задачи через определенные промежутки времени
  • Описание - любой комментарий по задаче

Остальные атрибуты DM.png

5) Нажать на сохранение в справочнике

сохранить.png

И на этом всё!

Создание задачи с помощью методов

Для создания задачи необходимо обратиться к следующим методам в контроллере Data:

  • Data/Load - загрузка в данных в объекты платформы
  • Data/LoadFromFile - загрузка данных в объекты платформы, если источник - файл

Пример загрузки данных с помощью Data/Load

На примере 3v.3v-group.net

  • Перейти на метод Data/Load
  • Нажать "Try it out!"
  • Вставить в Request body (тело запроса) настройку маппинга
  • Нажать "Execute"

Загрузка через методы апи.gif

Пример загрузки данных с помощью Data/LoadFromFile

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

На стенде 3V-GROUP.NET создан справочник "Заявки_тест" (код - applications_test)

атрибуты для выгрузки из файла.png

2) Проверить файл - файл должен содержать одну строку с заголовками, а не две и более

Файл, из которого необходимо грузить данные в справочник, содержит две строки заголовка: на английском и на русском. Строку с русскими заголовками необходимо удалить, так как при дальнейшей работе (маппинге полей) сервис не сможет прочитать столбец, для которого указан тип данных не string, и будет выдавать ошибку

Проверка на заголовок.png

3) Создать задачу в "DataManagerTasks" (справочник "Задачи загрузки данных")

Для данной загрузки в справочнике создана задача с идентификатором 709, где далее будет прописан маппинг полей в атрибуте "Настройки загрузки"

Задача файл.png

4) Прописать в атрибуте "Настройки загрузки" маппинг полей и нажать "Сохранить" Пример настройки для загрузки данных из файла:

  1 {
  2 "Source": {
  3         "discriminator": "ConstantDataManagerSource"
  4           },
  5 "Destination": {
  6         "discriminator": "DictionaryDataOptions",
  7         "SaveMode": "Postgres",
  8         "mapperOptions": [
  9            {
 10             "propertyName": "NAME",
 11             "filedName": "NAME",
 12             "dataType": "String",
 13             "isPrimary": true,
 14             "discriminator":"MapperOption"
 15            },
 16           {
 17            "propertyName": "connectiontype",
 18            "filedName": "connectiontype",
 19            "dataType": "String",
 20            "isPrimary": false,
 21            "discriminator":"MapperOption"
 22           },
 23           {
 24            "propertyName": "status",
 25            "filedName": "status",
 26            "dataType": "String",
 27            "isPrimary": false,
 28            "discriminator":"MapperOption"
 29           },
 30           {
 31            "propertyName": "created",
 32            "filedName": "created",
 33            "dataType": "DateTime",
 34            "isPrimary": false,
 35            "discriminator":"MapperOption"
 36           },
 37          {
 38           "propertyName": "closed",
 39           "filedName": "closed",
 40           "dataType": "DateTime",
 41           "isPrimary": false,
 42           "discriminator":"MapperOption"
 43          },
 44          {
 45           "propertyName": "customer",
 46           "filedName": "customer",
 47           "dataType": "String",
 48           "isPrimary": false,
 49           "discriminator":"MapperOption"
 50          },
 51          {
 52           "propertyName": "email",
 53           "filedName": "email",
 54           "dataType": "String",
 55           "isPrimary": false,
 56           "discriminator":"MapperOption"
 57          },
 58          {
 59           "propertyName": "theme",
 60           "filedName": "theme",
 61           "dataType": "String",
 62           "isPrimary": false,
 63           "discriminator":"MapperOption"
 64          },
 65          {
 66           "propertyName": "operator",
 67           "filedName": "operator",
 68           "dataType": "String",
 69           "isPrimary": false,
 70           "discriminator":"MapperOption"
 71          },
 72          {
 73           "propertyName": "amount",
 74           "filedName": "amount",
 75           "dataType": "Int32",
 76           "isPrimary": false,
 77           "discriminator":"MapperOption"
 78          },
 79          {
 80           "propertyName": "implementers",
 81           "filedName": "implementers",
 82           "dataType": "String",
 83           "isPrimary": false,
 84           "discriminator":"MapperOption"
 85          },
 86          {
 87           "propertyName": "categories",
 88           "filedName": "categories",
 89           "dataType": "String",
 90           "isPrimary": false,
 91           "discriminator":"MapperOption"
 92          },
 93          {
 94           "propertyName": "segments",
 95           "filedName": "segments",
 96           "dataType": "String",
 97           "isPrimary": false,
 98           "discriminator":"MapperOption"
 99          },
100         {
101          "propertyName": "system",
102          "filedName": "system",
103          "dataType": "String",
104          "isPrimary": false,
105          "discriminator":"MapperOption"
106         },
107         {
108          "propertyName": "time",
109          "filedName": "time",
110          "dataType": "String",
111          "isPrimary": false,
112          "discriminator":"MapperOption"
113          }
114   ],
115  "clearData": false,
116  "dictionaryIdent": "applications_test"
117                }
118 }

5) Открыть swagger → контроллер "Data" → метод "LoadFromFile"

В параметре вызова "optionId" прописать идентификатор настройки, загрузить нужный файл и нажать "execute"

метод файл.png

6) Обновить справочник-приемник и убедиться, что все данный выгрузились

Результат.png

Мониторинг выполнения задачи загрузки данных

Результаты загрузки данных можно посмотреть в справочнике "Результаты загрузки данных" (код DataManagerTasksResults)

  • Наименование - название задачи
  • Статус - статус загрузки (Done/Error)
  • Дата начала
  • Дата завершения
  • Результат - результат работы задачи
  • Задача - элемент связанного справочника "Задачи загрузки данных"

Результаты загрузки данных.png