Handbuch

47
Die Procedure Builder Definitionsdatei

Für allgemeine Informationen über den Procedure Builder, siehe Kapitel Kapitel 21.

47.1
Platzhalter

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 47.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 47.2:  Zusätzliche Platzhalter für Containerprozeduren
4.1.3+47.1.1
Rückgriffswerte für Platzhalter

In vielen Projekten werden die Prozedur- und Parameternamen aus den Platzhaltern COMPNAME, COMPFEATURE oder COMPEF-qfs:label generiert, weil diese die Beschriftung oder sprechende Namen 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 'Bemerkung' Attribut 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:label COMPFEATURE,COMPNAME. Wie Sie sehen, werden diese Platzhalter also kommasepariert angegeben.

47.2
Spezielle Bedingungen für die Definition von Packages und Prozeduren

Sie können die Erstellungen von Packages und Prozeduren über das Setzen des 'Bemerkung' Attributes des jeweiligen 'Package' bzw. 'Prozedur' Knotens beeinflußen.

Beschreibungsattribut Beschreibung
@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.
@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.
@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.
@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 oder als regulärer Ausdruck definiert werden. Näheres hierzu finden Sie weiter unten.
@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..
@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.
Tabelle 47.3:  Bemerkungsattribute für die Prozedurenerstellung
47.3
Auswertung der Komponentenhierarchie

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 'Merkmal' Attribut. 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 'Merkmal' Attribut. 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 'Merkmal' Attribut. 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 47.4:  Platzhalter für die Hierarchie
3.4+47.4
Details zu @CONDITION

@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 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 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 47.5:  Beispiele für @CONDITION

Falls Sie mehrzeilige Bedingungen definieren wollen, können Sie dies mit einem '\' am Ende der ersten Zeile tun.