Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,090 of 9,090 pages
About the help in other languages
All help pages

Workflows und Trigger: Einstiegspunkte an Inhaltsoperationen

Wo ein Framework-Entwickler Model-Observer, Signale nach dem Speichern, Zustandsautomaten oder Prozessmanager schreibt, bietet Exponential Workflows - Ereignistypen, die vor oder nach Operationen wie dem Veröffentlichen…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/web-framework-developers/workflows-triggers-and-domain-events.md

On this page

This page is a translation. Read the English original

Workflows und Trigger: Einstiegspunkte an Inhaltsoperationen

Diese Seite richtet sich an Entwickler, die Geschäftslogik in die Speicherereignisse eines ORM einhängen, ein Django-Signal post_save schreiben oder einen Freigabeprozess mit einer Bibliothek für Zustandsautomaten modellieren würden. In Exponential können Operationen wie das Veröffentlichen von Inhalten oder das Bestätigen einer Bestellung einen Workflow vor oder nach ihrer Ausführung starten. Ein Workflow ist eine Liste von Ereignistypen (PHP-Klassen), die über einen Trigger mit einer Operation verbunden ist, und er kann die Operation zurückhalten, bis etwas geschieht: eine Freigabe, eine Zahlung, ein Datum (Workflows, Trigger und Ereignisse).

Inhalt

  1. Die Bausteine
  2. Operationen, an denen Sie sich einklinken können
  3. Was ein Ereignis antworten kann
  4. Einen Ereignistyp schreiben
  5. Im Vergleich mit anderen Frameworks
  6. Wann was einsetzen

Die Bausteine

BegriffWas
Workfloweine benannte Liste von Ereignissen in einer Workflow-Gruppe (Setup > Workflows)
Ereignistypeine Klasse, die einen Schritt ausführt: Freigabe, Warten bis zu einem Datum, Multiplexer, Zahlungs-Gateway sowie die Ereignistypen von Erweiterungen
Triggerverbindet einen Workflow mit einer Operation, before oder after dieser (Setup > Trigger)
Prozessein Durchlauf eines Workflows für ein Objekt und eine Version, der in der Datenbank gehalten wird, solange er wartet

Workflows werden von Administratoren im Browser konfiguriert; Ihre Erweiterung stellt die Ereignistypen bereit.

Operationen, an denen Sie sich einklinken können

settings/workflow.ini [OperationSettings] AvailableOperationList[] listet die Operationen auf, die Trigger anbieten. Ausgeliefert und aktiv sind: content_publish, before_shop_confirmorder, shop_checkout, shop_addtobasket, shop_updatebasket. Weitere sind auskommentiert aufgeführt (content_move, content_hide, content_delete, content_updatesection, content_read, content_updateobjectstate, user_activation, user_password ...); eine Installation aktiviert sie in einem Override. Ihre eigenen Klassen auf Basis von persistenten Objekten haben keine Operationen: Lösen Sie stattdessen ein eigenes Ereignis aus (Ereignisse und Listener).

Was ein Ereignis antworten kann

execute() gibt eine Statuskonstante von eZWorkflowType zurück:

StatusWirkung
STATUS_ACCEPTEDmit dem nächsten Ereignis und danach mit der Operation fortfahren
STATUS_REJECTEDdie Operation abbrechen
STATUS_DEFERRED_TO_CRONwarten; der Cronjob workflow.php (Teil frequent) führt den Prozess erneut aus
STATUS_FETCH_TEMPLATEdem Benutzer eine Seite anzeigen (ein Formular, eine Bestätigung)
STATUS_REDIRECTden Benutzer an eine andere Stelle schicken (einen Zahlungsanbieter)
STATUS_WORKFLOW_CANCELLEDden Workflow abbrechen

Wartende Prozesse werden unter Setup > Workflow-Prozesse aufgelistet. Ohne den Cronjob-Teil frequent werden Inhalte, die auf ein zurückgestelltes Ereignis warten, nie veröffentlicht (Geplante Aufgaben).

Einen Ereignistyp schreiben

Aus Einen Workflow-Ereignistyp schreiben:

# extension/expdemo/settings/workflow.ini.append.php
<?php /* #?ini charset="utf-8"?
[EventSettings]
ExtensionDirectories[]=expdemo
AvailableEventTypes[]=event_expnotify
*/ ?>
<?php
// extension/expdemo/eventtypes/event/expnotify/expnotifytype.php
class expNotifyType extends eZWorkflowEventType
{
    const WORKFLOW_TYPE_STRING = 'expnotify';

    public function __construct()
    {
        parent::__construct( self::WORKFLOW_TYPE_STRING, ezpI18n::tr( 'extension/expdemo', 'Notify the archive' ) );
        $this->setTriggerTypes( array( 'content' => array( 'publish' => array( 'after' ) ) ) );
    }

    function execute( $process, $event )
    {
        $parameters = $process->attribute( 'parameter_list' );
        $object = eZContentObject::fetch( (int)$parameters['object_id'] );
        if ( !$object )
            return eZWorkflowType::STATUS_WORKFLOW_CANCELLED;
        // queue slow work instead of doing it here
        return eZWorkflowType::STATUS_ACCEPTED;
    }
}

eZWorkflowEventType::registerEventType( expNotifyType::WORKFLOW_TYPE_STRING, 'expNotifyType' );

Im Vergleich mit anderen Frameworks

Idee aus FrameworksExponential
Lifecycle-Events von Doctrine, Observer in Eloquent, post_save in Django, Callbacks in Railsein Trigger after auf content_publish
Validierung vor dem Speichern mit Vetorechtein Trigger before, dessen Ereignis ablehnt
Symfony Workflow, Gems für ZustandsautomatenObjektzustände für den Status, Workflows für die Schritte (Objektzustände)
Freigabewarteschlangender mitgelieferte Freigabe-Ereignistyp mit Kollaborationseinträgen
Prozessmanager, Sagasein Workflow, dessen Ereignisse an den Cronjob übergeben und danach fortgesetzt werden
Listener in der Warteschlangeein Ereignis, das einen Job in die Warteschlange stellt (Warteschlangen)

Wann was einsetzen

Verwenden Sie einen Workflow, wennVerwenden Sie einen Listener auf ein Kernel-Ereignis, wenn
Administratoren ihn ein- und ausschalten oder die Schritte ordnen sollendas Verhalten immer Teil Ihrer Anwendung ist
der Schritt warten kann (Freigabe, Zahlung, ein Datum)er synchron laufen und nie warten darf
er an eine der Trigger-Operationen gebunden istdas Ereignis keinen Trigger hat

Verwandte Seiten

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.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x