RenumberAndSeal (TSealOpeLogRegClass)

De Wiki1000
class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;
Paramètre Usage
Result Nombre d'objet scellé, 0 indique une erreur
sel Sélecteur de la classe scellée
iUpdateProperties Liste d'attributs à mettre à jour
iLastSequenceNumber Liste des valeurs des attributs à mettre à jour
aReason Information sur l'erreur

Cette méthode renumérote et scelle les objets référencés par le sélecteur et crée un enregistrement de journal.

La méthode :

  • Utilise le prochain numéro de séquence issu du dernier enregistrement de journal.
  • Crée un enregistrement de journal
  • Gère une transaction longue si aucune transaction longue n'est ouverte.
Tip-20px.png Tip : Du fait que Renumber met à jour les objets par SQL, les attributs mis à jour (iUpdateProperties) ne doivent pas être protégés.
Tip-20px.png Tip : Cette méthode est une opération exclusive, la classe journal est vérrouillée durant l'opération

Exemple :

Utilisation à l'intérieur d'une transaction longue :

function RenumberAndSealInsideLT(var aReason:string):Intege;
var AStr:string; sel:TSelector;
begin
   sel := ClassSealed.CreateSelector('(SequenceNumber=%1)','',True,[0]);
   Result := sel.Count;
   if Result=0 then
    begin
      aReason := 'Nothing to seal';
      Exit;
    end;
 
  ClassManager.BeginLongTran(0,'ClassSealed');
  try
    Result := ClassSealOpeLog.RenumberAndSeal(sel,['isSealed'],[True],aStr);
    if Result=0 then
     begin
       aReason := aStr;
       ClassManager.RollBackLongTran;
       Exit;
     end;
   ClassManager.CommitLongTran;
  except
  Result := 0;
  ClassManager.RollBackLongTran;
  end;
end;


Utilisation avec transaction gérée par la méthode :

function RenumberAndSealManageLT(var aReason:string):Intege;
ar AStr:string; sel:TSelector;
begin
   sel := ClassSealed.CreateSelector('(SequenceNumber=%1)','',True,[0]);
   Result := sel.Count;
   if Result=0 then
    begin
      aReason := 'Nothing to seal';
      Exit;
    end;
 
    Result := ClassSealOpeLog.RenumberAndSeal(sel,['isSealed'],[True],aStr);
    if Result=0 then
     begin
       aReason := aStr;
       Exit;
     end;
end;

Voir aussi

Classe_journal de scellement_(stereotype)Développement DSM

Outils personnels