コンポーネントの論理パス
論理パス は、ライターによって管理されるコンポーネントを適切に定義されたグループに整理するために使用されます。
論理パスは、構造が従来のファイル パスに似ています。パス内の要素を区切るために円記号 "\" を使用します。 ファイル パスとは異なり、論理パスのルートは "\" ではなく NULL です。
論理パスは NULL で終わる文字列として表され、パスに含めることができる文字に他の制限はありません。
論理パスの最も重要な用途は、 コンポーネント セットを定義することです。ここで、1 つの選択可能なコンポーネントのバックアップまたは復元操作に 明示的なコンポーネントを含める 場合は、他のコンポーネント (サブコンポーネント) を多数含める必要があります。 コンポーネント セットの定義コンポーネントの論理パスは、そのサブコンポーネントの論理パスの親であり、次のようになります。
- サブコンポーネントは、コンポーネント セットを定義する選択可能なコンポーネントの論理パスをルート パスとして共有する必要があります。
- NULL のルート パスが有効です。
- 定義する選択可能コンポーネントの名前は、コンポーネント・セットの選択できないサブコンポーネントごとに、ルート・パスの後の最初の論理パス要素でなければなりません。
- コンポーネント セットは入れ子にすることができます。
- 論理パスとコンポーネント名の組み合わせは、 ライター クラスのすべてのインスタンスで一意である必要があります。
以下に定義されている論理パス構造を持つライター MyWriter の架空の例は、論理パスを示しています。
コンポーネント名 | 論理パス | バックアップ用に選択可能 |
---|---|---|
"実行可能ファイル" | "" | × |
"ConfigFiles" | "実行可能ファイル" | × |
"LicenseInfo" | "" | Y |
"Security" | "" | Y |
"UserInfo" | "Security" | × |
"証明書" | "Security" | × |
"writerData" | "" | Y |
"Set1" | "writerData" | × |
"Jan" | "writerData\Set1" | × |
"Dec" | "writerData\Set1" | × |
"Set2" | "writerData" | × |
"Jan" | "writerData\Set2" | × |
"Dec" | "writerData\Set2" | × |
"クエリ" | "writerData\QueryLogs" | N |
"使用法" | "writerData" | Y |
"Jan" | "writerData\Usage" | × |
"Dec" | "writerData\Usage" | × |
コンポーネント "Executables" と "ConfigFile" には親子関係がありますが、どちらも選択できません。 したがって、コンポーネント セットは形成されません。 ライター MyWriter がバックアップまたは復元されるたびに、これら 2 つのコンポーネントを 操作に明示的に含める 必要があります。
コンポーネント "LicenseInfo" は、先祖も子孫も選択できません。 これは、リクエスターの裁量により、バックアップ操作または復元操作に明示的に含まれるか、含めないようにすることができます。
コンポーネント "Security" は、その下にコンポーネント セットを含まない単純なコンポーネント セットを定義します。
コンポーネント "writerData" はコンポーネント セットを定義します。コンポーネント セットの下には、いくつかの明確に定義された論理パス階層を持つコンポーネントの複雑なコレクションが含まれています。
サブコンポーネント "Usage" の 1 つが選択可能で、コンポーネント セットを定義します。
複数のコンポーネントは同じ名前を持ち、論理パスによって区別されます。 選択できないコンポーネント "Dec" と "Jan" のインスタンスは、選択できないコンポーネント "Set1" と "Set2" の下、および選択可能なサブコンポーネント "Usage" の下に存在します。
コンポーネント "writerData" が明示的にバックアップまたは復元に含まれている場合、"Usage" で定義された入れ子になったコンポーネント セット内のサブコンポーネントであっても、そのサブコンポーネントはすべて暗黙的に操作に含まれます。
"writerData" によって定義されたコンポーネント セットがバックアップまたは復元に明示的に含まれていない場合、コンポーネント "Set1"、"Set2"、および "QueryLogs" (およびサブコンポーネント "Dec" と "Jan" のインスタンス) は、バックアップまたは復元操作に暗黙的に含まれません。
ただし、"writerData" が操作に含まれていない場合でも、コンポーネント "Usage" は選択可能であり、バックアップまたは復元操作に明示的に含めることができます。 その場合、そのサブコンポーネント "Jan" と "Dec" が暗黙的に含まれます。
その他の注意すべき点:
- 選択可能なコンポーネント "LicenseInfo" と "writerData" と選択できないコンポーネント "実行可能ファイル" はすべて 、MyWriter の論理パス階層で同じレベルにあります。すべての論理パスは NULL または ""、ルート論理パスは同じです。
- 選択可能な親 ("writerData") がバックアップまたは復元操作に明示的に含まれている場合は、選択可能なコンポーネント "Usage" をバックアップに明示的に含めてはいけません。
- コンポーネント セットを定義するコンポーネントは、組織上の理由だけで存在する可能性があります。 たとえば、"writerData" コンポーネントまたは "Usage" コンポーネント、またはその両方が空の場合があります。つまり、IVssCreateWriterMetadata::AddFilesToFileGroup、IVssCreateWriterMetadata::AddDatabaseFiles、または IVssCreateWriterMetadata::AddDatabaseLogFiles メソッドを使用してファイル セットが追加されませんでした。 コンポーネントは引き続きコンポーネント セットを定義します。