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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
 
{{DISPLAYTITLE: Частичное очищение данных перед загрузкой в справочник}}
 
{{DISPLAYTITLE: Частичное очищение данных перед загрузкой в справочник}}
''Данный функционал реализован в версии 0.50''
 
 
 
Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи.  
 
Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи.  
 
Например: есть задача для DataManager, которая грузит связи задач из жиры (источника данных), которые менялисm за последний день. Если есть задача с какими-то связями, которую загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, старые удалятся
 
Например: есть задача для DataManager, которая грузит связи задач из жиры (источника данных), которые менялисm за последний день. Если есть задача с какими-то связями, которую загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, старые удалятся
  
в DictionaryDataOptions добавлена настройка
+
в DictionaryDataOptions добавлена настройка:
 +
<syntaxhighlight lang="JSON" line>
 
"сlearDataOptions": {
 
"сlearDataOptions": {
"Fields": [<fields>] - коллекция полей по которым будет осуществляется поиск и очистка перед загрузкой
+
                      "Fields": [<fields>]  
}
+
                    }
 +
</syntaxhighlight> 
  
 +
'''''"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 эти изменения уже не приходят

Текущая версия на 09:31, 12 декабря 2022

Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи. Например: есть задача для 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 эти изменения уже не приходят