Processus métiers utilisant les fonctions de messagerie (bp)
Sommaire |
Activités de messagerie
Les activités disponibles pour gérer les messageries sont les suivantes :
Envoyer un Email (SMTP) | |
Attendre la réponse d’un Email (REST) | |
Attendre la réponse d’un Email (POP3) | |
Attente de réception d’Email dans une boîte à lettre (POP3) |
Les activités de messageries fonctionnent sur les protocoles standards Internet.
Trois types scénarios sont possibles :
- Envoyer un mail,
- Recevoir un mail,
- Déclencher une activité dès réception d’un mail.
Deux méthodes sont offertes pour recueillir la réponse d’un Email :
- REST
- l’utilisateur clique sur un lien http correspondant au service d’un Serveur 1000 permettant de créer des évènements métiers. Cette possibilité suppose que l’utilisateur ait accès au domaine hébergeant le Serveur 1000 (Solution Intranet).
- POP3
- l’utilisateur répond au message reçu en en modifiant son contenu. L’activité scrute la boîte aux lettres de retour pour recueillir la réponse (Solution Internet).
Exemple d’utilisation d’une réponse REST
Déroulement du processus :
- Lorsqu’un utilisateur modifie le code d’un objet de WFClasseA, une instance du processus est déclenchée.
- Un email est alors envoyé à deux destinataires.
- Les destinataires peuvent répondre par Oui ou Non.
- Le processus attend la réponse, et en fonction du choix de l’utilisateur, exécute l’une ou l’autre des activités.
Comme précédemment le déclenchement du processus utilise un évènement métier, l’activité suivante est l’envoi de l’email.
Onglet « Mail »
Onglet « Mail »
Identifiant
L’identifiant du mail est un identifiant arbitraire utilisé pour réaliser le lien avec l’activité qui va gérer la réponse.
Adresse
La saisie des adresses des destinataires utilise la convention suivante :
les adresses sont séparées par des points-virgules,
- si l’adresse contient un caractère arobase @ alors il s’agit d’une adresse externe Internet
- si l’adresse ne contient pas de caractère arobase @ alors il s’agit d’une adresses interne d’une boîte à message de l’application.
Le corps du message est rédigé en HTML. Il contient les URL qui permettent à l’utilisateur de répondre. Pour placer ces URL, sélectionnez une zone de texte qui constituera le texte associée à l’URL puis utilisez la fonction URL de la barre d’outils.
Le corps du message contient aussi des valeurs d’attributs du processus qui seront substituées à l’exécution : [Instance.unCode] la valeur entre les crochets est une expression qui sera évaluée par l’activité lors de l’exécution.
Onglet « Avancé »
Le lien vers l’écran associé fonctionne si vous renseignez le nom de l’écran dans l’onglet « Avancé ».
Il permet à l’utilisateur d’accéder directement à une interface en rapport avec l’objet métier associé à l’instance du processus.
L’attente de la réponse à l’email est paramétrée de la façon suivante :
Il suffit de reprendre l’identifiant de l’activité mail pour effectuer le lien avec l’email envoyé.
L’enchainement du processus en fonction de la réponse du destinataire est réalisé ainsi :
- Si le destinataire répond OK la séquence Succès suivante est exécutée.
- Si le destinataire répond NOK la séquence Echec suivante est exécutée.
Les activités qui suivront ne feront qu’écrire un message dans l’historique de l’instance.
Exécutez cet exemple en utilisant une machine locale.
Tout d’abord ce processus envoi un Email à travers le protocole SMTP, il faut donc fournir les informations sur le serveur de messagerie utilisé. Avec l’application Desktop cela s’effectue dans le panneau de configuration du menu Fichier.
Si nous avions utilisé un Service 1000 comme Serveur du processus ces informations seraient renseignées dans son fichier de configuration.
Ensuite le processus attend une réponse renvoyée à travers un service du Serveur 1000, il faut donc exécuter un Serveur 1000 pour récupérer cette réponse.
Utilisez une machine locale. Cette machine n’étant pas le Serveur 1000 qui récupérera la réponse, il est nécessaire de renseigner l’adresse de ce serveur. Cela s’effectue sur les propriétés des « Serveurs de processus métiers ».
Démarrez une instance du processus en modifiant un objet de la classe métier.
L’instance a démarré.
Vérifiez que les emails ont été envoyés. Tout d’abord dans la boîte à message de l’utilisateur vous retrouvez le message de départ.
Il est possible de répondre à partir de la boîte à messages accessible depuis la barre Outlook, la barre d’outils de votre application Desktop ou le menu Fichier de votre application web.
Puis dans le compte de votre messagerie.
L’adresse du destinataire provient du paramètre situé dans les préférences de l’utilisateur (TODO).
Consultez l’écran associé au message en cliquant sur le lien du message, le navigateur est ouvert par le logiciel de messagerie. A cet instant l’utilisateur n’a pas de session ouverte sur le Serveur 1000, la page de connexion est donc tout d’abord proposée.
Après avoir renseigné les informations de connexion, l’utilisateur est redirigé sur l’écran.
Répondez maintenant « Répondre à l’email » en cliquant sur le lien Réponse NOK. Comme il s’agit d’un lien, le navigateur est ouvert par le logiciel de messagerie.
L’exécution du service a été réalisée et sa réponse est un fragment XML indiquant que l’évènement a bien été créé. (TODO)
Concernant le processus, on constate que l’instance s’est terminée, et il est possible de visualiser le le journal de ce processus.
La réponse reçue est bien NOK.
Vous pouvez aussi consulter les deux évènements métiers utilisés par ce processus : le changement d’état initial de l’objet métier et l’évènement créé par la réponse de l’utilisateur.
Exemple utilisant une réponse POP3
Ce second exemple est identique au précédent, excepté la réponse de l’utilisateur qui est retrouvée dans sa réponse à l’email. C’est la référence du mail qui fait le lien.
L’envoi de l’email a été modifié pour permettre une réponse par messagerie.
Les fragments entre crochet seront substitués à l’exécution ; ils ont été insérés avec la fonction suivante de la barre d’outils.
Pour que la réponse de l’utilisateur soit reconnue, il est important qu’elle contienne la référence de l’email , le reste du texte n’a pas d’importance.
Si la réponse contient le fragment correspondant à [mailreponse_ok] la réponse sera considérée comme positive.
Pour paramétrer l’attente d’une réponse POP3, il faut paramétrer les informations nécessaires à la connexion sur le serveur de messagerie POP3.
Exemple :
L’email est reçu dans le logiciel de messagerie.
Répondez en acceptant la réponse, pour cela supprimez la clause de refus.
L’envoi de la réponse est détecté par l’instance du processus qui se termine. Vous retrouvez la trace dans le journal.
Cas d’utilisation déclenchant un processus par la réception d’un email
Dans cet exemple vous allez réaliser un processus déclenché par la réception d’un email dans une boîte de messagerie. Le processus répond ensuite à l’email puis se termine.
Evènement initial
L’évènement initial est la réception d’un email par le protocole POP3. En double-cliquant sur l’activité « Réception d’un Email dans une boîte à lettre », vous la paramétrez avec les informations de connexion du compte POP3.
Le préfixe des paramètres sera utilisé pour copier les informations de l’email déclencheur dans les paramètres de l’instance.
Activité
L’activité envoyant la réponse est paramétrée dans la boîte de dialogue des propriétés de l’activité « Envoyer un email »..
L’activité utilise les informations copiées lors de la création de l’instance pour :
déterminer l’adresse du destinataire : [GetParameter(‘inbox’,’ReplyTo’) ],
déterminer l’objet de l’Email : [Get(‘inbox.Subject’) ],
déterminer le corps de l’Email : [Get(‘inbox.Content’)].
Les deux formes GetParameter et Get sont équivalentes dans cet exemple.
Exécutez ce processus en utilisant le logiciel de messagerie d’envoi d’email dans la boîte à lettre utilisée par le processus.
La réception de l’Email a créé une instance, celle-ci a répondu puis s’est terminée. Vous en trouvez la trace dans le journal.
Vous pouvez aussi consulter les paramètres de l’email.
Consultez la boîte à lettre de l’expéditeur pour retrouver la réponse.
Cas d’utilisation faisant appel à un formulaire
Dans cet exemple vous allez envoyer un mail en demandant au destinataire de remplir un formulaire.
Le scénario est le suivant :
- un processus est déclenché immédiatement,
- l’instance du processus envoi un email à l’utilisateur,
- l’instance du processus attend la création de saisie du formulaire.
Le modèle du processus est le suivant :
Le formulaire
Le formulaire lui-même est un écran Sage 1000 qui stockera le contenu de la saisie dans une classe persistante. Le modèle de cette classe contient un champ InstanceId qui stockera l’identifiant de l’instance du processus. Ce champ constitue aussi une clé unique qui évitera la double saisie.
L’écran de saisie du formulaire est un écran simple sur lequel les options de navigation ont été supprimées.
L’écran possède un argument qui va permettre de renseigner automatiquement l’instance du processus.
L’envoi du mail
Dans les propriétés du processus (onglet « Avancés »), associez la classe métier du formulaire, ceci permettra de configurer les activités plus facilement.
L’activité email est paramétrée.
Le contenu du message est un lien vers l’écran de saisi, l’onglet avancé paramètre ce dernier.
L’écran de saisie est ouvert en mode création. Ainsi l’utilisateur n’a plus qu’à remplir les champs et valider. L’argument de l’écran ArgInstanceId sera automatiquement renseigné avec l’identifiant de l’instance du processus.
Dans cet exemple utilisez InstanceGUID comme identifiant d’instance.
La réception de la réponse au formulaire
Pour retrouver la réponse vous avez enregistré un évènement métier déclenché par la création d’un objet de la classe formulaire.
L’activité « Attente d’un évènement métier » est utilisée et paramétrée de la façon suivante.
Lors de l’exécution de l’activité, le processus n’a pas encore d’objet métier associé, l’attribut « Instance » du processus n’est donc pas globalement défini. Cependant, dans le contexte de cette activité il représente l’objet associé à l’évènement.
Il est possible de tester dans les Post-Conditions que l’objet correspond bien à l’instance de processus.
En cochant la case« Définir comme objet de l’instance » de l’onglet « Général », vous associez l’objet de l’évènement à l’instance du processus. Cette association sera effective uniquement pour les activités qui suivront.
Exécutez le processus
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/
Lorsque l’utilisateur clique sur le lien, il accède à l’écran du formulaire.
Lorsque l’utilisateur valide sa saisie, l’instance du processus peut évoluer.