Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:actions:userexits

"Action"-Prozeduren ("User-Exits")

Diese Prozeduren zeichnen sich zunächst dadurch aus, daß ihre Namen mit „_ac“ beginnen, es sich also ausschließlich um interne (nicht direkt aufrufbare) Prozeduren handelt.

Hinweis : Es gibt direkt ausführbare Prozeduren, die mit „ac“ beginnen, doch diese gehören eben nicht zu der hier beschriebenen „Actions“-Art, sondern sind für die „Action“-Daten (siehe Jobs) gedacht !

Dem Namen kann man außerdem entnehmen, welche Aktion dazu führt, daß sie aufgerufen werden oder man weiß dadurch sogar noch genauer, aus welcher Prozedur heraus sie aufgerufen werden. Beispiel : Die Prozedur „_ac_NewOrder“ wird aufgerufen, wenn eine neue „Order“ (also ein Auftrag oder eine Bestellung) erzeugt wird, eine Ausführung von „_ac_om_ComputePrices“ findet innerhalb der (ebenfalls internen) Prozedur „_om_ComputePrices“ statt.

Derzeit gibt es für folgende Prozesse „_ac“-Prozeduren (jeweils mit Hinweis durch welche Prozeduren die entsprechenden „Action“-Prozeduren angestossen werden):

  • Auftrags-Rückmeldung : om_AcknowledgeOrders_Ad
  • Auftrags-Anlage : om_CopyFromTrolleyToOrder_Pu
  • Status-Wechsel von Auftrags-Positionen : om_ChangeOrderState_Ad/Pu
  • Preis-Ermittlung : om_GetPrices_Pu/om_GetTrolley_Pu
  • Bestimmung von (Gesamt-)Auftrags-/Warenkorb-Surcharges, also Auftrags-Rabatte, Guthabenverrechnung oder Versandkosten etc. : om_GetTrolleySurcharges_Pu/om_GetPaymentAndShipping_Pu

Die eigentliche Besonderheit ist jedoch, daß der Source-Code dieser Prozeduren einsehbar ist, und sie (was der eigentliche Zweck ist) individuell implementiert werden können ! Dabei gibt es jedoch eine genaue - im Source-Code beschriebene - Definition hinsichtlich „Input“- und „Output“-Informationen.

Es ist also zum einen festgelegt, welche Informationen man bei einem Aufruf zur Verfügung gestellt bekommt, und zum anderen ist definiert, wie der aufrufenden Prozedur wiederum Daten zurückgegeben werden müssen bzw. können. Näheres dazu gleich in entsprechenden Unter-Abschnitten.

:!: Derzeit darf eine individuelle Implementierung dieser Prozeduren nur von entsprechend qualifizierten Mitarbeitern der dbap GmbH durchgeführt werden !

Dies liegt hauptsächlich darin begründet, daß häufig interne Prozeduren verwendet werden müssen, da Ergebnismengen von externen Prozeduren ja nicht weiterverwendet werden können (s. Hintergrundinformationen zu Engine-Prozeduren), und die internen Prozeduren nicht öffentlich dokumentiert sind.

Zudem werden „Action“-Prozeduren meistens an sensiblen Stellen (z.B. der Preisfindung) und/oder in Transaktionen (z.B. bei Auftrags-Anlage) ausgeführt, so daß eine fehlerhafte Implementierung Schaden anrichten oder massiv die Performance beeinträchtigen kann !

"Input"-Informationen

Daten werden zum einen über die Parameter bereitgestellt, die die Prozedur auch bei einer individuellen Implementierung definieren muß. Das Definieren zusätzlicher Parameter macht natürlich keinen Sinn, denn woher sollten die (Standard-Engine-)Prozeduren, die die „Action“-Prozedur aufrufen, davon wissen und was sollten sie auch als Wert übergeben ?!

Anmerkung : Es kann aber durchaus sein, daß nach einem Engine-Update weitere Parameter hinzukommen. Eine entsprechende Dokumentation gibt es dezeit noch nicht, da die Implementierung derzeit nur von dbap durchgeführt werden darf.

Oftmals bekommt die „Action“-Prozedur aber auch Daten zur Verfügung gestellt, und zwar über eine „Input“-Tabelle in der Datenbank „dstoreifin“. Wie der Zugriff auf solche Daten erfolgt, ist ebenfalls im Source-Code beschrieben - außerdem wurde das bereits in dieser Einführung im Abschnitt „Permanente ‚Input‘-Tabellen in ‚dstoreifin‘ “ in Hintergrundinformationen zu Engine-Prozeduren beschrieben.

"Output"-Informationen

Eine Rückgabe-Information, die immer implizit durch den bloßen Aufruf der „Action“- Prozedur geliefert wird, ist der „Return-Code“ (s. Abschnitt „Return-Codes und Meldungen“ in Hintergrundinformationen zu Engine Prozeduren).

Dies kann man generell z.B. dazu nutzen, diverse Überprüfungen zu machen, um gegebenenfalls durch einen „Return-Code“ ungleich „0“ einen Fehler zu produzieren, der dann zum Abbruch der Transaktion führt (z.B. in „_ac_NewOrder“, beim Anlegen eines Auftrags also).

Weitere Informationen können i.d.R. nur über „Output“-Tabellen in „dstoreifout“ (s. entsprechender Abschnitt in Hintergrundinformationen zu Engine-Prozeduren) zurückgegeben werden. Eine solche Tabelle ist dann im Source-Code beschrieben, zusammen mit einer genauen Dokumentation, was für Werte in die einzelnen Spalten einzutragen sind, und was es sonst zu beachten gibt.

engine/actions/userexits.txt · Zuletzt geändert: 13.11.2014 (Externe Bearbeitung)