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

Demo

Version

1.0

Funktionen

Datenquelle

Objektarten

User, Computer, WebPage, Application, Process und Session

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

Module

Demo

Value

Path

Optional

String

Value

Context

Optional

String

  • Must not be empty.

  • Maximum length: 64

  • Must match this regular expression: [-_.a-z0-9]+   

Default Value:

example.com

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:

name

Technischer, innerhalb des Schemas eindeutiger Wertbezeichner.

label

Beschriftung, die der Raptor Client anzeigt.

type

Datentyp des Wertes. Die unterstützten Typen sind weiter unten beschrieben.

section

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:

Permanent

Stellt die Werte direkt bereit. Dies ist der Standardwert.

OnRequestAutomatic

Liefert die Werte erst, wenn das System den Informationsblock automatisch anfordert.

OnRequestByUser

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.