Définition
Un processus opérationnel est une instance de processus modèle. Il est toujours associé à un dossier et peut être associé à un établissement.
A la création d'un processus tout le paramétrage du processus modèle est repris. La version et le nom du masque associé sont également enregistrés dans le processus opérationnel. Lors de la vie du processus opérationnel il ne sera plus fait référence au processus modèle.
Attention : Une modification des formulaires du processus et donc du masque sans changement de version ne permettra plus traiter correctement les tâches manuelles d'un processus.
Méthode de création de processus
Par le menu
Par le menu : Gestion des processus / Création
Une entrée au menu Processus (Gestion des processus / Création ) permet de choisir l'établissement et le processus à créer. Le processus sera créer avec le dossier courant, le créateur sera system.user.
Cette méthode de création est généralement utilisée pour des processus qui ne sont liés à une action de l'ERP et dont la première tâche est une tâche manuelle (Demande de congés, d'achats).
En précisant le nom du processus modèle dans les paramètres, vous pouvez créer au menu, une entrée qui lancera automatiquement la création d'un processus (sans avoir à choisir de processus modèle)
Ex : Lancement direct d'un processus de demande d'achat ('acda') pour l'établissement 1
Par une "ACTION" Inifinty
Les "Actions" sont paramétrées dans le module Administration (Paramètres/Actions/Actions)
Les données passées en paramètres permettent l'initialisation des champs du formulaire, et la mise à jour des données de l'en-tête liés lors de la création du processus.
Si plusieurs données sont initialisées, les paramètres doivent être séparés par un double point-virgule ";;"
Cette méthode de création des processus est généralement utilisée pour des processus qui ne sont liés à une action de l'ERP (validation de commande, envoi de facture, Vérification de RIB) et dont l'appel est défini dans un programme Divalto.
il faut utiliser la fonction A5_Action_Generer_Action du module A5Pm000 pour traiter une action dans Divalto.
Si on a associé un Processus à cette action, cela lancera le processus, avec les paramètres configurés dans le zoom action.
Dans vos surcharges il est préférable d'appeler la fonction A5_Action_Generer_Action plutôt que de faire un appel direct à la fonction de création des processus opérationnels (SP_Generer_Processus_Ope_SQL). Ceci permet de changer le processus appelé ou les paramètres d'entrées sans modifier le code. IL suffit de modifier l'ACTION utilisée.
Proto : Function Int A5_Action_Generer_Action (Applic, ActionCod, Etb, Depot, Entite, modeManuel)
- Applic : Code applic associé à l'action à exécuter
- ActionCod : Code de l'action à exécuter
- Etb : Etablissement de rattachement du processus (facultatif, par défaut : ' ')
- Depot : Utilisé par une gestion de flash mais pas pour un lancement de processus mettre ' '
- Entite : Utilisé par une gestion de flash mais pas pour un lancement de processus mettre 0
- modeManuel : Mode de lancement manuel : 1 (= OUI) par défaut
...
Initialisation des champs (paramètres de l'action)
Si les champs du processus doivent être initialisés par des enregistrements spécifiques :
Il faut déclarer ces enregistrements dans une surcharge du module sptm000 dans laquelle on définira la fonction Remplacer_Champ_specifique
Fichier du processus
Pour attacher un fichier au processus il faut définir un paramètre FicJoint et y associer le nom complet du fichier à attacher au processus créé
Cas des processus avec 1ère tâche de type manuelle et modeManuel = oui
Si l'appel est fait avec "origine" = 1 (manuelle) et que la première tâche est une tâche manuelle alors on ouvre directement le formulaire à remplir.
Autres cas
Dans tous les autres cas, la première tâche du processus est mise en état "à activer" ou "à traiter" si c'est une tâche manuelle.
A l'aide de la fonction de création des processus
Cette méthode doit être dans la mesure du possible remplacer par l'utilisation d'une action et de la fonction A5_Action_Generer_Action . Ceci permet de changer le processus appelé ou les paramètres d'entrées sans modifier le code (il suffit de modifier l'ACTION utilisée) et aucune compilation n'est requise.
La fonction SP_Generer_Processus_Ope_SQL du module sppm000.dhop permet de créer un processus depuis un module Infinity.
Proto : Function int SP_Generer_Processus_Ope_SQL(Proccod, Origine, &ProcNo, Param, User, dos, etb, AnnulSt)
ProcCod : le code du processus à exécuter (obligatoire)
Origine : 1 Manuelle, 2 Automatique, 3 scrutateur, 4 Autre (obligatoire)
- Mettre 1 (manuelle) pour forcer la saisie directe du formulaire de la première tâche
ProcNo : N° du processus créé (obligatoire, Passage par adresse)
Param: Chaine de paramètre permettant l'initialisation de certains champs du processus (facultative)
User : Créateur du processus (facultatif, par défaut : Systèm.user)
Dos : Dossier de rattachement du processus (facultatif, par défaut : MZ.Dos)
Etb : Etablissement de rattachement du processus (facultatif, par défaut : ' ')
AnnulSt : Si vrai, l'utilisateur a la possibilité d'annuler le processus lors de la saisie du formulaire de la première tâche (facultatif, par défaut : false). Utiliser uniquement dans le cas où Origine = 1 (Manuelle)
Retour :
Renvoie 0 si le processus a été créé sans erreur
Renvoie 1 si on n'a pas pu créer le processus modèle non renseigné ou inexistant
Renvoie 2 si on n'a pas pu créer le processus modèle n'a pas le statut 'encours'
Renvoie 3 si on n'a pas pu créer le processus Le contrôle a renvoyé une erreur
Renvoie 4 si on n'a pas pu créer le processus pb en création de processus
Renvoie 5 si on n'a pas pu créer le processus pb en création de tâche
Renvoie 6 si on n'a pas pu créer le processus pb en Mise à jour de Numéro de tâches
Cas des processus avec 1ère tâche de type manuelle et origine de type "manuelle"
Si l'appel est fait avec "origine" = 1 (manuelle) et que la première tâche est une tâche manuelle alors on ouvre directement le formulaire à remplir. Si on laisse le flag AnnulSt à "faux", le processus ne pourra pas être annulé lors de cette 1ère saisie
Autres cas
Dans tous les autres cas, la première tâche du processus est mise en état "à activer" ou "à traiter" si c'est une tâche manuelle.
Par un processus
...
Le scrutateur
Le scrutateur est le moteur de Processus, c'est lui qui permet l'exécution et l'enchaînement des tâches.
C'est un programme (spppwebscru.dhop) qui doit tourner en permanence pour que les processus fonctionnent.
ATTENTION : Eviter de lancer un scrutateur sur un client léger. Le lancer sur le serveur. De préférence avec un utilisateur avec le droit 'HIP'.
Lancement du scrutateur
Par le menu Processus / Utilitaires / Scrutateur
Par le menu Processus / Utilitaires / Scrutateur avec trace (pour une gestion des logs dans la fenêtre de trace et dans le fichier logprocessus.log) : à partir de la version X.3 pack 213b
A la question programme (lancer le programme spppwebscru.dhop)
Par un service DIVA
Attention : prendre un utilisateur avec les droits 'HIP' pour lancer le scrutateur. Sinon on ne pourra pas effectuer de changement de droits aux profits du créateur du processus (procuser) lors des tâches de type programme batch
Une réservation spécifique empêche le lancement simultané de plusieurs processus. La chaîne de réservation est " DSP_PROCESSUS_SCRUTATEUR".
Trace (avant la version X.3 pack 213b)
Les actions du scrutateur sont enregistrées :
- Dans la fenêtre de trace si le lancement a été fait par le menu
- Dans le fichier logprocessus.log du répertoire DivlatoLog
...
- Utilisation de l'entrée au menu « Scrutateur avec trace »
...
Arrêter le scrutateur
Quand le scrutateur est lancé par le menu on peut l'arrêter en cliquant sur son icône dans la barre des tâches. Un menu PopUp est alors activé il faut choisir "Fin du programme" pour arrêter le scrutateur.
Sinon, on peut l'arrêter en créant un processus "zparret"
Actions du scrutateur
Le scrutateur exécute 5 actions dans l'ordre suivant :
Traitement des processus automatiques : Cette action recherche les processus automatiques à activer et créé les processus opérationnels associés. Il regarde la périodicité de lancement ainsi que la date du dernier processus généré. Il permet aussi de mettre à l'état périmé les processus automatique modèle avec date de fin échue.
Traitement des tâches terminées : cette action recherche les tâches terminées des processus en cours, et déclenche les tâches suivantes (les tâches sont mises à l'état "à activer", sauf les tâches manuelles qui sont mise dans l'état "à affecter" ou "à traiter"). Si le code de la tâche terminée commence par "ZPARRET", le scrutateur est arrêté.
Traitement des tâches à activer : permet d'initialiser les champs de la tâche, d'exécuter les actions avant tâches, et d'exécuter les tâches en état à activer
Traitement des relances : vérifie le temps d'attente des relances, les exécute le cas échéant.
Suppression processus terminés : selon paramétrage de la durée conservation.
Le temps d'attente entre 2 scrutations est paramétrable depuis le menu Administration (Paramètres / Paramètres généraux)
Attention : Si ce temps d'attente n'est pas paramétré ou inférieur à 5 s (5000) il sera forcé à 1 mn (60000)
Un fichier de log logprocessus.txt (dans le répertoire « divaltolog »), listes les actions exécutées par le scrutateur.
Lorsqu'un processus rencontre un problème grave il est mis à l'état "erreur" et un processus erreur est lancé.
Scrutation d'un répertoire
A partir de la version X.3 il est possible de traiter des tâches des processus en cours par l'intermédiaire d'un fichier .xml.
C'est le scrutateur qui va vérifier la présence de fichiers à traiter, et s'occuper du traitement des tâches paramétrés dans les fichiers.
Il faut créer un fichier par tâche à traiter.
La structure du fichier est la suivante :
Avec
- USER : l'utilisateur qui sera renseigné comme ayant traité la tâche.
- procno : N° de processus dont la tâche est à traiter
- tachecod : Code de la tâche à traiter.
- Suitecod : Code de la suite à utiliser pour le traitement de la tâche.
...
- En cours : c'est dans ce répertoire que l'on retrouve les fichiers en cours de traitement
- Rejetés : c'est dans ce répertoire que l'on retrouve les fichiers qui ont générées des erreurs lors de leur traitement.
- Traités : c'est dans ce répertoire que l'on retrouve les fichiers qui ont été traités sans erreur.
...
- Le processus opérationnel « procno » n'existe pas ou n'est pas à l'état attendu (« en cours »)
- La tâche « tacheCod » n'existe pas ou n'est pas à létat attendu (« à traiter »)
- La suite de tâche « suitecod » n'existe pas ou n'est pas du type attendu (« suite manuelle »)
Etat des processus opérationnels
1 - En Cours : Processus en cours d'exécution
2 - Suspendu : Non utilisé
3 - Fini : Processus terminé
4 - En erreur : Processus dont le traitement a été interrompu par une erreur.
5 - Non validé : état initial des processus avec 1ère tâche de type manuelle. La validation du formulaire fera passer le processus à l'état "en cours"
6 - Annulé : Processus annulé par son créateur. Ne peut être fait que si aucune étape critique n'a été atteinte.
Remplaçant temporaire
Zoom remplaçant
Le zoom remplaçant permet de gérer des remplaçants par domaine.
Lors de la recherche d'un remplaçant on recherche en premier lieu un remplaçant défini pour le domaine du processus puis le cas échéant un remplaçant défini sans "domaine".
Le remplaçant est recherché lorsque la tâche manuelle passe à l'état "à traiter".
Dans le cas des tâches à traiter par à des membres d'un groupe, la recherche du remplaçant est faite après l'affectation de la tâche.
Tâche envoi de mail
Dans le cas d'une tâche envoi de mail, le remplaçant est ajouté aux destinataires du mail, mais le destinataire initial est conservé.
Tâches de processus opérationnels
Etat des tâches opérationnelles
1 - En attente de signal amont : La tâche attend la fin de la tâche en amont.
2 - à activer : Etat d'une tâche non manuelle qui vient d'être déclenchée par le scrutateur. Sera traiter par le scrutateur.
3 - à affecter : Etat d'une tâche manuelle qui doit être effectué par un membre d'un groupe. On la retrouve dans les tâches en cours des utilisateurs du groupe.
4 - à traiter : Etat d'une tâche manuelle qui vient d'être déclenchée par le scrutateur. Où qui vient d'être affectée à un membre du groupe. On la retrouve dans les tâches en cours de l'utilisateur concernée.
5 - En cours : tâche en cours de traitement
6 - Terminée : tâche dont le traitement est terminé. C'est le scrutateur qui déclenchera les tâches suivantes et passera l'état à "finie"
7 - Finie : Tâches "terminées" traitées par le scrutateur ou tâches bloquées suite à l'option "Etape à bloquer" d'une suite de tâche manuelle
8 - Erreur : Tâche dont le traitement a déclenché une erreur bloquante. Le processus sera également mis à l'état "en erreur"
9 - Annulée : Tâche d'un processus annulé par son créateur.
10 - Bloquée : Tâche bloquée lors de l'exécution du processus.
Traitement des tâches en cours
...
Définition
Un processus opérationnel est une instance de processus modèle. Il est toujours associé à un dossier et peut être associé à un établissement.
A la création d'un processus tout le paramétrage du processus modèle est repris. La version et le nom du masque associé sont également enregistrés dans le processus opérationnel. Lors de la vie du processus opérationnel il ne sera plus fait référence au processus modèle.
Attention : Une modification des formulaires du processus et donc du masque sans changement de version ne permettra plus traiter correctement les tâches manuelles d'un processus.
Méthode de création de processus
Par le menu
Par le menu : Gestion des processus / Création
Une entrée au menu Processus (Gestion des processus / Création ) permet de choisir l'établissement et le processus à créer. Le processus sera créer avec le dossier courant, le créateur sera system.user.
Cette méthode de création est généralement utilisée pour des processus qui ne sont liés à une action de l'ERP et dont la première tâche est une tâche manuelle (Demande de congés, d'achats).
En précisant le nom du processus modèle dans les paramètres, vous pouvez créer au menu, une entrée qui lancera automatiquement la création d'un processus (sans avoir à choisir de processus modèle)
Ex : Lancement direct d'un processus de demande d'achat ('acda') pour l'établissement 1
Par une "ACTION" Inifinty
Les "Actions" sont paramétrées dans le module Administration (Paramètres/Actions/Actions)
Les données passées en paramètres permettent l'initialisation des champs du formulaire, et la mise à jour des données de l'en-tête liés lors de la création du processus.
Si plusieurs données sont initialisées, les paramètres doivent être séparés par un double point-virgule ";;"
Cette méthode de création des processus est généralement utilisée pour des processus qui ne sont liés à une action de l'ERP (validation de commande, envoi de facture, Vérification de RIB) et dont l'appel est défini dans un programme Divalto.
il faut utiliser la fonction A5_Action_Generer_Action du module A5Pm000 pour traiter une action dans Divalto.
Si on a associé un Processus à cette action, cela lancera le processus, avec les paramètres configurés dans le zoom action.
Dans vos surcharges il est préférable d'appeler la fonction A5_Action_Generer_Action plutôt que de faire un appel direct à la fonction de création des processus opérationnels (SP_Generer_Processus_Ope_SQL). Ceci permet de changer le processus appelé ou les paramètres d'entrées sans modifier le code. IL suffit de modifier l'ACTION utilisée.
Proto : Function Int A5_Action_Generer_Action (Applic, ActionCod, Etb, Depot, Entite, modeManuel)
- Applic : Code applic associé à l'action à exécuter
- ActionCod : Code de l'action à exécuter
- Etb : Etablissement de rattachement du processus (facultatif, par défaut : ' ')
- Depot : Utilisé par une gestion de flash mais pas pour un lancement de processus mettre ' '
- Entite : Utilisé par une gestion de flash mais pas pour un lancement de processus mettre 0
- modeManuel : Mode de lancement manuel : 1 (= OUI) par défaut
Exemple
Appel de l'ACTION VALIDE_CDE rattachée à l'application 'DAV'
A5_Action_Generer_Action ('DAV', 'VALIDE_CDE', MZ.ETB, ' ', 0)
Initialisation des champs (paramètres de l'action)
Si les champs du processus doivent être initialisés par des enregistrements spécifiques :
Il faut déclarer ces enregistrements dans une surcharge du module sptm000 dans laquelle on définira la fonction Remplacer_Champ_specifique
Fichier du processus
Pour attacher un fichier au processus il faut définir un paramètre FicJoint et y associer le nom complet du fichier à attacher au processus créé
Cas des processus avec 1ère tâche de type manuelle et modeManuel = oui
Si l'appel est fait avec "origine" = 1 (manuelle) et que la première tâche est une tâche manuelle alors on ouvre directement le formulaire à remplir.
Autres cas
Dans tous les autres cas, la première tâche du processus est mise en état "à activer" ou "à traiter" si c'est une tâche manuelle.
A l'aide de la fonction de création des processus
Cette méthode doit être dans la mesure du possible remplacer par l'utilisation d'une action et de la fonction A5_Action_Generer_Action . Ceci permet de changer le processus appelé ou les paramètres d'entrées sans modifier le code (il suffit de modifier l'ACTION utilisée) et aucune compilation n'est requise.
La fonction SP_Generer_Processus_Ope_SQL du module sppm000.dhop permet de créer un processus depuis un module Infinity.
Proto : Function int SP_Generer_Processus_Ope_SQL(Proccod, Origine, &ProcNo, Param, User, dos, etb, AnnulSt)
ProcCod : le code du processus à exécuter (obligatoire)
Origine : 1 Manuelle, 2 Automatique, 3 scrutateur, 4 Autre (obligatoire)
- Mettre 1 (manuelle) pour forcer la saisie directe du formulaire de la première tâche
ProcNo : N° du processus créé (obligatoire, Passage par adresse)
Param: Chaine de paramètre permettant l'initialisation de certains champs du processus (facultative)
User : Créateur du processus (facultatif, par défaut : Systèm.user)
Dos : Dossier de rattachement du processus (facultatif, par défaut : MZ.Dos)
Etb : Etablissement de rattachement du processus (facultatif, par défaut : ' ')
AnnulSt : Si vrai, l'utilisateur a la possibilité d'annuler le processus lors de la saisie du formulaire de la première tâche (facultatif, par défaut : false). Utiliser uniquement dans le cas où Origine = 1 (Manuelle)
Retour :
Renvoie 0 si le processus a été créé sans erreur
Renvoie 1 si on n'a pas pu créer le processus modèle non renseigné ou inexistant
Renvoie 2 si on n'a pas pu créer le processus modèle n'a pas le statut 'encours'
Renvoie 3 si on n'a pas pu créer le processus Le contrôle a renvoyé une erreur
Renvoie 4 si on n'a pas pu créer le processus pb en création de processus
Renvoie 5 si on n'a pas pu créer le processus pb en création de tâche
Renvoie 6 si on n'a pas pu créer le processus pb en Mise à jour de Numéro de tâches
Cas des processus avec 1ère tâche de type manuelle et origine de type "manuelle"
Si l'appel est fait avec "origine" = 1 (manuelle) et que la première tâche est une tâche manuelle alors on ouvre directement le formulaire à remplir. Si on laisse le flag AnnulSt à "faux", le processus ne pourra pas être annulé lors de cette 1ère saisie
Autres cas
Dans tous les autres cas, la première tâche du processus est mise en état "à activer" ou "à traiter" si c'est une tâche manuelle.
Par un processus
Dans un processus par une tâche de type "lancement processus"