Objets métiers (code)
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.
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étier — Développement DSM —