Платформа 3V/DataManager/Частичное очищение данных перед загрузкой в справочник: различия между версиями
Строка 12: | Строка 12: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | '''''"Fields": [<fields>]''''' - коллекция полей по которым будет осуществляется поиск и очистка перед загрузкой | + | '''''"Fields": [<fields>]''''' - коллекция полей в приемнике по которым будет осуществляется поиск и очистка перед загрузкой |
+ | Пример: | ||
+ | <syntaxhighlight lang="JSON" line> | ||
+ | { | ||
+ | "Source": { | ||
+ | "discriminator": "UrlDataManagerSource", | ||
+ | "Uri": "https://3v.3v-group.net/filestorage/api/FileStorage/Db/get/4454_data.json", | ||
+ | "Headers": { | ||
+ | "Authorization": "Bearer <token>" | ||
+ | } | ||
+ | }, | ||
+ | "Destination": { | ||
+ | "discriminator": "DictionaryDataOptions", | ||
+ | "SaveMode": "Postgres", | ||
+ | "mapperOptions": [ | ||
+ | { | ||
+ | "propertyName": "inwardIssue.key.value", | ||
+ | "filedName": "NAME", | ||
+ | "dataType": "String", | ||
+ | "isPrimary": true, | ||
+ | "discriminator": "MapperOption" | ||
+ | }, | ||
+ | { | ||
+ | "propertyName": "outwardIssue.key.value", | ||
+ | "filedName": "out", | ||
+ | "dataType": "String", | ||
+ | "isPrimary": true, | ||
+ | "discriminator": "MapperOption" | ||
+ | } | ||
+ | ], | ||
+ | "clearData": false, | ||
+ | "clearDataOptions": { | ||
+ | "fields": ["out"] | ||
+ | }, | ||
+ | "dictionaryIdent": "4454_links" | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
'''У данной реализации есть ограничение:''' связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка для некоторых приложений сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят | '''У данной реализации есть ограничение:''' связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка для некоторых приложений сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят |
Версия 10:12, 5 октября 2022
Данный функционал реализован в версии 0.50
Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи. Например: есть задача для DataManager, которая грузит связи задач из жиры (источника данных), которые менялисm за последний день. Если есть задача с какими-то связями, которую загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, старые удалятся
в DictionaryDataOptions добавлена настройка:
1 "сlearDataOptions": {
2 "Fields": [<fields>]
3 }
"Fields": [<fields>] - коллекция полей в приемнике по которым будет осуществляется поиск и очистка перед загрузкой Пример:
1 {
2 "Source": {
3 "discriminator": "UrlDataManagerSource",
4 "Uri": "https://3v.3v-group.net/filestorage/api/FileStorage/Db/get/4454_data.json",
5 "Headers": {
6 "Authorization": "Bearer <token>"
7 }
8 },
9 "Destination": {
10 "discriminator": "DictionaryDataOptions",
11 "SaveMode": "Postgres",
12 "mapperOptions": [
13 {
14 "propertyName": "inwardIssue.key.value",
15 "filedName": "NAME",
16 "dataType": "String",
17 "isPrimary": true,
18 "discriminator": "MapperOption"
19 },
20 {
21 "propertyName": "outwardIssue.key.value",
22 "filedName": "out",
23 "dataType": "String",
24 "isPrimary": true,
25 "discriminator": "MapperOption"
26 }
27 ],
28 "clearData": false,
29 "clearDataOptions": {
30 "fields": ["out"]
31 },
32 "dictionaryIdent": "4454_links"
33 }
34 }
У данной реализации есть ограничение: связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка для некоторых приложений сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят