Content Expression Language (CEL)
Sie können mithilfe der RICOH ProcessDirector-Content Expression Language (CEL) Ausdrücke definieren, die Inhalt und die Platzierung
von Erweiterungen (Barcode, Text und verdeckte Bereiche) für Dokumente in AFP-Dateien
festlegen. Wenn Sie über das Kuvertierungseinheiten-Feature verfügen, können Sie über
die CEL Ausdrücke in Kuvertiereinheiten-Regeldateien definieren, die Kuvertiereinheiten-Steuerdateien
schreiben, und Kuvertiereinheiten-Ergebnisdateien analysieren und interpretieren.
Operatoren
In der folgenden Tabelle wird die Vorrangstellung für Operatoren von der höchsten bis zur niedrigsten Vorrangstellung gezeigt.
Bedienername | Beschreibung |
---|---|
( ) | Funktionsparameterbegrenzer |
( ) | Gruppierung |
+, - | Monadisch |
*, /, % | Multiplikation, Division, Modulo |
+, - | Addition, Subtraktion |
==, !=, >, >=, <, <= | Relational |
(implizit) | Verknüpfung |
Beispiel:f(3+x)*5
ist f(3+x)
multipliziert mit 5
.
Sprache
Muster | Musterbeispiel | Echtes Beispiel | Ergebnis |
---|---|---|---|
Verknüpfung | 'Zeichenfolge1' 'Zeichenfolge2' | 'a' func 'b' | aVARb wenn func='VAR' |
Vergleichsausdrücke | func1 [Vergleichsoperator] func2 | func1 > func2 | Wahr, wenn func1=5 und func2=1 |
Bedingung or | or(Ausdruck1,Ausdruck2,....) | or(a>100,a==0,b==1) | Wahr, wenn ein beliebiger Ausdruck wahr ist. |
Bedingung and | and(Ausdruck1,Ausdruck2,...) | and(a>3,a<10) | Wahr, wenn alle Ausdrücke wahr sind. |
Bedingung not | not(Ausdruck1) | not(a==b) | Wahr, wenn alle Ausdrücke falsch sind. |
Entscheidung | if(relationaler_Ausdruck,wahrer_Ausdruck,falscher_Ausdruck) | if(a>v,1,0) | Wenn der Vergleichsausdruck wahr ist, wird der Wert auf trueexpr gesetzt. Wenn der Vergleichsausdruck falsch ist, wird der Wert auf falseexpr gesetzt. |
Entscheidung | if(Wert,wahrer_Ausdruck,falscher_Ausdruck) | if(func2,'true','false') | Wenn func2 einen numerischen Wert, der ungleich 0 ist, oder einen Zeichenfolgewert hat, der ungleich der leeren Zeichenfolge ist, ist das Zeichenfolgeliteral wahr, andernfalls ist es falsch. |
Äquivalente Anweisungen
Basis | Äquivalent | Kommentare |
---|---|---|
a | a() | Die Variablen sind Funktionen ohne (). |
'*' a | '*'a() | Für die Verknüpfung sind keine Leerzeichen zwischen Eingaben erforderlich, und die Funktion a kann auf eine der beiden Arten dargestellt werden. |
EBNF-Sprachendefinition
In dieser erweiterten Backus-Naur-Form (EBNF) wird ein CEL-Ausdruck durch die Produktion expr ausgedrückt. Die relationalen und numerischen Operationen verhalten sich wie ihre Gegenstücke in der Programmiersprache C. Aufeinanderfolgende Ausdrücke werden zusammengekettet, um ein Ergebnis zu produzieren.
expr = "(", expr, ")" | catenation | numexpr | relexpr | ("+" | "-"), expr | function call | string | number;catenation = expr, expr;numexpr = expr, ("+" | "-" | "*" | "/" | "%"), expr;relexpr = expr, ("==" | "!=" | "<" | ">" | "<=" | ">="), expr;function call = identifier, [ "(", parameters, ")" ];parameters = expr, { ",", expr };identifier = (alpha | "_"), { (alpha | "_" | digit ) };string = "'", (* sequence of characters, with standard \\ escapes *), "'";number = (digit { digit }) | ({ digit } . {digit});
Hinweis: Es gibt keine Variablen, nur Funktionsaufrufe. Ein Funktionsaufruf ohne Parameterangabe
sieht genau wie eine Variable aus und verhält sich auch so.
Integrierte Kontextfunktionen
Funktionsname | Syntax | Beschreibung |
---|---|---|
substr | substr(f,Start [,Länge]) | start ist eine Position vom Ende der Zeichenkette. start ist nullbasiert. start kann negativ sein. |
trim | trim(Zeichenfolge [, Zu_löschende_Zeichen]) | Leerzeichen (oder die in Zu_löschende_Zeichen angegebene Zeichenliste) links und rechts von der Zeichenfolge löschen. |
rtrim | rtrim(Zeichenfolge [, Zu_löschende_Zeichen]) | Leerzeichen (oder die in Zu_löschende_Zeichen angegebene Zeichenliste) rechts von der Zeichenfolge löschen. |
ltrim | ltrim(Zeichenfolge [, Zu_löschende_Zeichen]) | Leerzeichen (oder die in Zu_löschende_Zeichen angegebene Zeichenliste) links von der Zeichenfolge löschen. |
indexof | indexof(Zeichenfolge, substr [, Start ]) | Startindexposition der Unterzeichenfolge innerhalb der Zeichenfolge zurückgeben. Wird substr nicht gefunden, wird -1 zurückgegeben. |
fmt | fmt(formatString [,values]... ) | Die Werte unter Verwendung von Formatierzeichenfolge formatieren. |
tr | tr(Zeichenfolge, von_Zeichen [, in_Zeichen]) | Zeichen, die mit von_Zeichen in der Zeichenfolge übereinstimmen, in das entsprechende in_Zeichen umsetzen. Wenn das Zeichen von_Zeichen kein entsprechendes Zeichen in in_Zeichen (Positionsübereinstimmung) hat, wird das von_Zeichen aus der Eingabezeichenfolge entfernt. Wird in_Zeichen weggelassen, werden alle in von_Zeichen aufgeführten Zeichen in dem Rückgabewert entfernt. |
bin | bin(Zeichenfolge [, wahres_Zeichen]) | Die Eingabezeichenfolge wird unter Verwendung von wahres_Zeichen als Ein-Bit in eine Zahl konvertiert. Wird wahres_Zeichen weggelassen, ist "1" das Ein-Bit. |
fmtbase | fmtbase(Wert, Nummernzeichen [, Basiszeichenfolge ]) | Wenn baseString weggelassen wird, wird angenommen, dass es für "0123456789ABCDEF" steht, was nach der Konvertierung des Wertes in die durch baseString dargestellte Basis die ganz rechten numChars zurückgibt. baseString kann eine beliebige Liste von Zeichen sein, wobei angenommen wird, dass das ganz linke Zeichen Null und das ganz rechte den höchsten Wert des Basissystems darstellt, in das konvertiert wird. |
exists | exists(Wert) | Wird als "wahr" bewertet, wenn der Wert als "wahr" bewertet wird. (Diese Funktion entspricht der Funktion defined.) |
Definition | defined(Wert) | Wird als "wahr" bewertet, wenn der Wert als "wahr" bewertet wird. Wenn der Wert ein RICOH ProcessDirector-Merkmalname ist, gibt diese Funktion "wahr" zurück, sofern das Merkmal in der Datenbank definiert ist. Ist ein Merkmal in der Datenbank definiert, können Sie in anderen CEL-Funktionen darauf verweisen. |
len | len(Zeichenfolge) | Gibt die Anzahl von Zeichen in der Eingabezeichenfolge zurück. |
nil | nil | Gibt einen Wert zurück, den Sie in CEL-Funktionen zur Darstellung eines Nullwerts verwenden können. |
aggr | [aggr=sum] [aggr=max] [aggr=min] | Gibt die Summe, den Maximalwert oder den Minimalwert eines Ausdrucks (expr) zurück, der anhand aller Dokumente im Job ausgewertet wurde. Wenn Sie über das Kuvertierungseinheiten-Feature verfügen, können Sie diese Funktion in der Regeldatei für den Headersatz der Kuvertiereinheiten-Steuerdatei verwenden. |
Satzkontextfunktionen
Funktionsname | Syntax | Beschreibung |
---|---|---|
Feldname | Feldname oder Feldname() | Der Wert des Feldes für den aktuellen Satz in dem Kontext. |
recnum | recnum oder recnum() | Die Satznummer des aktuellen Satzes, der in dem Kontext benutzt wird. |
Kontextfunktionen für Satz-Caching
Funktionsname | Syntax | Beschreibung |
---|---|---|
Feldname | Feldname oder Feldname(relative_Position) | Ist relative_Position 0 oder nicht vorhanden, der Wert des Feldes für den aktuellen Satz in dem Kontext. Ist relative_Position eine positive Zahl, der Wert des Feldes für die relative_Position des Satzes davor. Ist relative_Position eine negative Zahl, der Wert des Feldes für die relative_Position des Satzes dahinter. Die maximale Anzahl von Sätzen für das Caching dahinter liegt derzeit bei 10. Die Anzahl von Sätzen für das Caching davor kann ein beliebiger Wert sein und wird bei der Verarbeitung dynamisch festgelegt. |
recnum | recnum oder recnum() | Die Satznummer des aktuellen Satzes, der in dem Kontext benutzt wird. |
Beispiele
Ausdruck | Erläuterung |
---|---|
if(or(a>100,a==0),1,0) | Wenn der Wert von a größer als 100 oder gleich 0 ist, wird dieser Ausdruck als 1 bewertet; andernfalls
wird er als 0 bewertet. |
if(and(a>3,a<10),1,0) | Wenn der Wert von a größer als 3 oder kleiner als 10 ist, wird dieser Ausdruck als 1 bewertet; andernfalls
wird er als 0 bewertet. |
if(fld,fld,'') | Behandelt einen fehlenden Wert als leere Zeichenfolge. Andernfalls wird der fehlende Wert als undefiniert behandelt, was sich von einem Leerwert unterscheidet. |
fmtbase(if(output_bin=='2',1,0) + if(output_bin=='3',2,0) + if(meter == '1', 4,0) , 1) | Gibt eine Hexadezimalzahl zurück, wobei das niederwertige Bit (von rechts) angibt,
ob output_bin auf 2 gesetzt ist, das zweite Bit angibt, ob output_bin auf 3 gesetzt ist und das dritte Bit angibt, ob meter auf 1 gesetzt ist. |
fmtbase(if(meter=='2',1,0) + if(substr(mch_isrt_bins,0,1)=='Y',2,0) + if(substr(mch_isrt_bins,1,1)=='Y',4,0) , 1 ) | Gibt eine Hexadezimalzahl zurück, wobei das niederwertige Bit (von rechts) angibt,
ob meter auf 2 gesetzt ist, das zweite Bit angibt, ob das erste Zeichen von mch_isrt_bins auf 'Y' gesetzt ist, und das dritte Bit angibt, ob das zweite Zeichen von mch_isrt_bins auf 'Y' gesetzt ist. |
fmtbase(63,2,"0123456789ABCDFGHJKLMNPQRSTVWXYZ") | Konvertiert 63 in "1Z". Als Basis kann eine beliebige Zeichenfolge benutzt werden. |
tr('abc', 'b') | Entfernt alle Zeichen 'b'. |
tr('00101', '01', 'NY') | Konvertiert '0' in 'N' und '1' in 'Y'. Führt zu 'NNYNY'. |
tr('00101', '0123456789Y', 'YYYYYYYYYYN') == 'YYYYY' | Wird als wahr ausgewertet, wenn alle Zeichen in "00101" Ziffern sind. "00101" kann durch einen Funktionswert von 5 Zeichen ersetzt werden. |
len(tr('00101','0')) | Bewertung mit 2. Entfernt alle Nullen aus der Eingabezeichenfolge und gibt die Länge der restlichen Zeichen zurück. Zählt effektiv die Anzahl der Einsen in der Eingabezeichenfolge. |
[expr=Doc.TotalSheets] [aggr=sum] | Gibt die Summe aller Werte im Merkmal Doc.TotalSheets in allen Dokumenten des Auftrags zurück. |
[expr=Doc.TotalSheets] [aggr=max] | Gibt den Maximalwert im Merkmal Doc.TotalSheets in allen Dokumenten des Auftrags zurück. |
[expr=Doc.TotalSheets] [aggr=min] | Gibt den Minimalwert im Merkmal Doc.TotalSheets in allen Dokumenten des Auftrags zurück. |
[expr=recnum>1] | Ignorieren Sie die erste Zeile der Datei. (Lesen Sie nur Satznummern größer 1.) |