Die sogenannten Go-Actions sind kleine Code-Schnippsel, mit denen sich Workflows modellieren lassen. Dabei gibt es zu jeder Aktion die Möglichkeit, Folgeaktionen zu definieren.
Das System geht davon aus, dass alle Aktionen in einer Baumstruktur organisiert sind. Jede Aktion, sofern sie nicht auf der obersten Ebene im Baum ist, hat also eine Eltern- und eine Wurzel-Aktion (oder auch Ursprungs-Aktion). Diese können gegebenenfalls auch identisch sein.
Go-Actions werden über kleine PHP-Skripte definiert, dabei steht eine Reihe von speziellen Funktionen zu Verfügung, die die größte Komplexität der easydb abfangen. Der Code wird dabei durch den Edit-Callback-Mechanismus des Creators ausgeführt, das heißt, dass die Skripte in jeder Stufe der Edit-Callbacks ausgeführt werden. Folgende Stufen sind dabei definiert:
Die speziellen Funktionen implementieren nicht immer alle Stufen der Edit-Callbacks, werden also teilweise nur in bestimmten Stufen aktiv.
AFTER_DATABASE_UPDATE
, AFTER_SHOW
loadFrame($frameName, $baseRequest, [$key, $value ...])
Lädt eine neue Seite in einen easydb-Frame. Neben der Basis-URL (üblicherweise relativ, z.B. /search/BildSuche
) können auch mehrere Schlüssel-Wert-Paare angegeben werden.
AFTER_UPDATE
, AFTER_INSERT
checkMinLinkedNm($linkedTable, $linkTable, $n, $message)
checkMaxLinkedNm($linkedTable, $linkTable, $n, $message)
Überprüft die Anzahl der mit der Aktion verlinkten Datensätze. Ist deren Anzahl kleiner $n
(checkMinLinkedNm
) oder größer $n
(checkMaxLinkedNm), wird eine EditException
mit der Meldung $message
erzeugt.
AFTER_UPDATE
, AFTER_INSERT
, AFTER_SHOW
getEditId()
getParentEditId()
Liefert die ID der Aktion (getEditId
) oder der Eltern-Aktion (getParentEditId
) zurück.
EDIT_PROCESS_START
resetMarkers($maskName)
Setzt die Markierungen für die mit $maskName
angegebene Suche zurück.
BEFORE_UPDATE
, BEFORE_INSERT
, AFTER_UPDATE
, AFTER_INSERT
, AFTER_SHOW
getDbId($table, $field, $value)
Gibt die ID eines in der Datenbank gespeicherten Datensatzes zurück. Der Datensatz wird über den Tabellenname sowie ein Schlüsselfeld und dessen Wert identifiziert.
AFTER_UPDATE
, AFTER_INSERT
, AFTER_SHOW
getLinkedIdsListNm($linkedTable, $linkTable)
getParentLinkedIdsListNm($linkedTable, $linkTable)
Gibt eine komma-separierte Liste der IDs der mit der Aktion (bzw. der Eltern-Aktion) verlinkten Datensätze zurück.
BEFORE_UPDATE
, BEFORE_INSERT
setValue($field, $value)
Setzt einen Wert für die gerade bearbeitete Aktion.
AFTER_UPDATE
, AFTER_INSERT
setLinkedValuesNm($linkedTable, $linkTable, $field, $value)
appendLinkedValuesNm($linkedTable, $linkTable, $field, $value)
Setzt oder erweitert den Wert für ein Feld bei allen mit der Aktion verlinkten Datensätzen.
BEFORE_UPDATE
, BEFORE_INSERT
getParentValue($field)
Gibt den Wert eines Feldes der Eltern-Aktion zurück.
AFTER_UPDATE
, AFTER_INSERT
setParentValue($field, $value)
setRootValue($field, $value)
Setzt den Wert eines Feldes bei der Eltern- oder der Wurzel-Aktion.
AFTER_UPDATE
, AFTER_INSERT
removeParentLinkedListNm($linkedTable, $linkTable, $removeIds)
Entfernt die Verlinkung eines oder mehrerer Datensätze (bestimmt durch die komma-separierte Liste von IDs in $removeIds
) von der Eltern-Aktion.
EDIT_ID_SET
email($maskName)
Sendet eine E-Mail, bestimmt durch die Creator-Maske $maskName
.
EDIT_PROCESS_START
save()
Speichert die gerade bearbeitete Aktion.
// überprüfe, ob mindestens eine Verzeichnungseinheit verlinkt ist, // ansonsten gib des Fehler VE_MISSING aus. $message = string_tool("VE_MISSING"); checkMinLinkedNm('ve', 'aktion__ve', 1, $message);
// setze das Datum auf das aktuelle Datum setValue('**datum', 'NOW()');
// übernimm 'bereitstellung_gew' & 'lk_benutzer_id' von der Elternaktion $v = getParentValue('bereitstellung_gew'); setValue('bereitstellung_gew', $v);
$v = getParentValue('lk_benutzer_id'); setValue('lk_benutzer_id', $v);
// setze den Status auf 'erledigt' $v = getDbId('aktionsstatus', 'name', 'erledigt'); setValue('lk_status_id', $v);
// speichere die Aktion save();
// die folgenden Operationen werden nach dem Speichern durchgeführt, // dafür sorgt nicht die Stelle im Skript, sondern die Edit-Callback-Stufe, // in der die Funktionen aktiv werden
// setze Werte in den verlinkten VEs $v = getDbId('aktueller_standort', 'name', 'Magazin - nicht gefunden'); setLinkedValueNm('ve', 'aktion__ve', 'lk_aktueller_standort_id', $v); setLinkedValueNm('ve', 'aktion__ve', 'nicht_bestellbar', true);
// hänge einen Text an ein Feld für jede VE an appendLinkedValueNm('ve', 'aktion__ve', 'nicht_bestellbar_bemerkung', "\nMagazinbestellung - nicht gefunden");
// entferne die verlinkten VEs aus der Elternaktion $ids = getLinkedIdsListNm('ve', 'aktion__ve'); removeParentLinkedListNm('ve', 'aktion__ve', $ids);
// lade verschiedene Fenster mit neuen Inhalten loadFrame('right', '/detail/AktionMagazinVerlust'); $ids = getLinkedIdsListNm('ve', 'aktion__ve'); loadFrame('mainframe', '/search/VESuche_Aktionen', 'loadids', $ids); loadFrame('sidebarframe', '/search/AktionenSuche?&force_search=Y&use_session_request=1');
Variable | Vorbelegung |
GO_ACTION_ACTION_TABLE |
aktion |
GO_ACTION_ACTION_STATUS_COLUMN |
lk_status_id |
GO_ACTION_ACTION_STATUS_TABLE |
aktionsstatus |
GO_ACTION_ACTION_STATUS_NULL_COLUMN |
status_null |
GO_ACTION_ACTION_STATUS_LINK_TABLE |
aktionstyp__goaction_aktionsstatus |
GO_ACTION_ACTION_STATUS_LINK_STATUS_COLUMN |
lk_match_status_id |
GO_ACTION_ACTION_STATUS_LINK_ACTION_LINK_COLUMN |
lk_aktionstyp__goaction_id |
GO_ACTION_ACTION_LINK_TABLE |
aktionstyp__goaction |
GO_ACTION_ACTION_LINK_NAME_COLUMN |
name |
GO_ACTION_ACTION_LINK_TYPE_COLUMN |
lk_aktionstyp_id |
GO_ACTION_ACTION_LINK_MATCH_STATUS_COLUMN |
lk_match_status_id |
GO_ACTION_USERGROUP_LINK_TABLE |
aktionstyp__goaction_groups |
GO_ACTION_USERGROUP_LINK_GROUP_COLUMN |
lk_usergruppe_id |
GO_ACTION_USERGROUP_LINK_ACTION_COLUMN |
lk_aktionstyp__goaction_id |