Versionen im Vergleich

Schlüssel

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

...


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 ErstzulassungModellPreisWill_VerkaufenPS
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
borderColorLightGray
bgColorGhostWhite
borderStylesolid
  • NUMBER (INTEGER)
  • REAL
  • STRING
  • BOOLEAN
  • DATE

Scroll Pagebreak

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
themeConfluence
Aufruf (EVAL-Anweisung):	  ${NameDerRegel}
Rückgabewert: 				             ${Angebot_3} 
Endwert:	   				                  Verweis 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.

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.

...

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 B

Scroll Pagebreak

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

Codeblock
titleBeispiel
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 :

Wert GERCHAUT
Kunde kommt aus DeutschlandSchweizÖsterreich

...

Binäre Ressourcen, die die Flaggen enthalten:

Name der Ressource ger_flagch_flagat_flag
Inhalt

Image Added

Flagge DeutschlandImage Removed

Image Added

Flagge SchweizImage Removed

Image Added

Flagge ÖsterreichImage Removed

Scroll Pagebreak

Dazugehörige Regel:


Abbildung C


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.


Scroll Pagebreak

Wertfindung innerhalb einer Regel

...


Die Regel in 
Abb. D 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 zum Spaltenwert, wird mit der Prüfung von Spalte 2 in Zeile 1 fortgefahren. Ist der Wert von Zeile 1 in Spalte 2 wieder identisch zum Spaltenwert der 2. Spalte,  wird mit der Prüfung von Spalte 3 in Zeile 1 fortgefahren. Ist auch der Wert von Spalte 3 in Zeile 1 identisch zum Spaltenwert,  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 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 ).

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:

...

Erweitern
title< und > Operator
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.

Erweitern
title <= und >= Operator
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 von  EQUALLESS verläuft analog.

Erweitern
title [W1, W2, Wn] Operator
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.

...