Puede utilizar estos ejemplos para habilitar y gestionar el bloqueo pesimista de registros.
sub Defect_Initialization { my($actionname, $actiontype) = @_; # $actionname as string scalar # $actiontype as long scalar # la acción es LockRecord # el nombre de tipo de registro es Defect # Ponga aquí cualquier preparación para la acción $entity->LockRecord(0); }
sub Defect_LockRecord { my($result); my($param) = @_; # el nombre de tipo de registro es Defect $entity->LockRecord(0); return $result; }
sub Defect_Unlock { my($result); my($param) = @_; # el nombre de tipo de registro es Defect $result = ""; my $locked_by = $entity->GetLockOwner(); if ($locked_by ne "") { my $do_unlock = $session->IsUserSuperUser(); if (! $do_unlock) { # Si el usuario actual mantiene el bloqueo, que lo desbloquee. my $username = $session->GetUserLoginName(); if ($username =~ /^$locked_by$/i) { $do_unlock = 1; } if (! $do_unlock) { # Opciones adicionales para "autorizar" el desbloqueo: # 1) permitirlo si el usuario es miembro de un grupo "desbloquear" # obtener los grupos del usuario, comprobar si es miembro # # 2) permitirlo para algunos usuarios con privilegios, p. ej. Administrador de seguridad # comprobar si la sesión tiene el privilegio escogido # # 3) muchas otras posibilidades $do_unlock = 1; } if ($do_unlock) { $entity->UnlockRecord(); } else { $result = "No tiene autorización para desbloquear este registro."; } } return $result; }