Логический путь к компонентам

Логический путь используется для упорядочения компонентов, управляемых модулем записи, в четко определенные группы.

Логический путь по структуре аналогичен традиционному пути к файлам, используя обратную косую черту "\" для разделения элементов в пути. В отличие от путей к файлам, корень логического пути имеет значение NULL, а не "\".

Логический путь выражается в виде строки, заканчивающейся значением NULL, и другие ограничения на символы, которые может содержать путь, отсутствуют.

Самое важное использование логического пути заключается в определении наборов компонентов, где явное включение компонента в операцию резервного копирования или восстановления одного выбираемого компонента требует включения ряда других компонентов (подкомпонента). Логический путь к определяющему компоненту набора компонентов является родительским по отношению к логическим путям его подкомпонентов и:

  • Подкомпоненты должны совместно использовать в качестве корневого пути логический путь к выбранному компоненту, который определяет набор компонентов.
  • Допустимый корневой путь со значением NULL .
  • Имя определяемого компонента должно быть первым элементом логического пути после корневого пути для каждого неизбираемого подкомпонента набора компонентов.
  • Наборы компонентов могут быть вложенными.
  • Сочетание логического пути и имени компонента должно быть уникальным для всех экземпляров класса модуля записи.

Гипотетический пример модуля записи MyWriter со структурой логического пути, определенной ниже, иллюстрирует логический путь.

Имя компонента Логический путь Можно выбрать для резервного копирования
"Исполняемые файлы" "" N
"ConfigFiles" "Исполняемые файлы" N
"LicenseInfo" "" Да
Security "" Да
"UserInfo" Security N
"Сертификаты" Security N
"writerData" "" Да
"Set1" "writerData" N
"Ян" "writerData\Set1" N
"Декабрь" "writerData\Set1" N
"Set2" "writerData" N
"Ян" "writerData\Set2" N
"Декабрь" "writerData\Set2" N
"Запрос" "writerData\QueryLogs" N
"Использование" "writerData" Да
"Ян" "writerData\Usage" N
"Декабрь" "writerData\Usage" N

 

Обратите внимание, что компоненты "Исполняемые файлы" и "ConfigFile" имеют отношение "родитель-потомок", но оба компонента не могут быть доступны для выбора. Поэтому они не образуют набор компонентов. Всякий раз, когда выполняется резервное копирование или восстановление модуля записи MyWriter , эти два компонента должны быть явно включены в операцию.

Компонент LicenseInfo можно выбрать не с помощью ни предка, ни потомка. Его можно явно включить в операцию резервного копирования или восстановления по усмотрению инициатора запроса.

Компонент "Безопасность" определяет простой набор компонентов, не содержащий наборов компонентов под ним.

Компонент "writerData" определяет набор компонентов, который содержит сложную коллекцию компонентов с несколькими четко определенными иерархиями логических путей под ним.

Один подкомпонент , "Использование", можно выбрать и определяет набор компонентов.

Несколько компонентов имеют одинаковые имена и отличаются логическими путями. Экземпляры неизбираемых компонентов "Dec" и "Jan" существуют в неизбираемых компонентах Set1 и Set2 и в подкомпоненте "Usage" с возможностью выбора.

Если компонент "writerData" явно включен в резервную копию или восстановление, то все его подкомпоненты, даже во вложенных наборах компонентов, определенных параметром "Использование", будут неявно включены в операцию.

Если набор компонентов, определенный свойством "writerData", явно не включен в резервную копию или восстановление, компоненты "Set1", "Set2" и "QueryLogs" (и их экземпляры подкомпонентов "Dec" и "Jan") не будут включены неявно в операции резервного копирования или восстановления.

Однако даже если параметр "writerData" не включен в операцию, компонент "Использование" по-прежнему можно выбрать и его можно явно включить в операцию резервного копирования или восстановления. Если это так, то его подкомпоненты "Jan" и "Dec" будут включены неявно.

Другие моменты, заслуживающие в виду:

  • Доступные для выбора компоненты LicenseInfo и WriterData и неизбираемый компонент "Исполняемые файлы" находятся на одном уровне в иерархии логических путей MyWriter: все они имеют одинаковый логический путь NULL или "", корневой логический путь.
  • Доступный для выбора компонент "Использование" никогда не следует явно включать в резервную копию, если его выбираемый родительский элемент ("writerData") явно включен в операцию резервного копирования или восстановления.
  • Компоненты, определяющие наборы компонентов, могут существовать просто по организационным причинам. Например, компонент "writerData" или "Usage" или оба компонента могут быть пустыми; то есть наборы файлов не были добавлены в них с помощью метода IVssCreateWriterMetadata::AddFilesToFileGroup, IVssCreateWriterMetadata::AddDatabaseFiles или IVssCreateWriterMetadata::AddDatabaseLogFiles . Компоненты по-прежнему определяют набор компонентов.