Go-Actions

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.

Aktionen

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.

API

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.

loadFrame

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.

checkMinLinkedNm, checkMaxLinkedNm

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.

getEditId, getParentEditId

AFTER_UPDATE, AFTER_INSERT, AFTER_SHOW

getEditId()
getParentEditId()

Liefert die ID der Aktion (getEditId) oder der Eltern-Aktion (getParentEditId) zurück.

resetMarkers

EDIT_PROCESS_START

resetMarkers($maskName)

Setzt die Markierungen für die mit $maskName angegebene Suche zurück.

getDbId

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.

getLinkedIdsListNm, getParentLinkedIdsListNm

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.

setValue

BEFORE_UPDATE, BEFORE_INSERT

setValue($field, $value)

Setzt einen Wert für die gerade bearbeitete Aktion.

setLinkedValueNm, appendLinkedValuesNm

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.

getParentValue

BEFORE_UPDATE, BEFORE_INSERT

getParentValue($field)

Gibt den Wert eines Feldes der Eltern-Aktion zurück.

setParentValue, setRootValue

AFTER_UPDATE, AFTER_INSERT

setParentValue($field, $value)
setRootValue($field, $value)

Setzt den Wert eines Feldes bei der Eltern- oder der Wurzel-Aktion.

removeParentLinkedListNm

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.

email

EDIT_ID_SET

email($maskName)

Sendet eine E-Mail, bestimmt durch die Creator-Maske $maskName.

save

EDIT_PROCESS_START

save()

Speichert die gerade bearbeitete Aktion.

Beispiele

// ü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');

Konfiguration

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