Создание предложений¶
Примечание
Перед началом работы необходимо предоставить пользователю право на чтение "Администрирование информационных систем"
Предложения связей могут быть добавлены в систему через REST API, краулеры (Scanner API) или Java API.
Валидация предложений:
Информационная система существует в системе и ее имя не пустое.
Источник данных существует в системе и его имя не пустое.
Тип связи не пуст и существует в модели данных.
Идентификаторы левого и правого концов предложенной связи не пусты.
Виды предложений¶
Новое предложение¶
Предложение связи считается новым, если набор значений from_id, to_id, relation_type является новым для системы.
Новые предложения при сохранении передаются на обработку зарегистрированным саджестерам.
Если один из саджестеров смог идентифицировать левый/правый концы связи и поддерживает автоматический режим, то в системе создается новая связь. Предложение связи логируется.
Если при сохранении вычисленной связи произошла ошибка, предложение остается в системе.
Существующее предложение¶
При сохранении предложения, которое уже существовало в системе выполняется проверка: если предложение является примененным, то оно пропускается, в противном случае выполняется запуск саджестеров (аналогично созданию нового предложения).
Если связь была идентифицирована и успешно создана, предложение удаляется из общего списка и добавляется в лог.
Примечание
При создании связи между активами (записями активов) - связи между типами активов будут созданы автоматически
Добавление предложений в систему¶
Добавление через REST API¶
В запросе передается список предложений с заполненными левым и правым концами связи, информационной системой и источником данных.
Пример REST API:
POST v1/dg/suggestions/upsert
{
"suggestions": [
{
"informationSystem": "pc5",
"sourceSystem": "pc5",
"typeName": "type2",
"fromId": "${DEMO_DATA1}_public_t1",
"toId": "${DEMO_DATA2}_public_for_test"
},
{
"informationSystem": "pc5",
"sourceSystem": "pc5",
"typeName": "type2",
"fromId": "${DEMO_DATA1}_public_t1",
"toId": "${DEMO_DATA2}_public_for_test_col1"
}
]
}
Добавление через Scanner API¶
Для загрузки предложений через сканер необходимо имплементировать краулер, возвращающий объекты (DataItem) c неймспейсом RELATION и заполненными свойствами (fromExternalId, toExternalId, suggestion = true).
Результаты запуска сканера, а также статистика по предложениям связей, доступны в Уведомлениях системы.
Пример краулера:
DataItem dataItem = new DataItem();
dataItem.setNameSpace(DataGovernanceNamespace.RELATION);
dataItem.setTypeName("data_linage");
dataItem.addProperty("fromExternalId", "${DEMO_DATA1}_public_t1");
dataItem.addProperty("toExternalId", "${DEMO_DATA5}_public_t5");
dataItem.addProperty("suggestion", Boolean.TRUE);
Добавление через Java API¶
Сервис com.universe.dg.suggestions.service.SuggestionsService, Метод upsert(SuggestionsUpsertContext)
Пример использования SuggestionsService:
SuggestionsUpsertContext ctx = SuggestionsUpsertContext.builder()
.payload(SuggestionUpsertContext.builder()
.relationType("data_linage")
.fromExternalId(ExternalId.of("${DEMO_DATA1}_public_t1", null, null))
.toExternalId(ExternalId.of("1508834450_public", null, null))
.informationSystem("PC1")
.sourceSystem("sourceSystem1")
.build())
.build();
suggestionsService.upsert(ctx);
Удаление предложений¶
При удалении предложения выполняется проверка: если предложение является примененным, то созданная связь удаляется из системы.
Если при удалении связи произошла ошибка, то предложение остается в примененном статусе.
Примечание
При удалении предложения для примененных связей выполняется логическое удаление
Удаление через REST API¶
В запросе передается список идентификаторов предложений связей для удаления.
Пример REST API:
POST v1/dg/suggestions/delete
{
"ids": ["bf70bc26-821a-4f05-b0bc-26821a0f05a0", "69637024-032d-11ee-8ef0-0148212a6d59"]
}
Удаление через Scanner API¶
Для предложений связей, которые были получены через сканер, создаются снэпшоты запусков. При очередном запуске сканирования выполняется проверка предыдущих запусков. Если существующее предложение отсутствует в текущем запуске, то оно удаляется из системы.
Удаление через Java API¶
Сервис com.universe.dg.suggestions.service.SuggestionsService, Метод delete(SuggestionsDeleteContext)
Пример использования SuggestionsService:
SuggestionsDeleteContext ctx = SuggestionsDeleteContext.builder()
.deletes(SuggestionDeleteContext.builder().id(UUID.fromString("bf70bc26-821a-4f05-b0bc-26821a0f05a0")).build())
.deletes(SuggestionDeleteContext.builder().id(UUID.fromString("69637024-032d-11ee-8ef0-0148212a6d59")).build())
.build();
suggestionsService.delete(ctx);