Automate (FAQ)

De Wiki1000

Sommaire


Exécution de plusieurs tâches

Par défaut l'automate n'exécute qu'une tâche à la fois.

Si une tâche est en cours d'exécution les tâches prêtes à être exécutées seront retardées.

Par exemple si un utilisateur lance un traitement long, comme la mise en historique, à partir de l'interface Web les tâches planifiées seront bloquées durant l'exécution du traitement.

Il est possible de configurer l'automate pour exécuter plusieurs tâches simultanément, dans le fichier de configuration ajouter la ligne suivante :

 Automate Task Count = 2

après la ligne

Automate Started=1

Comment est gérée la table TdbmTaskQueue ?

Cette table est une file d'attente des tâches à exécuter.

Elle est utilisée pour garantir une exécution unique des évènements susceptibles de se déclencher sur tous les noeuds d'un cluster.

  • Lorsqu'un évènement se déclenche un objet est inséré dans la file d'attente (queueState=0, queueTopic= 'xxx-ready')
  • Cette objet est consommé par un des noeud du cluster (queueState=1)
  • Un second objet est alors inséré pour indiquer que la tâche est en cours d'exécution (queueState=1, queueTopic='xxx-running')
  • Lorsque la tâche est terminée les deux objets relatifs à la tâche sont supprimés.

La file d'attente contient une clé unique qui empêche qu'un même évènement soit inséré plusieurs fois.

Une tâche planifiée ne se déclenche pas malgré que la condition d'évènement soit remplie.

1. Vérifier que la colonne InExecution de la table TDBMAUTOMATE n'est pas positionné à 1.

Cette colonne est positionnée durant l'exécution et empêche toute nouvelle exécution.
select * from TDBMAUTOMATLINE where inExecution=1

puis si la tâche est présente

update TDBMAUTOMATLINE set inExecution=0 where oid="oid de la ligne concernée"

2. Vérifier que la ligne d'automate n'est pas présente dans la file d'attente d'exécution de l'automate

select * from TDBMTASKQUEUE where oidAutomatLine="oid de la ligne d'automate"

si des lignes sont présentes supprimer ces lignes :

delete TDBMTASKQUEUE where oidAutomatLine="oid de la ligne d'automate"
Info-20px.png Note : La table TDBMTASKQUEUE est une file d'attente intermédiaire permettant d'assurer qu'une tâche n'est déclenchée qu'une fois. Elle comporte une clé unique qui empêche d'insérer deux fois la même tâche. Elle peut donc bloquer l'exécution de tâche répétitive qui ne se termine pas normalement mais pas l'exécution de tâche exécutée qu'une fois.

Comment configurer un automate multi-ligne ?

Etat Evènement Etat Suivant Etat si erreur
0 Planification 1 -1
1 Immédiat 2 -1
2 Immédiat 3 -1
3 Immédiat -1 -1
Outils personnels