Die Module vom Typ 'parent', oder kurz Parent-Module, kommen nur in Workflow-Schritten vom Typ 'parent' vor. Sie dienen dort dazu, die Steuerung über den Subworkflow unter dem Parent-Schritt zu übernehmen.
Ein Parent-Modul muss wie ein normales Modul auch die Modulfunktion
``main'' besitzen. Der Inhalt ihrer $control_args ist derselbe
wie bei normalen Modulen und es gibt keine Rückgaben. Diese wird aufgerufen,
falls der Parent-Schritt selbst der aktuell angezeigte und verarbeitete
Workflow-Schritt ist, d.h. seine Schrittnummer der Wert von $param[wf_step]
ist (siehe ). Im Gegensatz
zu normalen Modulen wird aber das Parent-Modul i.a. Funktionen zum
Lesen und Verändern des Status des Subworkflows verwenden. Typische
Funktionen zum Status-Lesen hierbei sind 'wf_step_status', 'wf_subworkflow_status',
'wf_step_durchlaufnummer'. Zum Aktivieren bzw. Deaktivieren des
Subworkflows könnten die Funktionen 'wf_subworkflow_open' bzw. 'wf_subworkflow_close'
benutzt werden. Jedoch ist die indirekte Aufruf-Variante mit Global-Actions
(z.B. via 'wf_globalaction_form_element' siehe
)
vorzuziehen.
Das Schließen des Subworkflows unter dem Parent-Schritt sollte jedoch
i.a. dem Subworkflow selbst, d.h. den End_Schritten des Subworkflows
vorbehalten bleiben, so dass sich der Parent-Schritt meist nur um
die Aktivierung kümmern muss. Jedoch kann der Parent-Schritt über
die Funktion 'wf_notify' (siehe )
abfragen, ob eine Schließung des Subworkflows im aktuellen php-Skript-Aufruf
vor Ausführung des Parent-Moduls erfolgte (z.B. durch Global-Action-Mechanismus).
Der Funktionsaufruf von 'wf_notify($parentstep)' gibt ein Array
zurück, in dem der Parameter 'subworkflow_has_closed' gleich '1'
ist, falls eine Schließung des Subworkflows in diesem Aufruf erfolgte.
Ebenso ist der Parameter 'subworkflow_has_opened' gleich '1', falls
eine Aktivierung des Subworkflows in diesem Aufruf erfolgte.
Weiterhin verwalten Parent-Module oft zusätzliche temporäre Daten
(meist gespeichert in der Relation 'workflow_temp_data'), die für
den aktuellen Subworkflow-Durchlauf relevant sind, d.h. Daten die
Verbindung zwischen den Workflow-Status-Informationen und den Anwendungsdaten
herstellen. Ein Beispiel hierfür wäre die Nummer einer Klausur, die
in einem bestimmten Subworkflow-Durchlauf durchgeführt wird. Einerseit
ist diese Nummer ein Attribut in den Anwendungsdaten über die Klausuren,
andererseits ist sie mit dem aktuellen Subworkflow-Durchlauf verbunden.
Es steht den Parent-Modulen jedoch frei, ob sie diese Daten in der
Relation 'workflow_temp_data' über die in
beschriebenen Funktionen ('wf_temp_data...') oder in den Anwendungs-Relationen
(bei passendem Anwendungs-Datenbank-Schema) selbst speichern.
Um einerseits den Schritten eines Subworkflows diese zusätzlichen
temporären Informationen zugänglich zu machen und andererseits kurze
Informationen über den aktuellen Subworkflow-Status anzuzeigen, hat
jedes Parent-Module eine Modulefunktion mit Namen ``head''.
Bevor die Module des aktuellen Schrittes ausgeführt und angezeigt
werden, werden rekursiv von allen indirekten Parent-Schritten die
'head'-Funktion in den Parent-Module aufgerufen (vgl. ).
Damit hat der Benutzer auch durch die Anzeige einen groben Überblick
über die Subworkflow-Struktur. Vor allem aber dienen die head-Funktionen
der Übergabe der temporären Informationen an die Schritte des Subworkflows,
sowie einiger Subworkflow-Status-Information, die nur der Parent-Schritt
kennt, an das globale Workflow-System. Der 'head'-Modulfunktion steht
es dabei frei auch Änderungsmöglichkeiten (wie in der ``main''-Modulfunktion)
dem Benutzer anzubieten.
Das Array $control_args für den Aufruf der 'head'-Funktion eines
Parent-Moduls eines Parent-Schrittes hat folgenden Inhalt (vgl ):
Wie normale Module können auch Parent-Module weitere Modulfunktionen
enthalten, die aufgerufen bei $param[wf_step_position]=''Modulepage''
(siehe ) selbst eine ganze HTML-Seite
allein erzeugen.