Weitere Makrofunktionen
AddJsonProperty()
Diese Funktion fügt in eine Zeichenfolge, die ein gültiges JSON-Dokument darstellt, eine neue Eigenschaft ein und liefert die erweiterte JSON-Zeichenfolge zurück.
Wenn die Eingabezeichenfolge leer ist, wird ein neues JSON-Dokument erstellt. Durch mehrfachen Aufruf dieser Makrofunktion kann sukzessive ein vollständiges JSON-Dokument innerhalb eines Feldes aufgebaut werden.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | JSON-Zeichenfolge oder leere Zeichenfolge für den Beginn eines neuen JSON-Dokuments |
2* | Text | JSONPath-Ausdruck, der den Pfad der neu zu erstellenden JSON-Eigenschaft beschreibt Hier muss der vollständige absolute Pfad angegeben. Dabei kommt die gleiche Syntax zum Einsatz wie in der Eigenschaft |
3 | (variabel) | Wert, der der JSON-Eigenschaft zugewiesen wird Standardwert: |
Beispiele
AddJsonProperty("", "Name", "Value") ergibt eine Zeichenfolge mit einem neuen JSON-Objekt "{""Name"": ""Value""}".
AddXmlNode()
Diese Funktion fügt in eine Zeichenfolge, die ein gültiges XML-Dokument darstellt, ein neues Element ein und liefert die erweiterte XML-Zeichenfolge zurück.
Wenn die Eingabezeichenfolge leer ist, wird ein neues XML-Dokument inklusive des Deklarationselements erstellt. Durch mehrfachen Aufruf dieser Makrofunktion kann sukzessive ein vollständiges XML-Dokument innerhalb eines Feldes aufgebaut werden.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | XML-Zeichenfolge oder leere Zeichenfolge für den Beginn eines neuen XML-Dokuments |
2* | Text | XML-Ausdruck, der den Pfad des neu zu erstellenden XML-Elements (Knoten oder Attribut) beschreibt Hier muss der vollständige absolute Pfad angegeben. Dabei kommt die gleiche Syntax zum Einsatz wie in der Eigenschaft |
3 | (variabel) | optionaler Wert, der dem XML-Element zugewiesen wird Wenn dieser Wert leer ist, wird ein leerer Knoten oder ein Attribut mit einem leeren Wert im XML-Dokument angelegt. Wenn der Wert nicht vom Typ "Text" ist, wird der Wert in die programminterne String-Notation überführt. |
4 | Text | optionale Angabe eines Namensraum-URI, der dem Element hinzugefügt wird Das zugehörige Präfix muss im XPath-Ausdruck angegeben werden. Der Pfad kann mehrere Elemente umfassen, jedoch kann nur eine URI angegeben werden. Der URI bezieht sich daher immer nur auf das letzte Element im Pfad. Wenn auch die übergeordneten Elemente einem Namensraum zugewiesen werden sollen, muss der Pfad schrittweise in mehreren Makroaufrufen aufgebaut werden. |
5 | Number | Nummer der Knotenebene im XPath-Ausdruck Auf dieser Ebene wird ein neuer XML-Knoten angelegt. Wenn bereits ein namensgleicher Knoten vorhanden ist, wird der neue Knoten parallel zu diesem angelegt. Die Zählung beginnt bei 1. Standardwert: Wenn z. B. bei einem XPath-Ausdruck Wenn in einem XPath-Ausdruck ein schon mehrfach vorhandener Knoten adressiert wird, der nicht neu erzeugt werden soll, wird von diesen Knoten immer der letzte vorhandene Knoten ausgewählt. Bei einem schrittweisen Aufbau eines XML-Dokuments sollen weitere Daten typischerweise hinten angehängt werden. |
Beispiele
AddXmlNode("", "/Root/Name", "Value") ergibt eine Zeichenfolge mit einem neuen XML-Dokument ?xml version=""1.0"" encoding=""UTF-8""?><Root><Name>Value</Name></Root>".
CallWebService()
Diese Funktion führt eine Abfrage gegen einen externen Webservice aus und liefert den HTTP-Body-Inhalt aus dessen Antwort zurück.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1* | Text | Name der Eigenschaft |
2 | Text | optionaler Wert, der als HTTP-Body-Inhalt an den Webservice übertragen wird |
3 | Text | Alternative zu Parameter 1: Namensfilter für eine Dateianlage Dabei wird nur die erste gefundene Anlage berücksichtigt. Daten aus Parameter 2 sowie aus einer Text-, JSON- und XML-Datei werden immer in Textform übertragen. Andere Dateitypen werden als Binärdaten übertragen. |
4 | Text | Wert des zugehörigen "Content-Type"-Headers zu den gemäß Parameter 2 oder Parameter 3 im HTTP-Body übertragenen Daten Für Daten im JSON-Format kann dies z. B. |
Beispiele
CallWebService("WebService1", "{}", , "application/json") sendet die Daten des (im Beispiel leeren) JSON-Objekts an einen Webservice, dessen Verbindungsparameter unter dem Namen WebService1 in der Konfiguration definiert sind, und empfängt dessen Antwort als Rückgabewert.
CallWebService("Google") lädt die HTML-Daten "<!doctype html><html…" der Startseite von Google, wenn eine Webservice-Verbindung namens Google mit der URL https://www.google.com und der Methode GET konfiguriert ist.
CheckMandatory()
Diese Funktion führt eine Pflichtwertprüfung für ein Feld durch, d.h. die Funktion wirft einen Fehler, wenn der betreffende Feldwert leer ist.
Als leer gelten anhängig vom Datentyp solche Werte, die beim Feldmakro IsEmpty() beschrieben sind. Abweichend vom Standardverhalten wird kein Rückgabewert generiert. Der vorhandene Feldwert wird beibehalten.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | (variabel) | zu prüfender Feldwert Bei Nutzung als Feldinitialisierungsmakro gemäß |
Beispiele
CheckMandatory("ABC") wirft keinen Fehler.
CheckMandatory(0) wirft einen Fehler (Null gilt als "leerer" Zahlenwert).
DecodeBase64()
Diese Funktion liefert den dekodierten Wert einer Base64-kodierten Zeichenfolge zurück.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | Base64-kodierte Zeichenfolge, die dekodiert werden soll |
Beispiele
DecodeBase64("SGVsbG8=") ergibt "Hello".
EncodeBase64()
Diese Funktion liefert den Base64-kodierten Wert einer Zeichenfolge, des Inhalts einer Dateianlage oder des Inhalts einer externen Datei zurück.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | Zeichenfolge, die kodiert werden soll |
2 | Text | Alternative zu Parameter 1: Namensfilter für eine Dateianlage, wobei nur die erste gefundene Anlage berücksichtigt wird |
3 | Text | Alternative zu Parameter 1 und Parameter 2: vollständiger Pfad einer externen Datei im Dateisystem |
Beispiele
EncodeBase64("Hello") ergibt "SGVsbG8=".
EncodeBase64( , "*.txt") ergibt den kodierten Inhalt einer Textdateianlage oder "", wenn nicht gefunden.
EncodeBase64( , , "c:/test.txt") ergibt den kodierten Inhalt einer externen Datei.
ExecDbCommand()
Diese Funktion führt einen Datenbankbefehl aus, der keine SELECT-Abfrage darstellt (siehe QueryDbField()).
Ein solcher Datenbankbefehl kann z. B. ein INSERT- oder UPDATE-Kommando sein. Der Rückgabewert ist die Anzahl betroffener Datensätze, bei einem erfolgreichen INSERT-Kommando z. B. 1.
Rückgabetyp: Number
Parameter | Datentyp | Beschreibung |
|---|---|---|
1* | Text | Name der Eigenschaft Nicht-SELECT-Kommandos werden nur für die Datenquellen "OLEDB", "Microsoft SQL Server" und "MongoDB" unterstützt. Im Fall von "OLEDB" und "Microsoft SQL Server" sollten typisierte Feldvariablen in der Form |
Beispiele
ExecDbCommand("DBCommand1") führt ein Datenbankkommando aus, das unter dem Namen DBCommand1 konfiguriert ist. Das Kommando kann z. B. den Befehl INSERT INTO [Table1]([Column1]) VALUES (@Field1) nutzen, um den Wert des Feldes Field1 in eine Tabelle einzufügen und als Ergebnis der Ausführung eine 1 zu liefern.
ExternalFileExists()
Diese Funktion prüft, ob eine externe Datei im Dateisystem existiert.
Rückgabetyp: Bool
Parameter | Datentyp | Beschreibung |
|---|---|---|
1* | Text | vollständiger Pfad der Datei im Dateisystem |
Beispiele
ExternalFileExists("c:/test.txt") ergibt TRUE, wenn die Datei existiert.
GetDbCounter()
Diese Funktion liefert einen mit jedem Aufruf automatisch inkrementierten Ganzzahlwert zurück.
Zur Speicherung der aktuellen Zählerwerte wird dieselbe interne Datenbanktabelle genutzt wie für die Dokumentmakrofunktionen bzw. Feldmakrofunktionen WriteToCustomStore() und ReadFromCustomStore().
Rückgabetyp: Number
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | optionale Kontextinformation zu dem folgenden Schlüssel, wenn dieser allein nicht sprechend genug oder eindeutig ist |
2* | Text | Schlüssel, unter dem der aktuelle Zählerwert gespeichert wird |
3 | Number | Startwert für einen neu anzulegenden Zähler Standardwert: |
Beispiele
GetDbCounter( , "Counter1", 1000) ergibt 1000, wenn der Zählschlüssel neu angelegt wurde.
GetExternalFiles()
Diese Funktion liest die Namen von externen Dateien im Dateisystem ein, die einem gegebenen Namensmuster entsprechen.
Rückgabetyp: Array von Textwerten
Parameter | Datentyp | Beschreibung |
|---|---|---|
1* | Text | Pfad des Wurzelverzeichnisses, von dem aus nach den Dateien gesucht wird |
2 | Text | Namensfilter für die zu suchenden Dateien Standardwert: |
3 | Number | Maximale Tiefe, bis zu der Unterordner durchsucht werden Wenn sich die Dateien in Unterordnern befinden, ist den ausgelesenen Dateinamen der relative Pfad bezogen auf das Wurzelverzeichnis vorangestellt. Standardwert: |
Beispiele
GetExternalFiles("c:/test", "*.txt") liefert die Namen aller Textdateien, die sich direkt in dem Ordner befinden (nicht in Unterordnern), z. B. ["1.txt","2.txt"] oder [] bei keinem Treffer.
GetMd5Hash()
Diese Funktion liefert den MD5-Hash-Wert einer Zeichenfolge, des Inhalts einer Dateianlage oder des Inhalts einer externen Datei zurück.
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | Zeichenfolge, über die der Hash-Wert berechnet wird |
2 | Text | Alternative zu Parameter 1: Namensfilter für eine Dateianlage, wobei nur die erste gefundene Anlage berücksichtigt wird |
3 | Text | Alternative zu Parameter 1 und Parameter 2: vollständiger Pfad einer externen Datei im Dateisystem |
Beispiele
GetMd5Hash("Hello") ergibt "8B1A9953C4611296A827ABF8C47804D7".
GetMd5Hash( , "*.txt") ergibt den Hash-Wert einer Textdateianlage oder "", wenn nicht gefunden.
GetMd5Hash( , , "c:/test.txt") ergibt den Hash-Wert einer externen Datei.
GetNull()
Diese Funktion liefert den Wert NULL zurück.
Standardmäßig unterstützt der Makrointerpreter den Wert NULL nicht direkt. Stattdessen werden leere Werte in Abhängigkeit vom Datentyp verwendet, z. B. ein leerer String "" für einen leeren Textwert. In Ausnahmefällen können jedoch NULL-Werte auftreten, z. B. als Ergebnis einer externen Datenbankabfrage.
Die Funktion GetNull() dient der testweisen Erzeugung von NULL-Werten und ist nicht für die Nutzung in einer produktiven Konfiguration bestimmt. Durch die testweise Erzeugung von NULL-Werten kann das Verhalten von Makrofunktionen überprüft werden, wenn solche Werte übergeben werden.
Beispiele
GetNull() ergibt NULL.
GetUuid()
Diese Funktion liefert eine neu erstellte UUID (Universally Unique Identifier) mit einer Länge von 36 Zeichen (32 Stellen plus Trennzeichen) zurück.
Rückgabetyp: Text
Beispiele
GetUuid() ergibt eine UUID als Zeichenfolge, z. B. "0bdebfe9-077a-4bd4-ae02-6eb1a2815440".
IsEmpty()
Diese Funktion prüft, ob ein Wert "leer" ist.
Rückgabetyp: Bool
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | (variabel) | zu prüfender Wert |
Beispiele
IsEmpty("") und IsEmpty(NULL) ergeben TRUE.
IsEmpty(0) ergibt TRUE.
IsEmpty(0001-01-01) ergibt TRUE.
IsEmpty([]) ergibt TRUE.
IsEmpty(FALSE) ergibt FALSE (Wahrheitswerte werden nicht als leer betrachtet).
IsNull()
Diese Funktion prüft, ob ein Wert NULL ist.
Standardmäßig ist der interne Makrointerpreter nicht für den Umgang mit NULL-Werten ausgelegt. Der Makrointerpreter verwendet stattdessen leere Werte abhängig vom Datentyp (siehe IsEmpty()). Für den Sonderfall, dass Werte aus einer externen Datenbank gelesen und NULL-Werte dabei nicht in den typgerechten leeren Werten gewandelt werden, sondern als NULL-Werte erhalten bleiben sollen, ist eine entsprechende Prüffunktion verfügbar. Die Funktion IsEmpty() erkennt auch NULL-Werte, unterscheidet aber nicht zwischen diesen Werten und den regulären Leerwerten.
Eine explizite Prüfung auf NULL-Werte ist sinnvoll, wenn diese Werte als Ergebnis einer Datenbankabfrage vorkommen können. Bei der Weiterverarbeitung kann eine Fallunterscheidung erforderlich sein, denn die Makrofunktionen sind abhängig von ihrer konkreten Implementierung nicht auf die Verarbeitung von NULL-Werten ausgelegt.
Rückgabetyp: Bool
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | (variabel) | zu prüfender Wert |
Beispiele
IsNull("") ergibt FALSE.
IsNull(NULL) ergibt TRUE.
Lookup()
Diese Funktion liest aus einer Nachschlageliste den zu einem gegebenen Schlüssel gehörigen Wert aus oder einen leeren Textwert, wenn der Schlüssel nicht gefunden wird.
Die Inhalte einer solchen Liste werden in der Eigenschaft Lookup[] der Szenariokonfiguration definiert (siehe Generelles).
Rückgabetyp: Text
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | Name der zu verwendenden Nachschlageliste entsprechend ihrer Eigenschaft |
2 | Text | Schlüssel, der aus der Liste ausgelesen wird |
Beispiele
Lookup("Lookup1", "KeyA") ergibt den Wert des Schlüssels KeyA in der Nachschlageliste Lookup1, z. B. "ValueA" oder "", wenn nicht gefunden.
LookupLike()
Diese Funktion liest aus einer Nachschlageliste einen oder alle Werte aus, deren Schlüssel einem gegebenen Muster entsprechen. Der Rückgabewert ist vom Typ Text oder Array abhängig davon, ob einer oder mehrere Werte gelesen werden. Wenn kein Wert gefunden wird, enthält der Rückgabewert einen leeren String oder ein leeres Array.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | Name der zu verwendenden Nachschlageliste entsprechend ihrer Eigenschaft |
2 | Text | Wildcard-Ausdruck des Suchmusters für den Schlüssel, analog zu dem Operator |
3 | Text | Definition, die Werte welcher Einträge aus der Liste ausgelesen werden, wenn das Suchmuster mehrdeutig ist:
|
Beispiele
Beispiele für eine Nachschlageliste Lookup1 mit den Schlüssel-/Wert-Paaren KeyA=ValueA, KeyB=ValueB und KeyC=ValueC:
LookupLike("Lookup1", "key*", "Last")ergibt"ValueC".LookupLike("Lookup1", "key*", "All")ergibt["ValueA","ValueB","ValueC"].LookupLike("Lookup1", "wrongKey", "All")ergibt[].
QueryDbField()
Diese Funktion führt eine SELECT-Anfrage an eine externe Datenquelle durch und liefert das erste Feld des ersten gefundenen Datensatzes zurück.
Der Rückgabetyp variiert.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1* | Text | Name der Eigenschaft Das Kommando muss eine SELECT-Anfrage sein. Bei Verwendung einer OLEDB- oder nativen SQL-Server-Verbindung sollten typisierte Feldvariablen in der Form |
2 | Bool | Wahrheitswert, ob ein Wert Standardmäßig unterstützt der Makrointerpreter den Wert NULL-Werte aus der Datenbank werden standardmäßig in einen Leerwert gewandelt, der zum Quelldatentyp passt. Wenn stattdessen der NULL-Wert erhalten werden soll, sollte bei der Weiterverarbeitung das Makro Dieser Parameter definiert auch den Rückgabewert bei einem nicht gefundenen Datensatz, d.h. ob ein typgerechter leerer Wert oder |
Beispiele
QueryDbField('DBSelect1') führt eine Datenbankabfrage aus, die unter dem Namen DBSelect1 konfiguriert ist. Die Abfrage kann z. B. den Befehl SELECT [Column1] FROM [Table1] WHERE [Column2] = @Field2 nutzen, um auf Datensätze mit dem Wert von Field2 zu filtern. Das Ergebnis ist der Wert der Spalte Column1 des ersten gefundenen Datensatzes, bei einem Textwert z. B. "Value1", bei keinem Treffer "" oder NULL abhängig vom zweiten Parameter.
ReadFromCustomStore()
Diese Funktion liest einen zuvor über die Dokumentmakrofunktion WriteToCustomStore() persistierten Wert wieder aus der Datenbank aus.
Der Rückgabetyp variiert.
Parameter | Datentyp | Beschreibung |
|---|---|---|
1 | Text | optionale Kontextinformation zu dem folgenden Schlüssel, wenn dieser allein nicht sprechend genug oder eindeutig ist |
2* | Text | Schlüssel, unter dem der zu lesende Wert gespeichert ist Wenn kein Schüssel gefunden wird, wird ein Fehler geworfen. |
Beispiele
ReadFromCustomStore( , "CustomKey1") liefert den Wert des Schlüssels CustomKey1, bei einem Textwert z. B. "Value1".