Für allgemeine Informationen über den Procedure Builder, siehe Kapitel Kapitel 26.
Sie können bestimmte Platzhalter in der Definition der Prozeduren und
Packages verwenden. In der folgenden Liste finden Sie deren Beschreibung:
| Platzhalter | Beschreibung |
---|
<COMPID> |
Die QF-Test ID der Komponente
| <COMPNAME> |
Der Name der Komponente
| <COMPFEATURE> |
Das Merkmal der Komponente
| <COMPCLASS> |
Die aufgezeichnete Klasse der Komponente
| <COMPTKCLASS> |
Die spezifische Klasse der Komponente
| <COMPSYSCLASS> |
Die Systemklasse der Komponente
| <COMPGENCLASS> |
Die generische Klasse der Komponente
| <COMPEF-name-des-weiteren-merkmals> |
Der Wert des angegebenen weiteren Merkmals der Komponente
| <CURRENTVALUE> |
Der aktuelle Wert der Komponente, z.B. der Text eines Textfeldes
oder der aktuelle Wert einer Combobox etc.
| <CURRENTENABLEDSTATE> |
Der aktuelle Status, ob die Komponente enabled ist.
| <CURRENTSELECTEDSTATE> |
Der aktuelle Status, ob die Komponente selektiert ist.
| <CURRENTEDITABLESTATE> |
Der aktuelle Status, ob die Komponente editierbar ist.
| <PCOMPID> |
Die QF-Test ID der Elternkomponente
| <PCOMPNAME> |
Der Name der Elternkomponente
| <PCOMPFEATURE> |
Das Merkmal der Elternkomponente
| <PCOMPCLASS> |
Die Klasse der Elternkomponente
| <PCOMPEF-name-des-weiteren-merkmals> |
Der Wert des angegebenen weiteren Merkmals der Elternkomponente
| <GPCOMPID> |
Die QF-Test ID der Großelternkomponente
| <GPCOMPNAME> |
Der Name der Großelternkomponente
| <GPCOMPFEATURE> |
Das Merkmal der Großelternkomponente
| <GPCOMPCLASS> |
Die Klasse der Großelternkomponente
| <GPCOMPEF-name-des-weiteren-merkmals> |
Der Wert des angegebenen weiteren Merkmals der Großelternkomponente
| <ENGINE> |
Der Name der Engine, entweder 'awt', 'swt', 'web' oder 'fx'.
| <ENGINE2> |
Der alternative Name der Engine, entweder 'swing', 'swt', 'web' oder 'fx'.
|
|
| | Tabelle 55.1: Platzhalter für Komponentenprozeduren | |
Für Prozeduren einer Container oder Composite Komponente können Sie
zusätzlich noch Platzhalter für deren Kindkomponenten definieren. Diese
sind in der folgenden Liste erklärt:
| Platzhalter | Beschreibung |
---|
<CCOMPID> |
Die QF-Test ID der Kindkomponente
| <CCOMPNAME> |
Der Name der Kindkomponente
| <CCOMPFEATURE> |
Das Merkmal der Kindkomponente
| <CCOMPCLASS> |
Die aufgezeichnete Klasse der Kindkomponente
| <CCOMPTKCLASS> |
Die spezifische Klasse der Kindkomponente
| <CCOMPSYSCLASS> |
Die Systemklasse der Kindkomponente
| <CCOMPGENCLASS> |
Die generische Klasse der Kindkomponente
| <CCOMPEF-name-des-weiteren-merkmals> |
Der Wert des angegebenen weiteren Merkmals der Kindkomponente
| <CCURRENTVALUE> |
Der aktuelle Wert der Kindkomponente, z.B. der Text eines Textfeldes
oder der aktuelle Wert einer Combobox etc.
| <CCURRENTENABLEDSTATE> |
Der aktuelle Status, ob die Kindkomponente enabled ist.
| <CCURRENTSELECTEDSTATE> |
Der aktuelle Status, ob die Kindkomponente selektiert ist.
| <CCURRENTEDITABLESTATE> |
Der aktuelle Status, ob die Kindkomponente editierbar ist.
|
|
| | Tabelle 55.2: Zusätzliche Platzhalter für Containerprozeduren | |
In vielen Projekten werden die Prozedur- und Parameternamen aus den Platzhaltern
COMPNAME
, COMPFEATURE
oder
COMPEF-qfs:labelBest
generiert, weil diese den
Komponentenbezeichner oder die Beschriftung beinhalten.
Nun kann es allerdings vorkommen, dass nicht alle Komponenten diese Platzhalter vollständig füllen können, z.B.
könnte bei neu hinzugefügten Buttons der Name fehlen oder es kann für ein Textfeld kein passendes Label ermittelt
werden. Nun kann man für diese Ausnahmen zwar Resolver implementieren, um auch diese Komponenten mit etwas
brauchbaren zu füllen, aber so ein Schritt muss wieder stabile Informationen liefern. Stattdessen ist es
nun auch möglich, Rückgriffswerte, so genannte Fallbackwerte, für diese Platzhalter zu spezifizieren.
Diese Platzhalter werden herangezogen, wenn der eigentliche Wert nicht verfügbar ist, es wird also auf
diese Werte zurückgegriffen.
Diese Werte definieren Sie im Attribut 'Bemerkung' der konfigurierten 'Prozedur'- oder 'Packages'-Knoten.
Hierzu schreiben Sie @fallback_
und dann den Namen des Platzhalters. Danach definieren Sie die
Platzhalter, die als Rückgriffswerte dienen sollen. Für den Platzhalter COMPNAME
, sieht eine
solche Definition also wie folgt aus: @fallback_COMPNAME COMPFEATURE
. Hier wird der Wert des
Platzhalters COMPFEATURE
verwendet, falls kein Wert für COMPNAME
ermittelt werden konnte.
Es ist übrigens auch möglich, mehrere Fallbackwerte für einen Platzhalter anzugeben, z.B.
@fallback_COMPEF-qfs:labelBest COMPFEATURE,COMPNAME
. Wie Sie sehen, werden diese Platzhalter also
kommasepariert angegeben.
Sie können die Erstellungen von Packages und Prozeduren über das Setzen des
Attributs 'Bemerkung' des jeweiligen 'Package'- bzw. 'Prozedur'-Knotens beeinflußen.
| Beschreibungsattribut | Beschreibung |
---|
@ABSOLUTECALL |
Verwendung in Prozeduren, die mit @FORCHILDREN Prozeduraufrufe erzeugen.
Wenn dieser Wert für den Prozeduraufruf gesetzt ist,
wird nicht procbuilder als erstes Package im
Attribut 'Name der Prozedur' des Prozeduraufrufs erzeugt, sondern
direkt der Prozeduraufruf, der im Anschluss an die Kindkomponentenklasse
spezifiziert ist.
| @CONDITION |
Hier kann man eine Bedingung für die Erstellung eines Packages,
einer Prozedur oder eines Aufrufs angeben. Bedingungen können
entweder in Jython, Groovy, JavaScript oder als regulärer Ausdruck
(vgl. Abschnitt 48.3) definiert
werden. Näheres hierzu finden Sie weiter unten.
| @EXCEPT |
Hier kann man Klassen angeben, wofür das Package bzw. die Prozedur nicht erstellt
werden soll. Dieser Wert ist dann nützlich, wenn Sie Prozeduren
für eine abstrakte Klasse definiert haben und nicht alle
Ableitungen die entsprechenden Prozeduren benötigen.
| @FORCECREATION |
In Prozeduren, in denen @FORCHILDREN gesetzt ist, bewirkt diese
Anweisung, dass der Prozeduraufruf unabhängig von Kindkomponenten einmalig
angelegt wird.
| @FORCHILDREN |
Wenn dieser Wert für Container/Composite Prozeduren gesetzt ist,
dann wird QF-Test in dieser Prozedur versuchen, die einzelnen
Prozeduren der Kindkomponenten aufzurufen.
| @NOTINHERIT |
Wenn dieser Wert gesetzt ist, dann wird dieses Package bzw. diese Prozedur nur für
Komponenten von exakt dieser Klasse verwendet und nicht für
deren Ableitungen.
| @SUBITEM | Funktioniert zur Zeit nur für Menüs. Wenn dieser Wert gesetzt ist
wird das Package bzw. die Prozedur nur für Menüelemente der zweiten Hierarchieebene
erstellt.
| @SWTSTYLE |
Prüft eine bestimmte Eigenschaft eines SWT-Buttons. Dieses
SWT-spezifische Attribut ist notwendig, weil SWT zwischen
Checkboxen, Comboboxen, Radiobuttons und normale Buttons nur
mittels einer bestimmten Eigenschaft unterscheidet. Für einen
normalen Button können Sie @SWTSTYLE=PUSH , für
einen Radiobutton @SWTSTYLE=RADIO definieren etc..
|
|
| | Tabelle 55.3: Bemerkungsattribute für die Prozedurenerstellung | |
In einigen Fällen kann es nützlich sein die Komponentenhierarchie in
der Packagestruktur abzubilden. Dieser Ansatz erleichtert das Auffinden
der jeweiligen Prozedur. Wenn Sie die Komponentenhierarchie in die
Erstellung miteinbeziehen wollen, können Sie folgende Platzhalter in den
Packgenamen verwenden:
| Platzhalter | Beschreibung |
---|
<HIERARCHY> |
Erstellt Packages für die gesamte Komponentehierarchie. Für
die Ersetzung wird die QF-Test ID der Komponente herangezogen.
| <HIERARCHY_NAME> |
Erstellt Packages für die gesamte Komponentehierarchie. Für
die Ersetzung wird der Komponentenname herangezogen. Besitzt
die Komponente keinen Namen, wird diese ignoriert.
| <HIERARCHY_FEATURE> |
Erstellt Packages für die gesamte Komponentehierarchie. Für
die Ersetzung wird das Komponentenmerkmal herangezogen.
Besitzt
die Komponente kein Merkmal, wird diese ignoriert.
| <IHIERARCHY> |
Erstellt Packages nur für interessante Komponenten in der
Hierarchie. Eine interessante Komponente hat ein gesetztes
Attribut 'Merkmal'.
Für die Ersetzung wird die QF-Test ID der Komponente herangezogen.
| <IHIERARCHY_NAME> |
Erstellt Packages nur für interessante Komponenten in der
Hierarchie. Eine interessante Komponente hat ein gesetztes
Attribut 'Merkmal'.
Für die Ersetzung wird der Komponentenname herangezogen.
Besitzt
die Komponente keinen Namen, wird diese ignoriert.
| <IHIERARCHY_FEATURE> |
Erstellt Packages nur für interessante Komponenten in der
Hierarchie. Eine interessante Komponente hat ein gesetztes
Attribut 'Merkmal'.
Für die Ersetzung wird das Komponentenmerkmal herangezogen.
Besitzt
die Komponente kein Merkmal, wird diese ignoriert.
| <MHIERARCHY> |
Erstellt Packages nur für Menükomponenten in der
Hierarchie. Menükomponenten sind Menüs und Menüelemente.
Für die Ersetzung wird die QF-Test ID der Komponente herangezogen.
| <MHIERARCHY_NAME> |
Erstellt Packages nur für Menükomponenten in der
Hierarchie. Menükomponenten sind Menüs und Menüelemente.
Für die Ersetzung wird der Komponentenname herangezogen.
Besitzt
die Komponente keinen Namen, wird diese ignoriert.
| <MHIERARCHY_FEATURE> |
Erstellt Packages nur für Menükomponenten in der
Hierarchie. Menükomponenten sind Menüs und Menüelemente.
Für die Ersetzung wird das Komponentenmerkmal herangezogen.
Besitzt
die Komponente kein Merkmal, wird diese ignoriert.
|
|
| | Tabelle 55.4: Platzhalter für die Hierarchie | |
@CONDITION
erlaubt es Ihnen, eine
Bedingung für die Erstellung eines Knotens zu konfigurieren. Diese wird
zum Erstellzeitpunkt ausgewertet.
Diese Bedingungen können verwendet werden, um auf einen bestimmten
Namen zu prüfen oder auf das Vorhandensein eines bestimmten
Buchstabens zu reagieren. Falls die Bedingung nicht erfüllt wird,
wird der entsprechende Knoten nicht erzeugt. Sie können
selbstverständlich alle bekannten Platzhalter wie <COMPID> oder
<CCOMPNAME> verwenden.
| Bedingung | Bedeutung |
---|
@CONDITION jython "<COMPFEATURE>".startswith("abc") |
Hier wird eine Jythonbedingung definiert, die den Knoten nur
dann erzeugt, wenn das Merkmal des Knotens mit 'abc' beginnt.
Es ist hier möglich sämtliche Vergleichsmethoden von Jython zu verwenden.
| @CONDITION groovy "<COMPFEATURE>".startsWith("abc") |
Hier wird eine Groovybedingung definiert, die den Knoten nur
dann erzeugt, wenn das Merkmal des Knotens mit 'abc' beginnt.
Es ist hier möglich sämtliche Vergleichsmethoden von Groovy zu verwenden.
| @CONDITION javascript "<COMPFEATURE>".startsWith("abc") |
Hier wird eine JavaScriptbedingung definiert, die den Knoten nur
dann erzeugt, wenn das Merkmal des Knotens mit 'abc' beginnt.
Es ist hier möglich sämtliche Vergleichsmethoden von JavaScript zu verwenden.
| @CONDITION regexp "<COMPFEATURE>" =~ "abc.*" |
Hier wird eine Bedingung mittels regulären Ausdrucks
(vgl. Abschnitt 48.3) definiert, die den Knoten nur
dann erzeugt, wenn das Merkmal des Knotens den Ausdruck
'abc.*' entspricht.
Es ist hier möglich sämtliche Möglichkeiten von regulären
Ausdrücken von Java zu verwenden.
| @CONDITION regexp "<COMPFEATURE>" !~ "abc.*" |
Hier wird eine Bedingung mittels regulären Ausdrucks
(vgl. Abschnitt 48.3) definiert, die den Knoten nur
dann erzeugt, wenn das Merkmal des Knotens nicht den Ausdruck
'abc.*' entspricht.
Es ist hier möglich sämtliche Möglichkeiten von regulären
Ausdrücken von Java zu verwenden.
|
|
| | Tabelle 55.5: Beispiele für @CONDITION | |
Falls Sie mehrzeilige Bedingungen definieren wollen, können Sie dies
mit einem '\' am Ende der ersten Zeile tun.