Dynamische Funktionen: Sonstige

edipath

Beschreibung Mit der dynamischen Funktion edipath können [edipath-Ausdrücke](b2b_cust_EDIPATH.html) ausgewertet werden.
Syntax ${edipath(e)}
Parameter Die dynamische Funktion erwartet einen Edipath als Argument.
Beispiel ${edipath(UNB+5+0)}

if

Beschreibung Mit der dynamischen Funktion if können Anweisungen und Verzweigungen umgesetzt werden, analog der Kontrollstruktur if..then..else, die in den Programmiersprachen existiert
Syntax ${if(Bedingung, Dann-Wert, Sonst-Wert)}
Parameter Bedingung: eine Bedingung, die wahr oder falsch ist (true oder false). Sinnvollerweise soll hier ein dynamischer Ausdruck stehen, der einen solchen Wert zurückgibt (equals, greaterThan, lessThan). Es können aber auch andere dynamsiche Funktionen benutzt werden, solange sie die Werte 'true' oder 'false' zurückgeben
Dann-Wert: Wert, der bei zutreffender Bedingung (true) zurückgegeben werden soll. Kann ein dynamischer Ausdruck sein
Sonst-Wert: Wert, der bei nicht zutreffender Bedingung (false) zurückgegeben werden soll. Kann ein dynamischer Ausdruck sein. Falls beim else-Fall nichts zurückgegeben werden soll (leerer String), kann der dritte Parameter leer sein.
Beispiel ${if(${equals(${gpvalue(SYSTEM)},PROD)}, ${loadextensionproperty(SYSTEM_CONFIGURATION, ISU_SERVICE)}, dummy_service)}
Erklärung: Falls in der Global Property 'SYSTEM' der Wert 'PROD' steht, wird ein Wert aus der Extension SYSTEM_CONFIGURATION geladen, ansonsten der Wert 'dummy_service' zurückgegeben.

${if(${equals(${template(&(this.FORMAT.senderCode))}, 12345678)}, good sender, bad sender)}
Erklärung: Falls der Sender der Nachricht 12345678 ist, wird 'good sender' zurückgegeben, ansonsten 'bad sender'.

${if(${equals(${template(&(this.FORMAT.senderCode))}, 12345678)}, good sender, )} Erklärung: Falls der Sender der Nachricht 12345678 ist, wird 'good sender' zurückgegeben, ansonsten wird ein leerer Wert zurückgegeben.

orElse

Beschreibung Mit der dynamischen Funktion orElse können zwei Anweisungen so verknüpft werden, dass wenn die erste einen leeren Wert zurück gibt, der Rückgabewert der zweiten Verwendung findet.
Eine der Anwendungsmöglichkeiten: einen Default-Wert für eine beliebige andere dynamische Funktion angeben.
Syntax ${orElse(ErsteAnweisung, ZweiteAnweisung)}
Parameter ErsteAnweisung: Wenn das Ergebnis dieses Ausdruck nicht der leere String ist, wird dieser Wert zurück gegeben.
ZweiteAnweisung: Wenn der erste Ausdruck den leeren String als Ergebnis liefert, wird das Ergebnis dieses Ausdruck geliefert.
Beispiel ${orElse(${var(B3P_MAIL_FROM)}, no@n.o)}
Erklärung: Falls im MessageContext kein Wert für 'B3P_MAIL_FROM' hinterlegt ist, wird 'no@n.o' zurück gegeben

${orElse(${gpvalue(SYSTEM)},${extensionLoadProperty(EXTENSION,KEY)})}
Erklärung: Falls die GP 'SYSTEM' nicht gesetzt ist, wird der Wert aus der Extension 'EXTENSION' hinter dem Schlüssel 'KEY' geladen

length

Beschreibung Die dynamische Funktion length(Variablename) gibt die Länge in Byte eines Wertes im MessageContext zurück. Es können mehrere Variablen mit | (oder) getrennt angegeben werden. Es wird der Wert der ersten Variable ausgegeben, welche existiert (also eine Länge > 0 hat). Weiterhin kann eine dynamische Funktion angegeben werden. Es wird die Länge der ausgewerteten Funktion ausgegeben.
Syntax ${length(<message-context-key>)}
Parameter Variablename = Variable aus dem MessageContext. Die Variable muss vom Typ String sein.
Beispiel ${length(CURRENT_PAYLOAD|B3P_BASE_MESSAGE)}
Erklärung: Die Länge von CURRENT_PAYLOAD wird ausgelesen.
${length(${edipath(LOC[1+0="172"]+2+0)})}
Erklärung: Ergibt die Länge des Zählpunktes in der Nachricht.

refnumgen

Beschreibung Die dynamische Funktion refnumgen erzeugt eine zufällige Referenznummer.
Syntax ${refnumgen()}
Parameter keine
Beispiel ${refnumgen()}

regex, Suchen im String

Beschreibung Die dynamische Funktion regex mit zwei Parameter sucht in einem String anhand eines regulären Ausdrucks. Das Ergebnis ist entweder "true" oder "false"
Syntax ${regex(<pattern>, <string>)}
Parameter <pattern>: RegEx pattern. Kann ein anderer dynamischer Ausdruck sein. Die schließende geschweifte Klammer } muss durch @ ersetzt werden. Will man ein echtes @ im Pattern nutzen, muss es wie \@ maskiert werden.
<string>: String, in dem gesucht wird. Kann ein anderer dynamischer Ausdruck sein.
Beispiel ${regex(es[a-z],Tester)} ergibt "true".
${regex(\.txt$,${template(&(this.B3P_FILE_NAME))})} ergibt "false", wenn B3P_FILE_NAME = "ABC.xml" ist.
${regex(c{3@,abcccabc)} ergibt "true". Der reguläre Ausdruck ist eigentlich "c{3}".
${regex(.*\@.*, abc@gmail.com)} ergibt "true". @ wurde durch \ maskiert.

regex, Suchen nach einer Gruppe im String

Beschreibung Die dynamische Funktion regex mit drei Parameter sucht in einem String anhand eines regulären Ausdrucks und gibt die gefundene Gruppe zurück.
Syntax ${regex(<pattern>, <string>, <gruppennummer>)}
Parameter <pattern>: RegEx pattern. Kann ein anderer dynamischer Ausdruck sein. Siehe oben zur Maskierung des }-Zeichens.
<string>: String, in dem gesucht wird. Kann ein anderer dynamischer Ausdruck sein.
<gruppennummer>: Nummer der Regex-Gruppe, die zurück gegeben werden soll.
Beispiel ${regex((.*)MB, 200MB, 1)} ergibt "200".

regex, Definierte Werte zurückgeben, wenn ein regulärer Ausdruck zutrifft

Beschreibung Die dynamische Funktion regex mit fünf Parameter sucht in einem String anhand eines regulären Ausdrucks und gibt einen als Parameter definierten String zurück. Falls nichts gefunden wurde, wird der vierte Parameter zurückgegeben, sonst der fünfte.
Syntax ${regex(<pattern>, <string>, -1, <resultatWennFalse>, <resultatWennTrue>)}
Parameter <pattern>: RegEx pattern. Kann ein anderer dynamischer Ausdruck sein. Siehe oben zur Maskierung des }-Zeichens.
<string>: String, in dem gesucht wird. Kann ein anderer dynamischer Ausdruck sein.
-1: der dritte Parameter muss -1 sein.
<resultatWennFalse>: String, der zurückgegeben werden soll, falls mit dem regulären Ausdruck nichts gefunden wurde.
<resultatWennTrue>: String, der zurückgegeben werden soll, falls mit dem regulären Ausdruck etwas gefunden wurde.
Beispiel ${regex([0-9], abc, -1, keine Ziffern, mind. eine Ziffer)} ergibt "keine Ziffern".
${regex(^INVOIC_(.*)txt$, INVOIC_2.0.txt, -1, Dummy, OUT_Rechnung)} ergibt "OUT_Rechnung".

substring

Beschreibung Die dynamische Funktion substring schneidet aus einem bestimmten String einen definierten Bereich aus.
Syntax ${substring(<string>,<start>,<ende>)}
Parameter <string>: Der Wert der beschnitten werden soll
<start>Position ab der begonnen wird zu zählen
<ende>Position bis zu der gezählt wird
Beispiel ${substring(${edipath(RFF[1+0="CT"]+1+1)},0,2)}

context

Beschreibung Die dynamische Funktion context lässt den Wert durch den ContextParser verarbeiten. Dadurch werden alle dynamische Funktionen ausgeführt und deren Ergebnis in den Wert reingeschrieben.
Der aktuell einzige bekannte Anwendungsfall ist der folgende: Parameter mancher dynamischer Funktionen dürfen jeweils nur eine einzige dynamische Funktion enthalten. Wenn man mehrere Funktionen nutzen möchte, kann man sie mit der Funktion "context" umschließen.
Syntax ${context(<string>)}
Parameter <string>: Der Wert der ausgewertet werden soll
Beispiel ${anyof(${context(${var(A)}u${var(B)})}, false)}

xpathdom

Beschreibung Mit der dynamischen Funktion xpathdom können XPATH-Ausdrücke ausgewertet werden.
Syntax ${xpathdom(e)} or ${xpathdom(xPathExpression, sourceKey, useCache, saxonXpath)}
Parameter Die dynamische Funktion erwartet minimum ein xpath als Argument.
Beispiel ${xpathdom((/_-IDXGC_-UTILMD_02/IDOC/_-IDXGC_-E1_UNB_01/_-IDXGC_-E1_UNH_01/_-IDXGC_-E1_IDE_02/_-IDXGC_-E1_SEQ_01/_-IDXGC_-E1_CCI_03[CHARACTERISTIC_DESCR_CODE/text()='ZC0']/CHARACTERISTIC_DESCR_CODE/text())[1])} or ${if(${equals(S,${xpathdom(///*/ET_RETURN/item/TYPE/text(),JASONXML,false,true)})},ja, nein)}

template

Beschreibung Mit der dynamischen Funktion template lassen sich Velocity‑Expressions gegen den MessageContext auswerten. Platzhalter werden in der Form &( … ) notiert, wobei & zu $ und die runden Klammern zu geschweiften Klammern ({ … }) umgewandelt werden. So können Attribute von Objekten (z. B. &(this.FORMAT.type)) oder einfache Schlüssel (&(this.B3P_MAIL_TO)) abgefragt werden. Enthält der Ausdruck mehrere Platzhalter, werden alle ausgewertet. Kann mindestens ein Platzhalter nicht aufgelöst werden, wirft die Funktion einen Fehler ‑ es sei denn, es ist ein Default‑Wert angegeben, der dann zurückgegeben wird.
Syntax ${template(...,"...")}
Parameter expression: Eine Zeichenkette mit einem oder mehreren Platzhalter‑Ausdrücken. Innerhalb des Ausdrucks kann beliebiger statischer Text stehen. 
Default‑Wert (optional): Fallback‑Rückgabewert, falls mindestens ein Platzhalter nicht aufgelöst werden kann. Muss in doppelten Anführungszeichen stehen.
Beispiel ${template(&(this.B3P_MAIL_TO))} Erklärung: Liefert den Wert der Variable B3P_MAIL_TO aus dem MessageContext.
${template(&(this.FORMAT.type)_&(this.FORMAT.referenceId).txt)} Erklärung: Erstellt den Dateinamen mit dem Format-Typ und der Referenznummer.
${template(&(this.EXECUTE_SPLITTING), "false") } Erklärung: Liefent den Wert der Variable EXECUTE_SPLITTING zurück oder 'false', falls EXECUTE_SPLITTING nicht im Message Context vorhanden ist

Weitere Beispiele

Message-Id laden: ${template(&(this.B3P_OBJ_MESSAGE.messageId))}

var

Beschreibung Mit der dynamischen Funktion var lassen sich Werte aus dem MessageContext auslesen. Die übergebenen Variablennamen werden von links nach rechts ausgewertet; der erste existierende und nicht‑leere Wert wird zurückgegeben. Ist der Wert null, leer oder existiert keine der Variablen, liefert die Funktion einen leeren String.
Syntax ${var(VarName1|VarName2|...)}
Parameter VarName(s): Einer oder mehrere Variablennamen aus dem MessageContext, getrennt durch das Zeichen |. Variablennamen dürfen beliebige Zeichen, einschließlich Kommata, enthalten.
Beispiel ${var(AAA)} Erklärung: Gibt den Wert der Variable AAA zurück.
${var(B3P_MAIL_TO|B3P_AS2_TO)} Erklärung: Liefert zuerst den Wert der Variable B3P_MAIL_TO; ist dieser nicht vorhanden oder leer, wird der Wert von B3P_AS2_TO zurückgegeben.
View Me   Edit Me