...
Aufbau einer Regel im R-S
Abbildung A
In Abb. A sehen Sie den Aufbau einer Regel mit Spalten (1) und Zeilen (2). Eine Spalte definiert genau einen Wert als Bedingung. In Abb. A sind das:
Spaltenname | Erstzulassung | Modell | Preis | Will_Verkaufen | PS |
---|
Wert (Bedingung) | 01.01.2013 | RS5 | 75.500 | TRUE | 450 |
Diese Spaltenwerte sind die Bedingungen der Regel, auf die die Zeilen in den entsprechenden Spalten geprüft werden. Der Wert einer Spalte kann einen der folgenden Datentypen haben (die in Abb. A alle verwendet wurden):
Panel |
---|
borderColor | LightGray |
---|
bgColor | GhostWhite |
---|
borderStyle | solid |
---|
|
|
...
In Abb. A ist Zeile #3 die gültige Auswahl für die Regel, da alle Werte in der Zeile identisch zum jeweiligen Spaltenwert sind. Die Regel hat also den Wert ${Angebot_3}
(3) . Wird die Regel aufgerufen, so ist das Ergebnis:
Codeblock |
---|
|
Aufruf (EVAL-Anweisung): ${NameDerRegel}
Rückgabewert: $${Angebot_3}
Endwert: VerweisVerweis auf "Angebot_3" |
Mit ${Angebot_3}
wird eine Ressource mit dem Namen Angebot_3
zurückgegeben, in diesem Fall z.B. eine binäre Ressource, die das entsprechende Angebot als Bild enthält. Die Verwendung dynamischer Anweisungen wird im Folgenden vorgestellt.
...
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 i n 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.
Abbildung Bscroll-pagebreak
Typischerweise werden in einer Regel Datenstrom-Variablen verarbeitet, z.B. um dynamisch eine Ressource anzuwählen:
Codeblock |
---|
|
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. |
...
Wert | GER | CH | AUT |
---|
Kunde kommt aus | Deutschland | Schweiz | Österreich |
---|
Binäre Ressourcen, die die Flaggen enthalten:
Name der Ressource | ger_flag | ch_flag | at_flag |
---|
Inhalt | Image Modified | Image Modified | Image RemovedImage Added |
---|
Dazugehörige 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.NATIONALITY
. 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 dann in das Dokument eingebunden werden. Im Dokument wird dann die richtige Flagge angezeigt.
Wertfindung innerhalb einer Regel
...
Erweitern |
---|
|
Panel |
---|
borderColor | LightGray |
---|
bgColor | #FCFDFE |
---|
borderWidth | 1 |
---|
borderStyle | dashed |
---|
| 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).
|
|
Erweitern |
---|
|
Panel |
---|
borderColor | LightGray |
---|
bgColor | #FCFDFE |
---|
borderWidth | 1 |
---|
borderStyle | dashed |
---|
| 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: 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) .
|
|
...
Erweitern |
---|
title | [W1, W2, Wn] Operator |
---|
|
Panel |
---|
borderColor | LightGray |
---|
bgColor | #FCFDFE |
---|
borderWidth | 1 |
---|
borderStyle | dashed |
---|
| 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.
|
|
Erweitern |
---|
title | [W1, ..., W2] Operator |
---|
|
Panel |
---|
borderColor | LightGray |
---|
bgColor | #FCFDFE |
---|
borderWidth | 1 |
---|
borderStyle | dashed |
---|
| Mit dem INRANGE Operator [W1, ..., W2] kann ein Wertebereich angegeben werden. Liegt der Wert im Wertebereich, trifft die Bedingung zu. Beispielregel F 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).
|
|
...
STRINGs
werden im R-S case-sensitive behandelt, es wird also zwischen Groß- und Kleinschreibung unterschieden: "HalloWelt" und "hallowelt" sind verschiedene Strings. Wenn Sie eine Datenstrom-Variable oder andere Ressource, die einen String enthält, in einer Regel verwenden, müssen Sie Groß- und Kleinschreibung beachten:
Beispielregel Gscroll-pagebreak
Der Rückgabewert der Regel ist aufgrund der Unterscheidung zwischen Groß- und Kleinschreibung 1. Da die exakte Schreibweise des Strings oft nicht bekannt ist, können Sie die Funktionen ToLowerS / ToUpperS benutzen: ToLowerS konvertiert alle Zeichen des Strings in Kleinbuchstaben, ToUpperS alle Zeichen in Großbuchstaben:
...