17. Gestion des verrous

Le verrou permet de s’assurer qu’une seule personne accède à une ressource, un écran, une fiche à un instant donné.

17.1. Créer un verrou par l’exemple

Cette section sera décrite à travers un exemple : créer un verrou pour éviter que deux utilisateurs n’éditent en même temps la fiche d’une personne. C’est-à-dire qu’un seul utilisateur doit pouvoir accéder à la fiche suivante :

_images/Form.png

Création automatique du verrou

Le verrou à l’édition d’un formulaire peut être généré automatiquement par l’assistant de création de formulaire, si la case Verrouiller les entrées lors de la modification et la suppression est cochée dans l’assistant.

_images/Assistant_formulaire_31.png

Les étapes à réaliser sont les suivantes :

  • Créer le verrou : dans l’onglet Projets, sélectionner l’application, puis cliquer sur Conception. Cliquer ensuite sur l’icône (Gérer les verrous). Cliquer ensuite sur le bouton pour créer un verrou.

    _images/Nouveau_verrou.png

    Renseigner les champs demandés.

  • Créer un comportement Prendre le verrou rattaché à l’écran d’édition d’une personne. Ce comportement sera rattaché sur le déclencheur À l'initialisation.

    _images/Comportement_rattache.png
  • Utiliser dans le comportement la condition « Si prendre le verrou » :

    _images/Regle.png

    La condition prend en paramètre la valeur du verrou (ici l’Id de la personne). Si :

    • la valeur a déjà été affectée au verrou, alors le si renvoie Faux : le verrou a déjà été pris pour cette valeur.

    • la valeur n’a pas été affectée au verrou, alors le Si renvoie Vrai et la valeur est affectée au verrou : le verrou est pris pour cette valeur.

    La plate-forme garde ainsi en mémoire pour un verrou donné toutes les valeurs affectées sans tenir compte des différentes sessions.

  • Dans la partie Conditions non vérifiées, il faut paramétrer les actions à réaliser si le verrou est pris. En général, une boîte de message décrivant la prise du verrou est affichée, et une redirection vers l’écran précédent est effectuée.

    Si le verrou a été pris, il est possible de fournir plus de renseignement à l’utilisateur, comme :

    • le nom de la personne qui a pris le verrou

    • la date et heure du verrouillage

    • l’identifiant de la personne qui a pris le verrou

    • l’adresse email de la personne qui a pris le verrou

    • la valeur verrouillée (ici l’Id de la personne).

    Ces informations sont disponibles grâce à l’opérande Paramètre utilisateur d’un verrou déjà pris :

    _images/Operande.png
  • Pour tester le verrou, il faut se rendre sur la même fiche d’un agent avec 2 navigateurs différents :

    • A l’aide du premier, l’accès à la fiche s’effectue correctement :

      _images/Form.png
    • A l’aide du deuxième, l’accés à la fiche est impossible car le premier navigateur l’a verrouillée:

      _images/Lock.png

      Les informations sur le verrou sont affichées dans la boite de message. Il est cependant possible d’éditer la fiche d’une autre personne (Id différent).

  • Une fois le verrou établi, il faut déverrouiller la fiche. Pour cela, créer un comportement de déverrouillage à la fermeture de l’écran :

    _images/Unlock.png
  • Pour déverrouiller, utiliser l’action « Libérer le verrou » et lui passer la valeur du verrou à libérer.

    _images/Unlock_regle.png

    Ainsi, dès que l’utilisateur sort de l’écran d’édition, le verrou est libéré et la fiche peut à nouveau être éditée.

Remarque

La fermeture du navigateur sans quitter l’application ne rend pas le verrou et continue de bloquer la fiche pour toute la durée de la session.

17.2. Gérer les verrous

La plate-forme permet la gestion des verrous affectés par application. Dans l’onglet Projets, cliquer sur l’application souhaitée dans la liste des projets, puis cliquer sur l’onglet Gérer les verrous.

_images/Gestion_verrous.png

La liste des verrous actuellement pris est affichée, avec le nom des utilisateurs ayant pris le verrou, la date et heure de prise du verrou et la valeur verrouillée.

Il est possible de libérer les verrous « bloqués » en cliquant sur l’icône Déverrouiller. Une boîte de confirmation apparaît :

_images/Deverrouiller.png

Le déverrouillage entraîne la déconnexion de l’utilisateur après l’affichage du message sur son écran.

Quelques rappels sur les verrous :

  • L’expiration de la session libère les verrous associés à cette session.

  • Libérer manuellement un verrou entraîne la déconnexion de l’utilisateur ayant posé le verrou

  • La fermeture du navigateur sans quitter l’application ne rend pas le verrou, il sera libéré à l’expiration de session ou manuellement

  • Il existe une action Prendre le verrou qui a pour effet d’essayer de prendre le verrou ; s’il est déjà pris, elle génère une exception.