Skip to content

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.


OrtErgebnistypWirkung
Regelset – AusdruckWahrheitswertBestimmt, welche Entitäten von einer Checkliste oder einem Prüfplan erfasst werden.
Checklistenpunkt – ErfüllungsbedingungTextLegt fest, wie der Punkt erfüllt wird (siehe unten).
Checklistenpunkt – Auto-GenehmigungsrateZahl (0–100)Wahrscheinlichkeit in Prozent, mit der ein hochgeladenes Dokument automatisch genehmigt wird.
Checklistenpunkt – Auto-GenehmigungsablaufzeitZahl (Sekunden)Legt fest, wie lange eine automatische Genehmigung gültig bleibt.
Spezifikationsvorlage – BedingungWahrheitswertBestimmt, ob ein Eintrag im erzeugten Dokument erscheint.

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.


Die Sprache unterstützt die üblichen Bausteine:

  • Vergleiche und Logik: ==, !=, >, <, >=, <= sowie and, 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:

ErgebnisBedeutungEntspricht
expiration_dateEs muss ein Dokument mit gültigem, in der Zukunft liegendem Ablaufdatum vorhanden sein.Kritische Datei (verbindliche Frist)
file_assignedEs muss mindestens ein Dokument zugewiesen sein; das Ablaufdatum spielt keine Rolle.Unkritische Datei (unverbindliche Frist)
alwaysDer 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"

// Regelset: nur deutsche Lieferanten mit hohem Umsatz
entity.land == "DE" and entity.umsatz > 1000000
// Bedingung einer Spezifikationsvorlage: Eintrag nur für Lebensmittel
entity.produktkategorie == "lebensmittel"
// Auto-Genehmigungsrate: 50 % der Uploads automatisch genehmigen
50