L'automate à états
Fonctionnement
L'automate est un programme Diva qui scrute dans un répertoire d'entrée, la présence de fichiers dit ‘pivot’ et de fichiers compagnons (format pdf, xml ou txt). Il est donc indispensable, lorsqu'il y a plusieurs fichiers à déposer (par exemple le pivot et un PDF), que le fichier pivot soit écrit sur le disque dur EN DERNIER. Sa présence garantit la bonne écriture préalable des fichiers compagnons (comme le PDF).
Le répertoire d'entrée correspond à un chemin Divalto (chemin stocké sur le dossier 999).
Ce scrutateur lit les fichiers pivot et les traite selon un ordre préétabli. Cet ordre sera paramétré dans le zoom de paramétrage DataHub avec un scénario (une succession d'étapes) par type de dataset.
l'automate lit le pivot et attribue un numéro unique (table DHBENT champ DHBNO). S'il n'y arrive pas il crée un dataset en erreur
le déposant (=la source des pivots) s'assure d'une règle de nommage sans doublons. Il est possible de placer les fichiers compagnons dans un sous-répertoire du fichier pivot, mais c'est la présence du pivot à la racine du point d'entrée qui le rend 'détectable'
l'automate lit le contenu du pivot afin de déterminer son type (type de dataset). Si la structure est lisible, le pivot ainsi que les fichiers compagnons sont déplacés du point d'entrée vers un emplacement dédié, et une entrée dans le datahub est faite : le dataset. Les cas de rejets sont donc à ce stade uniquement des fichiers dont la structure est incorrecte ou type de dataset inconnu
une fois le type de dataset déterminé, l'automate lit le paramétrage de datahub qui indique les états possibles par type. Ce paramétrage donne une succession d'états numérotés et pour chaque état une fonction diva détermine la branche à suivre
un état est dit 'automatique' s'il est traité par l'automate
un état est dit 'manuel' si une action est requise par un utilisateur ('en attente' est aussi un état manuel)
le changement d'état (vers sa branche 'vrai' ou 'faux') appelle un code action Divalto
l'Automate ne lit que les états automatiques, aussi, pour le stopper ou sortir d'une boucle, il faut passer par un état manuel
il est donc possible de définir un code action lorsque le traitement associé à l'état renvoie VRAI et un autre lorsque le traitement renvoie FAUX. Un code action peut être par exemple : envoi d'un email, affichage d'une alerte, exécution d'un processus.
chaque fonction de changement d'état traite une tâche unitaire simple à effectuer, et peut se poursuivre soit sur un autre état automatique ou manuel
lorsque le pivot est amené à être complété par la suite (par exemple logiciel externe qui scanne le contenu) il est nécessaire de donner un IDENTIFIANT EXTERNE UNIQUE. Cet identifiant, donné dans le premier puis le second pivot, sert à indique qu'il s'agit du même 'document'.
le superviseur permet de voir l'avancement, et de traiter les états manuels en réinjectant dans l'automate un dataset
pour repasser d'un état manuel à un état automatique, vous cliquerez sur « Ré-injecter dans l'Automate » dans le superviseur ou vous serez invité(e) à effectuer une action donnée
un état est potentiellement joué plusieurs fois, notamment via des états manuels qui réinjectent dans l'automate à un état inférieur
l'automate écrit dans le livre de bord application pour les erreurs majeures concernant l'automate (fonction de changement d'état inexistante par exemple, arrêt de l'automate)
un livre de bord dédié à l'automate est disponible afin de suivre les changements d'état
NOTES :
pour intercaler un nouvel état, vous devez ajouter une ligne, débrancher et rebrancher les états avant et après pour éviter que l'Automate ne s'arrête.
par convention, les états dont le code se termine par « 5 » correspondent aux erreurs et sont manuels. Ainsi, l'Automate sort de la boucle lorsqu'il rencontre une erreur.
L'état 200 est celui vers lequel par convention on reviendra toujours
un état doit être autonome, c’est à dire qu’il doit être indépendant de tout état précédent
Un état de l’automate
Un état de l’automate correspond à un numéro par type de dataset.
Nom du champ | Utilisation |
---|---|
Etat du dataset | Numéro unique (pour le type de dataset) qui détermine la succession logique des étapes |
Regroupement | Groupes d'états, utilisé pour l’affichage dans le superviseur Le rattachement à un code de regroupement l'associe automatiquement à un état maître. Exemple : l'état « 230 », libellé « Dataset OK » est rattaché au regroupement « 200 » qui correspond aux datasets de type facture fournisseur |
Type d’action | Automatique=lancement d’une fonction d’un module pour effectuer un traitement. Nécessite de connaitre l'état suivant Manuel=intervention d’un collaborateur ou d’un administrateur |
Libellé | Description de l'état |
Module | Nom du module et de la fonction Diva du traitement |
Fonction | |
Etat suivant si VRAI | Prochain état courant pour le dataset si le traitement a répondu VRAI |
Etat suivant si FAUX | Prochain état courant pour le dataset si le traitement a répondu FAUX |
Code action si VRAI | Code action ERP exécuté si le traitement a répondu VRAI |
Code action si FAUX | Code action ERP exécuté si le traitement a répondu FAUX |
Après un état manuel, l’intervention utilisateur va relancer le dataset dans l’automate pour un nouveau circuit de traitement complet.
L'état particulier 100
L'état 100 est commun à tous les types de dataset, c’est pourquoi il n’a pas de type associé. C’est le point de départ de tous les traitements lorsque la dépose d’un fichier pivot est détectée
Si le dataset est bien déterminé dans le fichier pivot, alors le traitement est orienté par les états du type, sinon il échoue dans les datasets en erreur.
L'état particulier 9999
Le dernier état, par convention numéroté 9999, correspond au dernier état et met la ligne d'enregistrement à l'état « Périmé » lorsque, par exemple, la facture est envoyée vers la Comptabilité.
La complétion du pivot (factures fournisseur)
Lorsqu'un document PDF passe par une reconnaissance de contenu, on pourra déposer le fichier PDF 'original' avec un pivot minimaliste. Ce pivot non définitif permet de créer le dataset avec les documents compagnons. Il accompagne la facture reçue mais ne contient pas toutes les données demandées (uniquement un Idexterne permettant de l'identifier). Un DataSet est alors créé et est mis en état "en attente de complétion"
Un second pivot avec les nouveaux documents et les nouvelles données pourra être déposé. Celui ci doit contenir le même numéro externe, et viendra remplacer totalement les données du premier pivot (sauf numéro de dataset et date de création) et les pièces jointes.
Le lien se fait via un champ IDEXTERNE fourni dans le pivot qui permet de retrouver le dataset à compléter. Si le dataset 'minimaliste' a fait l'objet d'un traitement manuel utilisateur, un second dataset sera créé en statut 'périmé' afin de conserver la trace mais sans toucher au traitement manuel du dataset. Aucune donnée métier du premier pivot n'est conservé, c'est le dernier pivot qui est pris pour la totalité des données.