Um eine neue benutzerdefinierte Aufgabe zu erstellen, gehen Sie in die “Task Management” und klicken Sie unten auf der Seite auf “create new Task manually”. Der Workflow Designer stellt Ihnen einige Fragen darüber, wie Sie die neue Aufgabe definieren wollen.
1. Der key
Dies ist der slug des Blocks, der verwendet wird, um die Beziehung in der Datenbank zu speichern. Muss eindeutig sein und darf keine Leerzeichen enthalten!
2. Der classname
Muss ein Wert mit dem Präfix “WfTask” sein. Zum Beispiel WfTaskNewBlock. Dies ist der Klassenname des neuen Blocks.
3. Das label
Das Label, sichtbar in der Sidebar und unter jedem Block im Designer. Sollte die Funktion dieses Blocks beschreiben.
Anschließend erstellt der Workflow Designer die notwendigen Dateien.
Der Block wird in der Aufgabengruppe “special tools” angelegt.
Jetzt müssen Sie die Dateien ändern:
WfTask*.php
Sie finden diese unter /modules/Workflow2/tasks/.
Diese Datei muss eine spezielle Struktur haben.
<?php
require_once(realpath(dirname(__FILE__).'/../autoload_wf.php'));
class dummyTypeClass extends \Workflow\Task
{
public function handleTask(&$context) {
/* Insert here source code to execute the task */
return "yes";
}
public function beforeGetTaskform($viewer) {
/* Insert here source code to create custom configurations pages */
}
public function beforeSave(&$values) {
/* Insert here source code to modify the values the user submit on configuration */
}
}
Das require_once in der zweiten Zeile stellt sicher, dass alle workflowbezogenen Funktionen verfügbar sind.
Diese Zeile ist wichtig, denn später werde ich dafür sorgen, dass Sie jeden Typ extern aufrufen können.
handleTask(&$context)
Diese Funktion wird jedes Mal ausgeführt, wenn die Aufgabe ausgeführt wird, und muss alle PHP-Codes enthalten, die Sie in dieser Situation ausführen möchten. (Sie können aber auch externe Dateien einbinden, wie in jedem anderen PHP-Skript) Diese Funktion MUSS einen Rückgabewert haben, der gleich einem der Ausgabepunkte ist, die Sie in task.xml konfigurieren oder “yes”, wenn Sie manuell in der Aufgabenverwaltung angelegt werden.
Der Parameter stammt vom Typ \Workflow\VTEntity, der hier erläutert wird.
beforeGetTaskform($viewer)
Diese Funktion wird aufgerufen, bevor das Konfigurations-Popup angezeigt wird. Sie können alle Abhängigkeiten vorbereiten und dem $viewer-Parameter, dem Smarty Object, das für das Popup verwendet wird, Werte zuweisen.
beforeSave(&$values)
Diese Funktion wird aufgerufen, bevor die Konfigurationswerte gespeichert werden. Die Variable $values ist ein Array mit den übergebenen Feldern in der task variablen.
WfTask*.js
Sie finden sie unter /modules/Workflow2/tasks/.
Wird in das Konfigurations-Popup geladen und kann alle Funktionen für dieses Fenster ausführen.
WfTask*.tpl
vTigerCRM6: Sie finden es in /layouts/vlayout/modules/Settings/Workflow2/tasksforms/
vTigerCRM7: Sie finden es in /layouts/v7/modules/Settings/Workflow2/tasksforms/
Der Platzhalter im Dateinamen wird durch den Aufgabenschlüssel für diese Datei ersetzt und nicht durch den Klassennamen, wie bisher.
Die Konfigurationsvorlage.
Es gibt ein offenes <form Tag, das jeden Wert speichert, den Sie in die Variable task[….] schreiben und diesen Wert auch an die Variable $task der Vorlagen zurückgibt.