Workflows und Auslöser
Diese Seite richtet sich an Entwickler, die "wenn X geschieht, tue Y" brauchen: eine Freigabe vor dem Veröffentlichen, eine E-Mail nach einer Registrierung, einen Abgleich mit einem anderen System nach einer Aktualisierung. Exponential hat dafür zwei Mechanismen: Workflows, die Redakteure und Administratoren in der Administration konfigurieren und die eine Operation zurückhalten können, und Event-Listener, die Ihr Code in Einstellungen registriert.
Inhalt
- Workflows, Events und Auslöser
- Die mitgelieferten Event-Typen
- Freigabe vor dem Veröffentlichen
- Prozesse und der Workflow-Cronjob
- Event-Listener: der leichtere Weg
- Ein eigener Workflow-Event-Typ
- Die Wahl
- Stolperfallen
Workflows, Events und Auslöser
| Begriff | Was es ist | Wo |
|---|---|---|
| Workflow | eine benannte, geordnete Liste von Events in einer Workflow-Gruppe | Setup > Workflows (/workflow/grouplist) |
| Event | ein Schritt eines Workflows, von einem Event-Typ | die Bearbeitungsseite des Workflows |
| Auslöser | die Verbindung zwischen einem Workflow und einer Operation, davor oder danach (pre_publish, post_publish ...) | Setup > Auslöser (/trigger/list) |
| Prozess | ein nicht abgeschlossener Lauf eines Workflows für ein Objekt und eine Version | Setup > Workflow-Prozesse (/workflow/processlist) |
Die für Auslöser angebotenen Operationen stehen in workflow.ini [OperationSettings] AvailableOperationList[]:
mitgeliefert sind content_publish und die Shop-Operationen (before_shop_confirmorder, shop_checkout,
shop_addtobasket, shop_updatebasket). Weitere (Verschieben, Verbergen, Entfernen, Lesen von Inhalten,
Benutzeraktivierung und andere) sind dort als Kommentare aufgeführt und lassen sich in Ihren Einstellungen
einschalten, mit dem Hinweis, dass sich ihr Code ändern kann
(Workflows, Abschnitt 1).
Die mitgelieferten Event-Typen
settings/workflow.ini [EventSettings] AvailableEventTypes[] (kernel/classes/workflowtypes/event/):
| Event-Typ | Tut |
|---|---|
Freigeben (ezapprove) | hält das Veröffentlichen zurück, bis ein Freigebender im Posteingang der Zusammenarbeit entscheidet |
Bis Datum warten (ezwaituntildate) | hält das Veröffentlichen zurück, bis der Wert eines Datumsattributs erreicht ist |
Multiplexer (ezmultiplexer) | führt einen anderen Workflow nur für bestimmte Klassen, Sektionen oder Benutzer aus |
Zahlungsgateway (ezpaymentgateway) | übergibt eine Bestellung an ein Zahlungsgateway |
Einfacher Versand (ezsimpleshipping) | fügt einer Bestellung Versandkosten hinzu |
Registrierung abschließen (ezfinishuserregister) | schließt eine Registrierung ab, die ein Workflow zurückgehalten hat |
Erweiterungen fügen weitere hinzu.
Freigabe vor dem Veröffentlichen
- Legen Sie einen Workflow mit einem Event Freigeben an: die Freigebenden (Benutzer oder eine Gruppe), die Sektionen und Sprachen, für die er gilt, und für wen er nicht gilt (zum Beispiel die Freigebenden selbst).
- Packen Sie ihn in einen Multiplexer, wenn nur einige Klassen eine Freigabe brauchen.
- Verbinden Sie ihn mit dem Auslöser
content/publish/ before. - Stellen Sie sicher, dass der Workflow-Cronjob läuft.
Die Version des Redakteurs wird ausstehend; ein Freigebender gibt im Posteingang der Zusammenarbeit frei oder lehnt ab; der nächste Lauf des Workflow-Cronjobs veröffentlicht oder gibt den Entwurf zurück. Das durchgerechnete Beispiel mit jedem Bildschirm: Freigabe vor dem Veröffentlichen.
Prozesse und der Workflow-Cronjob
Eine zurückgehaltene Operation wird als Prozess mit einem Memento der Operation gespeichert; workflow.php in den
Cronjob-Teilen setzt wartende Prozesse fort. Ohne Cron werden freigegebene Inhalte nie veröffentlicht
(Cronjobs, Der Workflow-Cronjob).
Prozesse, die auf einen entfernten Freigebenden warten, müssen bereinigt werden
(Prozesse abbrechen und bereinigen).
Event-Listener: der leichtere Weg
Wenn Ihr Code nur reagieren muss (protokollieren, benachrichtigen, abgleichen) und die Operation nie zurückhalten muss,
ist ein Event-Listener einfacher: ein Callback, registriert in site.ini [Event] Listeners[] für ein Event, das der
Kernel ankündigt, etwa content/state/assign (Zustände geändert) oder content/cache (die Caches von Knoten wurden
geleert, was das Veröffentlichen tut). Es gibt kein eigenes Event "nach dem Veröffentlichen"; dafür verwenden Sie ein
Workflow-Event an post_publish. Filter-Events lassen einen Listener einen Wert ändern und müssen ihn zurückgeben
(Events, Listener und Filter).
Ein eigener Workflow-Event-Typ
Wenn Redakteure Ihren Schritt ihren Workflows hinzufügen können müssen oder der Schritt die Operation zurückhalten muss,
schreiben Sie einen Workflow-Event-Typ: eine Klasse, die eZWorkflowEventType erweitert, mit einer Methode execute(),
die angenommen, abgelehnt oder "später erneut ausführen" antwortet, registriert in workflow.ini.append.php Ihrer
Erweiterung (Workflow-Event-Typen,
Ein Workflow-Event von Hand,
Die eZWorkflowType-API).
Die Wahl
| Bedarf | Verwenden Sie |
|---|---|
| Eine redaktionelle Freigabe | das Event Freigeben, von einem Administrator konfiguriert |
| Veröffentlichen zu einem Datum | Bis Datum warten oder die Cronjobs hide.php und unpublish.php zum Verbergen und Entfernen (Versionen, Entwürfe und Veröffentlichen) |
| Ein anderes System nach dem Veröffentlichen benachrichtigen | ein Workflow-Event an post_publish |
| Ein Veröffentlichen stoppen, das eine Ihrer Regeln verletzt | einen Workflow-Event-Typ an pre_publish, der ablehnt |
| Stufen mit eigenen Berechtigungen | Objektzustände, von Redakteuren oder einem Workflow-Event geändert (Objektzustände) |
Stolperfallen
- Langsame Events verlangsamen das Veröffentlichen. Ein Aufruf eines anderen Systems in
post_publishlässt den Redakteur warten; reihen Sie ihn ein und lassen Sie einen Cronjob oder einen Inhaltsjob die Arbeit erledigen. - Schleifen. Ein Event, das Inhalte veröffentlicht, löst die Veröffentlichungs-Workflows erneut aus; schützen Sie sich dagegen.
- Testen als Administrator. Viele Freigabe-Einrichtungen nehmen Administratoren aus; testen Sie mit einem
Redakteurskonto unter
example.invalid. - Cron auf einem neuen Server vergessen. Prüfen Sie vor dem Live-Gang, dass der Workflow-Cronjob eingeplant ist.
Verwandte Seiten
- Workflows: die vollständige Anleitung
- Workflows für Website-Bauer
- Auslöser und Workflows für Entwickler
- Freie Dokumentation: Diese Seite darf unter der GNU FDL 1.3 frei kopiert, übersetzt und verbessert werden.
Werden Sie Exponential-Partner
Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.