Ausführungsreihenfolge für Feld- und Aktions-Hooks

Feld- und Aktions-Hooks werden zu vorgegebenen Zeiten und in einer vorgegebenen Reihenfolge ausgeführt.

Während ein Datensatz geöffnet ist, gelten die folgenden vier Ausführungspunkte für Hooks:

Hooks, die zu Beginn einer Aktion ausgeführt werden

Wenn ein Benutzer eine Aktion einleitet, werden die Hooks in dieser Reihenfolge ausgeführt:

  1. Der Hook für Aktionszugriffssteuerung überprüft den Benutzerzugriff und stoppt die Verarbeitung der Aktion, wenn der Benutzer nicht berechtigt ist, diese einzuleiten. In diesem Fall werden die verbleibenden Hooks nicht ausgeführt.

    Sie können die Zugriffssteuerung für Aktionen ändern. Dies gilt auch für Aktionen, die durch das Anwenden von Paketen zu Ihrem Schema hinzugefügt wurden. Alle Begrenzungen der Zugriffssteuerung, die für Basisaktionen festgelegt werden, gelten auch für alle anderen Aktionen. Für verschachtelte Aktionen wird kein Hook für Zugriffssteuerung ausgeführt.

  2. Der Hook für Feldberechtigung legt fest, ob ein Feld verbindlich, optional oder schreibgeschützt ist.
  3. Der Hook für Aktionsinitialisierung führt Initialisierungstasks aus (z. B. Festlegen von Feldwerten vor Beginn der Aktion).
  4. Der Hook für Feldstandardwert legt den Wert für jedes Feld fest (nur bei Aktionen vom Typ "Submit").
  5. Der Hook für Feldvalidierung validiert den Inhalt aller Felder (außer bei Importaktionen, in denen keine Validierung erfolgt). Hooks für Feldvalidierung können keine nicht vorhandenen Werte validieren (z. B. in einem Pflichtfeld, für das kein Wert festgelegt ist).
  6. Der Hook für Feldauswahlliste wird für jedes Feld ausgeführt, das die Option Recalculate Choice List verwendet. Sind abhängige Felder vorhanden, für die Sie beim Erstellen die Option Recalculate Choice List ausgewählt haben, wird für jedes Feld der Hook für Feldvalidierung und danach der Hook für Feldauswahlliste ausgeführt, bis alle geänderten Felder festgelegt und validiert sind.

    Wenn ein Hook für geänderten Feldwert die Methode "SetFieldValue" für das Objekt "Entity" aufruft, wird der Hook "VALUE_CHANGED" für dieses Feld ausgeführt, sobald "SetFieldValue" aufgerufen wird.

Verschachtelte Aktionen

Bestimmte Hooks werden nicht ausgeführt, solange eine verschachtelte Aktion ausgeführt wird. Dies gilt für Hooks für Zugriffssteuerung und für alle Benachrichtigungs-Hooks. Weitere Informationen hierzu finden Sie in den Abschnitten Aktionen und Zugriffssteuerung und Hooks in verschachtelten Aktionen in der Veröffentlichung IBM Rational ClearQuest API-Referenz.

Hooks, die beim Festlegen eines Feldwerts ausgeführt werden

Wenn ein Benutzer einen Datensatz bearbeitet, werden die Hooks in folgender Reihenfolge ausgeführt:

  1. Der Hook für geänderten Feldwert wird für jedes geänderte Feld ausgeführt.

    Ist die Option Limit to list aktiviert und gibt der Benutzer einen nicht zulässigen Wert ein, wird das Feld als ungültig markiert. Nur wenn der Benutzer einen zulässigen Wert eingibt, wird der nächste Hook ausgeführt.

    Wenn ein Hook für geänderten Feldwert die Methode "SetFieldValue" aufruft, um den Wert eines anderen Felds zu ändern, wird der Hook für geänderten Feldwert des anderen Felds sofort ausgeführt.

  2. Der Hook für Feldvalidierung wird für jedes Feld ausgeführt.
  3. Der Hook für Feldauswahlliste wird für jedes Feld ausgeführt, das die Option Recalculate Choice list verwendet.

    Wenn Sie abhängige Felder mit der Option Recalculate Choice list verwenden, wird zuerst der Hook für Feldvalidierung und danach der Hook für Feldauswahlliste ausgeführt, bis alle geänderten Felder festgelegt und validiert sind.

Feld-Hooks werden nur ausgeführt, wenn der Benutzer die Aktion "Submit" aufruft, es sei denn, das Feld ist als Feld mit abhängigen Feldern gekennzeichnet. Weitere Informationen finden Sie im Abschnitt Mit Hooks eine Websitzung erkennen.

Hooks, die beim Validieren des Datensatzes ausgeführt werden

Vor dem Festschreiben von Änderungen in der Datenbank validiert Rational ClearQuest den Datensatz. Diese Validierung erfolgt durch das Ausführen von Hooks in der folgenden Reihenfolge:

  1. Der Hook für Feldvalidierung wird für jedes Feld in dem Datensatz ausgeführt.
  2. Der Hook für Aktionsvalidierung wird für die ausgeführte Aktion ausgeführt.

Hooks, die beim Festschreiben des Datensatzes ausgeführt werden

Der Hook für Festschreibung wird nach dem Aktualisieren der Datenbank mit den Änderungen des aktuellen Datensatzes, aber noch vor dem Festschreiben der Aktualisierungstransaktion in der Datenbank ausgeführt. Das bedeutet, ein Hook für Festschreibung kann nicht zum Ändern des aktuellen Datensatzes verwendet werden (z. B. können Sie mit einem Festschreibungs-Hook keine Änderungen an einem Feld vornehmen).

Die Verarbeitungsvorgänge in einem Hook für Festschreibung erfolgen, während Sperren in der Datenbank aktiv sind. Diese Sperren hindern möglicherweise andere Benutzer daran, Abfragen auszuführen, neue Datensätze zu erstellen oder vorhandene Datensätze zu ändern. Unter dem Leistungsaspekt ist es sinnvoll, die Verarbeitungsvorgänge in einem Hook für Festschreibung auf ein Minimum zu reduzieren.

Verwenden Sie einen Hook für Festschreibung nur für Aktionen an anderen Datensätzen, die Bestandteil derselben Datenbanktransaktion wie die Hauptaktion sein sollen (z. B. zum Beheben eines Fehlerduplikats, wenn der übergeordnete Fehler behoben wird). Stellen Sie sicher, dass die entsprechenden Aufrufe im richtigen Kontext stehen. Beispielsweise sollte Revert nicht aus einem Hook für Festschreibung und Commit nicht aus einer anderen Aktion als einem Hook für Festschreibung aufgerufen werden.

Nachdem ein Datensatz validiert wurde, wird er in der Datenbank festgeschrieben von Hooks, die in der folgenden Reihenfolge ausgeführt werden:

  1. Der Hook für Aktionsfestschreibung wird ausgeführt.
  2. Die Transaktion wird in der Datenbank festgeschrieben.
  3. Der Aktions-Hook für Benachrichtigung wird ausgeführt. Beispielsweise kann eine E-Mail-Benachrichtigung an verschiedene Benutzer gesendet werden.

Weitere Informationen hierzu finden Sie im Abschnitt Vorhandenen Datensatz bearbeiten in der Veröffentlichung IBM Rational ClearQuest API-Referenz.


Feedback