Создание предложений

Примечание

Перед началом работы необходимо предоставить пользователю право на чтение "Администрирование информационных систем"

Предложения связей могут быть добавлены в систему через 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);