Wissenswertes zu Syntax, Semantik und Datentypen

Jeder Urkel-Ausdruck hat einen Datentyp. Die verfügbaren Datentypen sind:

  • Boolean

  • String

  • Number (Dezimalzahl)

  • Liste

  • Regulärer Ausdruck

Die verwendeten Ausdrücke müssen auf oberster Ebene vom Typ Boolean sein.

Einfache Ausdrücke vom Typ Boolean 

Die einfachsten Ausdrücke vom Typ Boolean sind die Literale true und false. Ausdrücke vom Typ Boolean können wiederum durch die Operatoren AND und OR verknüpft werden. Dabei gelten folgende Regeln:

  • true AND false ergibt false

  • false OR true ergibt true

Über ein vorangestelltes NOT kann ein Ausdruck vom Typ Boolean negiert werden. NOT true ergibt false.

Vergleiche zwischen zwei Ausdrücken 

Ausdrücke anderer Typen können miteinander verglichen werden. Hierzu stehen die Operatoren =, !=, <, >, <=, >= zur Verfügung. Beide Operanden müssen den gleichen Typ haben. Das Ergebnis eines Vergleichs ist Boolean. Zum Beispiel:

  • "abc" = "def" ergibt false

  • 5 > 7 ergibt false

  • "def" != "def" ergibt false

Operationen auf Listen 

Um mehrere Werte darstellen zu können, bietet Urkel einen eingebauten Listentyp. Listen sind sortiert und können Werte beliebiger Typen aufnehmen. Einige Eigenschaften von Belegen oder Benutzern sind vom Typ Liste. In Urkel-Ausdrücken können Listen auch direkt spezifiziert werden. Der Ausdruck (true, false) ergibt eine Liste mit den Werten true und false. Der Ausdruck (true, 1 < 2, 3) ergibt eine Liste mit den Werten true, true und 3.

Hat eine Liste nur Werte vom Typ Boolean als Elemente, können Sie die Operatoren ALL und ANY anwenden. ALL l1 ergibt true, wenn die Liste l1 nur wahre Werte enthält. ANY l1 ergibt true, wenn die Liste l1 mindestens einen wahren Wert enthält.

Die Länge einer Liste l1 können Sie mit len(l1) ermitteln. Das Ergebnis ist vom Typ Number.

Mithilfe der Operatoren IN und NOT IN können Sie prüfen, ob ein Wert in einer Liste enthalten oder nicht enthalten ist. Zum Beispiel:

  • 1 IN (1, 2, 3) ergibt true

  • 1 < 2 IN (3 > 4, 5 > 6, 7 > 8) ergibt false

Strings und reguläre Ausdrücke 

Der Typ String kann Zeichenketten aufnehmen. Zeichenketten können über die üblichen Vergleichsoperatoren verglichen werden. Zusätzlich können Strings mithilfe des Operators =~ durch einen regulären Ausdruck geprüft werden. Der reguläre Ausdruck muss dabei auf der linken Seite stehen. Zum Beispiel:

  • /^(Freigabe|Buchhaltung) \d+$/ =~ "Freigabe 1" ergibt true

  • /\d{4}/ =~ "123" ergibt false

Über die Syntax #{} können Sie Ausdrücke in String-Literale und reguläre Ausdrücke einfügen. Zum Beispiel:

  • "Buchung #{voucher.posting_text}" ergibt Buchung Telekom, wenn der Buchungstext Telekom ist.

  • /^Freigeber_#{voucher.company.nr}$/ =~ "Freigeber_23" ergibt true, wenn die Mandantennummer 23 ist.

Zugreifen auf die Eigenschaften des Belegs oder Benutzers 

Alle Urkel-Ausdrücke werden in einem Kontext ausgeführt, in dem bestimmte Objekte, wie zum Beispiel der aktuelle Benutzer oder Beleg, zur Verfügung stehen. Aus Urkel-Ausdrücken heraus können Sie auf Eigenschaften dieser Objekte über die Punkt-Notation zugreifen:

  • voucher.posting_text ergibt die Eigenschaft Buchungstext des Objekts Beleg.

  • voucher.company.nr ergibt die Eigenschaft Nr der Eigenschaft Mandant des Objekts Beleg.

Welche Objekte im Kontext zur Verfügung stehen, variiert je nach Anwendungsfall.