Business logic

Generelle Möglichkeiten

Zuerst einmal sollte geklärt werden, was es mit Businesslogik auf sich hat. Es handelt sich hierbei um die Möglichkeit zu bestimmten Zeitpunkten des Prozessablaufs Skripte (z.B. PHP, JS) aufzurufen, mit deren Hilfe Daten bearbeitet und weiterverarbeitet werden können.Wer bereits mit Hooks in TYPO3 gearbeitet hat, dem sollte diese Technik bekannt vorkommen.

Man unterscheidet zwischen folgenden Zeitpunkten:

1. Bevor ein Prozessschritt dargestellt wird

Hier kann beispielsweise der HTML-Code vor der Darstellung verändert werden, aus der Datenbank gelesen und die Werte im Prozessschritt dargestellt werden, Javascript Code hinzugefügt werden, usw.

2. Nachdem ein Prozessschritt dargestellt und bearbeitet wurde

Dieser Zeitpunkt kann dazu verwendet werden, um die eingegebenen Daten zu manipulieren oder beispielsweise in deine Datenbank zu schreiben.

3. Bevor eine E-Mail verschickt wird.

Hier kann man beispielsweise hochgeladene Dateien als E-Mailanhang hinzufügen.

4. Nachdem eine E-Mail verschickt wurde

Dieser Aufruf kann zum schreiben in ein Log-File verwendet werden.

5. Zum Zeitpunkt der Validierung

Dieser Aufruf kann dazu verwendet werden, um den Prozessschritt um eigene Validierungen und Fehlermeldungen zu erweitern.

 
Eine PHP Klasse aus positionIt aufrufen

Die Voraussetzung zum Einbinden von Businesslogik ist, dass bereits ein Prozess vorhanden ist und ausgewählt wurde.

Wenn dies der Fall ist, könnte die Oberfläche beispielsweise so aussehen (einige Elemente sind bereits eingefügt):

Übersicht eines Prozesses

1. Neue Businesslogik anlegen

Über den Button mit dem-Symbol kann nun eine neue Businesslogik angelegt werden. Im darauffolgenden Dialog können Sie die Bezeichnung angeben:

Bezeichnung für Businesslogik angeben

2. Typ der Businesslogik auswählen

Anschließend öffnet sich folgender Dialog. Hier kann nun ganz oben der Name der Businesslogik eingegeben werden, sowie alle weiteren Eigenschaften wie Typ (Zeitpunkt der Ausführung) der Businesslogik etc. eingegeben werden.

Eine Beschreibung der unterschiedlichen Typen finden Sie weiter oben unter "Generelle Möglichkeiten".

Unterschiedliche Typen (Zeitpunkte des Aufrufs) der Businesslogik

Da in diesem Beispiel die eingegebenen Daten in eine Datenbank geschrieben werden sollen, wird der Typ "Nachdem ein Prozessschritt dargestellt und bearbeitet wurde" verwendet.

Werden die Typen "Vor dem Senden einer E-mail ausführen" und "Nach dem Senden einer E-Mail ausführen" verwendet, so sieht der Dialog folgendermaßen aus:

3. Prozessschritt auswählen

Im Businesslogik-Dialog kann direkt der Prozessschritt ausgewählt werden, an den die Businesslogik angehängt werden soll.

Prozessschritt auswählen

4. Angaben der PHP Klasse

In diesem Beispiel wurde eine Datei "example.php" im Ordner "fileadmin" angelegt.

Es soll die Datei "example.php" im Ordner "fileadmin" aufgerufen werden. Die PHP Klasse heisst "Example" und die verwendete Methode "execute_afterstep" (Siehe "Methoden einer PHP Klasse").

5. Testen

Da die verwendete Methode wie folgt aussieht...

  1. public function execute_afterstep($processId, $pre_stepid, $cur_stepid,
  2. $sessiondata, $htmlcode) {
  3. echo t3lib_div::debug($sessiondata);
  4. }

...wird die komplette Session mit allen eingegebenen Daten ausgegeben:

Die Daten können beliebig gelesen und verarbeitet werden.

Konkrete Beispiele zum Einsatz von Businesslogik finden Sie unter Tutorials.

 
Methoden einer PHP Klasse

Sowohl Klassen- als auch Methodennamen können frei gewählt werden. Maßgeblich sind die übergebenen Parameter an die Funktionen. Da sich der TYP der Businesslogik unterscheiden kann, hier eine "Musterklasse" mit allen verfügbaren Funktionsaufrufen:

  1. <?php
  2.  
  3. class Example {
  4.  
  5. public function execute_prestep($processId, $pre_stepid, $cur_stepid,
  6. $sessiondata, $htmlcode, $prestepdata) {
  7. // called to manipulate data befor the processstep starts
  8. }
  9.  
  10. public function execute_afterstep($processId, $pre_stepid, $cur_stepid,
  11. $sessiondata, $htmlcode) {
  12. // called to store data in database
  13. }
  14.  
  15. public function execute_validation($processId, $pre_stepid,
  16. $cur_stepid, $sessiondata, $htmlcode, $validationErrors) {
  17. // called to validate step with own methods
  18. }
  19.  
  20. public function execute_premail($processId, $cur_stepid, $sessiondata,
  21. $mailparams) {
  22. // called befor an email gets send
  23. }
  24.  
  25. public function execute_aftermail($processId, $cur_stepid,
  26. $sessiondata, $mailparams) {
  27. // called after an email was send
  28. }
  29.  
  30. }
  31.  
  32. ?>
 
Befehle an positionIt zurückliefern

Eine Übersicht aller Befehle finden Sie im nächsten Reiter "Übersicht verfügbarer Befehle".

Befehle werden immer mittels des return-Befehls an positionIt zurückgeliefert. Wichtig ist dabei, dass der command als array zurück gegeben wird.

Der nachfolgende Code zeigt die Rückgabe neuen HTMLCodes.

  1. // return the new htmlcode via command
  2. $command['replaceHTML']['htmlCode'] = $new_htmlcode;
  3. return array($command);

Beispiele finden Sie im Bereich Tutorials.

 
Übersicht verfügbarer Befehle

positionIt unterstützt folgende Befehle:

Weiterleitungen

es gibt mehrere Arten von Weiterleitungen:

  • Auf eine externe Seite
  • Auf eine interne Seite
  • Auf einen anderen Prozessschritt
  • Keine Weiterleitung

Im Folgenden sind die einzelnen Möglichkeiten aufgezeigt:

  1. $command['forward']['toExternalPage']['path'] = $url_string; // URL String
  2. $command['forward']['toExternalPage']['params'] = $url_params_array;
  3. // URL params in format param => value
  4.  
  5. $command['forward']['toInternalPage']['pid'] = $pageid; // page ID
  6. $command['forward']['toInternalPage']['params'] = $url_params_array;
  7. // URL params in format param => value
  8.  
  9. $command['forward']['toStep'] = $stepid // processstep ID
  10. $command['forward']['stop'] = 1; // no forwarding

HTML Code ersetzen

Mit diesem Befehl kann der HTML Code ersetzt werden, um z.B. Marker zu ersetzen.

  1. /* replace html code */
  2. $command['replaceHTML']['htmlCode'] = $new_htmlcode;

Session Daten änden

Die Daten der aktuellen Session können geändert werden:

  1. /* modify session data */
  2. $command['modifySession'] = $new_session_data;
  3. // the array must have the same structure as the session data array
  4. // from the method as a param

Javascript Code oder Datei hinzufügen

  1. /* add js file or js code */
  2. $command['insertJSCode']['jsCode'] = $js_code;
  3. $command['insertJSCode']['jsFilePath'] = $js_filepath;

CSS Code oder Datei hinzufügen

  1. /* add css file or css code */
  2. $command['insertCSSCode']['cssCode'] = $css_code;
  3. $command['insertCSSCode']['cssFilePath'] = $css_filepath;

Fehlermeldung hinzufügen

Dieser Befehl wird genutzt, wenn bei einer Businesslogik vom Typ "Zusätzliche Prozessschritt Validierung" eine zusätzliche Prüfung eine Fehlermeldung ausgeben soll.

  1. /* add error message to existing error object */
  2. $command['addError']['errorObjId'] = $objekt_id;
  3. $command['addError']['message'] = $message;

E-Mail Versand stoppen

  1. /* don't send mail */
  2. $command['mail']['stop'] = 1;

E-Mail Parameter ersetzen

Mit diesem Befehl kann der Text einer Mail vor dem Versand modifiziert werden.

  1. /* replace mail params */
  2. $command['mail']['replaceMailParams'] = $mailparams;

Objekte mit Werten vorbelegen

Dieser Befehl wird dazu genutzt, Objekte mit einem Wert vorzubelegen, z.B. wurden Daten aus einer Datenbank gelesen und sollen jetzt in einem Formular dargestellt werden.

  1. /* preset objects with values */
  2. $command['presetData'] = $data_array; // array(object_id => value)

Fehlermeldungen ersetzen

Mit diesem Befehl können die kompletten Fehlermeldungen durch eigene ersetzt werden.

  1. /* replace error messages */
  2. $command['replaceErrors'] = $errorMessages;
 
© 2017 Ososoft GmbH