Processus Métiers (bp)
Définitions
Définition d’un processus métier ou Workflow
Un processus métier sert à la gestion des circuits de validation et est paramétrable par l’utilisateur.
« Formellement, un processus métier peut être défini comme un enchaînement d'activités incluant une interaction entre participants, dans le but de réaliser un objectif métier. Dans un processus métier, on tient compte des différents participants d'une opération, de leur rôle, de l'objectif de cette opération et des moyens mis en œuvre (messages, documents). Un processus métier décrit des activités et leur séquencement. »
Processus métier dans Sage 1000
Un processus métier est un ensemble d’activités et d’évènements reliés entre eux par des séquences et qui vont s’enchaîner. Ils sont exécutés dans des machines qui sont elles-mêmes hébergées dans des serveurs.
Dans Sage 1000, un processus métier est conçu dans le concepteur de processus métier. Quand la conception est terminée il est mis en fonctionnement dans un ou plusieurs moteurs de processus métiers indépendants du concepteur.
Lors de l’exécution d’un processus métier, des « instances » sont créés par des évènements « initiaux » du processus. Ce sont ces instances qui sont exécutées, un processus métier pouvant avoir simultanément plusieurs instances en cours d’exécution.
Un processus est « métier » s’il peut interagir avec les objets des applications métiers ; pour cela les instances du PM doivent être associées à un objet de l’application métier. Un processus métier peut réagir aux évènements se produisant dans les applications métiers par l’intermédiaire des évènements métiers. Un évènement métier est généralement déclenché par un changement d’état d’un objet métier.
Différences entre Automate et Processus métier
Les Processus Métiers présentent des analogies de modèle et de fonctionnement avec les Automates existants notamment dans Sage 1000.
Les automates
L'utilisateur définit des automates attachés à un serveur d'automate et qui s'exécutent dans un Service Ligne 1000. Un automate exécute et enchaîne des tâches techniques ou métiers.
Les processus métiers
L'utilisateur défini des processus métiers, exercés dans un moteur s'exécutant dans un Service Ligne 1000. Un processus métier réagit à un évènement initial et crée une de processus métier Cette instance exécute et enchaîne des activités techniques ou métiers et réagit à des évènements.
Pourtant il existe des différences majeures entre l’automate et le processus métier :
- Un automate s'exécute, à un instant « T » et il ne peut y avoir qu'une seule exécution de l'automate. Un processus métier exécute des instances, et à un instant « T » il peut y avoir plusieurs instances du processus en cours d'exécution.
- Un processus métier est lié au métier : une instance de processus est rattachée à une instance d'un objet métier et peut interagir avec celle-ci.
Quand utiliser des Processus métiers ?
Les Processus Métiers sont utilisés dans les cas suivants :
Pilotage et orchestration.
Les processus métier peuvent appliquer les règles métiers de l’entreprise en gérant les activités métiers liées à l’exploitation des applications métiers. Ainsi ils permettent d’automatiser l’exploitation de l’application, en substituant à l’utilisation des interfaces utilisateurs des processus interagissant directement avec les objets métiers de l’application.
Orchestration d’architecture SOA
Couplés au Web Service ils peuvent permettre de mettre en œuvre des architectures SOA (Orienté Services) en prenant en charge l’orchestration des services.
Intégration et EAI
Les processus métier peuvent faciliter l’intégration d’applications hétérogènes grâce aux possibilités offertes par les activités techniques et leur capacité d’orchestration.
Automatisation
Les processus métier peuvent remplacer l’utilisation des Automates et Séquenceurs et permettre de bénéficier de nouvelles possibilités et d’une interface utilisateurs plus sophistiquée.
Architectures
Conception et exécution des processus métiers
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/
Evènements métiers : relations entre processus métiers et évènements métiers
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/
Guide d’utilisation des processus métiers
Création d’un processus métier
Fenêtres de propriétés associées au processus métiers
Propriétés d’un serveur de processus
Pour afficher la fenêtre de propriétés d’un serveur de processus, sélectionnez la commande Propriétés du menu contextuel du serveur de processus métier.
Onglet « Propriétés »
Nom du serveur
C’est le nom du serveur de Processus Métier. Lorsque le serveur de processus est exécuté sur un Service Ligne 1000 ce nom doit correspondre au nom de la machine physique qui exécute le Service ligne 1000.
Nom du service
Il s’agit du nom du Service Ligne 1000.
Si le nom du serveur est localhost le serveur est considéré comme étant un serveur local. Un serveur local est utile lors de la phase de mise au point pour exécuter des machines à l’intérieur de l’application Desktop.
Onglet « informations »
L’onglet « Informations » donne des informations sur la configuration du serveur et l’état de celui-ci.
Propriétés d’une machine
Pour afficher la fenêtre de propriétés d’une machine, sélectionnez la commande Propriétés du menu contextuel de la machine.
Onglet Propriétés
Nom du moteur
Identifie le moteur.
Base de données
Les évènements métiers pris en compte par la machine sont filtrés sur cette base de données. Si la base de données n’est pas renseignée, toutes les bases de données enregistrées dans le framework lors de l’exécution sont prises en comptes.
Délai de Cycle
Délai en millisecondes entre chaque étape de la machine.
Synchronisation
Intervalle en nombre de cycles entre deux synchronisations des évènements métiers. La synchronisation des évènements métiers consiste à lire la table des évènements métiers pour prendre en compte les nouveaux évènements. Couplé au paramètre « Délai de Cycle », ce paramètre conditionne la fréquence des requêtes effectuées par la machine dans la table des évènements.
Exemple
Avec un délai de cycle de 1 seconde et un pas de 1 seconde la machine exécutera une requête par seconde. Avec un pas de 10 la machine exécutera une requête toutes les 10 secondes.
Renseignez 0 pour indiquer aucune synchronisation. Ce cas est utile pour une machine hébergeant des processus techniques n’ayant aucune interaction avec les évènements métiers.
Sauvegarde toutes les
Indique le délai minimum entre deux sauvegardes.
En cours d’exécution la machine effectue une sauvegarde de son état si un état a changé au cours d’un cycle et si le délai avec la dernière sauvegarde est supérieur à cette valeur.
Date de synchronisation
Cette date indique la date de synchronisation de la machine. La date de synchronisation est la date au delà de laquelle les évènements sont pris en compte.
Séquence d’évènement
Cette information indique le numéro de séquence du dernier évènement pris en compte.
Onglet « Commentaire »
Dans l’onglet « Commentaire » vous ajoutez des informations utiles à la compréhension du moteur.
Onglet « XML contenu »
Cet onglet affiche le script xml.
Propriétés d’un processus métier
Pour afficher la fenêtre de propriétés d’un processus métier, sélectionnez la commande Propriétés du menu contextuel du processus.
Cette boîte de dialogue concerne les processus en cours de conception et non les Processus en cours d’exécution. Lorsqu’un processus métier est exécuté, les copies exécutées ne sont pas impactées par ce dialogue.
Voir le § « ».
Onglet propriétés
Nom du processus
Nom identifiant le processus.
Version du processus
Un processus est identifié par la combinaison de son nom et de sa version.
Il est possible d’exécuter simultanément plusieurs versions de processus.
Ce processus métier est désactivé
Un processus métier désactivé ne démarre plus de nouvelle instance.
Enregistrer dans journal
L’enregistrement de l’exécution d’une instance s’effectue lorsque l’instance ce termine. Décochez cette option si vous ne voulez pas garder trace de l’exécution.
Nombre maximum d’exécution
Indique le nombre d’instance que peut démarrer le processus. Si le nombre est à -1, le nombre d’exécutions est illimité. Les exécutions devront être stoppées au niveau du processus.
Nombre maximum d’instances simultanées
Indique le nombre maximum d’instances du processus pouvant s’exécuter simultanément. Lorsque ce nombre est atteint, le démarrage de nouvelles instances est temporisé.
Délai d’attente maximal
Indique le délai d’attente maximal par défaut pour toutes les activités. Une valeur « 0 » indique qu’aucun délai d’attente n’est pris en compte. Il est possible de définir ce délai au niveau de chaque activité.
Onglet « Commentaire »
Dans l’onglet « Commentaire » vous ajoutez des informations utiles à la compréhension du processus.
Onglet « Attributs »
Cet onglet permet de définir les attributs du processus.
Les attributs sont des variables pouvant être manipulés dans les activités du processus. Il est aussi possible de définir dynamiquement de nouveaux attributs lors de l’exécution des instances. L’intérêt de prédéfinir les attributs à ce niveau est d’avoir ensuite la possibilité de les manipuler dans les interfaces de conception. En effet, si les attributs sont définis dynamiquement il ne sera pas possible de les utiliser par la suite dans es activités.
Onglet « Avancés »
Il est possible d’associer une classe métier au processus métier. Cette classe pourra être utilisée par certaines activités.
Créer un objet et Base de données : Ces propriétés servent à créer automatiquement un objet métier (persistant) lorsqu’une instance du processus est démarrée. L’objet est associé à l’instance du processus.
Onglet « XML contenu »
Cet onglet affiche le script xml.
Propriétés d’un processus en cours d’exécution
Pour afficher la fenêtre de propriétés d’un processus en cours d’exécution, sélectionnez la commande Propriétés du menu contextuel du processus.
Les informations modifiables dans cette boîte de dialogue sont identiques à celles de la fenêtre de propriétés d’un processus.
Propriétés d’une instance en cours d’exécution
Pour afficher la fenêtre de propriétés d’une instance en cours d’exécution, sélectionnez la commande Propriétés du menu contextuel de l’instance.
Onglet Propriétés
Identifiant :
Nom de l’instance.
Etat en cours :
Etat en cours d’exécution. L’état correspond à une activité.
Date de changement :
Date à laquelle cet état a été atteint.
Expire-le :
Date d’expiration de l’état quand un délai d’expiration est défini. « zéro » indique aucune expiration.
Onglet Messages
Cet onglet affiche tous les messages collectés par l’instance.
Onglet Paramètres
Cet onglet affiche toutes les valeurs des paramètres de l’instance.
Propriétés d’une activité ou d’un évènement
Toutes les activités ont une fenêtre de dialogue de propriétés. Celui-ci dépend de l’activité. En général ces dialogues incluent les pages suivantes.
Pour afficher la fenêtre de propriétés d’une activité ou d’un évènement, double-cliquez sur l’activité ou l’évènement concerné.
Pour plus de détails sur la fenêtre de propriétés d’un évènement métier, reportez-vous au § .
Processus métier en interaction avec le métier
Principe de fonctionnement
L’intérêt des processus métiers est de pouvoir interagir avec les applications métiers. Cela entend :
Etre déclenché par un évènement issu d’un objet métier,
Pouvoir manipuler des informations d’un objet métier,
Pourvoir modifier l’état d’un objet métier.
Pour réaliser un processus interagissant avec un objet métier vous devez utiliser la démarche suivante.
Ajouter une règle d’état au modèle métier qui détectera le changement d’état de l’objet.
| |
Utilisez l’évènement initial « Evènement métier » pour déclencher votre processus.
| |
Utilisez l’activité «Exécuter une expression » pour conditionner votre processus suivant l’état de l’objet.
| |
Utilisez l’activité « Exécutez du code métier » pour modifier l’état de l’objet métier.
|
Lorsque vous déclenchez un processus par un évènement métier, l’instance du processus est automatiquement liée à l’instance de l’objet métier ayant déclenché l’évènement. Vous pouvez alors manipuler cette instance dans les activités du processus à travers l’attribut « Instance ».
Il n’y a qu’une seule classe d’évènement métier par type de modification pour un même objet métier, mais elle peut servir à déclencher plusieurs évènements de processus métier.
Quand la classe est déclenchée par le métier tous les évènements métiers qui y sont reliés sont déclenchés.
Un évènement métier peut déclencher plusieurs instances.
Exemple d’utilisation
La classe WFClasseA possède un Code (attribut unCode) et un état (attribut unEtat). Deux règles d’état sont définies :
- La règle RegleEtat_unCode détecte le changement de l’attribut code.
- La règle RegleEtat_unEtat détecte le changement de l’attribut unEtat :
Le processus va réaliser les opérations suivantes :
- Lorsque l’utilisateur modifie le code d’un objet de WFClasseA, une instance du processus est déclenchée.
- Cette instance modifie l’attribut Etat de l’objet correspondant à la valeur « Initial ».
- Le processus attend ensuite que l’attribut Etat passe à la valeur « Etat3 », changement réalisé par l’utilisateur.
- L’instance du processus change alors la valeur de l’attribut Etat à « Final » et se termine.
Le processus métier correspondant est défini.
L’évènement initial est l’évènement métier généré par la règle d’état de changement de code.
Le changement du code d’un objet de cette classe va donc créer une instance du processus.
L’activité suivante est une activité script qui modifie la valeur de l’attribut « Etat » de l’objet.
La classe de l’objet métier est connue par le processus. Ainsi les outils d’aide à l’édition de code fonctionnent.
Le corps du code modifie l’attribut de l’instance dans une transaction.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/image47.pngLe processus attend ensuite la modification de l’état de l’objet. Pour cela il utilise un évènement « Attente » d’Evènement métier.
Lorsque la case « Evènement de l’instance principale » est cochée, l’évènement doit provenir de la même instance d’objet métier que celle qui a déclenchée le processus.
Sur l’onglet « Post-Condition », la condition est la suivante : l’objet métier doit être dans l’état 3.Cette condition sera testée par l’activité. Si elle n’est pas remplie, l’activité sera toujours en attente.
Lorsque l’objet a été changé, ici par l’utilisateur, le processus enchaine l’activité suivante qui modifie de nouveau l’état de l’objet, puis se termine.
Procédure
Une interface utilisateur simple est utilisée pour modifier les objets. Le processus est en cours d’exécution dans une machine locale.
La modification du code entraine la création d’une instance. Les différentes activités du processus sont exécutées jusqu'à l’attente d’un nouvel évènement métier:
Si on rafraichit l’interface utilisateur, on constate que l’état de l‘objet a été changé.
Passez l’objet dans l’état Etat3.
L’instance du processus enchaîne les dernières activités puis se termine. En rafraichissant l’interface utilisateur, on constate que l’objet est dans l’état final.
Vous remarquez dans cet exemple que :
- La création d’un nouvel objet de la classe ne déclenche pas d’instance de processus, cela parce que les règles d’état ne sont évaluées qu’en mode modification.
- La modification de l’objet dans un autre état que l’état 3 n’a pas d’influence sur le processus.
Base de données d’une instance de Processus Métier
Par défaut un Processus Métier n’est pas rattaché à une base de données particulière, toutefois dans certain cas il est souhaitable qu’un Processus s’exécute dans un contexte de base de données particulier.
Pour cela il est possible de définir la base de données privilégié par un Processus à deux niveaux :
Au niveau de la machine qui contient le processus.
Une autre conséquence de définir une base de données au niveau de la machine est que cette base devient un filtre pour les évènements métiers pris en compte par la machine.
Au niveau du Processus lui même.
Cette base de données privilégiée sera utilisée :
Par les activités de type Tâche métier qui possède un paramétrage de base de données : si vous ne renseignez pas la base de données au niveau de l’activité Tâche la base de données privilégiée du Processus sera utilisé.
Lors de la création de l’instance associé au Processus Métier si vous avez utilisez l’option permettant de créée automatiquement une instance lors du démarrage d’une instance de Processus Métier.
La priorité de prise en compte des différentes possibilités de paramètrage est la suivante :
La base de données définie au niveau de l‘activité si elle existe.
La base de données définie au niveau de la machine
La base de données définie au niveau du Processus.
Processus métiers utilisant les fonctions de messagerie
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 scénarios sont possibles :
envoyer un mail,
recevoir un mail,
déclencher une activité dès réception d’un mail.
Deux possibilités 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.
Paramétrage des processus métiers
Le modèle de processus métier
Le moniteur d’exécution des processus métiers
Le concepteur de processus métiers
Le concepteur de processus métiers est accessible par le menu Fichier / Outils / Concepteur de processus métiers.
La fenêtre du concepteur de processus métiers comporte quatre parties :
Arbre de la partie gauche de la fenêtre
L’arbre à gauche de la fenêtre affiche les différentes entités en rapport avec les processus métiers :
- les serveurs, locaux ou distants, qui ont été enregistrés. Leur état est signalé (arrêté, suspendu, démarré) et il est possible de suivre l’exécution des processus métiers qui sont présents dans les moteurs.
- les processus métiers, destinés à être exécutés par un service, et organisés en catégories.
- les machines,
les processus exécutés par la machine,
les instances de processus exécutées par la machine,
- les classes d’évènements métiers enregistrés,
- les instances d’évènements métiers.
La palette d’outils centrale
Elle contient l’ensemble des évènements et activités disponibles pour construire un processus métier. Ces éléments sont regroupés logiquement dans des onglets.
La barre d’outils centrale
Elle contient les éléments les plus fréquemment utilisés.
La zone de droite
Elle contient la zone d’édition graphique des processus métiers.
La zone d’affichage des messages d’erreurs
La zone au bas de la fenêtre affiche les messages d’erreurs éventuels lors de la validation d’un processus métier.
Service Ligne 1000 et processus métiers
Principes
Un Service Ligne 1000 peut démarrer un seul serveur de processus métier.
- Le service démarre le serveur de processus métiers dont le nom et le service correspondent au nom de la machine exécutant le service et au nom du Service.
- Lorsque le service est démarré, le serveur de processus métiers et les machines qu’il contient sont automatiquement démarrées en mode exécution.
- Lorsque le service est arrêté, le serveur est arrêté et l’état des machines en cours d’exécution est sauvegardé.
Paramétrage du service
Le fichier de configuration du serveur contient différentes entrées en relation avec les processus métiers.
BP RunOnStart | Valeur logique | Indique si le Serveur de processus est automatiquement démarré |
SMTP Host | Chaîne | Serveur de messagerie SMT pour l’envoi d’Email |
SMTP Port | Entier | Port du serveur de messagerie SMTP |
SMTP Login | Chaîne | Compte utilisateur du serveur SMTP |
SMTP Password | Chaîne | Mot du passe du compte du serveur SMTP |
SMTP From | Chaîne | Adresse de l’expéditeur des Email envoyés par le serveur SMTP |
Arrêt et démarrage
Il est possible d’arrêter et de démarrer manuellement le serveur d’un service à partir du concepteur de processus ou du moniteur.
Sur le serveur, sélectionnez la commande Arrêter le service du menu contextuel.
Cette action arrête l’ensemble du serveur. Lorsqu’un serveur est redémarré manuellement les machines qu’il contient ne sont pas automatiquement démarrées. Vous devez manuellement des démarrer et les placer dans l’état exécution.
Evènements métiers
Définition des évènements métiers
Les évènements métiers sont des objets d’une classe contenue dans le référentiel.
Cette classe hérite de la classe des évènements utilisée pour l’enregistrement des traces. Ainsi les évènements métiers et les évènements de trace sont unifiés dans le même modèle. De ce fait tout évènement généré par le système de trace est potentiellement utilisable comme évènement métier à l’intérieur des processus métiers.
Les évènements métiers peuvent donc être créés par :
- le système de gestion des traces,
- l’exécution d’une règle d’état posée dans le modèle,
- le code métier,
- les services du serveur Ligne 1000.
Classes d’évènements métiers
Les classes d’évènements métiers décrivent les évènements métiers pour permettre de les identifier plus facilement. Elles permettent en particulier d’associer une classe métier à un ensemble évènements.
Sur le dossier Classe d’évènements métier enregistrer un évènement à l’aide du clic droit / Nouvel évènement.
L’évènement créé sera pris en compte uniquement après le redémarrage des services.
Evènements métiers
Les évènements métiers sont des objets du référentiel créés par différentes sources, et correspondant à un évènement généralement en rapport avec un changement d’état du métier.
Informations liées aux évènements métiers
Les informations liées à un évènement métier sont enregistrées lors de sa création.
Enregistrement des évènements métiers
L’enregistrement des évènements métiers permet de définir des classes d’évènements utilisables dans les processus métiers.
Sur le dossier « Classes d’évènements métiers », choisissez la commande Nouvel élément du menu contextuel.
L’identifiant
Il est automatiquement construit à partir des constituants. C’est cet identifiant qui est utilisé par les activités pour retrouver les évènements les concernant.
Type
Type de l’évènement métier. Ce type dépend de la nature et de la source de l’évènement.
Nom utilisé
Ce champ contient la classe de l’objet métier associé. Cet attribut est utilisé uniquement pour les évènements en rapport avec une classe métier.
« Nom de l’évènement »
Ce champ contient une propriété associée à l’évènement. Cet élément est utilisé uniquement pour certains types d’évènements.
Type de l’évènement | Source | Attribut Classe | Attribut Propriété |
Création d’un objet | Traces | Classe de l’objet | |
Suppression d’un objet | Traces | Classes de l’objet | |
Mise à jour d’un objet | Traces | Classes de l’objet | Vide ou nom d’un attribut de l’objet |
Exécution d’une méthode d’un objet | Traces | Classes de l’objet | Nom de la méthode |
Exécution d’un traitement | Traces | Classes d’un d’objet de type processus ayant une méthode « Exécute » | « Exécute » |
Changement de l’état d’un objet | Traces | Classes de l’objet | |
Exécution d’une règle d’état | Règles | Classes de l’objet | |
Evènement utilisateur | Code métier, Services | Classe de l’objet ou vide | Nom de l’évènement |
Description de l’évènement
Il est possible dans cet espace de donner une description de l’évènement ou de saisir du code métier.
Pour relier un évènement métier à une classe d’évènements il faut éditer l’évènement métier puis sélectionner l’identifiant de la classe créée.
Le bouton [+] à gauche de l’identifiant permet de créer aussi directement la classe à partir de cet écran.
Ajouter des règles d’état au modèle métier
Une règle d’état est une règle métier qui permet de créer automatiquement un évènement métier lorsque l’état d’un objet change. Une règle d’état est statique.
Double-cliquez sur la règle pour afficher les propriétés.
La règle est associée à une classe d’évènements métiers, cette classe étant déterminée au moment de la définition de la règle.
Le fonctionnement de la règle est le suivant :
la règle est évaluée lorsque l’objet rentre en transaction, la valeur retournée par la règle est sauvegardée.
la règle est de nouveau évaluée lors de l’évènement BeforeSave pendant la mise à jour de l’objet. Si la valeur retournée par la règle a changé, alors l’évènement associé à la règle est créé.
Il est possible d’enregistrer directement un évènement directement par la fonction Nouvel évènement du dossier « Classes d’évènements métiers ».
Les nouveaux types de trace « Changement d’un état » et « Changement d’un état ou création »
De nouveaux types d’éléments de trace ont été ajoutés pour permettre de définir des règles d’état à partir du système de gestion des traces.
Ces éléments fonctionnent comme une règle d’état, l’expression associée à l’élément constituant le code de la règle.
Le type « Changement d’un état ou création » est déclenché soit par le changement d’état soit par la création de l’objet.
Dans le dossier « Classe d’évènements métiers », positionnez-vous sur une classe et ouvrez la fenêtre d’enregistrement d’un évènement.
Déclenchement d’un évènement métier par le code métier
Création d’un évènement métier à partir d’une instance d’objet métier
Les objets métiers exposent une API permettant de créer un évènement utilisateur.
Procedure CreateCustomEvent(const iName :String ; iInfo1,iInfo2 :variant; iParameters:Array of variant) ;
Cette opération crée un évènement métier dont l’origine est l’instance. L’objet appelant doit être en transaction et l’évènement créé est ajouté à la transaction en cours.
Les paramètres doivent être renseignés sous forme de paire Nom, Valeur.
Créer un évènement métier indépendamment d’une instance d’objet métier.
Utiliser la méthode de classe de TbpeXEvent.
Procedure TbpeXEvent.CreatecustomEvent(const ieventName :String ; iInfo1,iInfo2 :variant ; iParameters:Array of variant) ;
Cette méthode créé un évènement métier, qui n’est pas lié à une instance, dans une transaction séparée. Après l’appel, l’évènement est enregistré en base de données.
Exemple :
unit TestSYFREWF;
interface
Type
TestAPI = Class(TitObject)
public
Caption: string;
ObjectClassLabel: string;
ObjectClassName: string;
oid: string;
Procedure CreateAnEvent;
end;
Implementation
{TestAPI}
Procedure TestAPI.CreateAnEvent;
//Procedure CreateAnEvent;
begin
TbpeXEvent.CreateXEvent('MyEvent','info1','info2',['a1',0,'a2',1]);
end;
end.
Cas d’utilisation : déclenchement d’un processus par un évènement utilisateur
Pour déclencher un processus depuis un évènement utilisateur, vous pouvez procéder de la façon suivante.
- Vous devez en premier lieu, sur la classe de l’évènement métier, définir l’évènement utilisateur.
- Puis utilisez cet évènement lors du paramétrage d’un évènement métier (double-clic sur l’évènement métier).
- Créez l’évènement dans le code métier.
Dans le journal d’exécution, vous retrouvez les paramètres utilisés lors de la création de l’évènement.
Les principaux attributs de la classe Evènement
EventType
Indique le type de l’évènement.
EventSourceName
Indique la source qui a créée l’évènement.
Exemple
Règle d’état | Nom de la règle |
Instance d’objet | Nom de la classe |
Instance de classe | Nom du type de la classe TbpeXEvent |
REST | Nom du service |
EventInfo1 et EventInfo2
Ces deux informations sont passées lors de la création de l’évènement. Pour une règle d’état ce sont les valeurs de l’état qui à changé et qui a déclenché la règle.
oidEventObject
OID de l’objet ayant créé l’évènement.
Pour un processus déclenché par cet évènement métier, cet objet métier devient l’objet métier rattaché à l’instance du processus
EventObjectClass
Classe de l’objet associé à l’évènement.
EventObjectProperty
Nom de la propriété associé à l’évènement.
Les paramètres.
Un évènement métier peut avoir une liste de paramètres.
Prise en compte des évènements métier par les machines
Une machine d’exécution des processus métiers maintient une date d’exécution égale à la plus petite date d’exécution des instances de processus qu’elle contient. Une machine ne peut pas prendre en compte un évènement antérieur à cette date.
Une des conséquences de cette règle est que les évènements pris en compte par une instance ne peuvent qu’être chronologiques. Ainsi, il n’est pas possible de prendre en compte un évènement antérieur à un évènement déjà pris en compte.
Service REST de création d’un évènement métier
Ce service REST est un service générique qui permet de créer un évènement en exécutant une requête HTTP GET.
Le service n’est pas identifié ce qui signifie qu’il n’est pas nécessaire d’obtenir une session serveur pour l’appeler.
L’URL du service est une URL de service REST :
http://hostname/servicename/server/rpc.l1000/rest/xevent.add?paramètre1=valeur1¶mètre2=valeur2&…
Paramètres de la requête :
Paramètre | Type | Défaut | |
Caption | Chaîne | Libellé associé à l’évènement | |
EventType | Enuméré | Type de l’évènement | CUSTOM |
EventSourceName | Source de l’évènement | REST | |
EventResult | Entier | Valeur entière associée à l’évènement | 0 |
EventDataBaseURL | Chaîne | Base de données associée à l’évènement | |
EventSourceInfo1 | Chaîne | Valeur chaîne associée à l’évènement | |
EventSourceInfo2 | Chaîne | Valeur chaîne associée à l’évènement | |
InstanceOID
oidEventObject |
OID | Identifiant de l’objet associé à l’évènement | |
EventObjectClass | Nom de classe | Nom de la classe de l’objet associé à l’évènement | |
EventObjectProperty
EventName EventId |
Chaîne | Identifiant de l’évènement | |
Autres paramètres |
Tous les paramètres de la requête sont copiés dans les paramètres associés à l’évènement. Ils pourront être copiés dans les paramètres de l’instance du processus par l’activité consommant l’évènement.
La réponse du service est un flux XML contenant l’acquittement de l’enregistrement de l’évènement.
Pour créer un évènement CUSTOM , vous devez renseigner les paramètres de la façon suivante :
EventName | Obligatoire | Identifiant de l’évènement CUSTOM |
EventSourceInfo1
EventSourceInfo2 |
Facultatif | Des paramètres associés à l’évènement qui pourront être testés dans les activités de l’instance. |
EventDataBaseURL | Facultatif | L’URL de la base de données si vous souhaitez qui cet évènement ne soit pris en compte que dans un certain contexte |
Palette d’outils centrale : séquences, évènements et activités
Définitions
Séquences
Les séquences servent à relier les évènements et les activités et sont symbolisées par des courbes de couleurs :
Une séquence ne relie que deux « objets » entre eux : un seul évènement à une seule activité (ou deux évènements entre eux, ou deux activités entre elles).
Chaque activité et évènement est une étape du processus métier.
Les évènements
Les évènements sont des « signaux » permettant de démarrer des processus métier. Il peut s’agir de changements dans le métier (création ou modification d’objets métiers par exemple), ou d’évènements extérieurs (réception de mail, création de fichier dans un répertoire…). Ils sont symbolisés par un rond avec une couleur ou une signalétique spécifique :
Les activités
Les activités sont toutes les « actions » que peuvent faire les Processus Métier. Elles sont symbolisées par un rectangle avec une couleur et une signalétique spécifique :
Evènements et activités standards
Onglet « Evènements initiaux »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/image125.pngEvènement initial déclenché par le métier
Evènement initial qui est déclenché par la création d’un évènement métier.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Immédiat
Evènement initial qui est déclenché immédiatement.
Cet évènement se déclenche à chaque cycle d’exécution de la machine.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Jamais
Evènement initial qui n’est jamais déclenché.
Cet évènement est utile pour définir des processus métiers qui sont appelés par d’autres processus.
Onglet « Evènements »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Toujours
Evènement intermédiaire qui est toujours vérifié.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Terminé
Un processus doit posséder un évènement final par branche.
Onglet « Activités standards »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Activité Nulle
Activité qui n’effectue aucune opération. Elle sert principalement à mettre au point et tester un processus métier. Elle se termine toujours avec un résultat « succès ». Il est possible de lui adjoindre des notifications, contrairement à d’autres activités, ce qui peut être utile pour vérifier le fonctionnement d’un processus métier.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Activité Appel d’un processus
Activité qui exécute un autre processus. Cette activité peut être utilisée pour :
l’intervention en simultané de plusieurs en parallèle sur un même processus,
découper un processus métier complexe et en tester facilement les branches,
créer des sous processus métiers réutilisables par plusieurs processus.
Onglet « Général »
Processus
Identifiant du processus à exécuter. Si le processus n’est pas présent dans la machine au moment de l’exécution, il sera automatiquement chargé.
Attendre la fin d’exécution pour poursuivre
Exécution synchrone d’un processus. L’activité attendra la fin du processus exécuté pour poursuivre l’exécution.
Exécution asynchrone : l’activité n’attend pas la fin d’exécution du processus exécuté pour poursuivre.
Délai d’attente
Précise un délai au-delà duquel l’activité considèrera que le processus appelé est en Timeout.
La case Attendre la fin d’exécution pour poursuivre doit être cochée pour qu’un Timeout soit détecté.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Activité Synchronisation de branches
Activité permettant de synchroniser plusieurs branches d’exécution.
Exemple :
La première activité de ce processus va créer deux branches d’exécution qui seront synchronisées. Le processus ne peut se terminer que si les deux branches sont terminées.
Les gestionnaires
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Gestionnaire des Time Out (expiration des délais d’attente)
Gère l’expiration des délais d’attente qui ne sont définies explicitement dans le processus métier.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Gestionnaire des Erreurs
Gère les séquences Echec qui ne sont définies explicitement dans le processus métier.
Les évènements et activités liés au métier
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Métier
Evènement intermédiaire attendant l’apparition d’un évènement métier.
Onglet « Général »
Evènement
Nom de l’évènement métier qui doit déclencher le processus.
Préfixe (évènement attente)
Préfixe utilisé pour copier les attributs de l’évènement dans les paramètres de l’instance du processus. Si ce champ n’est pas renseigné, les attributs ne seront pas copiés. Pour un évènement initial la valeur vaut toujours « initial ».
Evènement de l’instance principale (évènement attente)
L’évènement métier doit avoir été créé par l’objet associé au processus pour être pris en compte.
Tester la valeur de Info1 ou Info2
Les valeurs des attributs EventSourceInfo1 ou EventSourceInfo2 de l’évènement doivent correspondre aux valeurs renseignées dans les champs correspondants Info1 et Info2 pour que l’évènement soit pris en compte.
Info1, et info2 :
Valeurs des attributs info1 et Info2 attendues.
Déterminé par Info1 ou Info2 (évènement attente) :
Si les valeurs des attributs Info1 ou Info2 de l’évènement correspondent aux valeurs renseignées, alors l’activité se dirige vers la séquence Succès qui sera enchainée ; dans le cas contraire elle se dirige vers la séquence Echec qui sera enchainée.
Définir comme objet de l’instance.
L’objet associé à l’évènement métier devient l’objet associé à l’instance du processus.
Onglet post-condition :
Cet onglet permet d’ajouter une ou plusieurs conditions sur le métier pour que l’évènement soit déclenché.
Lorsqu’un évènement métier déclenche un processus métier :
- il copie ses attributs dans les paramètres de l’instance du processus métier. La source des attributs est « initial »
- l’objet ayant créé l’évènement devient l’objet associé à l’instance du processus métier.
Onglet Métier
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécuter un script
Cette activité exécute un script métier.
Toutes les possibilités du langage de script sont disponibles.
La valeur de retour de l’exécution détermine la séquence qui sera enchaînée .
bprOK | La séquence Succès sera enchaînée |
bprNOK | La séquence Echec sera enchaînée |
bprWAIT | L’instance reste dans l’état courant et l’activité sera ré exécutée au prochain cycle. |
bprHALT | L’instance est interrompue. |
bprERR | L’instance est interrompue. (TODO) |
Une erreur de compilation est équivalente à un retour bprOK.
Attributs spécifiques aux processus métiers
Instance | Référence | Référence sur l’objet métier rattaché à l’instance du processus |
ProcessId | Chaîne | Identifiant du processus |
InstanceId | Chaîne | Identifiant de l’instance du processus
Cet identifiant est unique pour une exécution du processus, si le processus est placé dans plusieurs machines l’unicité n’est pas garantie. |
InstanceGUID | Chaîne | GUID de l’instance du processus.
Cet identifiant est un GUID tiré par le système et garanti unique. |
HostName | Chaîne | Nom du Serveur exécutant le processus |
HostServiceName | Chaîne | Nom du Service exécutant le processus |
HostBaseURL | Chaîne | Base de l’URL du serveur exécutant le processus. |
HostBaseRESTURL | Chaîne | Base de l’URL des services REST du serveur, égale à
(BaseHostURL)rpc.l1000/rest/ |
PublicFolder | Chaîne | Répertoire publique du serveur |
InstanceFolder | Chaîne | Un répertoire réservé à l’instance du processus |
InstanceDatabaseURL | Chaîne | L’Url de la base de données associée à l’instance du processus. |
Les méthodes spécifiques aux processus métiers sont :
function Get(const iPrefixedParameter :string) :Variant ;
function GetParameter(const iPrefix:string; const iName:string):Variant;
Ces méthodes retournent la valeur d’un paramètre.
function GetPublicFolder(const aSubFolder:string):string;
Cette méthode retourne un chemin de repertoire dans la zone publique du serveur.
procedure Set(const iPrefixedParameter :string; const value:Variant);
procedure AddParameter(const iPrefix:string; const iName:string; const value:Variant);
Ces méthodes positionnent la valeur d’un attribut, si celui-ci n’existe pas il est créé.
function uniqueID(const aPrefixedParameter :string) :variant ;
Positionne la valeur d’un attribut avec un identifiant unique. Si celui-ci n’existe pas il est créé. Un identifiant unique est un GUID (Global Unique Identifier) et invisible pour l’utilisateur, tiré sur la machine exécutant le processus.
Procedure setInstance(const iOID :TOID) ;
Cette méthode définit l’instance d’objet métier associé à l’instance du processus métier.
Procedure AddMessage(const imsg :string) ;
Cette méthode ajoute un message dans la liste des messages de l’instance du processus métier.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécuter une expression
Cette activité évalue une expression. Si le résultat est positif, la séquence « Succès » est enchaînée, sinon la séquence « Echec est enchaînée.
Exemple
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécuter une méthode
Cette activité permet d’encapsuler l’exécution d’une méthode métier.
Mode
Indique le type d’exécution :
une méthode de l’objet associé à l’instance,
une méthode d’une façade.
Classe
Nom de la classe supportant la méthode. Cette classe doit être une classe non persistante.
Méthode
Nom de la méthode à exécuter. La méthode ne doit comporter que des paramètres simples, les types classes, listes ou variant ne sont pas autorisés.
Préfixe
Préfixe de copie des paramètres en sortie de la méthode. Les paramètres de sortie sont tous les paramètres de type « out » ainsi que le résultat de la méthode si celle-ci est une fonction.
Associer l’objet retourné à l’instance
Si la méthode est une fonction et si celle-ci retourne un objet, cet objet sera défini comme l’objet associé à l’instance du processus.
Grille des paramètres
Liste des valeurs à passer à la méthode lors de l’appel.
Si vous cochez la colonne « Paramètre », la valeur est une expression qui sera évaluée et substituée lors de l’exécution.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécuter une modification
Cette activité permet d’effectuer des modifications sur l’objet associé à l’instance ou sur les paramètres de l’instance.
Onglet « Valeur »
Attributs à modifier
La liste des attributs de l’objet ou de l’instance à modifier.
Vous pouvez saisir un nouvel attribut qui sera créé au moment de l’exécution.
Paramètre
Lorsque cette case est cochée, une expression est saisie en valeur.
Préfixe
Utilisez cette zone lors de la création de nouveaux attributs de l’instance.
Il est impossible d’effectuer un retour en arrière (rollback) après une modification réalisé par cette activité.
Cas d’utilisation des activités d’exécution de méthode et de modification
Cet exemple utilise une méthode pour créer un objet et l’associer à l’instance du processus.
- La première activité exécute une méthode d’une façade qui crée un objet métier. Cet objet est associé à l’instance du processus.
La méthode exécutée :
unit TestSYFREWF;
interface
Type
TestAPI = Class(TitObject)
public
Function CreateAWFClasseA():WFClasseA;
end;
Implementation
{TestAPI}
Function TestAPI.CreateAWFClasseA():WFClasseA;
var inst:WFClasseA;
begin
ClassManager.beginTran;
try
inst := WFClasseA.Create;
classmanager.InsertToTran(0,inst);
inst.unCode := 'Nouveau-'+DateTimeToStr(Now);
ClassManager.Commit;
Result := inst;
except
ClassManager.RollBack;
raise;
end;
end;
end.
- la seconde activité modifie les attributs de l’objet précédemment créé et crée un nouvel attribut de l’instance.
- la troisième activité exécute une méthode de l’objet.
L’activité suivante attend que l’utilisateur change la valeur de l’état.
Le résultat de l’exécution ainsi que le code exécuté sont indiqués dans les messages.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécuter un curseur
L’activité curseur permet d’exécuter un curseur sur une classe et de traiter tous les objets retournés par le curseur.
Le principe d’exécution du curseur est le suivant :
- Lors de la première activation le curseur est ouvert et l’ensemble des objets qu’il retourne sont stockés dans une liste temporaire. Le premier objet est ensuite sélectionné et l’évènement « OK » est retourné.
- A chaque activation suivante, l’objet suivant de la liste est sélectionné et un évènement « OK » est retourné. Lorsque tous les objets sont traités, un évènement « NOK » est retourné.
Classe
Classe sur laquelle porte le curseur. Cette classe peut être différente de la classe de l’objet associé au processus métier.
Référence
Attribut de type référence du processus métier auquel sera associée l’instance du curseur.
Cas d’utilisation d’un curseur
L’exemple suivant exécute un curseur sur une classe.
Un attribut de type référence est défini sur le processus métier:
Le curseur est paramétré de la façon suivante :
L’activité exécutée à chaque pas de la boucle du curseur enregistre un message.
Le journal rappelle le résultat de l’exécution lorsque le curseur renvoie trois objets.
Les évènements et activités temporels
Onglet « Evènements initiaux»
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement Horloge
Cet évènement permet une planification de l’exécution d’un processus métier. Il permet de créer des instances du processus sur la base d’une planification.
Onglet « Propriétés »
Onglet « Simulation»
Cet onglet permet de réaliser une simulation de la planification pour vérifier que les déclenchements correspondent aux besoins.
Exécuter / Stop
Démarre et arrête la simulation.
Date et heure de départ.
Indique la date et l’heure de départ de la simulation.
Pas d’horloge.
Indique la mesure de simulation.
Date et heure de dernière exécution.
Indique la date et l’heure de la dernière exécution au moment du démarrage de la simulation.
La simulation fonctionne en accélérant le temps et en affichant les dates de déclenchement.
Onglet « Evènements »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Evènement attente d’un délai
Cet évènement attend un délai avant de poursuivre l’exécution, la séquence suivante est toujours « Succès ».
Délai d’attente
Durée en seconde de l’attente.
Le délai démarre au moment où l’instance de processus entre dans l’activité. Si le processus est interrompu puis relancé à une date supérieure à la date du début de l’activité, le délai d’attente s’ajoute et l’instance enchaîne l’exécution.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/Evènement attente d’une date et heure
Cet évènement attend une heure précise avant de poursuivre l’exécution, la séquence suivante est toujours « Succès ».
Date
Permet de définir une date relative à laquelle le processus continuera.
Heure
Heure à laquelle l’instance de processus continuera.
Les évènements et activités de messagerie
Onglet Messagerie
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Envoyer un Mail
Cette activité permet d’envoyer un email. La boîte de dialogue de propriétés ressemble à celle de vos messageries habituelles.
Onglet « Propriétés »
Id
Identifiant de l’email. Cet identifiant est utilisé pour faire le lien avec un évènement « Attente de réponse ». Si plusieurs mails sont envoyés par le processus métier et que des traitements doivent tenir compte des mails, ils utiliseront cet identifiant pour les reconnaître.
A, CC
Adresse des destinataires.
La saisie des adresses des destinataires utilise les conventions suivantes :
les adresses sont séparées par points-virgules,
si l’adresse contient un caractère arobase @ alors il s’agit d’une adresses 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.
De
Adresse de l’expéditeur et de réponse. Cette adresse sera l’adresse à laquelle sera envoyée la réponse à ce mail. Si vous ne renseignez pas cette valeur, l’adresse d’expéditeur paramétrée dans les paramètres SMTP sera utilisée.
Seul le provider SMTP gère cette adresse.
Objet :
Objet de l’email.
Contenu
Contenu de l’email.
Bouton d’insertion de paramètre
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/Ce bouton permet d’insérer une expression dans les champs A, CC, Objet qui sera remplacée lors de l’exécution. Le curseur doit se trouver dans un des trois champs concernés.
Exemple
Par exemple si l’objet qui a déclenché le processus métier possède un attribut email et que le mail doit être envoyé à cette adresse, on utilisera ce bouton pour insérer le code [Instance.email]. Lors de l’exécution du processus métier ce code sera remplacé par l’attribut concerné, dans cet exemple par l’adresse email.
Barre d’outils HTML
HTML REST
Ce menu permet d’insérer une URL de réponse (REST) ou une URL d’accès à un écran accessibles pour le destinataire.
Les liens HTML REST demandent que le destinataire ait accès au serveur Sage 1000.
Référence du mail : l’évènement qui traitera la réponse à ce mail se basera sur cette référence pour l’identifier par rapport à tous les autres mails qui pourraient se trouver dans la boîte à mail référencée par le processus métier.
Lien réponse OK / NOK : Lorsque l’utilisateur cliquera sur ces liens il sera dirigé vers un écran HTML qui permettra au serveur Sage 1000 de mémoriser cette réponse et de déclencher la suite du processus métier. Celui-ci devra plus loin être relié à un évènement d’attente de réponse mail pour gérer cette réponse et générer un résultat Succès ou Echec.
Lien vers l’écran associé : Lorsque l’utilisateur cliquera sur le lien, un écran Sage 1000 sera ouvert. L’écran associé se paramètre dans l’onglet « Avancé » de l’activité.
Seul le premier lien cliqué sera pris en compte.
POP 3
Ce menu permet d’insérer un bloc de texte dans le corps de l’email pour gérer la réponse (POP3).
Insérer un attribut : Le programme va insérer dans le corps du message, à l’endroit du curseur, le code d’un attribut de l’objet métier. Quand le message sera envoyé, ce code sera remplacé par la valeur réelle de l’objet métier en mémoire.
Réponse standard : Le programme va insérer un texte prédéfini expliquant comment répondre avec une réponse OK ou une réponse NOK, ainsi que la référence du mail.
Réponse OK / NOK : insère un code qui sera remplacé, à l’envoi du mail, par une réponse prédéfinie pour « accepter » ([mailresponse_ok]) ou « refuser » ([mailresponse_nok]).
Pour répondre à un mail, le destinataire doit être dans un environnement avec une messagerie compatible POP3.
Si le destinataire répondant à un email POP3 laisse par erreur les deux réponses OK /NOK dans le corps du mail ce sera la première réponse, par ordre de lecture, qui sera prise en compte.
Si le destinataire a fait une erreur dans sa réponse et renvoie une nouvelle réponse, seule la première réponse sera prise en compte car le processus métier aura continué son exécution. Le fonctionnement est identique pour les réponses via lien HTML REST.
Onglet « Avancé »
Ecran associé
Ecran provenant de Sage 1000 utilisé par le lien « Lien vers l’écran associé ». il peut être saisi manuellement ou inséré via la boîte de sélection adjacent à la zone de saisie.
Ouvrir cet écran en mode création
Permet d’ouvrir l’écran en mode insertion au lieu de l’ouvrir en mode consultation.
Paramètres passés à l’écran
Permet de définir des paramètres de l’écran.
Onglet « Pièces jointes »
Cet onglet permet de définir les pièces à joindre à l’email.
Si vous renseignez un chemin de fichier, le fichier doit être accessible lors de l’exécution du processus métier.
Si vous renseignez un nom de fichier sans chemin, le fichier sera recherché dans le répertoire de l’instance du processus métier. Généralement ce fichier a été généré par une autre activité du processus et le nom du fichier est contenu dans un paramètre de l’instance. Il y a un répertoire par instance.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Réponse à un mail par REST
Cet évènement attend la réception d’un évènement créé par une réponse à un email envoyé par l’instance du processus.
Réponse à.
Identifiant de l’activité ayant envoyé l’email.
Délai d’attente
Délai au-delà duquel l’évènement génèrera un timeout qui pourra être pris en charge par un évènement Timeout.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Réponse à un Mail par POP3
Cet évènement attend la réception d’une réponse à un email envoyé par l’instance du processus.
Onglet «Général»
Réponse à.
Identifiant de l’activité ayant envoyé l’email.
Serveur, Port, Login, Mot de passe
Paramétrage du serveur POP3 et du compte de messagerie sur le serveur.
Délai d’attente
Délai au-delà duquel l’évènement génèrera un timeout qui pourra être pris en charge par un évènement Timeout.
Onglet « Avancé »
Action sur les réponses reçues.
Détermine le comportement de l’activité lorsqu’une réponse est reçue.
Aucune : pas d’action. l’email est laissé en place sur le serveur de messagerie
Supprimer : l’email est supprimé du serveur de messagerie
Action sur les mails qui ne sont pas des réponses reçues
Détermine le comportement de l’activité lorsqu’un mail présent dans la boîte n’est pas une réponse.
Préfixe de paramètre pour la réponse
Préfixe utilisé pour copier les attributs de l’email reçu dans les paramètres de l’instance.
Il est important que le destinataire laisse dans le corps du message la référence du mail. Dans le cas contraire le système ne pourra pas le mettre en relation avec le processus métier et l’évènement « Réponse à un Email ». Dans ce cas, l’instance du processus métier restera indéfiniment en attente sauf si un Timeout et une séquence ont été prévus.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/Evènement réception de Mail
Les tâches métiers
Onglet « Tâches »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Impression
Cette activité permet d’exécuter une impression.
Onglet Propriétés
Base de données
Base de données sur laquelle s’effectue l’édition. Renseignez cette base si elle diffère de la base de données sur laquelle l’instance du processus est exécutée.
Rapport
Nom de l’édition à réaliser.
Sortie sur
Sélectionne le type de sortie.
Imprimante
Lorsque le type de sortie est « imprimante », cette zone indique l’imprimante sur laquelle l’édition est imprimée. L’imprimante sélectionnée doit être une imprimante accessible depuis le serveur exécutant le processus. Pour cette raison, seules les imprimantes réseau sont proposées.
Type de fichier
Lorsque le type de sortie est « Fichier » cette zone indique le format de sortie.
Fichier de sortie
Si vous renseignez un nom de fichier sans chemin le fichier sera généré dans le répertoire de l’instance.
Si vous renseignez un chemin de fichier, celui-ci devra être accessible du serveur exécutant le processus.
Onglet paramètres
Cet onglet permet de renseigner les paramètres de la requête.
Valeur
Utilisez cette colonne si vous renseignez une valeur constante.
Expression
Utilisez cette colonne si vous renseigner une expression qui sera évaluée à l’exécution.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Import de données
Cette activité permet d’exécuter un import de données.
Base de données
Base de données dans laquelle s’effectue l’import. Renseignez cette base si elle diffère de la base de données sur laquelle l’instance du processus est exécutée.
Fichier
Fichier de données à importer.
Si vous renseignez un nom de fichier sans chemin, ce fichier doit être présent dans le répertoire de l’instance.
Si vous renseignez un chemin de fichier celui-ci doit être accessible du serveur exécutant le processus.
Descripteur
Descripteur d’importation.
Mode d’importation
Indiquez quel mode d’importation vous souhaitez utiliser.
Options sur les erreurs
Défini les options sur les erreurs détectées.
Options sur le fichier
Défini les actions sur le fichier importé.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Export de données
Cette activité permet d’exécuter un export de données.
Onglet Propriétés
Base de données
Base de données sur laquelle s’effectue l’exportation. Renseignez cette base si elle diffère de la base de données sur laquelle l’instance du processus est exécutée.
Fichier
Fichier de données à générer.
Si vous renseignez un nom de fichier sans chemin, ce fichier sera généré dans le répertoire de l’instance.
Si vous renseignez un chemin de fichier, celui-ci doit être accessible du serveur exécutant le processus.
Descripteur
Descripteur d’exportation.
Onglet paramètres
Cet onglet permet de renseigner les paramètres de la requête
Valeur
Utilisez cette colonne si vous renseignez une valeur constante.
Expression
Utilisez cette colonne si vous renseigner une expression qui sera évaluée à l’exécution.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Activité : Exécuter un traitement métier
Cette activité permet d’exécuter un traitement métier. Les traitements métiers sont des traitements de l’application utilisable dans les processus métier et dans l’automate.
Onglet Propriétés
Base de données
Base de données sur laquelle s’effectue le traitement. Renseignez cette base si elle diffère de la base de données sur laquelle l’instance du processus est exécutée.
Tâche
Sélectionner le traitement à réaliser.
Configurer la tâche
Ce bouton exécute l’écran permettant de configurer la tâche. Terminer l’écran en cliquant sur le bouton [Planifier].
Les évènements et activités techniques
Onglet « Systèmes »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/Evènement initial fichier et Evènement fichier
Ces évènements attendent qu’un fichier du système d’exploitation soit présent.
Fichier
Chemin du fichier concerné.
Les chemins du fichier doivent être accessibles depuis le serveur exécutant le processus.
Action
Action sur le fichier détecté.
Aucune
- Aucune action n’est effectuée.
Renommer
- Le fichier est renommé. Le nouveau nom est l’ancien nom ajouté d’une extension numérique.
Déplacer
- Le fichier est déplacé à l’emplacement indiqué par la zone Destination.
Supprimer
- Le fichier est supprimé.
Préfixe des paramètres
Préfixe des paramètres copiés dans les paramètres de l’instance. Les paramètres sont :
fiename : nom du fichier destination.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécution d’un programme exécutable (exe)
Cette activité exécute un programme du système d’exploitation.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Exécution d’un fichier de commande (batch)
Cette activité exécute un fichier de commande du système d’exploitation.
Onglet Propriétés
Fichier de commande
Chemin du fichier de commande à exécuter.
Paramètres
Paramètres passé au fichier de commande. La règle de passage des paramètres est celle du système d’exploitation.
Mode d’exécution
Ne pas attendre la fin de l’exécution. | Dans ce mode l’activité n’attend pas la fin de l’exécution du fichier de commande'.' 'L'a séquence '« 'Succès' »' est enchaînée. |
Attendre la fin de l’exécution. | Dans ce mode, l’activité attend la fin de l’exécution du fichier de commande. La séquence « Succès » est enchaînée. |
Attendre la fin de l’exécution et tester la valeur de retour. | Dans ce mode, l’activité attend la fin de l’exécution du fichier de commande. Elle teste ensuite la valeur de retour pour déterminer la séquence suivante. Si la valeur de retour correspond à la valeur renseignée alors la séquence est « Succès ». Dans le cas contraire, la séquence est « Echec ». |
Les évènements et activité de maintenance
Onglet « Outils »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Epurer le journal
Cette activité permet de supprimer les éléments contenus dans le journal
Onglet propriétés
Epurer les enregistrements antérieurs à
Sélectionne la période d’épuration.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Epurer les évènements
Une activité particulière permet d’épurer les évènements métiers devenu obsolètes.
Les évènements obsolètes sont tous les évènements de date antérieure à la plus petite date d’exécution des machines.
Une conséquence de cette règle est que si une machine a été arrêtée à un instant T, tous les évènements de date supérieure à cet instant ne peuvent pas être épurés.
Cette activité n’a pas de paramètres, elle épure tous les évènements inutiles.
Les évènements et activité de communication
Onglet « Communication »
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Transfert de fichier via FTP (Upload)
Cette activité permet de transférer un fichier vers un serveur FTP.
https://frp.sage.fr/wiki1000/medias/images/guide_-_processus_metiers/ Transfert de fichier via FTP (download)
Cette activité permet de recevoir un fichier d’un serveur FTP.
Serveur
Adresse du serveur FTP.
Port
Port du serveur FTP (21 pour un serveur standard).
Login
Utilisateur du serveur FTP.
Mot de passe
Mot de passe de l’utilisateur du serveur FTP.
Répertoire FTP
Répertoire FTP dans lequel il faut se positionner avant le transfert. S’il n’existe pas, il sera créé. Il est possible d’indiquer un chemin en séparant les éléments par le séparateur « \ » sous Windows.
Nom du fichier FTP
Nom du fichier dans le répertoire du le serveur FTP.
Fichier
Fichier à envoyer ou recevoir. Si le nom est relatif le fichier sera retrouvé ou placer dans le répertoire de l’instance du processus.
FAQ
Comment déclencher un PM à partir du code métier ?
L’évènement initial du processus métier doit être un évènement métier.
Le code métier crée un évènement de la classe de l’évènement initial du processus métier.
Comment déclencher un processus métier à partir d’une application externe ?
L’évènement initial du processus doit être un évènement métier.
L’application externe utilise une des méthodes suivantes :
- Appeler le service REST des Evènements Métiers pour créer un évènement de la classe de l’évènement initial du processus métier.
- Appeler le Web Service des Evènements Métiers pour créer un évènement de la classe de l’évènement initial du processus métier (TODO).
- Utiliser le serveur COM pour créer un objet évènement de la classe de l’évènement initial du processus métier.
Comment passer des paramètres lors du déclenchement du processus métier ?
Vous devez au préalable définir les paramètres au niveau du processus métier.
Pour définir les paramètres du processus métier, reportez-vous au § .
Lors de la création de l’évènement initial par le code métier, vous devez ajouter à l’évènement les paramètres sous la forme de couple (nom,valeur).
Comment définir un processus métier ayant plusieurs sources de déclenchement ?
Définir le corps du processus métier dans un processus dont l’évènement déclencheur est « jamais ». Ce processus métier sera utilisé comme un sous processus.
Définissez des processus métiers déclencheurs appelant le processus métier précédent.
Pour définir des processus métier, reportez vous au § .
Comment associer un objet métier à une instance de processus métier ?
Dans les propriétés du processus, définissez la classe de l’objet. Cela permet de manipuler les attributs de sa classe lors de la conception.
Dans une activité script, appelez l’API « SetInstance ». Cette API affecte à l’instance l’objet dont l’OID est passé en paramètre.
Comment déclencher un processus métier à partir d’un Web Service ?
L’évènement initial du processus métier doit être un évènement métier.
Réalisez un Web Service dont les paramètres d’entrée correspondent aux paramètres du processus métier.
Dans le code du service, créez un évènement métier correspondant à l’évènement déclencheur du processus métier.