BeginLongTranWithClassLocks (CM)

De Wiki1000
Version du 13 février 2018 à 10:09 par Syfre (discuter | contributions)
(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
procedure BeginTranLongTranWithClassLocks(iBatchSize:Integer; iParam:Variant; iLockOpe:Integer; const iClassToLock:Array of string);

Démarre une transaction longue en posant des verrous de classe.

iBatchSize Taille de lot minimum.

Zéro pour utiliser la valeur par défaut.

iParam Paramètre indiquant une classe métier.

Ce paramètre peut être :

  • Une instance d'objet, la classe de l'instance est utilisée.
  • Un chaîne nom de classe.
iLockOpe Indique l'identifiant de verrou de classe qui sera posé
iClassToLock Indique un ensemble de classe sur lesquelles seront posés les verrous

Les verrous de classe sont posés avant le démarrage de la transaction et sont maintenus jusqu'au commit ou rollback de la transaction.

Cette fonction peut échouer si les verrous ne peuvent pas être posés du fait de la concurrence d'accès.

Exclam-20px.png Attention : Si vous posez des verrous sur un ensemble de classe, faite attention à toujours utiliser le même ordre pour éviter des situations de verrous mortels.

Exemple

//Procedure _NeedTransaction(aClasse:String; aTranCount:Integer);
begin
  if ClassManager.TranCount=0 then
   begin
     ClassManager.BeginLongTranWithClassLocks(0,aClasse,cSecureLogOpe,['JSPieceFacturationVente','JSFacturationDetail']); 
   end; 
end;

Voir aussi :

Gestion des transactions (CM)Développement DSM

Outils personnels