Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entity.lock( )
|
entity.lock ( {mode} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
mode | Entier long |
![]() |
dk reload if stamp changed : Recharger avant de verrouiller si le marqueur interne a changé | |||||
Résultat | Objet |
![]() |
Résultat de l'opération lock | |||||
La méhode entity.lock( ) pose un verrou pessimiste(*) sur l'enregistrement référencé par l'entité. Le verrou est posé pour l'enregistrement et toutes les références de l'entité dans le process courant.
(*)Pour plus d'informations, veuillez vous reporter à la page Verrouillage d'entités.
Pour les autres process, cet enregistrement apparaîtra verrouillé (la propriété result.success contiendra Faux s'ils tentent de verrouiller la même entité à l'aide de cette méthode. Seules les méthodes exécutées dans la session à l'origine du verrouillage auront la possibilité de modifier et de sauvegarder les attributs de l'entité. L'entité peut être chargée en lecture seulement dans les autres sessions, mais elles ne pourront ni saisir ni sauvegarder des valeurs.
Un enregistrement verrouillé peut être déverrouillé :
Par défaut, si le paramètre mode est omis, la méthode retournera une erreur (cf. ci-dessous) si la même entité a été modifiée (i.e. si le marqueur stamp a changé) par un autre utilisateur ou process entre-temps.
Sinon, vous pouvez passer l'option dk reload if stamp changed dans le paramètre mode : dans ce cas, aucune erreur n'est générée et l'entité est simplement rechargée si le stamp a changé (si l'entité existe toujours et si la clé primaire est toujours la même).
Résultat
L'objet retourné par entity.lock( ) contient les propriétés suivantes :
Propriété | Type | Description | |
success | booléen | Vrai si l'action de verrouillage a été effectuée avec succès (ou si l'entité est déjà verrouillée dans le process courant), sinon Faux. | |
Disponible uniquement si l'option dk reload if stamp changed est utilisée : | |||
wasReloaded | booléen | Vrai si l'entité a été correctement rechargée, sinon Faux. | |
Disponible uniquement en cas d'erreur : | |||
status(*) | numérique | Code d'erreur, voir ci-dessous | |
statusText(*) | texte | Description de l'erreur, voir ci-dessous | |
Disponible uniquement en cas d'erreur de verrouillage pessimiste : | |||
lockKindText | texte | "Locked by record" | |
lockInfo | objet | Information sur l'origine du verrouillage | |
task_id | numérique | ID du process | |
user_name | texte | Nom d'utilisateur de la session sur la machine | |
user4d_alias | texte | Nom ou alias de l'utilisateur 4D | |
user4d_id | numérique | Identifiant utilisateur dans le répertoire de la base 4D | |
host_name | texte | Nom de la machine | |
task_name | texte | Nom du process | |
client_version | texte | ||
Disponible uniquement en cas d'erreur critique (clé primaire dupliquée, disque plein...) : | |||
errors | collection d'objets | ||
message | texte | Message d'erreur | |
component signature | texte | Signature du composant interne (p.e. "dmbg" pour le composant de base de données) | |
errCode | nombre | Code d'erreur |
(*) Les valeurs suivantes peuvent être retournées dans les propriétés status et statusText de l'objet Résultat en cas d'erreur :
Constante | Valeur | Comment |
dk status entity does not exist anymore | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants :
statusText associé : "Entity does not exist anymore" |
dk status locked | 3 | L'entité est verrouillée par un verrou pessimiste. statusText associé : "Already locked" |
dk status serious error | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc. statusText associé : "Other error" |
dk status stamp has changed | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
|
Exemple avec erreur :
C_OBJET($employee;$status)
$employee:=ds.Employee.get(716)
$status:=$employee.lock()
Au cas ou
:($status.success)
ALERTE("Vous avez verrouillé "+$employee.firstName+" "+$employee.lastName)
:($status.status=dk status stamp has changed)
ALERTE($status.statusText)
Fin de cas
Exemple avec option dk reload if stamp changed :
C_OBJET($employee;$status)
$employee:=ds.Employee.get(717)
$status:=$employee.lock(dk reload if stamp changed)
Au cas ou
:($status.success)
ALERTE("Vous avez verrouillé "+$employee.firstName+" "+$employee.lastName)
:($status.status=dk status entity does not exist anymore)
ALERTE($status.statusText)
Fin de cas
Produit : 4D
Thème : ORDA - Entity
Nom intl. : entity.lock( )
Créé : 4D v17
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)