Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

Definition
 

Regeln sind Kontrollstrukturen, die abhängig von Bedingungen unterschiedliche Werte annehmen können. Eine Regel enthält also eine oder mehrere Bedingungen und eine oder mehrere Auswahlmöglichkeiten. Die Auswahlmöglichkeit, die alle Bedingungen erfüllt, liefert den Rückgabewert der Regel.

 

Dazu gibt es in einer Regel Spalten und Zeilen: Die Spalten sind die Bedingungen der Regel. Jede Spalte enthält einen Wert, die Bedingung dieser Spalte. Die Zeilen sind die alternativen Auswahlmöglichkeiten für die Regel. Jede Zeile gibt pro Spalte einen Wert an. Die Zeile, in der in jeder Spalte der Zeilenwert die Bedingung der Spalte erfüllt, ist die gültige Auswahl für die Regel und ihr Rückgabewert der Wert der Regel. Dieser kann einen beliebigen Datentyp haben (Datentypen: Siehe Variable). Eine Regel kann auch eine EVAL-Anweisung / einen Verweis auf eine Ressource zurückgeben. Das Symbol für Regeln im R-S ist . 

Aufbau einer Regel im R-S

...

 

Image Modified
Abbildung A: Aufbau einer Regel

...

Info

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. Mehr dazu im im Abschnitt über boolsche Operatoren.

 

EVAL-Anweisungen und dynamische Einbindung innerhalb einer Regel

 

...


Im oberen Abschnitt wurden in der Regel, abgesehen von den Rückgabewerten, nur statische Werte verwendet. In der Praxis werden Sie in Regeln jedoch fast immer auch dynamische Werte in Spalten und Zeilen verwenden, denn in einer Regel, in der alle Werte schon statisch feststehen, steht auch der Rückgabewert der Regel schon fest - Man könnte den Wert auch 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.

Image Modified
Abb. B: Typische Anwendung einer Regel

...

In Abb. C wird der Spaltenwert durch die dynamische Einbindung der Datenstrom-Variablen DS.NATIONALITY gebildet. Die Spalte hat also den Wert von DS.NATIONALITYDie 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 dann in das Dokument eingebunden werden. Im Dokument wird dann die richtige Flagge angezeigt.

 

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:

Image Modified
Abbildung D: Durchlauf Wertbestimmung der Regel

...

Um zu verhindern, dass der Wert einer Regel undefiniert (leer) ist, falls keine der Zeilen alle Bedingungen erfüllt, können Sie unter den regulären Zeilen eine weitere Zeile einfügen, die in allen Spalten den Operator * als Wert hat, also immer gültig ist.In dieser Zeile definieren Sie dann als Rückgabewert einen Standard-Wert. Trifft keine der regulären Auswahlmöglichkeiten zu, wird diese Standardzeile ausgewählt und der Wert der Regel ist der Standard-Wert. Dieses Vorgehen wurde in Abb. A durch Zeile #4 verwirklicht.

 

Boolsche Operatoren

...

 

Das R-S definiert einige boolsche Operatoren, mit denen Sie Vergleiche anstellen können. Auch wenn Sie explizit keinen Operator angeben wird ein Operator verwendet, nämlich der Operator EQUAL: Die Bedingung ist wahr, wenn Wert A = Wert B, also wenn die Spalte in der Zeile den gleichen Wert hat wie die Spalte. Bisher sind wir in Regeln von diesem Verhalten ausgegangen: Der Wert in der Zeile muss identisch zum Wert der entsprechenden Spalte sein. Dies ist aber nur das Standardverhalten, das Sie durch boolsche Operatoren verändern können. In der Praxis werden Sie oft mit Operatoren arbeiten, nämlich immer dann, wenn Werte nicht nur gleich sein sollen, sondern in einer bestimmten Beziehung zueinander stehen sollen. Folgende Operatoren existieren im R-S:
 

Panel
bgColorWhite
borderStylenone
Panel
bgColorWhite
borderStylenone
Erweitern
title* Operator
Section
Column
width900px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Den ALWAYSTRUE Operator * haben Sie bereits im obigen Abschnitt kennengelernt. Er erwartet keine zu vergleichenden Argumente und hat immer den Wert TRUE, ist also immer wahr. Er wird oft benutzt, wenn eine Bedingung für die Zeile irrelevant ist, um einen Restbereich abzudecken, der durch die anderen Zeilen nicht abgedeckt wurde oder um ein alternatives Standardverhalten zu implementieren. Durch * trifft diese Bedingung dann immer zu.

 


Beispielregel A 


Die Bedingung in Beispielregel A ist 24.12.2013. Zeile #1 erhält das heutige Datum über die Datenstrom-Variable DS.TODAYS_DATE. Ist das heutige Datum der 24.12.2013, so ist der Wert der Regel der STRING "Heute ist Weihnachten!". Ist heute nicht der 24.12.2013, trifft die Bedingung nicht zu und die Zeile ist ungültig. Zeile #2 ist immer gültig, da der Operator * unabhängig von der Bedingung immer zutrifft (Bsp. gilt natürlich nur für 2013). An allen anderen Tagen ist der Wert der Regel also der STRING "Heute ist irgendein Tag, aber nicht Weihnachten!". In Zeile #1 wird übrigens automatisch der EQUAL-Operator verwendet, da ja kein Operator angegeben wird. Die interne Darstellung ist also =24.12.2013 (der EQUAL-Operator darf aber nicht explizit manuell angegeben werden). 

Column

 

Panel
bgColorWhite
borderStylenone
Erweitern
title!= Operator
Section
Column
width1000px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Der NOTEQUAL Operator != ist die Verneinung des EQUAL-Operators. Er wird benutzt, wenn 2 Werte nicht identisch sein sollen. Man könnte Beispielregel A also auch so implementieren:


Image Removed
Beispielregel B

 

Wieder ist die Bedingung der Spalte Weihnachten das heutige Datum, abgefragt durch die Datenstrom-Variable DS.TODAYS_DATE. Hat die Spalte den Wert 24.12.2013, ist heute Weihnachten und Zeile #1 trifft zu (DS.TODAYS_DATE = 24.12.2013). Ist heute ein anderer Tag als der 24.12.2013, ist Zeile #2 gültig: DS.TODAYS_DATE ist ungleich 24.12.2013 (Bsp. gilt natürlich nur für 2013).

Column

 

Panel
bgColorWhite
borderStylenone
Erweitern
title< und > Operator
Section
Column
width800px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Die LESS < und GREATER > Operatoren überprüfen, ob ein Wert kleiner oder größer ist als der gegebene Wert. Der LESS Operator ist wahr, wenn der Wert kleiner ist als der gegebene Wert. Der GREATER Operator ist wahr, wenn der Wert größer ist als der gegebene Wert.

 


Beispielregel C

 

Die Bedingung der Spalte ist der Preis eines Artikels, abgefragt über die Datenstrom-Variable DS.ARTICLE_PRICE. Ist DS.ARTICLE_PRICE größer als 1000 ist Zeile #1 gültig, ist DS.ARTICLE_PRICE exakt 1000 ist Zeile #2 gültig und wenn DS.ARTICLE_PRICE kleiner als 1000 ist, ist Zeile #3 gültig.

Column

 

Panel
bgColorWhite
borderStylenone
Erweitern
title<= und >= Operator
Section
Column
width800px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Die EQUALLESS <= und EQUALGREATER >= Operatoren sind Erweiterungen der LESS und GREATER Operatoren. Der EQUALLESS Operator ist wahr, wenn der Wert kleiner oder gleich dem gegebenen Wert ist. Der EQUALGREATER Operator ist wahr, wenn der Wert größer oder gleich dem gegebenen Wert ist. Beispielregel C ließe sich also mithilfe des EQUALGREATER-Operators einfach implementieren:

 


Beispielregel D


Wenn der Wert von DS.ARTICLE_PRICE größer oder gleich 1000 ist, trifft Zeile #1 zu, ansonsten Zeile #2. Die Verwendung von EQUALLESS verläuft analog.

Column

 

Panel
bgColorWhite
borderStylenone
Erweitern
title[W1, W2, Wn] Operator
Section
Column
width900px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Mit dem INLIST Operator [W1, W2, Wn] können Sie beliebig viele Werte angeben, die geprüft werden sollen. Die einzelnen Werte werden durch ein Komma getrennt. Trifft einer der Werte zu, ist die Bedingung erfüllt.

 


Beispielregel E

 

Die Bedingung der Spalte ist die Herkunftsstadt des Kunden, abgefragt über die Datenstrom-Variable DS.CUST_CITY. In jeder Zeile werden per INLIST-Operator 4 mögliche Werte angegeben. Trifft einer der Werte zu, ist die Zeile gültig.

Column

 

Panel
bgColorWhite
borderStylenone
Erweitern
title[W1, ..., W2] Operator
Section
Column
width800px
Panel
borderColorLightGray
bgColor#FCFDFE
borderWidth1
borderStyledashed

Mit dem INRANGE Operator [W1, ..., W2] kann ein Wertebereich angegeben werden. Liegt der Wert im Wertebereich, trifft die Bedingung zu.

 


Beispielregel E

 

Die Bedingung der Spalte ist der Rechnungspreis des Kunden, abgefragt über die Datenstrom-Variable DS.PRICE. In jeder Zeile wird ein Wertebereich angegeben. Die Preisspanne, in der sich der Rechnungsbetrag befindet, stellt die darauf abgestimmte Werbung (in einer Ressource).

Column

 

Klicken Sie einen Operatortyp an, um seine Beschreibung zu sehen.

 Manipulation durch Funktionen

...

Section
Column
width33%

 

Column
width33%
Panel
borderColor#FFAA00
bgColor#FFFEEF
borderWidth1px
borderStylesolid
Erweitern
titleVerwandte / Weiterführende Seiten...

Inhalt nach Stichwort
showSpace
showLabelsfalse
max20
spacesRS
showSpacefalse
sorttitle
falsetitleVerwandte Seiten
cqllabel = "7" and space = "RS"
labels7

Column
width33%