Verrouillage des données
Unica Plan utilise un schéma de verrouillage d'édition pessimiste, c'est-à-dire qu'à un moment donné, un seul utilisateur possède des droits de mise à jour sur le instances du composant. Pour l'utilisateur de l'interface graphique, ce verrouillage est effectué au niveau visuel de l'onglet. Dans certains cas, les données sont réservées pour un sous-ensemble d'une instance, par exemple via un onglet de récapitulatif de projet. Dans d'autres cas, les données sont partagées entre pour plusieurs instances, par exemple via l'onglet workflow. Lorsqu'un utilisateur a acquis un verrou, tous les autres utilisateurs ne possèdent plus qu'un accès en lecture seule aux données concernées.
Afin d'éviter que les modifications apportées par une procédure à une instance de composant ou à un groupe d'instances ne soient écrasées par inadvertance par un autre utilisateur, une procédure doit acquérir les verrous appropriés avant la mise à jour des données du composant. C'est l'objet contexte d'exécution transmis à la méthode execute() de la procédure qui est utilisé pour verrouiller les données.
Avant de mettre à jour des données, la procédure doit appeler la méthode acquireLock() du contexte pour chaque verrou dont elle a besoins. Par exemple, si une procédure doit mettre à jour un projet et le workflow associé, elle doit acquérir des verrous pour ces deux éléments.
Si un autre utilisateur possède déjà un verrou, la méthode acquireLock() émet immédiatement une exception LockInUseException. Afin de réduire le nombre de collisions, la procédure doit libérer le verrou dès qu'elle met à jour l'objet.
Le gestionnaire d'exécution libère automatiquement tout verrou en suspens lorsque la méthode d'exécution revient. Dans tous les cas, les verrous ne sont détenus qu'à concurrence de la durée de vie de la transaction de base de données. Les verrous expirent si le délai d'attente de la transaction propre à la base de données a été dépassé.