Wat is en doet de ECA module?
De Events - Condtion - Action (ECA) module stelt je in staat om op basis van een bepaalde gebeurtenis (Event), die voldoet aan bepaalde voorwaarden (Condition), een actie (Action) uit te voeren.
Als je Drupal al wat langer gebruikt dan ken je vast de Rules module wel. Deze heb ik zelf veel gebruikt in Drupal 7 maar heeft, naar mijn weten, nooit een goede update gekregen naar Drupal 8, 9 of 10. De ECA module duikt in het gat wat de Rules module heeft achter gelaten.
In deze blog gebruik ik het voorbeeld van het versturen van een e-mail wanneer iemand een reactie plaatst op een Drupal website. Dit is handig om te weten als iemand bijvoorbeeld een vraag stelt in een reactie en je wil er snel op reageren.
Als we dit voorbeeld plotten op de het ECA model krijgen we het volgende:
- Het Event is het plaatsen van de reactie.
- De Condition is de voorwaarde dat de reactie geplaatst wordt door een gebruiker die NIET de administrator rol heeft. Je mag er vanuit gaan dat reacties die geplaatst worden door iemand met een Adminstrator rol niet gecheckt hoeven te worden.
- De Action is het versturen van een e-mail naar een bepaald e-mailadres
Installatie en configuratie ECA module
Allereerst moeten we de ECA module installeren. Daarna moet je een zogenaamde 'Modeller' module installeren waarmee je de Events, Conditions en Actions aan elkaar kan koppelen. Hierin heb je verschillende keuzes. Zelf begon ik met de ECA Classic Modeller maar deze kreeg ik niet goed aan de praat. Dus ik ben vrij snel geswitched naar de BPMN.IO module die het geheel visueel maakt met behulp van diagrammen.
- Nadat je beide modules hebt geïnstalleerd kun je een zogenaamd 'model' aanmaken.
- Navigeer naar Configuration > Workflow > ECA
- Klik op 'Add new model'.
- Rechts zie je een blokje met 'Process' staan. Open het tabje 'General' en geef het gehele proces een naam bij 'Name'. Ik vul in dit geval 'Verstuur email wanneer er een reactie is geplaatst' in.
- Aan de linkerkant zie je een menu met allerlei figuurtjes. Het rondje staat symbool voor de start van een Event. Sleep daarom een rondje op het witte lege canvas.
- Rechts zie je nu een blokje 'Start event' staan. Klik naast 'Template' op de '+ select' knop. Hier kun je een template kiezen waarmee het proces gestart wordt.
- In het geval van dit voorbeeld gaat het om het toevoegen van een reactie. Een reactie wordt binnen Drupal gezien als een 'Content entity'. Selecteer daarom 'Insert content entity'
- In het blokje rechts verschijnt nu onder het tabje 'Custom properties' de mogelijkheid om een 'Type (any bundle)' aan te geven. Hiermee kun je bepalen bij wat voor een type content entity het process in gang gezet wordt. In dit geval kiezen we voor 'Reactie: -any-'.
- Als je het tabje 'General' open klikt kun je het event een naam geven. In dit geval 'Reactie wordt geplaatst'.
- Vervolgens sleep je vanuit het menu het afgeronde rechthoek (de 'Task') op het canvas.
- Geef de taak een naam in het blokje rechts onder 'Name'. In dit geval vul ik 'Verstuur e-mail' in.
- Klik naast 'Template' op '+ select' en zoek en kies voor 'Send email'.
- Onder 'Custom properties' in het blokje rechts vul je bij 'Recipient email address' het email adres in dat een mail moet ontvangen als er een reactie geplaatst is.
- Onder 'Subject' vul je het onderwerp in van d email die verstuurd wordt. Je kan hier gebruik maken van zogenaamde tokens. Zo gebruik ik bijvoorbeeld het volgende als onderwerp: '[comment:author] posted a comment on [comment:entity]'. Als ik nu een mail krijg zie ik direct in het onderwerp wie de reactie geplaatst heeft en de titel van de node (blog of artikel) waar de reactie geplaatst is.
- Bij 'Message' vul je in wat de inhoud van de e-mail moet zijn. Ook hier kun je tokens gebruiken. Ik gebruik hier het volgende: "[comment:body] Link: [comment:url]". Waar de comment:body token de inhoud van de reactie laat zien en met comment:url token kan ik vanuit de e-mail direct naar de reactie navigeren.
- Het voelt misschien tegenstrijdig maar 'Replace tokens' kun je op 'no' laten staan.
- Vervolgens selecteer je links een pijl (sequence flow) en trek je deze van het rondje (event) naar het vierkantje (task).
- Klik rechts onder 'Sequence flow' op '+ select' naast 'Template'.
- Zoek en kies 'Role of current user'.
- Selecteer 'Adminstrator' bij 'User role' en kies bij 'Negate condition' voor 'yes'. Dit zorgt ervoor dat de actie alleen in werking treed als er een reactie geplaatst wordt door een gebruiker die NIET de rol van Administrator heeft.
- Klik nu op de 'Save' knop om het model op te slaan.
Je kan het model nu testen door een reactie te geven op je website en controleren of de mail aankomt. Als je geen mail ontvangt controleer dan eerst of je Drupal website goed geconfigureerd is om mails te versturen.
Heb je vragen of opmerkingen over deze Drupal tutorial? Laat het mij dan weten door hieronder een reactie achter te laten.