Dénomination, propriétés et courtage des objets

Dénomination

Pour retrouver un objet, il serait possible de se fier à l'identificateur unique de l'objet. Seulement, cette information n'est pas des plus parlantes puisqu'il s'agit d'une adresse virtuelle uniquement intelligible par Up ! Object Management System. De plus, il n'est pas certain que l'objet existe encore au moment où le client cherche à le retrouver.

Afin d'avoir un fonctionnement plus fluide et plus sûr, il est nécessaire d'employer le service de dénomination : les objets persistants sont dénommés par un nom parlant répertorié dans un annuaire. Les annuaires sont gérés par Up ! Object Request Broker dont une entrée est une association dénomination - objet du programme. Les annuaires sont modélisés par le type AnnuaireUpsOrb de Up ! Object Request Broker. Un programme possède un annuaire standard identifié par la variable AnnuaireLocal. Il s'agit d'un annuaire public. Il est possible de se créer d'autres annuaires privés. La différence entre un annuaire public et un annuaire privé est expliquée un peu plus loin.

Les annuaires peuvent être organisés en hiérarchie ce qui permet le classement des objets par thème. Le principe de la hiérarchie s'apparente à celui de l'organisation d'un système de fichiers en répertoires.

Il n'est pas nécessaire d'énumérer tous les objets persistants d'un annuaire. Seuls les objets servant de points d'entrée dans les graphes d'objets doivent en faire partie. Par exemple, si un document est composé de plusieurs sections, seul le document est référencé dans l'annuaire. Les sections sont accessibles au travers du document et non directement par l'annuaire.

Courtage

Dans le cadre d'une architecture distribuée, l'organisation des objets d'Up ! Application System persistants est telle qu'il y a indépendance entre les clients créant et utilisant les objets et les serveurs les exécutant et les hébergeant. Cette indépendance est telle qu'un serveur peut changer d'emplacement, que les entrepôts hébergeant les objets peuvent être transférées d'une machine à l'autre avec au passage éventuellement un changement d'architecture matérielle, etc.

De ce fait, un programme client ne peut pas à priori mémoriser l'emplacement d'un objet persistant. De plus, les objets étant créés par plusieurs programmes distincts exécutés par plusieurs personnes, de nouveaux objets apparaissent. Il est alors intéressant que ce programme client puisse les utiliser alors qu'ils ont été créées en dehors de celui-ci.

Le principe de courtage est de créer un annuaire global qui soit une consolidation de tous les annuaires locaux des programmes. Les annuaires locaux sont dits publics puisque leur contenu est publié dans l'annuaire global. Les autres annuaires d'une programme sont dits privés puisque leur contenu n'est pas publié dans l'annuaire global.

Cet annuaire global est géré par le serveur Up ! Object Request Broker maître. Il est mis à jour automatiquement dès que : Il ne peut être que consulté au moyen de la fonction LireEntreeAnnuaireGlobal. Cet annuaire global est virtuel puisqu'il répertorie des objets répartis sur tout le réseau donc qui ne sont pas propres au serveur Up ! Object Request Broker maître. Il a cependant une particularité : lorsqu'il est interrogé, l'objet ne peut être trouvé au niveau au serveur Up ! Object Request Broker maître. Celui-ci recherche alors quel est le serveur hébergeant cet objet. Il interroge alors l'annuaire local de ce serveur. Le serveur lui retourne la référence de l'objet demandé et le serveur Up ! Object Request Broker maître la retourne au client.

Avec ce principe de courtage, un programme client peut retrouver un objet par son nom quel que soit son emplacement sur le réseau.

Propriétés

L'utilisateur ne voit que les objets d'un programme correspondant à un concept de la vie courante. Ils sont définis par l'informaticien au moyen l'instruction Type, ce qui permet de leur assigner des propriétés statiques. Par exemple, un document peut posséder les propriétés NomDocument, Auteur, DateDerniereModification, DateDerniereImpression.

Bien souvent, l'utilisateur aimerait ajouter de nouvelles propriétés aux objets de la vie courante, ce qui lui permettrait de les classer et d'être plus efficace dans son travail. Par exemple, si le document est une proposition commerciale, il voudrait lui ajouter les propriétés NumeroClient, ReferenceProposition, Montant.

Avec un langage de programmation classique, cela nécessiterait de modifier la définition du type Document pour lui ajouter ces propriétés statiques supplémentaires. Il en résulte une modification du programme par l'informaticien, ce qui est peut concevable dans le cas d'un progiciel. Deux utilisateurs n'ayant jamais les mêmes besoins, cela devient vite un casse-tête pour les éditeurs de progiciels.

Le principe des propriétés dynamiques permet alors à un utilisateur d'ajouter, de supprimer, de modifier des propriétés des objets modélisant les concepts de la vie courante sans qu'il soit nécessaire de modifier le programme i.e. sans aucune intervention de l'informaticien. Cela s'effectue au moyen d'interfaces hommes-machines faisant appel aux méthodes LirePropriete, EcrirePropriete et SupprimerPropriete du type Objet. Il est possible d'énumérer les propriétés dynamiques d'un type au moyen de la méthode EnumererProprietes du type Objet.