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

Материал из 3v-wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Реализовано в версии 0.50 У данной реализации есть ограничение: связи будут удаляться тол...»)
 
Строка 1: Строка 1:
Реализовано в версии 0.50
+
{{DISPLAYTITLE: Частичное очищение данных перед загрузкой в справочник}}
У данной реализации есть ограничение: связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка на корп-портале сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят, поэтому непонятно, для какой задачи надо было предварительно почистить.
+
''Данный функционал реализован в версии 0.50''
 +
 
 +
Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи.
 +
Например: есть задача для DataManager, которая грузит связи задач из жиры (источника данных), которые менялисm за последний день. Если есть задача с какими-то связями, которую загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, старые удалятся
  
 
в DictionaryDataOptions добавлена настройка
 
в DictionaryDataOptions добавлена настройка
 
"сlearDataOptions": {
 
"сlearDataOptions": {
 
"Fields": [<fields>] - коллекция полей по которым будет осуществляется поиск и очистка перед загрузкой
 
"Fields": [<fields>] - коллекция полей по которым будет осуществляется поиск и очистка перед загрузкой
},
+
}
 
 
    /// <summary>
 
    /// Настройки очистки данных перед загрузкой.
 
    /// </summary>
 
    public class ClearDataOptions
 
    {
 
        /// <summary>
 
        /// Коллекция полей, ко которым необходимо очищать данные перед загрузкой.
 
        /// </summary>
 
        public string[] Fields { get; set; }
 
    }
 
 
 
Основная проблема:
 
 
 
Допустим есть некая сущность X со значениями {x1, x2, x3, ...}, и ссылающаяся на нее сущность Y со значениями {y1, y2, y3, ...}. Для DM настроена задача загрузки, которая грузит некоторые элементы Y в справочник.
 
 
 
Допустим, что у нас был элемент y1, который ссылался на x1. DM загрузил. Далее, в источнике удалили y1 и добавили y2, которая тоже ссылается на x1. DM ее тоже загрузит, но прежнюю запись не удалит. Таким образом в справочнике Y будет 2 сущности, хотя в источнике одна.
 
 
 
Необходимо научить DM предочищать данные перед добавлением новых записей по определенным полям и тем значениям, которые пришли из источника.
 
 
 
Например, для случая выше, нужно настроить очистку по связанному атрибуту X в справочнике Y. Тогда, при получении записи y2-x1, сначала удаляются все записи, у которых значение x1, а потом уже происходит добавление y2-x1.
 
 
 
 
  
Настоящий пример:
+
Пример:
  
на разработке в справочнике задач DM есть элемент с id = 196, который грузит связи задач жиры Тривиума (которые менялись за последний день). Если у нас есть задача с какими-то связями, и мы их загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, но старые не удалятся. Нам нужно удалять связи задач по ид. задачи (inwardIssue.key.value вроде).
+
'''У данной реализации есть ограничение:''' связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка для некоторых приложений сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят

Версия 09:58, 5 октября 2022

Данный функционал реализован в версии 0.50

Данная настройка позволяет удалять те записи, которых нет в источнике данных, с возможностью указания атрибутов источника и приемника. Удаление происходит перед записью новых значений при указании атрибута, по которому должны удаляться записи. Например: есть задача для DataManager, которая грузит связи задач из жиры (источника данных), которые менялисm за последний день. Если есть задача с какими-то связями, которую загрузили через DM, а потом связи у задачи поменяли (старые удалили, новые добавили), то после новой загрузки в DM новые останутся, старые удалятся

в DictionaryDataOptions добавлена настройка "сlearDataOptions": { "Fields": [<fields>] - коллекция полей по которым будет осуществляется поиск и очистка перед загрузкой }

Пример:

У данной реализации есть ограничение: связи будут удаляться только в том случае, если у задачи еще есть связи ТОЙ ЖЕ НАПРАВЛЕННОСТИ. То есть каждая задача имеет 2 вида ссылок: исходящие и входящие. Загрузка для некоторых приложений сейчас настроена так, что в атрибут NAME пишутся “входящие” задачи. Таким образом, если мы у задачи удалили “входящую” задачу и больше “входящих” задач не осталось, то связь так и останется в справочнике. Это происходит потому, что в DM эти изменения уже не приходят