Workflow-Typ

Ein Workflow-Typ dient in erster Linie dem Workflow-System als Unterscheidungsmerkmal, welche Aktionen zur Verfügung gestellt werden und welche Datenquellen unterstützt werden.

Interface WorkflowType

Workflow-Typen werden über das Interface Netzmacht\Workflow\Flow\Workflow\Type\WorkflowType beschrieben:

interface WorkflowType
{
    public function getName(): string;

    public function match(string $typeName): bool;

    public function configure(Workflow $workflow, callable $next): void;

    public function getProviderNames(): array;
}

Workflow-Typ registrieren

Der eigene Workflow-Typ wird über den Symfony-Container definiert, indem dieser mit dem Tag netzmacht.contao_workflow.type getagged wird:

services:
    Custom\Workflow\CustomType:
      tags:
        - { name: 'netzmacht.contao_workflow.type' }

Backendkonfiguration

Der Workflowtyp triggerd die Palettenauswahl im Backend. Damit im eigenen Workflow-Typ die Standardkonfigurationen möglich bleiben, muss hier das DCA erweitert werden. Dank MetaPalettes erfolgt dies durch folgende Zeile:

$GLOBALS['TL_DCA']['tl_workflow']['metapalettes']['custom extends __base__'] = [];

AbstractWorkflowType

Für gängige Implementation wird eine abstrakte Basisklasse zur Verfügung gestellt, die verwendet werden kann:

namespace Custom\Workflow;

use Netzmacht\ContaoWorkflowBundle\Workflow\Type\AbstractWorkflowType;

final class CustomType extends AbstractWorkflowType
{
    public function __construct()
    {
        parent::__construct('custom', ['tl_custom']);
    }
}

Workflow vorkonfigurieren

Ein Workflow-Typ kann außerdem dazu genutzt werden diesen vorzukonfigurieren.

namespace Custom\Workflow;

use Netzmacht\ContaoWorkflowBundle\Workflow\Type\AbstractWorkflowType;
use Netzmacht\Workflow\Flow\Workflow;

final class CustomType extends AbstractWorkflowType
{
    // ...

    public function configure(Workflow $workflow, callable $next): void
    {
        // Vor der DB gestützten Konfiguration

        parent::configure($workflow, $next);

        // Nach der DB gestützten Konfiguration
    }
}

results matching ""

    No results matching ""