Automate (FAQ)
(Page créée avec « __TOC__ ===Une tâche 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... ») |
|||
(2 révisions intermédiaires par un utilisateur sont masquées) | |||
Ligne 1 : | Ligne 1 : | ||
__TOC__ | __TOC__ | ||
− | ===Une tâche ne se déclenche pas malgré que la condition d'évènement soit remplie.=== | + | ===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 : | ||
+ | |||
+ | <pre> | ||
+ | Automate Task Count = 2 | ||
+ | </pre> | ||
+ | |||
+ | après la ligne | ||
+ | |||
+ | <pre> | ||
+ | Automate Started=1 | ||
+ | </pre> | ||
+ | |||
+ | ===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. | 1. Vérifier que la colonne InExecution de la table TDBMAUTOMATE n'est pas positionné à 1. | ||
Ligne 27 : | Ligne 58 : | ||
delete TDBMTASKQUEUE where oidAutomatLine="oid de la ligne d'automate" | delete TDBMTASKQUEUE where oidAutomatLine="oid de la ligne d'automate" | ||
</pre> | </pre> | ||
+ | |||
+ | {{info|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 ?=== | ||
+ | {|Class="wikitable" | ||
+ | |- | ||
+ | !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 | ||
+ | |} | ||
[[Category:Automate]] | [[Category:Automate]] |
Version actuelle en date du 14 octobre 2015 à 12:56
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"
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 |