Demo-Datenquelle¶
Einleitung¶
Mit der Demo-Datenquelle kannst du frei definierte Raptor-Objekte aus einer XML-Datei einlesen. Die Erweiterung eignet sich, um Ansichten, Aktionen und Datenmodelle in einer Test- oder Demonstrationsumgebung aufzubauen, ohne dafür ein externes Quellsystem zu benötigen.
Die Datenquelle ist nicht als Ersatz für eine produktive Systemintegration gedacht. Sie prüft zwar die Struktur der Datei beim Einlesen, ist aber mit keinem führenden Quellsystem verbunden und kennt dessen Konsistenzregeln nicht. Verwende sie deshalb für nachvollziehbare Testdaten und nicht für Daten, von denen ein produktiver Betrieb abhängt.
Fakten¶
Name |
Demonstration |
Bezeichner |
|
Version |
1.0 |
Funktionen |
Datenquelle |
Objektarten |
|
Informationsblöcke |
Frei definierbar |
Arbeitsweise¶
Die Erweiterung prüft die Quelldatei alle fünf Sekunden. Sobald sich deren Änderungszeit ändert, liest sie die Datei vollständig ein und übermittelt nur die Unterschiede zum bisherigen Datenbestand an den Raptor Server. Damit kannst du Testdaten während des Betriebs anpassen.
Ist die Datei nicht vorhanden oder kann sie nicht als XML gelesen werden, schreibt die Erweiterung eine Warnung in das Protokoll und sendet keine unvollständigen Daten. Bereits erfolgreich eingelesene Objekte bleiben dabei erhalten. Speichere eine korrigierte Datei erneut, damit sich ihre Änderungszeit ändert und sie beim nächsten Prüfzyklus nochmals gelesen wird.
Konfiguration¶
Das Konfigurationsschema¶
Der Wert Path¶
Mit dem optionalen Wert Path bestimmst du die XML-Datei, aus der die Erweiterung ihre Objekte liest. Lässt du den Wert weg, verwendet sie die Datei demo_objects.xml im Datenverzeichnis des Raptor Servers.
Ein relativer Pfad bezieht sich ebenfalls auf das Datenverzeichnis. Mit einem absoluten Pfad kannst du die Datei an einem anderen Ort ablegen. Das Dienstkonto des Raptor Servers benötigt dort Leserechte.
1<Module name="Demo">
2 <Value name="Path">demo/demo_objects.xml</Value>
3 <Value name="Context">example.com</Value>
4</Module>
Der Wert Context¶
Der Wert Context legt den Kontext für sämtliche Objekte aus dieser Datei fest. Verwende denselben Kontext wie eine andere Datenquelle, wenn die Demo-Objekte mit deren Objekten zusammengeführt werden sollen. Mit einem eigenen Kontext hältst du die Testdaten hingegen getrennt.
Der Kontext darf höchstens 64 Zeichen lang sein und nur Buchstaben, Zahlen, Bindestriche, Unterstriche und Punkte enthalten. Ohne Angabe verwendet die Erweiterung example.com.
1<Module name="Demo">
2 <Value name="Path">demo_objects.xml</Value>
3 <Value name="Context">lab.example.com</Value>
4</Module>
Format der Objektdatei¶
Die Objektdatei besitzt das Wurzelelement DemoObjects. Darin definierst du zuerst die benötigten Schemas und anschließend die Objekte, deren Informationsblöcke diese Schemas verwenden. Namen von Schemas, Werten und Informationsblöcken müssen innerhalb ihres jeweiligen Bereichs eindeutig und dürfen nicht leer sein.
Schemas und Werte¶
Ein Schema beschreibt die Werte eines Informationsblocks. Jeder Eintrag SchemaValue benötigt die Attribute name, label, type und section:
|
Technischer, innerhalb des Schemas eindeutiger Wertbezeichner. |
|
Beschriftung, die der Raptor Client anzeigt. |
|
Datentyp des Wertes. Die unterstützten Typen sind weiter unten beschrieben. |
|
Bezeichner des Abschnitts, in dem der Wert angezeigt wird. |
<Schema name="computerBasic">
<SchemaValue name="description" label="Beschreibung"
type="String" section="primary" />
<SchemaValue name="enabled" label="Aktiv"
type="Boolean" section="primary" />
</Schema>
Objekte und Informationsblöcke¶
Mit Object erstellst du ein Objekt. Das Attribut type akzeptiert die Werte User, Computer, WebPage, Application, Process und Session. Die Schreibweise ist dabei relevant. name enthält den Objektnamen; den Kontext übernimmt die Erweiterung aus ihrer Konfiguration.
Jeder InformationBlock benötigt einen eindeutigen name und verweist mit schema auf ein zuvor definiertes Schema. Die untergeordneten Werte müssen den Namen und Typen dieses Schemas entsprechen. Unbekannte Werte überspringt die Erweiterung mit einer Warnung.
<Object type="Computer" name="LAB-PC-01">
<InformationBlock name="basic" schema="computerBasic">
<StringValue name="description">Computer im Schulungsraum</StringValue>
<BooleanValue name="enabled">true</BooleanValue>
</InformationBlock>
</Object>
Modi, Verzögerung und Ablaufzeit¶
Das optionale Attribut mode steuert, wann die Werte eines Informationsblocks geliefert werden:
|
Stellt die Werte direkt bereit. Dies ist der Standardwert. |
|
Liefert die Werte erst, wenn das System den Informationsblock automatisch anfordert. |
|
Liefert die Werte erst nach einer durch den Benutzer ausgelösten Anforderung. |
Mit delay verzögerst du die Lieferung um eine positive Anzahl Sekunden. Bei einem On-Request-Modus setzt die Erweiterung ohne konfigurierte Verzögerung automatisch eine Sekunde ein. Das optionale Attribut expires legt fest, wie viele Sekunden die gelieferten Werte gültig bleiben. Null und negative Angaben werden ignoriert.
<InformationBlock name="details" schema="computerBasic"
mode="OnRequestByUser" delay="2" expires="60">
<StringValue name="description">Zeitverzögert geladene Details</StringValue>
<BooleanValue name="enabled">true</BooleanValue>
</InformationBlock>
Unterstützte Werttypen¶
Die folgenden Typen kannst du in SchemaValue verwenden. Die Typnamen werden ohne Beachtung der Groß- und Kleinschreibung erkannt; für gut lesbare Dateien empfehlen wir dir dennoch die hier gezeigte Schreibweise.
String¶
Einen Textwert schreibst du als StringValue. Führende und nachfolgende Leerzeichen entfernt die Erweiterung beim Einlesen.
<StringValue name="description">Ein Beispieltext</StringValue>
StringList¶
Eine Textliste besteht aus einem List-Element und beliebig vielen unbenannten StringValue-Einträgen.
<List name="tags">
<StringValue>Schulung</StringValue>
<StringValue>Windows 365</StringValue>
</List>
Integer und Boolean¶
Ganze Zahlen verwendest du in IntegerValue. Ein BooleanValue akzeptiert ausschließlich true oder false, wobei die Groß- und Kleinschreibung keine Rolle spielt.
<IntegerValue name="priority">42</IntegerValue>
<BooleanValue name="enabled">true</BooleanValue>
DateTime¶
Datum und Uhrzeit werden als StringValue in einem von Qt erkannten Datumsformat übergeben. Verwende eine eindeutige ISO-8601-Angabe mit Zeitzone, damit das Ergebnis nicht von der lokalen Zeitzone des Servers abhängt.
<StringValue name="lastChanged">2026-09-22T08:30:00Z</StringValue>
Program¶
Ein Programmwert ist eine Gruppe mit genau den Textwerten label und program. label wird im Client angezeigt, während program die auszuführende Befehlszeile enthält.
<Group name="supportTool">
<StringValue name="label">Support-Werkzeug öffnen</StringValue>
<StringValue name="program">C:\Tools\Support.exe</StringValue>
</Group>
Table¶
Eine Tabelle ist eine Gruppe mit den beiden Listen columns und rows. Jede Spalte besitzt genau ein label und einen gültigen Raptor-Werttyp in type. Jede Zeile muss gleich viele Werte enthalten wie die Tabelle Spalten besitzt; Typ und Reihenfolge müssen zur jeweiligen Spaltendefinition passen.
Wichtig
Der Schematyp heißt Table. List ist lediglich das XML-Hilfselement für Spalten, Zeilen und Textlisten und kein gültiger Wert für das Attribut type.
<Group name="contacts">
<List name="columns">
<Group>
<StringValue name="label">Name</StringValue>
<StringValue name="type">String</StringValue>
</Group>
<Group>
<StringValue name="label">Priorität</StringValue>
<StringValue name="type">Integer</StringValue>
</Group>
</List>
<List name="rows">
<List>
<StringValue>Helpdesk</StringValue>
<IntegerValue>1</IntegerValue>
</List>
<List>
<StringValue>Bereitschaft</StringValue>
<IntegerValue>2</IntegerValue>
</List>
</List>
</Group>
Vollständiges Beispiel¶
Das folgende Beispiel verbindet Schema, Objekt und mehrere Werttypen zu einer gültigen Objektdatei:
1<?xml version="1.0" encoding="UTF-8"?>
2<DemoObjects>
3 <Schema name="computerBasic">
4 <SchemaValue name="description" label="Beschreibung"
5 type="String" section="primary" />
6 <SchemaValue name="tags" label="Kategorien"
7 type="StringList" section="primary" />
8 <SchemaValue name="priority" label="Priorität"
9 type="Integer" section="primary" />
10 <SchemaValue name="enabled" label="Aktiv"
11 type="Boolean" section="primary" />
12 <SchemaValue name="lastChanged" label="Letzte Änderung"
13 type="DateTime" section="primary" />
14 <SchemaValue name="supportTool" label="Support"
15 type="Program" section="primary" />
16 <SchemaValue name="contacts" label="Kontakte"
17 type="Table" section="primary" />
18 </Schema>
19
20 <Object type="Computer" name="LAB-PC-01">
21 <InformationBlock name="basic" schema="computerBasic">
22 <StringValue name="description">Computer im Schulungsraum</StringValue>
23 <List name="tags">
24 <StringValue>Schulung</StringValue>
25 <StringValue>Windows 365</StringValue>
26 </List>
27 <IntegerValue name="priority">42</IntegerValue>
28 <BooleanValue name="enabled">true</BooleanValue>
29 <StringValue name="lastChanged">2026-09-22T08:30:00Z</StringValue>
30 <Group name="supportTool">
31 <StringValue name="label">Support öffnen</StringValue>
32 <StringValue name="program">C:\Tools\Support.exe</StringValue>
33 </Group>
34 <Group name="contacts">
35 <List name="columns">
36 <Group>
37 <StringValue name="label">Name</StringValue>
38 <StringValue name="type">String</StringValue>
39 </Group>
40 <Group>
41 <StringValue name="label">Priorität</StringValue>
42 <StringValue name="type">Integer</StringValue>
43 </Group>
44 </List>
45 <List name="rows">
46 <List>
47 <StringValue>Helpdesk</StringValue>
48 <IntegerValue>1</IntegerValue>
49 </List>
50 </List>
51 </Group>
52 </InformationBlock>
53 </Object>
54</DemoObjects>
Fehler in der Objektdatei¶
Die Erweiterung protokolliert unter anderem unbekannte Objekt- und Werttypen, doppelte Namen, Verweise auf unbekannte Schemas, ungültige Zahlen und unvollständige Tabellen. Der betroffene Eintrag wird übersprungen; andere gültige Einträge können weiterhin geladen werden. Prüfe deshalb nach jeder Änderung das Serverprotokoll, auch wenn einzelne Demo-Objekte bereits sichtbar sind.