Verrouiller workflow l’activité
L’activité Verrouillage empêche les autres instances de ce workflow de continuer au-delà de cette activité jusqu’à ce que le verrou soit levé.
plusieurs instances d’un même workflow peuvent s’exécuter simultanément. Par exemple, si un workflow se déclenche lorsqu’un enregistrement est ajouté à une table particulière. Ce workflow se déclenche plusieurs fois si plusieurs enregistrements sont ajoutés l’un après l’autre, une fois par insertion d’enregistrement. Vous pouvez utiliser l’activité de verrouillage pour vous assurer que cette instance du workflow a terminé une ou plusieurs activités avant que toute autre instance du workflow puisse continuer.
Un workflow peut explicitement libérer un verrou avec l’activité Débloquer . Le verrou peut également être relâché lorsque la durée maximale est atteinte.
Lorsqu’une instance du workflow atteint l’activité Verrouiller , elle tente d’obtenir un verrou à l’aide de la clé spécifiée dans l’activité Verrouillage. Si une autre instance a déjà obtenu le verrou et ne l’a pas encore libéré, cette tentative de verrouillage échoue. L’instance continue d’essayer d’obtenir le verrou jusqu’à ce que le nombre maximal de tentatives soit atteint.
Nous vous recommandons de placer une activité de minuterie d’une seconde avant l’activité de verrouillage. Cela permet d’éviter une situation rare dans laquelle l’activité de verrouillage peut ne pas être en mesure de distinguer une instance de workflow d’une autre. Cette condition peut se produire car l’entité propriétaire du verrou n’est pas l’instance de workflow spécifique, mais plutôt le thread d’exécution de code dans lequel cette instance est en cours d’exécution. Dans la plupart des cas, chaque instance de workflow s’exécute sur un thread différent. L’ajout d’une activité de minuteur garantit que c’est le cas.
- Activités d’approbation
- Activités de tâche
- Activités du minuteur
- Activité Attendre une condition
- Attendre l’activité de l’événement WF
- Activités du MID Server telles qu’un script PowerShell
Résultats
| Résultat | Description |
|---|---|
| Réussite | L’activité a obtenu un verrou. Cette instance du workflow peut continuer au-delà de ce point, mais d’autres instances ne peuvent pas continuer tant que le verrou n’est pas libéré. |
| Échec | Après avoir tenté d’obtenir le nombre maximal de tentatives de verrou, l’activité n’a pas pu obtenir le verrou. |
Variables d’entrée
Les variables d'entrée déterminent le comportement initial de l'activité.
| Champ | Description |
|---|---|
| Clé | Clé mutex unique. L’activité Déverrouiller utilise cette touche pour déverrouiller le verrou. |
| Durée | |
| Durée max. | Durée maximale de persistance du verrou. Le verrou est relâché une fois cette durée atteinte. Libérer un verrou de cette façon équivaut à exécuter l’activité Débloquer . |
| Tentatives de verrouillage Spécifiez le comportement de l’activité si la tentative de verrouillage est refusée. Si la dernière tentative de verrouillage échoue, l’état de l’activité est défini sur « Délai d’expiration » et le résultat de l’activité est défini sur « Échec ». |
|
| Nbre max. de tentatives | Spécifiez le nombre maximal de tentatives d’obtention du verrou pour l’activité. |
| Délai entre tentatives | Durée requise après un échec de tentative de verrouillage avant qu’une autre tentative de verrouillage ne soit autorisée. |
États
L’état de l’activité indique au moteur de workflow ce qu’il faut faire avec l’activité.
| État | Description |
|---|---|
| En attente | Le moteur de workflow attend l’obtention d’un verrou. |
| Terminé | L’activité a obtenu le verrou. |
| Délai | L’activité n’a pas pu obtenir de verrou dans le nombre de tentatives spécifié par la variable d’entrée Nombre max. de tentatives . |