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.)