RenumberAndSeal (TSealOpeLogRegClass)

De Wiki1000
(Différences entre les versions)
Ligne 2 : Ligne 2 :
  
 
Cette méthode [[Renumber_(selector)|renumérote]] et scelle les objets référencés par le sélecteur et crée un enregistrement de journal.
 
Cette méthode [[Renumber_(selector)|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.
 +
* Gère une transaction longue si aucune transaction longue n'est ouverte.
  
 
{|class="wikitable"
 
{|class="wikitable"
Ligne 24 : Ligne 29 :
 
|}
 
|}
  
 +
Exemple :
 +
 +
'''Utilisation à l'intérieur d'une transaction longue :'''
 +
 +
<source lang=Delphi>
 +
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;
 +
</source>
 +
 +
 +
'''Utilisation avec transaction gérée par la méthode :'''
 +
 +
<source lang=Delphi>
 +
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;
 +
</source>
  
 
Voir aussi
 
Voir aussi

Version du 13 avril 2017 à 08:43

class function RenumberAndSeal(sel:TSelector; const iUpdateProperties:Array of variant; iUpdateValues:Array of variant; var aReason:string):Integer;

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.
  • Gère une transaction longue si aucune transaction longue n'est ouverte.
Paramètre Usage
Result Nombre d'objet scellé, 0 indique une erreur
sel Sélecteur de la classe scellée
iUpdateProperties Liste d'attribut à mettre à jour
iLastSequenceNumber Liste des valeurs des attributs à mettre à jour
aReason Information sur l'erreur

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