Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 15 Nächste Version anzeigen »

Regeln sind Kontrollstrukturen, die es Ihnen ermöglichen, bedingte Ausführungen zu erstellen.

In Regeln definieren Sie Spalten und Zeilen, wobei die Spalten Bedingungen mit Werten vorgeben.

Jede Zeile definiert dagegen Werte für die Spaltenbedingungen und einen Rückgabewert.

Der Rückgabewert der Zeile, in der alle Werte mit den Spaltenbedingungen übereinstimmen, ist der Wert der Regel.

Der Wert der Regel kann dabei jeden Datentyp haben. Eine Regel kann auch eine EVAL-Anweisung zurückgeben.

 

Aufbau einer Regel


Abbildung A: Aufbau einer Regel

 

In Abb. A sehen Sie den Aufbau einer Regel mit Spalten (Abb. A (1)) und Zeilen (Abb. A (2)).

Eine Spalte definiert genau einen Wert. In Abb. A sind das:

 Spalte1Spalte2Spalte3Spalte4Spalte5
Wert01.01.2013100TRUE1.5Hallo

 

Der Wert einer Spalte kann einen der folgenden Datentypen haben (die in Abb. A alle verwendet wurden):

DATENUMBERBOOLEANREALSTRING

 

Spalten stellen die Bedingungen der Regel dar. Der Wert einer Spalte ist die Spaltenbedingung in dieser Spalte.

Eine Zeile erfüllt die Bedingung in einer Spalte, wenn ihr Wert in der Spalte mit der Spaltenbedingung übereinstimmt.

Erfüllt eine Zeile die Bedingungen aller Spalten, trifft die Regel auf die Zeile zu und ihr Rückgabewert ist der Wert der Regel.

In Abb. A ist das Zeile #3. Die Regel hat also den Wert TRUE (Abb. A (3)) und so auch der Aufruf:

${NameDerRegel}     //=TRUE

Der Operator * ist immer wahr. Enthält eine Zeile also in einer Spalte den Wert '*',

so erfüllt die Zeile die Bedingung dieser Spalte immer, unabhängig von der Spaltenbedingung.

Wertfindung innerhalb einer Regel

 

Gibt es in der Regel mehrere Spalten, die alle Spaltenbedingungen erfüllen, dann ist die oberste Regel in der Liste die zutreffende Regel

und ihr Rückgabewert der Wert der Regel. Alle danach kommenden Zeilen werden nicht beachtet.

(Das ist auch in Abb. A der Fall, denn Zeile #4 erfüllt ebenfalls alle Spaltenbedingungen, Zeile #3 steht jedoch weiter oben).

Nachfolgend ist dargestellt, wie der Wert einer Regel bestimmt wird:

 


Abbildung B: Durchlauf Wertbestimmung der Regel

 

Die Regel in Abb. B hat 3 Spalten und 3 Zeilen. Jede Spalte definiert eine Bedingung, jede Zeile einen Wert pro Spalte.

Die Prüfung beginnt in Zeile 1, Spalte 1. Ist der Wert von Zeile 1 in Spalte 1 identisch zur Spaltenbedingung,

wird mit der Prüfung von Spalte 2 in Zeile 1 fortgefahren. Ist der Wert von Zeile 1 in Spalte 2 wieder identisch

zur Spaltenbedingung der 2. Spalte, wird mit der Prüfung von Spalte 3 in Zeile 1 fortgefahren.

Ist auch der Wert von Zeile 1 in Spalte 3 identisch zur Spaltenbedingung, trifft die gesamte Zeile zu und der Rückgabewert der Zeile

ist der Wert der Regel (grüne Pfeile). Hat eine der Spalten in Zeile 1 einen anderen Wert als die zugehörige Spaltenbedingung,

trifft also nicht auf die Bedingung zu, wird die Prüfung der Zeile abgebrochen und mit der Prüfung der nächsten Zeile fortgefahren.

Dort wird dann wieder in der 1. Spalte begonnen. Wurden alle Zeilen geprüft und keine davon erfüllt alle Spaltenbedingungen,

ist der Wert der Regel undefiniert, da kein Rückgabewert ausgewählt werden kann (rote Pfeile).

 

In Abb. A ist der Verlauf folgendermaßen:


Abbildung C: Wertfindung bei Abb. A

 

Der Wert der Regel ist also TRUE.

Natürlich machen die Werte der Beispielregel aus Abb. A + C nur begrenzt Sinn, da es keinen semantischen Zusammenhang

zwischen den Bedingungen und den Rückgabewerten gibt und die Rückgabewerte verschiedene Datentypen haben, um zu zeigen,

dass in Regeln alle Datentypen kombiniert werden können. In der Praxis werden Sie Regel erstellen, deren Werte einen Zusammenhang haben.

Einige praxisnähere Beispiele, wie man Regeln sinnvoller nutzen kann, finden Sie am Ende des Artikels.


 

EVAL-Anweisungen und dynamische Einbindung innerhalb einer Regel


Im oberen Abschnitt wurden in der Regel, bis auf eine Ausnahme, nur statische Werte verwendet.

Lediglich Rückgabewert von Zeile 4 besteht aus der dynamischen Einbindung der Ressource Firmenlogo.

In der Praxis werden Sie in Regeln jedoch fast immer auch dynamische Werte verwenden, denn in einer Regel,

in der alle Werte schon statisch feststehen, steht auch der Wert der Regel schon fest - Man könnte den Wert einfach einer Variablen zuweisen.

Der Zweck von Regeln besteht aber darin, eine Möglichkeit zu schaffen, für unterschiedliche Eingangswerte ein unterschiedliches Verhalten zu implementieren.


Abb. D: Typische Anwendung einer Regel

 

Typischerweise werden in einer Regel Datenstrom-Variablen verarbeitet, z.B. um dynamisch eine Ressource anzuwählen:

 

Beispiel:

Je nach Nationalität des Kunden soll dessen Nationalflagge angezeigt werden. Die Nationalität des Kunden wird durch die Datenstrom-Variable

DS.NATIONALITY geliefert - Bei jedem Kunden individuell. Um abhängig von DS.NATIONALITY die richtige Ressource auszusuchen, benötigt man eine Regel.

Diese liefert, je nach Wert von DS.NATIONALITY, die richtige Ressource zurück. Ruft man die Regel auf, erhält man automatisch die richtige Ressource.

 

Mögliche Werte von DS.NATIONALITY:

WertGERCHAUT
Kunde kommt ausDeutschlandSchweizÖsterreich

 

Binäre Ressourcen, die die Flaggen enthalten:

Name der Ressourceger_flagch_flagaut_flag
InhaltFlagge DeutschlandFlagge SchweizFlagge Österreich

 

Dazugehörige Regel:


Abbildung E: Regel zur Auswahl der Nationalflagge


In Abb. E wird die Spaltenbedingung durch die dynamische Einbindung der Datenstrom-Variablen DS.NATIONALITY gebildet.

Die obige Tabelle zeigt uns, dass die Datenstrom-Variable 3 Werte annehmen kann. Diese finden sich als Zeilen in der Regel wieder.

Je nach aktuellem Wert von DS.NATIONALITY wird dann die dazu passende Ressource mit der passenden Flagge zurückgegeben.

Hat die Datenstrom-Variable beispielsweise den Wert CH, trifft die 2. Spalte auf die Bedingung zu und der Wert der Regel ist ${ch_flag},

also die Binäre Ressource ch_flag mit der Schweizer Flagge. Die Regel kann z.B. durch eine Erweiterung in das Dokument eingebunden werden:

 

Im Formular-Bereich SERVICE_LINE wird dann die entsprechende Flagge angezeigt.

  • Keine Stichwörter