Платформа 3V/DataManager/Начало работы: различия между версиями
(не показано 11 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
{{DISPLAYTITLE: Начало работы с DataManager}} | {{DISPLAYTITLE: Начало работы с DataManager}} | ||
− | |||
== Подключение DataManager == | == Подключение DataManager == | ||
При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий. | При создании нового тенанта DataManager будет пытаться сам установить новые объекты в репозиторий. | ||
− | То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса | + | То есть при добавлении нового тенанта, задачи DataManager будут доступны автоматически, без перезапуска сервиса |
+ | |||
[[Файл:Начало работы.png|1000px]] | [[Файл:Начало работы.png|1000px]] | ||
Строка 84: | Строка 84: | ||
[[Файл:Задача_файл.png|500px]] | [[Файл:Задача_файл.png|500px]] | ||
− | 4) Прописать в атрибуте "Настройки загрузки" маппинг полей и нажать "Сохранить" | + | 4) '''Прописать в атрибуте''' "Настройки загрузки" '''маппинг полей''' и нажать "Сохранить" |
Пример настройки для загрузки данных из файла: | Пример настройки для загрузки данных из файла: | ||
<syntaxhighlight lang="JSON" line> | <syntaxhighlight lang="JSON" line> | ||
Строка 95: | Строка 95: | ||
"SaveMode": "Postgres", | "SaveMode": "Postgres", | ||
"mapperOptions": [ | "mapperOptions": [ | ||
− | { | + | { |
− | "propertyName": "NAME", | + | "propertyName": "NAME", |
− | "filedName": "NAME", | + | "filedName": "NAME", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": true, | + | "isPrimary": true, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "connectiontype", | + | "propertyName": "connectiontype", |
− | "filedName": "connectiontype", | + | "filedName": "connectiontype", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "status", | + | "propertyName": "status", |
− | "filedName": "status", | + | "filedName": "status", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "created", | + | "propertyName": "created", |
− | "filedName": "created", | + | "filedName": "created", |
− | "dataType": "DateTime", | + | "dataType": "DateTime", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "closed", | + | "propertyName": "closed", |
− | "filedName": "closed", | + | "filedName": "closed", |
− | "dataType": "DateTime", | + | "dataType": "DateTime", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "customer", | + | "propertyName": "customer", |
− | "filedName": "customer", | + | "filedName": "customer", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "email", | + | "propertyName": "email", |
− | "filedName": "email", | + | "filedName": "email", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "theme", | + | "propertyName": "theme", |
− | "filedName": "theme", | + | "filedName": "theme", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "operator", | + | "propertyName": "operator", |
− | "filedName": "operator", | + | "filedName": "operator", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "amount", | + | "propertyName": "amount", |
− | "filedName": "amount", | + | "filedName": "amount", |
− | "dataType": "Int32", | + | "dataType": "Int32", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "implementers", | + | "propertyName": "implementers", |
− | "filedName": "implementers", | + | "filedName": "implementers", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "categories", | + | "propertyName": "categories", |
− | "filedName": "categories", | + | "filedName": "categories", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "segments", | + | "propertyName": "segments", |
− | "filedName": "segments", | + | "filedName": "segments", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "system", | + | "propertyName": "system", |
− | "filedName": "system", | + | "filedName": "system", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | }, | + | }, |
− | { | + | { |
− | "propertyName": "time", | + | "propertyName": "time", |
− | "filedName": "time", | + | "filedName": "time", |
− | "dataType": "String", | + | "dataType": "String", |
− | "isPrimary": false, | + | "isPrimary": false, |
− | "discriminator":"MapperOption" | + | "discriminator":"MapperOption" |
− | } | + | } |
− | ], | + | ], |
"clearData": false, | "clearData": false, | ||
"dictionaryIdent": "applications_test" | "dictionaryIdent": "applications_test" | ||
Строка 206: | Строка 206: | ||
} | } | ||
</syntaxhighlight> | </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)
- Дата начала
- Дата завершения
- Результат - результат работы задачи
- Задача - элемент связанного справочника "Задачи загрузки данных"