next up previous contents index
Next: Datenbankschema Up: Modulprogrammierung Previous: Modulprogrammierung

Das Modulkonzept

Für den Aufbau der HTML-Seite eines Workflow-Schritts ist das PHP-Skript 'workflow.php' zuständig. Es erzeugt den Rahmen der HTML-Seite, der u. a. den Namen und den Status des Workflow-Schritts wiedergibt. Die Funktionalität des Workflow-Schritts ist in Modulen ausgelagert, die von 'workflow.php' innerhalb des Rahmens eingebunden werden. Dabei kann ein Workflow-Schritt ein oder mehrere Module benutzen. Die Namen der Module müssen bei der Workflow-Definition angegeben werden und finden sich in der Datenbank in der Relation 'workflow_schritt_modul' wieder. Jedem Modul entspricht ein PHP-Skript mit dem Namen 'module-<Modulname>.inc.php', das seinerseits eine Funktion 'mdoule_<Modulname>_main($control_args, $module_args)' enthalten muss. Die Arbeitsweise von 'workflow.php' und dessen Zusammenspiel mit den Modulen wurde bereits in den Abschnitten 3.4 und 3.5 ausführlich beschrieben.

Aus den Anforderungen an das Workflow-System (siehe Abschnitt 1.1) und der Analyse einiger Workflows konnten drei Arten von Funktionalitäten bestimmt werden, die von den Modul-Skripten erbracht werden müssen:

1.
Die häufigste Aufgabe ist das Darstellen und Manipulieren von DB-Inhalten. Die Library 'lib-dbtable.inc.php' stellt Funktionen bereit, mit deren Hilfe solche Aufgaben in den Module realisiert werden können. Die Library wird in Abschnitt 4.3 näher beschrieben.
2.
Um weniger privilegierten Personen den Zugriff auf die Datenbank zu ermöglichen, müssen temporäre Tabellen und Views eingerichtet und freigeschaltet werden. Hierbei bietet die Bibliothek 'lib-extmodul-control.inc.php' (siehe Abschnitt 4.4) Unterstützung.
3.
Für bestimmte Tätigkeiten existieren bereits andere Skripte oder Programme, die aus der Workflow-Anwendung heraus aufgerufen werden sollen. Für solche Aufgaben kann in den Modulen auf die Library 'lib-file.inc.php' zurückgegriffen werden. Die Verwendung wird in Abschnitt 4.5 erklärt.
Ein Modul kann dabei mehrere, auch verschiedene Funktionalitäten enthalten. Die einzelnen Funktionsblöcke innerhalb eines Moduls werden im Folgenden Submodule genannt.

Wie generisch die einzelnen Module gehalten werden, bleibt dem Modulprogrammierer überlassen. In manchen Fällen kann es sinnvoll sein, ein sehr spezialisiertes Modul anzulegen. Dann sind alle für das Modul notwendigen Parameter fest im Modul-Skript eingebaut. Im anderen Extremfall kommen alle Parameter von außen. Für das Übergeben der Parameter an das Modul sind zwei Möglichkeiten vorgesehen:

1.
Es können bereits bei der Workflow-Definition Parameter angegeben werden. Nach dem Parsen des XML-Files, das die Definition enthält, finden sich die Parameter in der Relation 'workflow_schritt_modul_param' der Datenbank wieder. Dort können sie nachträglich geändert und weitere eingefügt werden. Diese Parameter werden dem Modul-Skript beim Aufruf der Main-Funktion des Moduls im 2. Argument ($modul_param) übergeben. Hierbei handelt es sich um ein Array, das mit den Namen der Parameter indiziert ist.
2.
Es können extra PHP-Skripte angelegt werden, die als Container für die Parameter dienen. Für diese Skripte gibt es folgende Namenskonvention: moduleconfig-<Name>[-<WorkflowNummer>].inc.php (<WorkflowNummer> ist optional). Im Modul-Skript kann der Name des Config-File mit der Funktion 'moduleconfig_filename($<Name>)' bestimmt werden. Die Funktion bietet den Vorteil, dass im Modul-Skript nur der Bestandteil <Name> des Config-File bekannt sein muss. Zunächst überprüft 'moduleconfig_filename', ob für die aktuelle Workflow-Nummer ein File mit dem Namen 'moduleconfig-<Name>-<WorkflowNummer>.inc.php' vorhanden ist. Falls nicht wird nach einem File mit dem Namen 'moduleconfig-<Name>.inc.php gesucht. Existiert auch diese Datei nicht, gibt die Funktion 'false' zurück. Nachdem der Name des gültigen Config-Files bestimmt ist, kann die Datei mit Hilfe der include-Funktion eingebunden werden.
An dieser Stelle sei noch auf die Datei 'workflow-defines.inc.php' hingewiesen. Sie enthält einige für den Workflow zentrale Datei- bzw. Verzeichnisnamen, u. a. den Ort, an dem die Config-Files abgelegt sind.


next up previous contents index
Next: Datenbankschema Up: Modulprogrammierung Previous: Modulprogrammierung
Copyright Munich Network Management Team