The complete power of is also accessible to all site builders with and BPMN UI to automate processes and customize Drupal's behaviour (hooks) without programming.
ECA is a Drupal community project, started by LakeDrops, which rebooted the enormously popular Rules from the pre-Symfony era and developed a technologically state-of-the-art, production-ready and scalable solution within 11 months. Shortly after the start of the project, OpenCampus GmbH from Munich joined the project, as they themselves had an almost congruent plan for their own products with the already existing prototype of ECA and wanted to start.
The videos can be found here: https://tube.tchncs.de/c/eca/videos
The Drupal experts from LakeDrops and OpenCampus, supplemented by other freelancers from the Drupal community, worked with high-pressure and clear goals (see next section) in mind almost day and night and were able to release the long-awaited version 1.0.0 in July 2022.
Countless talks and workshops at Drupal Meetups and Camps all over the world already showed during the of ECA and its add-on modules how eagerly the whole Drupal community was waiting for exactly this solution. And barely 2 months after the official launch, hundreds of Drupal sites are already using this project. The feedback in the issue queue, on Slack and other channels is overwhelming and consistently positive.
Project goals and deliverables
The original objective arose from a customer project to migrate a very complex intranet from Drupal 7 to Drupal 9. All Drupal 7 components that were still needed were also available for Drupal 9 - only the Rules module, which was used extremely extensively in Drupal 7, was still in an alpha state that did not inspire much confidence.
After repeated analysis of the Rules module, we came to the conclusion together with the customer that Rules could not be completed for Drupal 9 with the present architecture. Instead, an entirely new approach based on the now existing Symfony framework was needed.
Another objective was to separate the processor from the user interface. Thus, the processor needs its own config format, from which it receives the instructions to be executed in the background during live operation of the Drupal site. The performance plays the decisive role. This should in no case be worse than that of a custom module to be written alternatively.
The user interface should be developed separately, if possible, and thus be interchangeable. The UI should implement a standard that is independent of Drupal, so that as many stakeholders as possible can be involved in the process of configuration, review and maintenance of the rules and regulations at the customer. One such standard for describing business processes is BPMN, which is globally recognized and for which there are extensive tools that can be integrated.
Long-term maintainability and easy extensibility were important concerns for both the customer and the development team. In this context, one of the most important architectural decisions was made: ECA must not have any dependencies other than Drupal Core and should use all existing APIs, i.e. not re-develop what already exists.
All of these targets were met in just 11 months of development:
- Provide an upgrade path for all Drupal 7 sites that previously could not upgrade due to missing Rules module
- State-of-the-art software architecture in the Symfony context
- Best possible test coverage
- Full feature set for all events, conditions and actions available in Drupal
- The ECA module has no dependency other than Drupal Core
- Around ECA there is a fast-growing ecosystem already a few weeks after the 1.0.0 release with further modules, which integrate ECA with important contrib modules and make them available in ECA
- For the UI, a fully functional BPMN modeller could be integrated into Drupal with bpmn.io, which saves all its models in the ECA config format
- Even a second modeller is already available, which works in a very simplified way using the Drupal Form API, thus supporting the claim that the ECA processor is not only completely separated from the UI, but that the UI is also interchangeable
In addition to this complete goal achievement, it also became clear to us during the project that we had achieved something else unintended with ECA and its ecosystem: ECA and bpmn.io together allow the complete customization, extension and of all Drupal capabilities without any programming. This means that Drupal is now also moving into the realm of "Low Code - No Code" - a requirement that is not only modern, but also fully in line with Drupal's strategic direction since the last Dries note: empowering site builders and giving them tools to make their jobs easier.
The biggest hurdle before the project began was whether it would really be feasible not only to develop a replacement for the very extensive Rules module, but also to get it to a production-ready level and keep it there. However, when we succeeded in building a working prototype in just a few weeks thanks to existing components, the decision was easy.
The pandemic presented another challenge. The development team, some of whom did not even know each other beforehand, did not meet in person even once during the entire project. The coordination of the development ran completely via the issue queue, supplemented by video conferences every 2 weeks. This was not free of conflicts at times, which is more likely to happen in such a work environment than in face-to-face environments. But even these hurdles were overcome, and all participants reported very helpful experiences and learning effects in this regard afterwards.
The complete project is a community project. However, it is worth listing the individual components here:
- Main ECA module (https://www.drupal.org/project/eca) with 13 sub-modules included:
- ECA Access: events and actions for access control of entities and their fields.
- ECA Base: Basic Events, Conditions and Actions
- ECA Cache: Actions to write data into the cache, to read data from the cache or to invalidate the cache.
- ECA Config: Events related to Drupal's Config management.
- ECA Content: Events, Conditions and Actions around Content Entities
- ECA Form: Events, Conditions and Actions around the Form API.
- ECA Log: Events and Actions around the Drupal Log-System
- ECA Migrate: Events of the Drupal Core Migrate Module
- ECA Misc: Various events and conditions from Drupal Core and the kernel.
- ECA Queue: Events, Conditions and Actions around the Queue-System
- ECA User: Events, conditions and actions around user accounts
- ECA Views: Actions with which views can be executed and, if necessary, exported.
- ECA : Actions around Drupal Core's workflow and content moderation.
- Other sub-modules:
- ECA UI
- ECA Development
- Other contrib modules
- ECA Context (https://www.drupal.org/project/eca_context)
- ECA Entity Share (https://www.drupal.org/project/eca_entity_share)
- ECA Flag (https://www.drupal.org/project/eca_flag)
- ECA Parameters (https://www.drupal.org/project/eca_parameters)
- ECA State Machine (https://www.drupal.org/project/eca_state_machine)
- ECA Tamper (https://www.drupal.org/project/eca_tamper)
- ECA VBO (https://www.drupal.org/project/eca_vbo)
- ECA Webform (https://www.drupal.org/project/eca_webform)
- Group Actions (https://www.drupal.org/project/group_action)
- ECA Guide at https://ecaguide.org - here you can find the complete documentation, a library with examples, tutorials, videos and much more.
Why should this project win the Splash Awards?
This project is unique in many ways and serves as an encouraging example of the power of Drupal and the community. Not only was it possible to complete about 3,000 hours of development work in just 11 months to a finished solution without endless budget negotiations beforehand, but 2 companies - LakeDrops and OpenCampus - teamed up to make this project straightforward and completely open-source on drupal.org.
This added value of surely half a million Euros and more, is not only a monetary gain for Drupal, but also solves another and more and more urgent problem: As of today, well over 150,000 Drupal 7 sites are still using the Rules module and by far the largest part could not yet migrate to Drupal 9 due to the lack of Rules support. This blockade will be solved by this project and should be very helpful for the whole Drupal ecosystem.
Credit: This application was originally published in German on the Splash Award website and got re-published here with kind permission.