Zum Hauptinhalt springen

Systemabfragen

Systemabfragen sind wiederverwendbare Abfragekonfigurationen, die im Repository gespeichert werden. Sie erlauben es Ihnen, eine Abfrage einmal zu definieren und sie von mehreren Stellen aus nur über ihre ID auszuführen.

Überblick​

Anders als bei Ad-hoc-GraphQL-Abfragen, bei denen die Abfragestruktur in jeder Anfrage definiert wird, speichern Systemabfragen die Abfragekonfiguration (Spalten, Filter, Sortierung) als Entität im Repository. Das ermöglicht:

  • Wiederverwendbarkeit: Dieselbe Abfragedefinition über verschiedene Anwendungen hinweg verwenden
  • Zentrale Verwaltung: Die Abfrage an einer Stelle aktualisieren, Änderungen wirken sich überall aus
  • Integration: Abfragen aus Office-Add-ins, Grafana, Power BI und anderen Werkzeugen ausführen
  • Konsistenz: Sicherstellen, dass alle Konsumenten dieselbe Abfragelogik verwenden

Funktionsweise​

┌─────────────────────────────────────────────────────────────┐
│ System Query (Repository) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ rtId: "693c66ce464d7d9e1396cf1f" │ │
│ │ name: "Active Energy Meters" │ │
│ │ queryCkTypeId: "Industry.Energy/EnergyMeter" │ │
│ │ columns: ["name", "voltage", "state"] │ │
│ │ fieldFilter: [{ state: EQUALS "ON" }] │ │
│ │ sorting: [{ name: ASCENDING }] │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Office │ │ Grafana │ │ Power BI │
│ Add-in │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘

Eine Systemabfrage ausführen​

Um eine gespeicherte Systemabfrage auszuführen, verwenden Sie runtimeQuery mit der rtId der Abfrage:

query {
runtime {
runtimeQuery(rtId: "693c66ce464d7d9e1396cf1f") {
items {
queryRtId
columns {
attributePath
attributeValueType
}
rows(first: 10) {
items {
rtId
ckTypeId
cells {
items {
attributePath
value
}
}
}
}
}
}
}
}

Struktur der Antwort​

{
"data": {
"runtime": {
"runtimeQuery": {
"items": [
{
"queryRtId": "693c66ce464d7d9e1396cf1f",
"columns": [
{
"attributePath": "contact.firstName",
"attributeValueType": "STRING"
},
{
"attributePath": "contact.address.street",
"attributeValueType": "STRING"
},
{
"attributePath": "contact.address.cityTown",
"attributeValueType": "STRING"
}
],
"rows": {
"items": [
{
"rtId": "693c51af464d7d9e1396cf12",
"ckTypeId": "EnergyCommunity/Customer",
"cells": {
"items": [
{
"attributePath": "contact.firstName",
"value": "Jane"
},
{
"attributePath": "contact.address.street",
"value": "Sample Street 42"
},
{
"attributePath": "contact.address.cityTown",
"value": "Berlin"
}
]
}
},
{
"rtId": "693c51af464d7d9e1396cf15",
"ckTypeId": "EnergyCommunity/Customer",
"cells": {
"items": [
{
"attributePath": "contact.firstName",
"value": "Paul"
},
{
"attributePath": "contact.address.street",
"value": "Testgasse 5"
},
{
"attributePath": "contact.address.cityTown",
"value": "Zürich"
}
]
}
}
]
}
}
]
}
}
}
}

Konfiguration der Systemabfrage​

Eine Systemabfrage-Entität enthält die folgende Konfiguration:

FeldTypBeschreibung
nameStringAnzeigename der Abfrage
queryCkTypeIdStringDer abzufragende Entitätstyp (z. B. Industry.Energy/EnergyMeter)
columns[String]Liste von Attributpfaden, die als Spalten aufgenommen werden
sorting[Sort]Sortierkonfiguration
fieldFilter[FieldFilter]Attributbasierte Filter
attributeSearchFilterAttributeSearchFilterWildcard-Suchkonfiguration
textSearchFilterTextSearchFilterVolltextsuchkonfiguration

Alle Systemabfragen auflisten​

query getQueries($first: Int, $after: String) {
runtime {
systemQuery(first: $first, after: $after) {
totalCount
items {
rtId
ckTypeId
name
queryCkTypeId
}
}
}
}

Details einer Systemabfrage abrufen​

query getQueryDetails($rtId: OctoObjectId!) {
runtime {
systemQuery(rtId: $rtId) {
items {
rtId
name
queryCkTypeId
columns
sorting {
attributePath
sortOrder
}
fieldFilter {
attributePath
operator
comparisonValue
}
attributeSearchFilter {
attributePaths
searchValue
}
textSearchFilter {
searchValue
}
}
}
}
}

CRUD-Operationen​

OperationDokumentation
ErstellenSystemabfragen erstellen
AktualisierenSystemabfragen aktualisieren
LöschenSiehe Löschen – verwenden Sie runtimeEntities.delete mit ckTypeId: "System/Query"

Systemabfragen vs. Transiente Abfragen​

AspektSystemabfrageTransiente Abfrage
KonfigurationIm Repository gespeichertIn jeder Anfrage definiert
WiederverwendbarkeitHoch – Verwendung über IDKeine – Definition muss wiederholt werden
VerwaltungZentralPro Anfrage
AnwendungsfallGemeinsame Abfragen über Werkzeuge hinwegAd-hoc-, Einmal-Abfragen
AktualisierungEinmal ändern, gilt überallJeden Konsumenten ändern

Verwenden Sie Systemabfragen, wenn:

  • Mehrere Anwendungen dieselbe Abfrage benötigen
  • Die Abfragekonfiguration zentral verwaltet werden soll
  • Integration mit externen Werkzeugen (Office, Grafana, Power BI)

Verwenden Sie Transiente Abfragen, wenn:

  • Die Abfrage anwendungsspezifisch ist
  • Sich Spalten/Filter dynamisch basierend auf Benutzereingaben ändern
  • Keine Wiederverwendbarkeit erforderlich ist

Integrationsbeispiele​

Office Add-in​

Das Office-Add-in kann Systemabfragen ausführen, indem es deren rtId referenziert, sodass Benutzer Daten in Excel- oder Word-Dokumente ziehen können.

Grafana​

Grafana-Dashboards können Systemabfragen als Datenquellen verwenden und so eine konsistente Datenvisualisierung über Teams hinweg sicherstellen.

Power BI​

Power-BI-Berichte können sich mit Systemabfragen verbinden, um Business-Intelligence-Berichte mit derselben Abfragelogik zu erstellen, die auch in anderen Anwendungen verwendet wird.