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 :

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

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;">&nbsp;</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;">&nbsp;</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/

mail_transition

Et ensuite ?

Comment paramétrer le cycle de vie - Timer