Платформа 3V/DataManager/Начало работы: различия между версиями
(не показаны 43 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Начало работы с DataManager}} | {{DISPLAYTITLE: Начало работы с DataManager}} | ||
+ | == Подключение DataManager == | ||
При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий. | При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий. | ||
− | То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса | + | То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса |
+ | |||
[[Файл:Начало работы.png|1000px]] | [[Файл:Начало работы.png|1000px]] | ||
Строка 17: | Строка 19: | ||
# Проверить на стенде наличие объектов с названиями "DataManagerTasks" и "DataManagerTasksResults" | # Проверить на стенде наличие объектов с названиями "DataManagerTasks" и "DataManagerTasksResults" | ||
− | + | == Создание задачи загрузки данных == | |
− | + | Создать задачу можно двумя способами: | |
− | + | * С помощью справочника задач загрузки данных | |
− | + | * С помощью методов в swagger | |
− | + | === Создание задачи с помощью справочника === | |
− | + | Чтобы создать задачу, необходимо: | |
− | + | ||
− | ''если необходимо исправить значение в атрибуте с настройкой, а дата запуска стоит, например, вчерашняя, то необходимо стереть значение из атрибута "дата запуска"'' | + | 1) Создать атрибут в справочнике задач загрузки данных |
− | |- | + | |
− | | | + | [[Файл:создание задачи.png|500px]] |
− | + | ||
− | + | 2) Дать название для задачи | |
− | | | + | |
+ | [[Файл:название задачи.png|500px]] | ||
+ | |||
+ | 3) Вставить в атрибут "Настройки загрузки" настройку маппинга | ||
+ | |||
+ | [[Файл:маппинг_для_задачи.png|500px]] | ||
+ | |||
+ | 4) Заполнить атрибут "Дата последнего запуска" (поставить текущую дату) - ''если необходимо исправить значение в атрибуте с настройкой, а дата запуска стоит, например, вчерашняя, то необходимо стереть значение из атрибута "дата запуска"'' | ||
+ | |||
+ | При необходимости заполнить атрибуты "Дата следующего запуска", "Периодичность запуска", "Описание" | ||
+ | * Дата следующего запуска - та дата, когда будет произведена следующая загрузка | ||
+ | * Периодичность - повторяемость задачи через определенные промежутки времени | ||
+ | * Описание - любой комментарий по задаче | ||
+ | |||
+ | [[Файл:Остальные атрибуты DM.png|500px]] | ||
+ | |||
+ | 5) Нажать на сохранение в справочнике | ||
+ | |||
+ | [[Файл:сохранить.png|500px]] | ||
+ | |||
+ | И на этом всё! | ||
+ | |||
+ | === Создание задачи с помощью методов === | ||
+ | Для создания задачи необходимо обратиться к следующим методам в контроллере Data: | ||
+ | * Data/Load - загрузка в данных в объекты платформы | ||
+ | * Data/LoadFromFile - загрузка данных в объекты платформы, если источник - файл | ||
+ | ==== Пример загрузки данных с помощью 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 будут доступны автоматически, без перезапуска сервиса
ПРИ НЕОБХОДИМОСТИ:
если в приложении нет сервиса, то необходимо:
- Подать заявку в СТП
- В описании к обращению указать необходимость данного расширения
ЛИБО
если возникла необходимость, обычно все настраивают разработчики по заявке в стп
- Найти контроллер "Installer" → метод "Install"
- Выбрать необходимый объект для установки
- Нажать "Execute"
- Проверить на стенде наличие объектов с названиями "DataManagerTasks" и "DataManagerTasksResults"
Создание задачи загрузки данных
Создать задачу можно двумя способами:
- С помощью справочника задач загрузки данных
- С помощью методов в swagger
Создание задачи с помощью справочника
Чтобы создать задачу, необходимо:
1) Создать атрибут в справочнике задач загрузки данных
2) Дать название для задачи
3) Вставить в атрибут "Настройки загрузки" настройку маппинга
4) Заполнить атрибут "Дата последнего запуска" (поставить текущую дату) - если необходимо исправить значение в атрибуте с настройкой, а дата запуска стоит, например, вчерашняя, то необходимо стереть значение из атрибута "дата запуска"
При необходимости заполнить атрибуты "Дата следующего запуска", "Периодичность запуска", "Описание"
- Дата следующего запуска - та дата, когда будет произведена следующая загрузка
- Периодичность - повторяемость задачи через определенные промежутки времени
- Описание - любой комментарий по задаче
5) Нажать на сохранение в справочнике
И на этом всё!
Создание задачи с помощью методов
Для создания задачи необходимо обратиться к следующим методам в контроллере Data:
- Data/Load - загрузка в данных в объекты платформы
- Data/LoadFromFile - загрузка данных в объекты платформы, если источник - файл
Пример загрузки данных с помощью Data/Load
На примере 3v.3v-group.net
- Перейти на метод Data/Load
- Нажать "Try it out!"
- Вставить в Request body (тело запроса) настройку маппинга
- Нажать "Execute"
Пример загрузки данных с помощью Data/LoadFromFile
1) Для успешной загрузки данных из файла через дата менеджер необходимо для начала создать справочник- приемник с нужными атрибутами.
На стенде 3V-GROUP.NET создан справочник "Заявки_тест" (код - applications_test)
2) Проверить файл - файл должен содержать одну строку с заголовками, а не две и более
Файл, из которого необходимо грузить данные в справочник, содержит две строки заголовка: на английском и на русском. Строку с русскими заголовками необходимо удалить, так как при дальнейшей работе (маппинге полей) сервис не сможет прочитать столбец, для которого указан тип данных не string, и будет выдавать ошибку
3) Создать задачу в "DataManagerTasks" (справочник "Задачи загрузки данных")
Для данной загрузки в справочнике создана задача с идентификатором 709, где далее будет прописан маппинг полей в атрибуте "Настройки загрузки"
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"
6) Обновить справочник-приемник и убедиться, что все данный выгрузились
Мониторинг выполнения задачи загрузки данных
Результаты загрузки данных можно посмотреть в справочнике "Результаты загрузки данных" (код DataManagerTasksResults)
- Наименование - название задачи
- Статус - статус загрузки (Done/Error)
- Дата начала
- Дата завершения
- Результат - результат работы задачи
- Задача - элемент связанного справочника "Задачи загрузки данных"