Variablen
Sie können Variablen definieren, um bspw. die von Macro Actions zurück gelieferten Ergebniswerte darin zu speichern. Durch Aufruf dieser Ergebnisvariablen können Sie auf die darin gespeicherten Werte referenzieren und sie weiterverarbeiten.
Variablen finden in u. a. in Jobs, Berichtsdefinitionen und in den Pre- und Post Actions von Ticketaktionen Verwendung.
Datentypen
Variablen können verschiedenartige Werte aufnehmen. Beim Implizieren von Variablen ist es nicht erforderlich, den Datentyp explizit anzugeben. Er wird von der Macro Action bestimmt, in der die Variable initialisiert wird.
Ausnahme ist jedoch die Konfiguration von Berichtsdefinitionen. Für die aus den Parametern im SQL Statement entstehenden Variablen muss der Datentyp angegeben werden, damit die Werte korrekt verwendet werden.
Folgende Datentypen sind möglich:
Datentyp | Beschreibung | Hinweise |
---|---|---|
String | Alphanumerische Zeichen und Zeichenketten | Die Zeichen und Zeichenketten werden immer in Hochkommas eingeschlossen, damit sie als Text interpretiert werden, z. B.:
Berechnungen mit Variablen vom Datentyp |
Numeric | numerische Werte/Ziffern | Variablen vom Datentyp Bei Fließkommazahlen muss ein Punkt anstelle des Kommas verwendet werden.
|
Object | Objekte | Variablen des Datentyps Durch Verwendung des Filters "jq" können Teile davon extrahiert und weiterverwendet werden (s. Variablenfilter). Beispiel: varTest = { "Objects":[ { "id":"47441", "value":"Moers", }, { "id":"47798", "value":"Krefeld" } ] } |
Date DateTime Time | Datumswerte | Variablen vom Datentyp
Variablen vom Datentyp
Variablen vom Datentyp
|
Bitte beachten Sie:
Die Variablen werden nicht global, sondern stets lokal initialisiert. Ihr Geltungsbereich erstreckt sich nur auf das aktuelle Objekt (Job/Aktion/Berichtsdefinition). Es ist somit nicht möglich, eine in Job A angelegte Variable in Job B weiterzuverarbeiten.
Initialisieren von Variablen
Eine Variable wird durch Angabe ihres Variablenbezeichners initialisiert, bspw. in den Ergebnisbezeichnungen einer Macro Action.
Die Variablenbezeichner können Sie frei vergeben. Sie dürfen jedoch keine Umlaute, Sonderzeichen oder Leerzeichen enthalten. Erlaubt sind nur Groß- und Kleinbuchstaben sowie Ziffern, Minus-Zeichen (-) oder Unterstrich (_).
Entwickeln Sie eine eigene, einheitliche Namenskonvention zur Benennung der Variablen (z. B. varTicketIDTechnik
, varArtikelIDSupport
), um den Überblick zu behalten.

Abb.: Initialisieren von Variablen (Beispiel)
Referenzieren von Variablen
Um auf die in einer Variablen gespeicherten Werte zuzugreifen, wird mit ${Variablenbezeichner}
auf die Variable referenziert. Lautet der Variablenbezeichner bspw. varTicketIDTechnik
, so wird die Variable mit ${varTicketIDTechnik}
aufgerufen und ihre Werte verarbeitet.
Variablen können Sie verwenden, wo immer Sie deren Werte benötigen. Beispielsweise im Titel und/oder Body eines Artikels, in nachfolgenden Macro Actions (z. B. für Berechnungen) oder um den Wert in ein Dynamisches Feld zu setzen. Voraussetzung ist jedoch, dass die Variable vor ihrer Verwendung initialisiert wurde. Da die Macro Actions eines Jobs der Reihe nach - von oben nach unten - abgearbeitet werden, muss die Variable in einer der vorangegangenen Macro Actions bereits initialisiert worden sein.

Abb.: Setzen des in einer Variable gespeicherten Wertes in ein Dynamisches Feld
Anwendungsbeispiel: Berichte automatisiert erstellen
Arrays
Variablen können mehrere Werte aufnehmen und somit ein Array bilden. Dies kann bspw. genutzt werden, wenn in den zu verarbeitenden Daten ein nummeriertes Attribut enthalten ist (Ticket1, Ticket2, ...) und alle Einträge in einem Loop verarbeitet werden sollen.
Die einzelnen Array-Werte werden durch Komma getrennt:
${Variable1, Variable2}
Ist eine der aufgezählten Variablen bereits ein Array, so werden die einzelnen Werte zusammengezogen:
Variable1 = ['Test1.1','Test1.2'] Variable2 = ['Test2.1','Test2.2'] ${Variable1, Variable2} = ['Test1.1','Test1.2','Test2.1','Test2.2']
Repräsentation komplexer Objekte
Variablen können auch komplexe Objekte, Listen oder Mischformen repräsentieren. Der Zugriff auf die Eigenschaften des ResultObjekts erfolgt mittels Punkt (.).
Ist die Eigenschaft ein Array, so können Sie mittels :<index>
auf ein Element des Arrays zugreifen.
Die Variable varReport
wird in der Aktion Bericht erstellen angelegt und mittels Aktion Text entnehmen der Wert extrahiert.

Zugriff auf die Eigenschaften der Variable:
${varReport.Results:0.Content}
Die Variable
varReport
hat eine Eigenschaft Results. Results ist ein Array, welches die Berichte in den jeweiligen Ergebnisformaten (HTML, CSV, JSON, XLSX, etc.) beinhaltet.Mittels Zugriff auf
:0
wird auf das erste Ergebnisformat referenziert (hier: HTML)Vom ersten Ergebnisformat wird die Eigenschaft
Content
verwendet. Dies bezieht sich auf den gesamten Dateiinhalt (hier das gesamte HTML-Dokument des generierten Reports).
Anwendungsbeispiel: Berichte automatisiert erstellen
Sondervariablen
Die Variablen RootObjectID
und ObjectID
verweisen auf auslösende Objekte. Sie können wie Platzhalter verwendet werden, um bspw. Informationen zum betroffenen Asset im Ticket anzugeben. Anwendungsfälle können sein:
Läuft für ein Software-Asset die Lizenz ab, erstellt ein Job ein Ticket, in dem die zu verlängernde Lizenz ersichtlich ist.
Das durch einen Job generierte Wartungsticket enthält bereits verschiedene Attribute des zu wartenden Assets im Artikeltext (z. B. Name, Standort, Adresse).
Variable | Beschreibung |
---|---|
RootObjectID | ID des Objekts, welche den Job initial ausgelöst (getriggert) hat, z. B.:
Hinweis: Die Art des Objekts (Asset, Ticket) - und damit die Art der zurückgelieferten |
ObjectID | ID des aktuell verwendeten Objekts
|
Anwendungsbeispiel: Periodischer Job "Lizenzverlängerung"
Variablenfilter
Sie können Filter auf Variablen anwenden, um auf deren Teilwerte zuzugreifen. Die Variable muss dazu bereits einen Wert besitzen. Der Wert kann bspw. einem Objekt, einem Platzhalter oder dem Ergebnis einer vorangehenden Macro Action entstammen. Die Groß-/Kleinschreibung der Filter ist unerheblich. Das Backend wandelt die Angaben vor der Verarbeitung in Kleinbuchstaben um.
Variablenfilter werden durch den Namen der zu verarbeitenden Variable, gefolgt von einem senkrechten Strich " | ", angegeben.
Syntax:
${VariablenName|VariablenFilter}
Beispiel:
${varTest|jq(.Objects[]::select(.id == "47441").value)}
Mehrere Variablenfilter können durch mehrfache Angabe von " | " voneinander getrennt angegeben werden.
Syntax:
${VariablenName|VariablenFilter1|VariablenFilter2|VariablenFilter3}
Beispiel:
${varStart|DateUtil.bob|DateUtil.eob|DateUtil.unixTime}
Tipp
Treten bei der Verwendung eines Variablenfilters Fehler auf, wird im KIX Log ein konkreter Hinweis auf diesen Fehler notiert. Zur Analyse können Sie diese im Menü
einsehen .Durch Verwendung des Filters jq
kann der extrahierte Teil als JSON weiterverarbeitet werden. Er ersetzt den ehemaligen Filter FromJSON
.
Enthält z. B. eine Variable als Wert mehrere Objekte mit Ortsnamen und dessen Geopositionsdaten, so können Sie mittels des jq-Filters gezielt die Orte oder die einzelnen Geopositionsdaten als JSON String extrahieren und anschließend weiterverarbeiten.
Wichtig
Innerhalb der zu ersetzenden Variable dürfen sich keine geschweiften Klammern befinden. Es sei denn, sie gehören zu einer ersetzenden inneren Variable ODER sie kommen strukturiert paarweise vor. Anderenfalls kann die Variable nicht korrekt ersetzt werden.
Möglich:
${JSONString|jq( [.[] :: select(.id=="${SubTaskID}").value="OK"]) }
${JSONString|jq(map(. :: select(.type=="person")) :: map({title: (.title)}))}
Nicht möglich:
${JSONString|jq(map(. :: select(.type=="test")) :: map({smiley: ":-}"}))}
Wichtig: Vor und nach dem ::
müssen Leerzeichen sein.
Beispiel:Werte eines Objekts
{ "Objects": [ { "id": "47441", "value": "Moers", "lattitude": 51.4463, "longitude": 6.6396 }, { "id": "47798", "value": "Krefeld", "lattitude": 51.3311, "longitude": 6.5616 } ] }

Abb.: Beispiel Verwendung von Variablenfilter
Das Beispiel im Bild initialisiert zunächst eine Variable Test
(1. Action). In dieser sind 2 Objekte definiert:
{"Objects":[{"id":"47441","value":"Moers","lattitude":51.4463,"longitude":6.6396},{"id":"47798","value":"Krefeld","lattitude":51.3311,"longitude":6.5616}]}
Objekt mit folgenden Werten:
ID: 47441
Wert: Moers
sowie die unter "lattitude" und "longitude" angegebenen Geopositionsdaten
Objekt mit folgenden Werten:
ID: 47798
Wert: Krefeld
sowie die unter "lattitude" und "longitude" angegebenen Geopositionsdaten
Mit der 2. Aktion wird ein neues Ticket angelegt. Sowohl in dessen Titel als auch im Artikeltext werden die Variablenwerte ausgegeben. Dazu werden unter Verwendung des Filters jq
Teilwerte der Objekte extrahiert und ausgegeben. Durch Angabe von |jq
wird dem auswertenden Code mitgeteilt, dass der Wert von Test
als JSON betrachtet und somit als Liste mit Objekten verarbeitet werden soll.
Artikeltext:
Test: ${Test|jq(.Objects[]::select(.id=="47441").value)} Test2: ${Test|jq(.Objects[]::select(.id == "47798").value)}
Titel:
Test: ${Test|jq(.Objects[]::select(.id == "47441").value)} // Test2: ${Test|jq(.Objects[]::select(.id=="47798").value)}
Hinweis
Innerhalb von jq
müssen die Pipes ( | ) durch doppelte Doppelpunkte ( :: ) ersetzt werden.
Bei Ausführung der Aktion werden die angegebenen IDs selektiert und deren unter value
definierte Werte im Titel und im Artikeltext des neuen Tickets ausgegeben.
Im Ergebnis entsteht folgendes Ticket:

Abb.: Das resultierende Ticket
Weiterführende Infos finden Sie bspw. unter:
Editor: https://jqplay.org/
Der Variablenfilter XMLUtil.FromXML
ermöglicht die Verwendung von XML-Strukturen als Eingabewerte für Macro Actions (z. B. für XML-Transformation oder Macro Actions mit strukturierten Eingangsparametern) . Voraussetzung ist ein wohlgeformtes XML.
Damit kann bspw. der über die Macro Action "Webhook extended" empfangene XML-String oder der Inhalt einer XML-Datei im E-Mail-Anhang in einer Macro Action weiterverarbeitet werden.
Syntax-Beispiel: ${VariablenName|XMLUtil.FromXML}
Mit dem Filter "DateUtil" können Datums-/Zeit-Angaben extrahiert werden, um sie für automatisierte Berechnungen zu verwenden. Basieren die Ausgangswerte auf Dynamischen Feldern vom Typ Date oder DateTime, können bspw. Termine für Wiedervorlagen oder für die nächste Regelprüfung eines Assets automatisiert berechnet werden. Ein Beispiel dazu finden Sie unter Zeitberechnung mit Macro Actions.
Für die Berechnungen unterstützt der Filter die in der nachfolgenden Tabelle aufgeführten Parameter. Erhalten die Funktionen einen ungültigen Wert (falsches Format oder Fehleingaben), bleibt der Eingabewert unverändert.
Syntax-Beispiel: ${VariablenName|DateUtil.bob}
Parameter | Beschreibung | Hinweise |
---|---|---|
BOB | Berechnet anhand des Eingabewertes den "Begin of Businessday" |
|
EOB | Berechnet anhand des Eingabewertes den "End of Businessday" |
|
UnixTime | Gibt den eingegeben TimeStamp als UnixTime (Sekundenanzahl) zurück | UnixTime bedeutet: Anzahl der Sekunden seit Epochenbeginn (z. B.: 1653388794) Der Epochenbeginn ist je nach Betriebssystem der 1. Januar 1970, 00:00 Uhr UTC (s. auch https://de.wikipedia.org/wiki/Unixzeit) |
TimeStamp | Gibt die eingegebene UnixTime als TimeStamp zurück | TimeStamp bedeutet: Datum/Zeit im Format: (z. B. "2022-04-21 12:00:00") |
Calc | Berechnet anhand des Eingabewertes ein neues Datum bzw. eine neue Zeit |
|
Platzhalter für Systemzeiten
Für die Ermittlung von Zeitpunkten können Sie nachfolgende KIX-Platzhalter verwenden. Die Platzhalter sind aktuell nur im Backend verfügbar und dienen dem Auslesen der Systemzeiten. Sie können nicht vom Frontend z. B. in Textbausteinen verwendet werden.
Die von den Platzhaltern gelieferten Werte müssen zuvor in eine Variable geschrieben werden, um damit anschließend rechnen zu können.

Platzhalter | Beschreibung | Beispiel |
---|---|---|
KIX_NOW | liefert den aktuellen (lokalen) Zeitpunkt als TimeStamp | 2022-05-30 13:28:08 |
KIX_NOW_DateTime | liefert vom Zeitstempel das aktuelle (lokale) Datum und die Zeit (analog KIX_NOW) | 2022-05-30 13:28:08 |
KIX_NOW_Date | liefert vom Zeitstempel nur das aktuelle (lokale) Datum | 2022-05-30 |
KIX_NOW_Time | liefert vom Zeitstempel nur die aktuelle (lokale) Zeit | 13:28:08 |
Der Variablenfilter FromBase64
liefert in einer Macro Action den Inhalt einer Base64 codierten Variable decodiert zurück.
Beispiel: Ein Drittsystem liefert ein PDF in Form eines Base64-Strings. Der Filter decodiert den Base64-String, sodass daraus wiederum ein PDF generiert wird. Das PDF kann danach bspw. als Anhang an einem Artikel gespeichert werden.
Syntax-Beispiel: ${VariablenName|FromBase64}
Der Variablenfilter ToBase64
in einer Macro Action codiert den Inhalt einer Variable in einen Base64-String. Es ist damit möglich, bspw. Artikelanhänge in Binärform in Drittsysteme (z. B. DMS "D3") zu übertragen.
Syntax-Beispiel: ${VariablenName|ToBase64}