Event Condition Action

ECA - No-Code Orchestrierung für Drupal

Jürgen Haas

12. Januar 2023

Überblick

  1. Einführung
  2. Zielsetzung
  3. Demo
  4. Blick hinter die Kulissen
  5. Roadmap
  6. Diskussion, Fragen, …

Einführung

ECA ist die no-code Lösung, die Dich in die Lage versetzt, Deine Drupal-Seiten zu orchestrieren.

Bei einem großen Kundenprojekt, das von Drupal 7 auf 9 migriert werden sollte, standen wir vor dem Problem, dass die alte Seite das Modul Rules stark nutzte - und wiederholte Recherchen überzeugten uns, dass Rules für diese Aufgabe nicht bereit war.

Weder benutzerdefinierter Code noch fest kodierte Geschäftslogik waren eine Option.

Es war an der Zeit, einen völlig neuen Ansatz zu wählen!

Status im Rules Eco-System

Mit allem Respekt vor großartigen Maintainern, die über viele Jahre viel Herzblut in verschiedene Module rund um Rules gesteckt haben - dazu zählt auch “Business Rules”, “TR Rules”, “Maestro” und viele andere - sie können mit keinem Aufwand der Welt von der Drupal 7 Umgebung in die moderne Software-Architektur rund um Symfony portiert werden.

Zielsetzung

=>

Wir haben ECA gestartet, um ein “Rules”-Äquivalent für Drupal 9 und darüber hinaus zu schaffen.

Während wir dieses Ziel erreicht haben, löst ECA zusätzliche Herausforderungen und hilft dabei, den Overhead jeder Drupal-Anwendung erheblich zu reduzieren und macht dabei alle Features von Drupal den Site-Buildern zugänglich.

Kaum noch Bedarf für Custom Module

ECA macht es sehr unwahrscheinlich, dass Deine Drupal Seite noch ein Custom Modul braucht. Typische Aufgaben, die Du mit ECA erledigen kannst:

  • Zugriff auf fast alle Hooks
  • Formular-Anpassungen, Validierungen oder Submit-Handler
  • Spezielle Anforderungen für Cron oder Queue Aufgaben

Reduziere Anzahl benötigter Module

Einige Hilfs-Module werden nicht mehr benötigt, z.B.

Transparenz für Entscheidungsträger

ECA stellt das Werkzeug zur Verfügung, mit dem Beteiligte, die ihre Geschäftslogik verstehen, aber nicht unbedingt Drupal-Details, an der Erstellung und Pflege der Konfiguration während des gesamten Lebenszyklus der Drupal-Anwendung mitwirken können.

Solider Workflow

Gleichzeitig hilft Drupal CMI dabei, alle ECA-Änderungen nachvollziehbar zu machen.

Demo

Blick hinter die Kulissen

  • ECA ist ein Prozessor - Punkt!
    Nicht mehr und nicht weniger
  • Event Subscriber reagieren auf alle Drupal Events und starten den ECA Prozessor
  • ECA führt alle vorhandenen Modelle aus, die diese Events enthalten
  • ECA Modelle sind Konfigurations-Entities

Wo kommt die Konfiguration her?

Das ist ECA komplett egal!

Welche Bausteine kennt der Prozessor?

  • Events: alle Drupal Events - erweiterbar
  • Bedingungen: ECA Plugin-Manager - erweiterbar
  • Aktionen: alle Drupal Aktionen - erweiterbar

Gateways bieten spezielle Bedingungen, die aber noch nicht implementiert sind - geplant für Version 1.2

Was ist drin in ECA?

  • Prozessor für ECA Konfigurations-Entities mit allen enthaltenen Regeln
  • Plugin Manager für Modellierer, Events und Bedingungen
  • Interfaces und abstrakte Klassen und Traits
  • Integration aller Aktionen von Drupal Core
  • Support für Caching, Schleifen, Protokolle, State, Token, etc.
  • Vermeidung von Rekursionen
  • Unterstützung von TypedData
  • Tests, Tests und Tests
  • 16 + 3 Sub-Module …

  • ECA Access
    Zugriffs-Kontrolle für Entities und Felder
  • ECA Base
    Kontext, Cron, Status, Token, etc.
  • ECA Cache
    Cache lesen/schreiben
  • ECA Config
    Konfiguration lesen/schreiben
  • ECA Content
    Entities, Felder, Token, etc.
  • ECA Endpoint
    Controller für eigene Pfade
  • ECA Form
    Alles zur Drupal Form API
  • ECA Language
    Mehrsprachigkeit
  • ECA Log
    Protokolle lesen/schreiben
  • ECA Migrate
    Auf Events bei der Migration reagieren
  • ECA Misc
    Kernel, Drupal Core, Routing, etc.
  • ECA Queue
    Task Queue, geplante Tasks, etc.
  • ECA Render
    Alles rund um Drupal Render-Arrays
  • ECA User
    An/Ab-Meldung, Wechsel, Löschung, Rollen, etc.
  • ECA Views
    Ausführen, manipulieren, exportieren, etc.
  • ECA Workflow
    Status-Änderungen, etc.

Die 3 Sub-Module sind ECA UI, ECA Develop und ECA BPMN Modellierer

3 spezielle Sub-Module

ECA UI ermöglicht den Zugriff auf die ECA-Verwaltungsoberfläche und auf vorhandene Modellierer.

ECA Develop stellt Drush Befehle und Code Generatoren zur Verfügung, die von Entwicklern benötigt werden.

ECA BPMN Modellierer stellt die abstrakte Implementierung für Modellierer bereit, die den BPMN-Standard verwenden.

Andere Module, die ECA unterstützen

Ein Wort über Modellierer

Modellierer sind das UI für ECA Konfigurations-Entities.

BPMN ist eine von vielen Möglichkeiten, es können andere Tools komplett autark implementiert werden.

Zur Zeit stehen 3 Modellierer zur Verfügung:

Ideen für andere Modellierer

Roadmap

Code Analyse für Version 1.0.0

ECA

Verzeichnisse: 111
Dateien: 358
Code-Zeilen: 41.889
Kommentar-Zeilen: 31%
Funktions-Zeilen: 69%

224 Tests / 3.100 Assertions
94% Dateien / 83% Zeilen

BPMN.io

Verzeichnisse: 1
Dateien: 2
Code-Zeilen: 148
Kommentar-Zeilen: 28%
Funktions-Zeilen: 72%

Code Style: alles sauber

Alle Tests mit Drupal 9.4, 9.5, 10.0 mit PHP 7.4, 8.1

Team-Aufwand: rund 3.000 Stunden

Das Team

Releases

Start auf drupal.org am 22. Juli 2021

Beta-1 am 3. November 2021

Beta-12 am 17. Mai 2022
1.0.0-RC1 am 22. Juni 2022
1.0.0 am 22. Juli 2022
1.1.0 am 12. Dezember 2022
1.2.0 im Sommer 2023

Planung für 1.2

  • A11y
  • Code Optimierungen
  • Debugging-Verbesserungen
  • Einige Feature-Plugins
  • Gateway Support
  • Key Value Store
  • Tour-Support / Doku

ECA könnte Hilfe brauchen

  • Entwicklung
  • Tests
  • Review und Feedback
  • Support (Issue Queue und auf Drupal Slack)
  • Documentation
  • Übersetzungen
  • Vorträge und Präsentationen

Spread the word

Diskussion, Fragen, …



Es begann als Rules Engine für Drupal 9 …

… und öffnet die Tore zu Low code - no code

ECA ist die no-code Lösung, die Dich in die Lage versetzt, Deine Drupal-Seiten zu orchestrieren!