Objets métiers (code)

De Wiki1000

Sommaire

Introduction

Un objet est une entité métier.

Une instance est la représentation technique d’un objet dans un contexte d’exécution.

A un instant « t » il peut exister plusieurs instances d’un même objet sur une ou plusieurs machines.

Identifiant d’objet

Le framework de la Ligne 1000 utilise un système d’identification des objets métiers basé sur un identifiant d’objet appelé « OID » (pour « object identifier »). Grâce à cette identification il est possible d’implémenter des mécanismes génériques de manipulation et de navigations entre les objets. L’identifiant d’objet est constitué de plusieurs sections :

  • Identifiant de serveur.
  • Identifiant de base de données.
  • Identifiant de classe.
  • Incrément global.
  • Incrément.

Ce codage garanti l’unicité des identifiants d’objet.

Il n’est pas nécessaire de retenir les détails de cette codification, toutefois sachez que :

  • L’identifiant de serveur identifie le serveur ; il s’agit d’une partie de l’adresse MAC de la machine ayant créée la base de données.
  • L’identifiant de base de données identifie la base de données à l’intérieur d’un serveur.
  • L’identifiant de classe identifie la classe à laquelle appartient l’objet.
  • L’incrément global (32bits) est incrémenté lorsque l’application démarre ou lorsque l’incrément dépasse son étendu.
  • L’incrément (16bits) est incrémenté à chaque création d’objet.

Les identifiants d’objet sont manipulés dans le script comme des chaînes de caractères.

Exclam-20px.png Attention : Il est dangereux de présumer du format de stockage de l'identifiant d'objet dans la base de données; suivant le pilote utilisé les identifiants peuvent être encodés différemment.

Un objet métier possède deux attributs frameworks dédiés à la gestion de l'identifiant:

Attribut Signification
OID Attribut persistant contenant la valeur de l’identifiant. Lorsque l’objet est en cours de création, son identifiant OID est vide (les identifiants étant manipulés comme des chaînes de caractères la valeur vide est ‘’) ; il sera déterminé lors de la mise à jour de l’objet.
InstanceOID Attribut non persistant qui retourne la valeur de l’identifiant si l’attribut n’est pas en cours de création, ou la valeur de l’OID qui sera utilisée si l’objet est en cours de création.

Les valeurs de ces attributs en fonction de l'état de l'instance :

Etat de l'objet OID InstanceOID
Objet en création vide OID du futur l'objet
Objet existant OID de l'objet OID de l'objet

Exemple

begin
  if OID<>'' then
   begin
     // Cette instance est en création
   end;
end;

Création d’une instance d’un objet

Pour créer une instance d’un objet existant dont vous connaissez l’identifiant, utilisez la fonction CreateInstance et affecter l’identifiant.

var obj:MaClasse;
begin
  obj := ClassManager.CreateInstance('MaClasse');
  obj.oid := aOID;
  ...
end;

Création d’un nouvel objet

Pour créer un nouvel objet, créez une nouvelle instance et modifiez-la.

Exemple

var obj:MaClasse;
begin
  obj := ClassManager.CreateInstance('MaClasse');
  ClassManager.BeginTran;
  try
   // L'objet est inséré dans la transaction
   obj.Code := aCode ;
   obj.Caption := aCaption ;
   ClassManager.Commit;
  except
   ClassManager.RollBack ;
  end;
end;

Suppression d’un objet

Pour supprimer un objet, créez une instance de cet objet et positionnez l’attribut « deleted » à TRUE.

Exemple

var obj:MaClasse;
begin
  obj := ClassManager.CreateInstance('MaClasse');
  ClassManager.BeginTran;
  try
    Obj.OID := aOID;
    Obj.Deleted := TRUE;
    ClassManager.Commit;
  except
    ClassManager.RollBack ;
  end;
end;

Code métierDéveloppement DSM

Outils personnels