Alle Projekte

git show fb37e6e 1 / 18

Filament Workflows

Ein Filament-Plugin, das festgelegte Aktionen startet, sobald ein Modell angelegt oder geändert wird.

branch
open-source
typ
Open Source,Laravel & Filament
stack
PHP,Laravel,Filament
stars
★ 19
packagist
1.386 Installationen Stand 28.10.2026
ci
run-tests.yml,fix-php-code-styling.yml,phpstan.yml
lizenz
MIT
commit
fb37e6e
README.md

Workflows in Laravel

Filament Workflows verbindet Ereignisse einer Laravel-Anwendung mit ausführbaren Aktionen. Im Filament-Panel werden Workflows angelegt und ihre Trigger zugeordnet. Treffen die Bedingungen zu, führt das Plugin die hinterlegten Aktionen aus.

Eigene Aktionen

Modelle werden über einen Trait an das Plugin angebunden. Die Aktionen sind eigene PHP-Klassen mit einer handle-Methode. Damit lässt sich festlegen, was nach einem passenden Ereignis passieren soll.

Die Workflows werden im Verwaltungsbereich konfiguriert; die eigentliche Anwendungslogik bleibt im Code der Aktionen.

Installation

bash
composer require tschucki/filament-workflows

Danach wird das Plugin installiert und im Filament-Panel registriert. Die Dokumentation im Repository enthält die vollständigen Schritte und ein Beispiel für eine Aktion.

Technischer Aufbau

Die einzelnen Bausteine lassen sich direkt im Repository ansehen.

  1. fb37e6eModelObserver.php

    Modellereignis

    Ein Observer nimmt Ereignisse wie created oder updated entgegen und findet die zugehörigen Workflows.

    Quellcode ansehen
    Code zeigenCode verbergen
    src/Observers/ModelObserver.php fb37e6e
    private function processWorkflows(Model $model, string $event): void
    {
        if (! method_exists($model, 'getWorkflows')) {
            return;
        }
    
        $workflows = $model->getWorkflows();
    
        $workflows
            ->filter(fn (Workflow $workflow) => $workflow->trigger[0]['event'] === $event)
            ->each(function (Workflow $workflow) use ($model) {
                if ($workflow->shouldTrigger($model)) {
                    $workflow->runActions($model);
                }
            });
    }
    Zeilen 10 bis 25 von 51, ganze Datei auf GitHub
  2. fb37e6eWorkflow.php

    Bedingungen

    Feld, Operator und Vergleichswert bestimmen den Trigger. Alle Bedingungen müssen zutreffen.

    Quellcode ansehen
    Code zeigenCode verbergen
    src/Models/Workflow.php fb37e6e
    $field = $trigger['field'];
    $operator = $trigger['operator'];
    $value = $trigger['value'];
    
    $modelValue = $model->{$field};
    
    return match ($operator) {
        '==' => $modelValue == $value,
        '===' => $modelValue === $value,
        '!=' => $modelValue != $value,
        '!==' => $modelValue !== $value,
        '>' => $modelValue > $value,
        '<' => $modelValue < $value,
        '>=' => $modelValue >= $value,
        '<=' => $modelValue <= $value,
        default => false,
    };
    Zeilen 24 bis 40 von 56, ganze Datei auf GitHub
  3. fb37e6eBaseAction.php

    Aktionen in der Queue

    Die ausgewählten PHP-Aktionen erhalten das Modell. BaseAction verwendet Laravels Queue-Schnittstelle.

    Quellcode ansehen
    Code zeigenCode verbergen
    src/WorkflowActions/BaseAction.php fb37e6e
    class BaseAction implements ShouldQueue
    {
        use Dispatchable;
        use InteractsWithQueue;
        use Queueable;
        use SerializesModels;
    
        public function handle(): void
        {
            //
        }
    Zeilen 11 bis 21 von 42, ganze Datei auf GitHub
Nächstes Projekt React Native Sanctum open-source Open Source,React Native