🎯 Definicja

Mutacje (Mutations) w GraphQL to specjalne operacje przeznaczone do modyfikacji danych po stronie serwera (zapis, aktualizacja, usuwanie). W przeciwieństwie do zapytań (queries), które mogą być wykonywane równolegle, mutacje są wykonywane sekwencyjnie (szeregowo), co zapewnia spójność i chroni przed wyścigami (race conditions) podczas modyfikacji danych. Do testowania mutacji można użyć środowiska GraphQL Playground.


🔑 Kluczowe punkty

  • Służą do wykonywania wszelkich operacji zapisu i modyfikacji danych w Ataccama ONE (tworzenie, edycja, usuwanie encji, uruchamianie procesów).
  • Mutacje mogą zwracać stan wykonanego zadania (np. identyfikator gid zadania DQ, patrz: Data Quality) oraz zmodyfikowany obiekt wraz z zagnieżdżonymi polami.
  • Wykonywane są sekwencyjnie (w serii), w przeciwieństwie do zapytań wykonywanych współbieżnie.
  • Stanowią odpowiednik operacji modyfikujących w REST (POST, PUT, DELETE, patrz: Nagłówki HTTP).

📚 Szczegółowe wyjaśnienie i przykłady

1. Uruchamianie ewaluacji Jakości Danych (DQ)

Możesz uruchomić ewaluację jakości danych (DQ evaluation) dla elementu katalogu, konkretnego atrybutu (atrybutu elementu katalogu) lub terminu biznesowego. Każda z tych operacji zwraca identyfikator zadania (gid).

Uruchomienie ewaluacji DQ dla elementu katalogu (Catalog Item)

mutation catalogItemDQ {
    catalogItemEvaluateDq(gid: "identyfikator_elementu_katalogu") {
        gid
    }
}

Przykładowa odpowiedź:

{
    "data": {
        "catalogItemEvaluateDq": {
            "gid": "e80174ca-a512-40e0-8975-b1417a63b4a9"
        }
    }
}

Uruchomienie ewaluacji DQ dla atrybutu elementu katalogu (Attribute)

mutation catalogItemAttributeDQ {
    attributeEvaluateDq(gid: "identyfikator_atrybutu") {
        gid
    }
}

Uruchomienie ewaluacji DQ dla terminu słownikowego (Glossary Term)

mutation glossaryTermDQ {
    termEvaluateDq(gid: "identyfikator_terminu") {
        gid
    }
}

2. Usuwanie encji (Deleting Entities)

Usunięcie encji w Ataccama ONE wymaga w pierwszej kolejności utworzenia wersji roboczej usunięcia (delete draft), a następnie jej opublikowania (publish).

Operacja GraphQL do usuwania elementu katalogu:

mutation deleteEntity {
    catalogItemDelete(gid: "0726c74e-fc9e-40ad-a29d-23ec1dac8769") {
        success
    }
}

Uwaga: W przypadku usuwania atrybutu elementu katalogu należy zastąpić catalogItemDelete przez attributeDelete. Dla terminu słownikowego użyj termDelete.

Przykładowa odpowiedź:

{
    "data": {
        "catalogItemDelete": {
            "success": true
        }
    }
}

3. Publikowanie encji (Publishing Entities)

Mutacja publishEntity pozwala na publikację dowolnego węzła modelu metadanych (MMD). Obecnie operacja ta omija domyślny proces zatwierdzania (workflow), automatycznie akceptując żądania publikacji.

Publikacja elementu katalogu:

mutation publishEntity {
    catalogItemPublish(gid: "0726c74e-fc9e-40ad-a29d-23ec1dac8769") {
        success
        result {
            publishedVersion {
                name
            }
        }
    }
}

Uwaga: W przypadku publikacji atrybutu elementu katalogu użyj attributePublish. Dla terminu biznesowego użyj termPublish.

Przykładowa odpowiedź:

{
    "data": {
        "catalogItemPublish": {
            "success": true,
            "result": {
                "publishedVersion": {
                    "name": "customers.csv"
                }
            }
        }
    }
}

Publikacja wersji roboczej usunięcia (Delete Draft):

{
    "data": {
        "catalogItemDelete": {
            "success": true,
            "result": {
                "publishedVersion": null
            }
        }
    }
}

4. Klonowanie reguł i terminów (Duplicating Rules and Terms)

Umożliwia skopiowanie konfiguracji reguł DQ lub terminów biznesowych (np. w celu przypisania podobnych reguł do wielu plików wyszukiwania). Operacja kopiuje wyłącznie konfigurację i nie przenosi powiązań encji (skopiowany obiekt nie jest nigdzie przypisany).

Duplikowanie terminu:

mutation copyTerm {
    termCopy(gid: "identyfikator_terminu") {
        result {
            gid
        }
    }
}

Duplikowanie reguły:

mutation copyRule {
    ruleCopy(gid: "identyfikator_reguly") {
        result {
            gid
        }
    }
}

Przykładowa odpowiedź:

{
    "data": {
        "ruleCopy": {
            "result": {
                "gid": "a0ceca7a-1653-4338-9054-8da4e45dcd7e"
            }
        }
    }
}

📌 Źródła