Skip to content

Erste Schritte mit datacat: Entwickler

SeeRoSee edited this page Jan 21, 2022 · 7 revisions

Katalogbearbeitung per GraphiQL Interface

Abfragen

Beispiel: Abfrage von Klassen

Ausgabe sind alle Klassen mit dem Namen "Beleuchtung" inklusive ihrer in "nodes {}" angegebenen Parameter.

{
    findSubjects(input: {query: "Beleuchtung"}) {
        nodes {
            id
            createdBy
        }
    }
}

Beispiel: Abfrage von Größen

Wenn der Abfrage kein Wert im "query"-Parameter übergeben wird, werden alle Katalogelemente des Typs "Größe", inklusive der in "nodes {}" angegebenen Parameter, ausgegeben.

{
    findMeasures(input: {query: ""}) {
        nodes {
            name
            createdBy
        }
    }
}

Beispiel: Abfrage der Hierarchie

Ausgabe der gesamten Hierarchie möglich. Filterung nach ID, Schlagworten oder Knoten-Typ möglich.

{
    hierarchy(input: {rootNodeFilter: {catalogEntryTypeIn: Subject}}) {
        nodes {
          	name
          	description
        }
    }
}

Im GraphiQL-Interface sind diese weiteren Abfragen möglich:

Abfrage Rückgabe
hierarchy Hierarchie
findTags Schlagworte
findExternalDocuments Referenzdokumente
findBags Fachmodelle
findAssignsPropertyWithValues Gruppen
findSubjects Klassen
findNests Merkmalsgruppen
findProperties Merkmale
findMeasures Größen
findUnits Maßeinheiten
findValues Werte
findAccounts Nutzer (siehe hier)

Bei diesen Abfragen sind folgende Parameter (nodes) möglich:

Parameter Rückgabe
id Eindeutige ID des Knoten
name Name des Knoten
description Beschreibung des Knoten
tags {name, id} Schlageworte des Knoten (hier: name und ID des Schlagwortes)
names {language(displayLanguage)} Verfügbare Sprachen des Knoten
created Erstellungsdatum
createdBy Name des Erstellers
lastModified Datum der letzten Bearbeitung
lastModifiedBy Name des letzten Bearbeiters
versionId Versions-ID
versionDate Datum der Version
recordType Knoten-Typ
__typename Knoten-Typ (nach ISO 12006-3)

Weitere GraphiQL-Befehle befinden sich innerhalb der "Docs" welche rechts oberhalb des Ausgabefensters des GraphiQL Interfaces zu finden sind!


Einfügen

Erstellen einer neuen Klasse (XtdSubject)

mutation {
  createCatalogEntry(input: {
    catalogEntryType: Subject
    properties: {
      id: 1234
      version: {
        versionId: "1.0" 
        versionDate: "13.12.2021"
      }
      names: {
        id: 123
        languageTag: "de"
        value: "Neue Klasse"
      }
    }
    tags: 234763214
  }) {
    catalogEntry{__typename}
  }
}

Weitere GraphiQL-Befehle befinden sich innerhalb der "Docs" welche rechts oberhalb des Ausgabefensters des GraphiQL Interfaces zu finden sind!


Änderungen

Aktualisieren eines Namens

mutation {
  updateName(input: {
    catalogEntryId: 67574
    name: {
      translationId: 123
      value: "Neuer Name"
    }
  }) {
    catalogEntry{__typename}
  }
}

Weitere GraphiQL-Befehle befinden sich innerhalb der "Docs" welche rechts oberhalb des Ausgabefensters des GraphiQL Interfaces zu finden sind!

Prüfroutinen

(noch nicht implementiert)

Um die Katalogkonsistenz zu gewährleisten, sind über den Reiter "Prüfen" im Menü die Prüfroutinen abrufbar. Die umfassen die folgenden Abfragen:

Abfrage Überprüfung auf
FindBagWithoutGroupOrSubject Fachmodelle ohne zugehörige Gruppe oder Klasse
FindSubjectWithoutProp Klassen ohne zugehörige Merkmale oder Merkmalsgruppen
FindPropGroupWithoutProp Merkmalsgruppen ohne zugehörige Merkmale
FindPropWithoutSubjectOrPropGroup Merkmale ohne zugehörige Klassen oder Merkmalsgruppe
FindMeasureWithoutProp Größen ohne Merkmal
FindUnitWithoutMeasure Einheiten ohne Größe
FindValueWithoutMeasure Werte ohne Einheiten
FindMultipleIDs ID-Duplikate
FindMultipleNames Namens-Duplikate
FindMissingDescription Fehlende Beschreibung
FindMissingEnglishDescription Fehelende englische Beschreibung
FindMissingEnglishName Fehelender englischer Name

Beispiel: FindMultipleNames

Die Parameter für die Ausgabe sind der Tabelle im oberen Absatz Abfragen zu entnehmen.

{
    FindMultipleNames(input: {rootNodeFilter: {}}) {
        nodes {
          	name
          	id
          	description
        }
    }
}

Weiterentwicklung

Dieser Teil bezieht sich auf die Arbeit mit einer lokalen datacat-Instanz zur Entwicklung. Voraussetzung ist das erfolgreiche Durchführen des Leitfaden zur lokalen Installation von datacat.

Frontend

Das Frontend, in Form des datacat-Editors basiert auf dem JavaScript-Framework React. Daher werden Änderungen am Frontend nach dem Speichern der angepassten Datei direkt im Browser angezeigt.

Backend

Das Backend basiert vollständig auf Java. Es ist empfehlenswert, Änderungen am Code über einen Quelltext-Editor, wie Visual Studio Code, vorzunehmen. Anders als bei JavaScript ist es notwendig, damit die Änderungen über den Browser sichtbar sind, den entsprechenden Docker-Container vollständig neu zu starten. Wenn nur das Backend selbst bearbeitet wird, ist es nötig, den Container datacat zu löschen und das Image datacat_api zu entfernen. Das Löschen des Containers kann über den Befehl:

$ docker compose down

durchgeführt werden. Wenn das Image manuell gelöscht wurde, kann der Container "datacat" über die Konsole neu gestartet werden:

$ docker-compose up -d

Die Container db und mail betreffen in der Regel die Weiterentwicklung nicht. Über mail wird der E-Mail-Verkehr für die Registrierung neuer Nutzer verwaltet. Dieses Prozess ist in der lokalen datacat-Umgebung nicht funktionsfähig. Der db-Container betrifft die Datenbank und wird im Rahmen dieses Tutorials bearbeitet.

Clone this wiki locally