Chemin d’accès logique des composants

Le chemin d’accès logique est utilisé pour organiser les composants gérés par un enregistreur en groupes bien définis.

Le chemin d’accès logique est analogue dans la structure au chemin d’accès de fichier traditionnel, en utilisant la barre oblique inverse « \ » pour séparer les éléments dans le chemin d’accès. Contrairement aux chemins d’accès aux fichiers, la racine d’un chemin logique est NULL, au lieu de « \ ».

Le chemin logique est exprimé sous la forme d’une chaîne terminée par null, et il n’existe aucune autre restriction sur les caractères que le chemin d’accès peut contenir.

L’utilisation la plus importante du chemin d’accès logique consiste à définir des ensembles de composants, où l’inclusion explicite d’un composant dans une opération de sauvegarde ou de restauration d’un composant sélectionnable nécessite l’inclusion d’un certain nombre d’autres composants (sous-composant). Le chemin logique du composant de définition d’un jeu de composants est un parent des chemins d’accès logiques de ses sous-composants et :

  • Les sous-composants doivent partager comme chemin d’accès racine le chemin logique du composant sélectionnable qui définit l’ensemble de composants.
  • Un chemin racine null est valide.
  • Le nom du composant sélectionnable de définition doit être le premier élément de chemin d’accès logique après le chemin racine de chaque sous-composant non sélectionnable du jeu de composants.
  • Les jeux de composants peuvent être imbriqués.
  • La combinaison du chemin logique et du nom du composant doit être unique pour toutes les instances d’une classe writer.

L’exemple hypothétique d’un enregistreur MyWriter avec une structure de chemin logique définie ci-dessous illustre le chemin d’accès logique.

Nom du composant Chemin d’accès logique Sélectionnable pour la sauvegarde
« Exécutables » "" N
« ConfigFiles » « Exécutables » N
« LicenseInfo » "" O
« Security » "" O
« UserInfo » « Security » N
« Certificats » « Security » N
« writerData » "" O
« Set1 » « writerData » N
« Jan » « writerData\Set1 » N
« Déc » « writerData\Set1 » N
« Set2 » « writerData » N
« Jan » « writerData\Set2 » N
« Déc » « writerData\Set2 » N
« Requête » « writerData\QueryLogs » N
« Utilisation » « writerData » O
« Jan » « writerData\Usage » N
« Déc » « writerData\Usage » N

 

Notez que les composants « Exécutables » et « ConfigFile » ont une relation parent-enfant, mais que les deux ne sont pas sélectionnables. Par conséquent, ils ne forment pas un ensemble de composants. Chaque fois que l’enregistreur MyWriter est sauvegardé ou restauré, ces deux composants doivent être explicitement inclus dans l’opération.

Le composant « LicenseInfo » n’est sélectionnable ni ancêtre ni descendant. Il peut être inclus explicitement, ou non, dans une opération de sauvegarde ou de restauration à la discrétion du demandeur.

Le composant « Sécurité » définit un ensemble de composants simple, qui ne contient aucun ensemble de composants sous celui-ci.

Le composant « writerData » définit un ensemble de composants, qui contient une collection complexe de composants avec plusieurs hiérarchies de chemins logiques bien définies en dessous.

Un sous-composant, « Utilisation », est sélectionnable et définit un ensemble de composants.

Plusieurs composants ont le même nom et se distinguent par leurs chemins logiques. Des instances des composants non sélectionnables « Dec » et « Jan » existent sous les composants non sélectionnables « Set1 » et « Set2 » et sous le sous-composant sélectionnable « Utilisation ».

Si le composant « writerData » est explicitement inclus dans une sauvegarde ou une restauration, tous ses sous-composants, même ceux du jeu de composants imbriqués défini par « Utilisation », seront implicitement inclus dans l’opération.

Si l’ensemble de composants défini par « writerData » n’est pas explicitement inclus dans une sauvegarde ou une restauration, les composants « Set1 », « Set2 » et « QueryLogs » (ainsi que leurs instances de sous-composants « Dec » et « Jan ») ne seront pas inclus implicitement dans l’opération de sauvegarde ou de restauration.

Toutefois, même si « writerData » n’est pas inclus dans l’opération, le composant « Utilisation » est toujours sélectionnable et il peut toujours être inclus explicitement dans une opération de sauvegarde ou de restauration. Si tel est le cas, ses sous-composants « Jan » et « Dec » seront implicitement inclus.

Autres points dignes d’être notés :

  • Les composants sélectionnables « LicenseInfo » et « writerData » et le composant non sélectionnable « Exécutables » se trouvent tous au même niveau dans la hiérarchie de chemins logiques de MyWriter : tous ont le même chemin logique null ou « », le chemin logique racine.
  • Le composant sélectionnable « Utilisation » ne doit jamais être explicitement inclus dans une sauvegarde, si son parent sélectionnable (« writerData ») est explicitement inclus dans une opération de sauvegarde ou de restauration.
  • Les composants qui définissent des ensembles de composants peuvent exister simplement pour des raisons organisationnelles. Par instance, le composant « writerData » ou « Usage », ou les deux, peut être vide; autrement dit, aucun jeu de fichiers n’y a été ajouté à l’aide de la méthode IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles ou IVssCreateWriterMetadata::AddDatabaseLogFiles. Les composants définissent toujours un ensemble de composants.