Der Schlüssel 'new_tupel' im Parameter-Array für die Funktion 'modul_extmod'
nimmt die Details für die Erzeugung einer temporären Tabelle auf.
Der Name der erzeugten temporären Tabelle wird in der Relation 'workflow_extmod_param'
unter dem Namen 'table_new' abgespeichert. Die temporäre Tabelle
kann im Zusammenspiel mit 'insert' und 'check' verwendet werden. Das
Beispiel aus Abschnitt
könnte um eine temporäre Tabelle erweitert werden, um Daten aufzunehmen,
die durch die Überprüfung mit dem Check-View durchgefallen sind. Eine
temporäre Tabelle kann aber auch ohne Insert- und Check-Views genutzt
werden, wenn man grundsätzlich keine Daten von außen in die regulären
Tabellen der DB gelangen lassen will. Die Daten der temporären Tabelle
müssen in beiden Fällen ``manuell'', am besten nach vorheriger
Überprüfung in die regulären Tabellen übernommen werden.
Da die temporäre Tabelle Daten enthält die später in die regulären
Tabellen übernommen werden sollen, müssen sich die Attribute der temporären
Tabelle auf Attribute der regulären Tabellen beziehen. Unter dem Schlüssel
'attribs' von 'new_tupel' ist deshalb ein Array abgelegt. Dieses
Array enthält als Schlüssel die Namen der regulären Tabellen und als
Werte die Attribute, die für die temporäre Tabelle genutzt werden
sollen. Die Attribute sind durch Komma getrennt in einem String abgelegt.
Tabelle beschreibt die
Bestandteile von 'new_tupel'.
Bemerkungen:
'tmptableid': Die Generierung der Namen der temporären Tabellen durch die Workflowanwendung soll sicherstellen, dass die Namen in der DB eindeutig sind. Die Temptable-IDs müssen hingegen nur für einen Workflow eindeutig sein. Dadurch kann ein Modul mit einem ExtMod-Submodul in mehreren Workflows verwendet werden, ohne dass besondere Vorkehrungen für die Namen der temporären Tabellen getroffen werden müssen. Die Namen der temporären Tabellen werden in die Relation 'workflow_extmod_param' eingetragen. Die Namen können außerdem mit Hilfe der Funktion 'view_info($tmptableid)' abgefragt werden. Die Funktion gibt ein Array zurück, das unter dem Schlüssel 'name' den Namen der temporären Tabelle enthält.
'attribs': Beim Erzeugen einer neuen Tabelle muss neben dem Namen auch der Typ für jedes Attribut angegeben werden. Die Namen der Attribute der temporären Tabelle ergeben sich aus den Namen der Attribute der regulären Tabelle, auf die sich die temporäre Tabelle bezieht. Auch die Typen werden entsprechend den Typen der regulären Tabellen gesetzt.
Im folgenden Beispiel wird eine temporäre Tabelle erzeugt, die die Daten der Studenten aufnimmt, die sich zu einer Vorlesung anmelden. Als Primärschlüssel werden die Attribute 'matrikelnummer' und 'universitaetsnummer' benutzt. Der Verzicht auf den Primärschlüssel kann durchaus sinnvoll sein, um zu verhindern, dass bösartige Studenten mit falschen Einträgen die Eingabe von anderen Studenten verhindern. Dadurch kann es in der temporären Tabelle mehrere Tupel mit der selben Matrikelnummer-Uni-Kombination geben. Der Betreuer der Vorlesung muss dann den plausibelsten auswählen.
id=>"steuerung_extmod",
extmod_id=>"extmod1",
aufruf_id=>"test",
new_tupel=>array(
tmptableid=>"vorlesungsanmeldung_new",
attribs=>array(
student=>array("matrikelnummer", "universitaetsnummer", "name",
"vorname", "hauptfach", "nebenfach", "aufbaustudent",
"cipkennung", "telefonnummer", "postleitzahl", "ort", "strasse"),
student_besucht_uebung=>array("besuchtuebung",
"gruppennummerpraeferenz1", "gruppennummerpraeferenz2"),
mailadressenstudent=>array("mailadresse"),
),
primkeys=>array("matrikelnummer", "universitaetsnummer"),
rechte=>"SELECT, INSERT",
),
);
modul_extmod($modul_param);