Ausdrücke (Zen Expressions)
An mehreren Stellen im Admin-Panel lassen sich Felder nicht nur mit festen Werten, sondern mit Ausdrücken befüllen. Ein Ausdruck ist eine kleine Formel, die zum Zeitpunkt der Auswertung anhand der Daten einer Entität berechnet wird. Dadurch lässt sich das Verhalten von Certiflow dynamisch und ohne Programmierung an die jeweilige Situation anpassen.
Technisch verwendet Certiflow dafür die Zen-Expression-Sprache (eine Umsetzung der GoRules Zen Language). Dieser Artikel richtet sich an Administratoren, die solche Felder konfigurieren, und setzt ein gewisses technisches Verständnis voraus.
Wo Ausdrücke verwendet werden
Section titled “Wo Ausdrücke verwendet werden”| Ort | Ergebnistyp | Wirkung |
|---|---|---|
| Regelset – Ausdruck | Wahrheitswert | Bestimmt, welche Entitäten von einer Checkliste oder einem Prüfplan erfasst werden. |
| Checklistenpunkt – Erfüllungsbedingung | Text | Legt fest, wie der Punkt erfüllt wird (siehe unten). |
| Checklistenpunkt – Auto-Genehmigungsrate | Zahl (0–100) | Wahrscheinlichkeit in Prozent, mit der ein hochgeladenes Dokument automatisch genehmigt wird. |
| Checklistenpunkt – Auto-Genehmigungsablaufzeit | Zahl (Sekunden) | Legt fest, wie lange eine automatische Genehmigung gültig bleibt. |
| Spezifikationsvorlage – Bedingung | Wahrheitswert | Bestimmt, ob ein Eintrag im erzeugten Dokument erscheint. |
Worauf ein Ausdruck zugreifen kann
Section titled “Worauf ein Ausdruck zugreifen kann”Ausdrücke werden gegen die Daten der jeweiligen Entität ausgewertet. Zur Verfügung stehen unter anderem:
- Attributwerte der Entität (z. B.
entity.umsatz), - die diesem Element zugeordneten Tags,
- die verknüpften Entitäten (Vorgänger und Nachfolger in der Hierarchie),
- der Entitätstyp der Entität.
Welche Daten genau verfügbar sind, hängt vom Ort der Auswertung ab. Ein Filter in einer Spezifikationsvorlage greift beispielsweise auf die Attributwerte der jeweiligen Zielgruppe zu. Eine vollständige, technische Auflistung aller Kontexte und Auswertungsstellen enthält die Referenz Zen-Expression-Kontexte.
Grundlagen der Syntax
Section titled “Grundlagen der Syntax”Die Sprache unterstützt die üblichen Bausteine:
- Vergleiche und Logik:
==,!=,>,<,>=,<=sowieand,or,not. - Rechnen:
+,-,*,/,%. - Bedingung (wenn/dann/sonst):
bedingung ? wert_wenn_wahr : wert_wenn_falsch. - Eigenschaftszugriff:
entity.land,entity.adresse.stadt. - Funktionen für Texte, Zahlen, Datumswerte und Listen, etwa
some(tags, # == "kritisch"), um zu prüfen, ob ein bestimmtes Tag gesetzt ist.
Eine vollständige Referenz der Sprache findet sich in der GoRules-Dokumentation.
Die Erfüllungsbedingung von Checklistenpunkten
Section titled “Die Erfüllungsbedingung von Checklistenpunkten”Ein Sonderfall ist die Erfüllungsbedingung eines Checklistenpunkts. Hier muss der Ausdruck zu einem von drei festen Texten ausgewertet werden. Jeder dieser Werte entspricht einem der Dokument-Fristentypen:
| Ergebnis | Bedeutung | Entspricht |
|---|---|---|
expiration_date | Es muss ein Dokument mit gültigem, in der Zukunft liegendem Ablaufdatum vorhanden sein. | Kritische Datei (verbindliche Frist) |
file_assigned | Es muss mindestens ein Dokument zugewiesen sein; das Ablaufdatum spielt keine Rolle. | Unkritische Datei (unverbindliche Frist) |
always | Der Punkt gilt immer als erfüllt; es ist kein Dokument erforderlich. | Optionale Datei |
Weil das Ergebnis über einen Ausdruck berechnet wird, kann der Fristentyp eines Punkts auch von den Daten der Entität abhängen. Das folgende Beispiel verlangt nur dann ein Ablaufdatum, wenn das Attribut requires_expiry_date gesetzt ist:
entity.requires_expiry_date ? "expiration_date" : "file_assigned"Weitere Beispiele
Section titled “Weitere Beispiele”// Regelset: nur deutsche Lieferanten mit hohem Umsatzentity.land == "DE" and entity.umsatz > 1000000// Bedingung einer Spezifikationsvorlage: Eintrag nur für Lebensmittelentity.produktkategorie == "lebensmittel"// Auto-Genehmigungsrate: 50 % der Uploads automatisch genehmigen50