Event Condition Action

ECA - New rules engine for Drupal 9+

Richard Papp

05 June 2022

About us

Agenda

  1. Demo
  2. Introduction
  3. ECA Architecture
  4. Modeller
  5. Objectives
  6. Roadmap

Demo

Introduction

The Rules module for Drupal 8 is still in its alpha release stage … still needs significant work. (Excerpt description tr_rulez)

Previously

Early feedback to our prototype

Early feedback to our prototype

Early feedback to our prototype

Early feedback to our prototype

ECA Architecture

  • ECA is a processor - Period. No more, no less
  • An event subscriber listens to all Drupal events and triggers the processor
  • This processes all available ECA models - all models for the current event
  • The ECA models are config entities

Where does the config come from?

ECA doesn’t care!

What components does the processor support?

  • Events: all Drupal events - you can add custom events
  • Conditions: ECA provides a plugin manager
  • Actions: all Drupal actions - you can add custom actions

What’s already included in ECA?

  • Processor for ECA config entities with all contained rules
  • Plugin managers for modellers, events and conditions
  • Interfaces and abstract base classes and traits
  • Integration of all actions from Drupal core actions module
  • Extensive context stack support (dependency)
  • Support for caching, loops, logging, states, tokens, etc.
  • Prevent recursion
  • TypedData support
  • Tagging for event characterization
  • Tests

11 Submodules

  • ECA Base: context, cron, custom, state, token, etc.
  • ECA Config: listen, read & write config
  • ECA Content: entities, fields, token, etc.
  • ECA Form: build, validate, submit, etc.
  • ECA Log: create and listen
  • ECA Migrate: listen to all migrate events
  • ECA Misc: kernel, Drupal core, routing, etc.
  • ECA Queue: task queue, scheduled tasks, etc.
  • ECA User: login, logout, cancel, switch, roles, etc.
  • ECA Views: query, export, etc.
  • ECA Workflow: transitions, etc.

Contrib modules supporting ECA

Preparing support for more contrib

Modeller

  • A modeller is the user interface for ECA config entities.
  • It can be integrated as a @EcaModeller plugin, that stores models as config entities. The plugin manager is provided by the ECA module.
  • May be BPMN but not necessarily. Only the structure Event - Condition - Action matters.
  • Two modellers are already integrated:

Camunda Desktop Client

Download

Integrated by Camunda BPMN module.

BPMN.iO

Integrated in Drupal UI. Everything is provided by BPMN.iO module.

More information

Structure: Modeller

Possible modellers

Objectives

ECA got started to provide a “Rules” equivalent for Drupal 9 and beyond. While getting close to deliver on that objective, ECA solves additional challenges and helps to trim-down the overhead of each Drupal application.

Reduce the need for custom modules

  • Far less likely your site needs a custom module for …
    • most of the hooks
    • form altering, validation or submit handlers
    • specific needs for cron or queue tasks

Reduce number of modules

Transparency for business owners

Stakeholders, who may not be acquainted with Drupal details, can

  • build
  • maintain
  • document

their business logic throughout the lifecycle of the Drupal application.

Solid workflow

At the same time, Drupal CMI helps to track all the changes. In the future, we may even be able to support revisions and moderation, so that rock-solid workflows can be applied when needed.

Roadmap

1.0.0-beta12 released 17 May 2022

Stable Release 1.0.0?

Modules and Issue Queues

Any help is highly appreciated

  • Development
    • ECA and plugins
    • Optimization of the integrated BPMN.iO client
  • Tests
  • Review and feedback
  • Support (Issue queue and in chats)
  • Translations
  • Descriptions on the drupal.org project pages
  • Spread the word
  • Join us on Drupal Slack