Comment paramétrer le cycle de vie - Envoi de mail
Prérequis
Il faut avant toute chose avoir suivi et réalisé les étapes traitées dans ces guides :
- initialiser une application
- créer un formulaire (une SmartStructure)
- créer le cycle de vie d’un SmartElement
- comprendre ce qu’est un modèle de mail et comment le créer
- comment mettre en place un mail catcher
Comment procéder ?
Recommandation
Si vous n’êtes pas familier avec les Modèles de mail
et leur fonctionnement, il est fortement recommandé de lire la
documentation associée
disponible ici
Afin d’aborder cette notion de modèle de mail et d’envoi automatique, nous allons prendre notre cas suivant :
En test
=>À la carte
: Envoi d’un mail au créateur du consommable et aux cuisiniers.
Rappel
Les différentes étapes et transitions de notre cycle de vie ont été définies lors de la déclaration du graph du workflow.
Créer un modèle de mail dépendant d’une SmartStructure - Anakeen CLI
- Créer le modèle de mail avec la commande
createSetting
npx @anakeen/anakeen-cli createSetting --type MailTemplate --associatedSmartStructure PLAT --name MAIL_INFO_E1_TO_E2
Informations
Si la SmartStructure renseignée pour --associatedSmartStructure
existe, alors le modèle de mail est placé
automatiquement dans le dossier <SmartStructureName>Settings
Voici le fichier que la commande génère
<?xml version="1.0" encoding="UTF-8"?> <smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0"> <mail:mailtemplate xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0" name="MAIL_INFO_E1_TO_E2" label="MAIL_INFO_E1_TO_E2" structure="PLAT"> <mail:from> <!-- <mail:config-parameter ns="NAMESPACE" label="Expéditeur">ACCOUNT_SENDER</mail:config-parameter> --> </mail:from> <mail:recipients> <!-- <mail:recipient dest="to"> <mail:element-account-field label="Destinataire">person_recipient</mail:element-account-field> </mail:recipient> --> </mail:recipients> <mail:subject>[Restauratec] Mail sample</mail:subject> <mail:body content-type="html"><![CDATA[<p>Bonjour,<br /><br />Ce mail est un exemple]]></mail:body> </mail:mailtemplate> </smart:config>
- Compléter la balise
<mail:mailtemplate>
afin d’y indiquer le modèle de workflow associé. Profitons-en pour donner à ce modèle de mail un label plus parlant :
<mail:mailtemplate name="MAIL_INFO_E1_TO_E2" label="Plat `En test` => `À la carte`" structure="PLAT" workflow-model="WFAM_PLAT">
xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0"
n’était pas nécéssaire car déjà présent sur la balise parente<smart:config>
- Renseigner le ou les émetteurs ainsi que le(s) destinataire(s) :
Recommandation / Informations
- Je vous invite à consulter la documentation associée afin de prendre connaissance des différentes possibilités existantes.
- Le résultat final pour notre cas est le suivant :
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:mail="https://platform.anakeen.com/4/schemas/mailtemplate/1.0">
<mail:mailtemplate name="MAIL_INFO_E1_TO_E2" label="Plat `En test` => `À la carte`" structure="PLAT" workflow-model="WFAM_PLAT">
<mail:from>
<mail:address>admin@example.net</mail:address>
</mail:from>
<mail:recipients>
<mail:recipient dest="to">
<mail:element-account-field>consommable_creator</mail:element-account-field> <!-- consommable_creator = smart field account de la smart Structure PLAT -->
</mail:recipient>
</mail:recipients>
<mail:subject>Validation du plat [V_CONSOMMABLE_TITLE]</mail:subject>
<mail:body content-type="html">
<![CDATA[
<p style="margin:0pt;"> </p>
<div>
Le plat "<strong>[V_CONSOMMABLE_TITLE]</strong>" n’est plus `En test` mais
désormais disponible `À la carte`
</div>
<p style="margin:0pt;"> </p>
]]>
</mail:body>
</mail:mailtemplate>
</smart:config>
Informations
Le modèle des balises présentes dans le sujet du mail <mail:subject>
ainsi que dans le corps du mail <mail:body>
est
le suivant :
[V_<SMARTFIELD_LOGICAL_NAME>]
.
Pour pouvoir activer le système d’hyperlien alors ajouter la balise :
<mail:use-html-anchor>true</mail:use-html-anchor>
.
Si vous voulez créer une URL vers le smart element concerné alors vous pouvez utiliser la balise [V_TITLE]
Vous pourrez ensuite utiliser la balise [V_CONSOMMABLE_TITLE]
présente dans le titre et corps du mail fait donc
référence à la valeur du SmartField consommable_title
du SmartElement concerné.
Envoyer automatiquement un mail en se basant sur un modèle
Afin de déclencher l’action d’envoi de mail lors d’une transition, il ne reste plus qu’à référencer le modèle de mail
précédemment créé dans l’instance de workflow voulu. Pour le cas du restaurant, c’est ce fichier
510-WdocPlatWorkflowSettings.xml
qui a été créé dans cette partie
<?xml version="1.0" encoding="UTF-8"?>
<smart:config xmlns:smart="https://platform.anakeen.com/4/schemas/smart/1.0" xmlns:workflow="https://platform.anakeen.com/4/schemas/workflow/1.0">
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!--Timer and Mail templates workflow references-->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<workflow:config xmlns:workflow="https://platform.anakeen.com/4/schemas/workflow/1.0" name="WDOC_PLAT" structure="PLAT" model="WFAM_PLAT" label="Workflow Plat">
<workflow:steps/>
<workflow:transitions>
<!-- Cibler la transition concernée ... -->
<workflow:transition ref="t_plat_e1_e2">
<!-- ... et lui lier le modèle de mail voulu -->
<workflow:mailtemplate ref="MAIL_INFO_E1_TO_E2" />
</workflow:transition>
</workflow:transitions>
</workflow:config>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!--Elements (color, cvdoc, masks) user interface referenced in workflow-->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<workflow:config xmlns:workflow="https://platform.anakeen.com/4/schemas/workflow/1.0" name="WDOC_PLAT" structure="PLAT" model="WFAM_PLAT">
<workflow:steps>
<workflow:step ref="plat_e1">
<workflow:color>#ffaa00</workflow:color>
</workflow:step>
<workflow:step ref="plat_e2">
<workflow:color>#55ff00</workflow:color>
</workflow:step>
<workflow:step ref="plat_e3">
<workflow:color>#FF4249</workflow:color>
</workflow:step>
</workflow:steps>
</workflow:config>
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<!--Default workflow for the structure-->
<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-->
<smart:structure-configuration name="PLAT">
<smart:default-workflow ref="WDOC_PLAT"/>
</smart:structure-configuration>
</smart:config>
Un mail sera dorénavant envoyé automatiquement au créateur du consommable ainsi qu’aux cuisiniers du restaurant lorsque
la transition En test
vers À la carte
sera effectuée.
Résultat / Vérification
Remarque
Pour pouvoir tester l'envoi et la réception de mails, il est nécessaire d'installer l'extension mailhog
. Pour ce
faire, veuillez vous référencer à la documentation suivante.
Nous souhaitons vérifier que lorsqu'un Plat
passe de l'état En test
à À la carte
, un mail est envoyé.
Commençons par créer un plat avec un utilisateur ayant le rôle role_direction
:
http://localhost:8080/api/v2/smart-elements/PLAT/views/!defaultCreation.html
Une fois le plat crée, avançons dans le cycle de vie jusqu'à avoir la transition En test
vers À la carte
. En
réalisant cette transition, un mail devrait être envoyé et reçu sur mailhog
.
http://localhost:8081/