-
Notifications
You must be signed in to change notification settings - Fork 4
Erste Schritte mit datacat: Entwickler
Beispiel: Abfrage von Klassen
Die Ausgabe umfasst alle Klassen mit dem Namen "Beleuchtung" inklusive ihrer in nodes angegebenen Parameter.
{
findSubjects(input: {query: "Beleuchtung"}) {
nodes {
id
createdBy
}
}
}
Beispiel: Abfrage von Klassen und den Gruppen denen sie zugeordnet sind
Die Ausgabe umfasst alle Klassen mit dem Namen "Klassenname" inklusive ihrer in nodes angegebenen Parameter sowie der übergeordneten Gruppen und deren in nodes {} angegebenen Parameter.
{
findSubjects(input: {query:"Klassenname"}) {
nodes {
name
collectedBy {
nodes {
relatingCollection {
name
}
}
}
}
}
}
Beispiel: Abfrage von verknüpften Referenzdokumenten
Wenn der Abfrage kein Wert im query-Parameter übergeben wird, werden alle Katalogelemente des entsprechenden Typs, inklusive der in nodes {} angegebenen Parameter, ausgegeben. Über den documentedBy-Parameter wird, sofern vorhanden, das verknüpfte Referenzdokument mit ausgegeben.
{
findSubjects(input: {query:""}) {
nodes {
name
documentedBy {
nodes {
relatingDocument {
name
id
}
}
}
}
}
}
Beispiel: Abfrage von Einheiten einer Größe
Die Ausgabe umfasst alle Maßeinheiten inklusive ihrer in nodes angegebenen Parameter, sowie die Größen, denen die Maßeinheit zugewiesen ist.
{
findUnits(input: {query:""}) {
nodes {
name
assignedTo {
nodes {
relatingMeasure {
name
id
}
}
}
}
}
}
Beispiel: Abfrage der Hierarchie
Ausgabe der gesamten Hierarchie möglich. Filterung nach ID, Schlagworten oder Knoten-Typ durchführbar.
{
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} | Schlagworte 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) |
Bei diesen Abfragen sind folgende weiterführende Filterkriterien möglich: (Für Anwendung: siehe obige Beispiele)
Kriterium | Parameter | Rückgabe |
---|---|---|
assignedTo | relatedMeasure | Einem Wert zugehörige Größe |
assignedTo | relatingMeasure | Einer Maßeinheit zugehörige Größe |
assignedTo | relatingProperty | Einer Größe übergeordnetes Merkmal |
assignedCollections | relatedCollections | Untergeordnete Entitäten des Typs XtdCollection (Merkmalsgruppe) |
assignedProperties | relatedProperties | Untergeordnete Entitäten des Typs XtdProperty (Merkmal) |
collectedBy | relatingCollection | Übergeordnete Entitäten |
documentedBy | relatingDocument | Verknüpfte Referenzdokumente zu gesuchter Entität |
documents | relatedThings | Verknüpfungen mit gesuchtem Referenzdokument |
Erstellen einer neuen Klasse
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!
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!
(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 |
---|---|
findModelWithoutGroup | Fachmodelle ohne zugehörige Gruppe |
findGroupWithoutSubject | Gruppe ohne zugehörige 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 zugehörige Merkmale |
findUnitWithoutMeasure | Einheiten ohne zugehörige Größe |
findValueWithoutMeasure | Werte ohne zugehörige 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: {nodeTypeFilter: {}}) {
nodes {
name
id
description
}
}
}
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.
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.
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.