Operatoren: Vergleiche richtig einsetzen

Ein wichtiger Teil von GREYHOUND-Regeln sind Bedingungen, die entscheiden, ob die festgelegten Aktionen auf ein konkretes Element angewendet werden sollen oder nicht. Zentral für diese Entscheidung sind Operatoren, also Vergleiche, ob ein Element ein bestimmtes Merkmal aufweist. Hierfür stehen im Regel-Editor eine ganze Reihe von Operatoren zur Verfügung, die wir kurz vorstellen möchten:

ist gleich

Die einfachste Vergleichsmöglichkeit ist eine Überprüfung auf die Gleichheit zweier Werte. Hierbei kann es sich sowohl um Texte (z. B. Namen oder Adressen) als auch um Zahlen (z. B. Anzahl oder Datum) handeln. ist gleich überprüft die exakte inhaltliche Übereinstimmung beider Ausdrücke, also „Müller GmbH“ ist gleich „Müller GmbH“, aber nicht gleich „Firma Müller GmbH“. Für die Eigenschaften eines GREYHOUND-Elements stellt der Editor diesen Vergleich gar nicht erst zur Verfügung, sondern bietet stattdessen nur enthält an. Denn zwar lassen sich z. B. gelesene Elemente anhand der Eigenschaft Gelesen erkennen, aber ein Element kann auch weitere Eigenschaften haben, wie z. B. Anhänge vorhanden oder Systemprotokoll vorhanden. „Gelesen, Anhänge vorhanden, Systemprotokoll vorhanden“ ist gleich „Gelesen“ stimmt nun mal nicht und würde zu einem Nichterfüllen der Bedingung führen. „Gelesen, Anhänge vorhanden, Systemprotokoll vorhanden“ enthält „Gelesen“ hingegen stimmt und würde korrekterweise zu dem Ergebnis führen, dass dieses Element die Eigenschaft Gelesen besitzt.

enthält

Dieser Vergleich kann für Texteigenschaften verwendet werden und ist in seiner Auslegung großzügiger. Er überprüft, ob der angegebene Vergleichstext an irgendeiner Stelle in der zu untersuchenden Eigenschaft vorkommt. Um beim Beispiel zu bleiben: „Müller GmbH“ enthält „Müller GmbH“ und „Firma Müller GmbH“ enthält „Müller GmbH“. Wann immer die genaue Form des gesuchten Inhalts nicht eindeutig ist oder neben dem gesuchten Inhalt noch weitere Komponenten enthalten sein können, ist dem enthält-Vergleich deshalb der Vorzug zu geben.

beginnt mit & endet mit

Mit diesem Vergleich lässt sich feststellen, ob eine zu untersuchenden Texteigenschaften mit einer bestimmten Zeichenfolge beginnt. Im Prinzip handelt es sich dabei um einen ist gleich-Vergleich, nur dass die Untersuchung nach dem Vergleichstext endet und danach noch beliebiger Inhalt zulässig ist. Beispiel: „Müller GmbH“ beginnt mit „Müller“ stimmt, aber „Firma Müller GmbH“ beginnt mit „Müller“ stimmt nicht. beginnt mit kann sinnvoll sein, wenn ein gesuchter Text an einer bestimmten Stelle stehen soll und nicht eventuell an einer anderen. Ansonsten lässt sich anstelle dieses Vergleichs meist das weniger restriktive enthält einsetzen. endet mit entspricht im Funktionsprinzip beginnt mit, nur eben am Ende des zu untersuchenden Textes: „Firma Müller“ endet mit „Müller“ stimmt, aber „Müller GmbH“ endet mit „Müller“ stimmt eben nicht. Auch dieser Vergleich sollte nur in gewählten Ausnahmefällen verwendet und stattdessen eher mit enthält gearbeitet werden.

kleiner als, kleiner oder gleich, größer als & größer oder gleich

Hierbei handelt es sich um mathematische Vergleiche für Zahlen und insbesondere Datumseigenschaften. Damit lässt sich etwa feststellen, ob ein Element schon ein bestimmtes Alter hat. Diese Vergleiche lassen sich auch auf Texte anwenden, wobei aber kein inhaltlicher Vergleich stattfindet, sondern lediglich die Länge der Texte verglichen wird. Der Detailunterschied zwischen den beiden Vergleichen ist wohl offensichtlich: …oder gleich schließt den Vergleichswert mit ein, während …als den Vergleichswert als Grenze ausschließt.

reguläre Ausdrücke

Der Vergleich reguläre Ausdrücke ermöglicht das Verwenden von Regulären Ausdrücken (Regular Expressions). Dabei handelt es sich um eine spezielle, standardisierte Syntax, mit der beliebig komplexe Muster für den Vergleich von Texten angegeben werden können. Mit der Unterstützung von regulären Ausdrücken ermöglicht GREYHOUND beliebig komplexe und flexible Vergleiche für alle Arten von Textinhalten. Wer sich schon mal damit beschäftigt hat, der weiß, dass das im wahrsten Sinn des Wortes eine Wissenschaft für sich ist, auf die wir im Rahmen dieser Anleitung nicht weiter eingehen können. Zu dem Thema gibt es entsprechend auch zahllose Online-Quellen und Bücher.

Tipp: Einfacher regulärer Ausdruck anstelle mehrerer Vergleiche

Ein einfaches Beispiel mag verdeutlichen, wie Regeln durch reguläre Ausdrücke einfacher und zugleich vielseitiger werden können: Eine Bedingung soll ein bestimmtes Merkmal überprüfen, das einen von drei möglichen Inhalten haben kann, damit die Bedingung erfüllt ist. Klassischerweise müsste man dazu drei verschiedene Bedingungsknoten mit jeweils einem Vergleich verwenden, von denen jeweils ein Pfeil zur gewünschten Aktion führt. Mit einem regulären Ausdruck als Vergleich geht das mit nur einem Knoten. Dazu gibt man die verschiedenen Inhalte als Vergleichsmuster wie in unserem Beispiel an: (service|kundenservice|kundendienst)@firma.de. Dieser Vergleich gelingt, wenn die Adresse „service@firma.de“, „kundenservice@firma.de“ oder „kundendienst@firma.de“ lautet.

Abb.: drei Knoten für drei Vergleiche – Unten rechts: ein Knoten mit einem regulären Ausdruck für drei Vergleiche

Durch Verknüpfungen entstehen komplexe Regelwerke

Das Fallbeispiel in Abschnitt 3 zeigt, dass Regeln letztlich durch die Verknüpfung von Bedingungs- und Aktionsknoten entstehen. Dies lässt sich im Regel-Editor ganz praktisch visuell umsetzen, indem Verbindungspfeile von einem Knoten zum anderen „gezogen“ werden. Die Relation ist dabei nicht einfach immer nur von einer Bedingung zu einer Aktion. Mank ann ebenso mehrere Bedingungen miteinander verschachteln. Also z. B. „wenn ein Elemente eine E-Mail ist UND wenn der Absender mit @microsoft.de endet, dann weise das Thema ’Microsoft’ zu“. Ebenso lassen sich mehrere Aktionen miteinander verknüpfen, also z. B. „weise das Thema ’Microsoft’ zu und weise die Gruppe ’IT-Abteilung’ zu“. So können beliebig komplexe Regeln entstehen, welche die Abläufe und Vorgaben in einem Unternehmen genau abbilden.

Abb.: GREYHOUND-Regeln können beliebig komplexe Abläufe im Unternehmen nachbilden.

Einige Grundsätze sollten beim Strukturieren von Regeln beachtet werden:

  • Bedingungen haben am unteren Ende immer ein grünes Häkchen-Symbol und ein rotes X-Symbol. Von beiden Symbolen aus kann man Pfeile zu anderen Knoten ziehen. Ist die Bedingung erfüllt, folgt der Ablauf dem Pfeil am grünen Häkchen. Ist die Bedingung nicht erfüllt, wird stattdessen der Pfeil am roten X verfolgt. Idealerweise sollte es immer für beide Fälle Pfeile zu anderen Knoten geben.
  • Wenn eine Bedingung nicht erfüllt ist, aber vom X-Symbol kein Pfeil zu einem anderen Knoten führt, bricht die Ausführung dieser Regel an dieser Stelle ab. GREYHOUND macht dann mit der nächsten Regel weiter, die für denselben Trigger definiert ist oder – wenn keine weitere Regel vorhanden ist – beendet die Regelbearbeitung für dieses Element.
  • Aktionsknoten haben immer genau ein grünes Häkchen-Symbol. Von dort kann ein Pfeil zu einer weiteren Aktion oder zu einer Bedingung gezogen werden.
  • Von einem Häkchen- oder X-Symbol kann immer nur ein Pfeil wegführen. Es kann also immer nur genau einen nächsten Schritt geben. Sollen z. B. beim Erfüllen einer Bedingung zwei Aktionen ausgeführt werden, so sollten diese hintereinander platziert werden: Vom grünen Symbol der Bedingung geht ein Pfeil zu Aktion 1 und von grünen Symbol der Aktion 1 geht ein weiterer Pfeil zur Aktion 2 usw.
  • Zu einem Knoten hin können mehrere Pfeile von verschiedenen anderen Knoten führen. Man kann also z. B. zunächst eine Unterscheidung in E-Mail- und Brief-Elemente vornehmen, diese jeweils getrennt behandeln und beide Regelpfade dann wieder zu einem gemeinsamen Aktionsknoten zusammenführen und im weiteren Verlauf zusammen behandeln.
  • Um einen Verbindungspfeil wieder zu entfernen, klickt man auf das Häkchen- bzw. X-Symbol, von dem der Pfeil ausgeht. Soll die Verbindung einfach nur zu einem anderen Knoten führen, dann zieht man einen neuen Pfeil an die gewünschte Stelle. Die alte Verknüpfung wird dann automatisch entfernt.