ドキュメント プロパティの昇格と降格
最終更新日: 2010年11月1日
適用対象: SharePoint Foundation 2010
プロパティの昇格とは、ドキュメントのプロパティから値を抽出し、ドキュメントの格納先ライブラリの対応する列にそのプロパティ値を書き出す処理のことです。プロパティの降格は、その逆の過程です。値がリスト列から読み取られ、ドキュメント プロパティに書き込まれます。
Microsoft SharePoint Foundation とドキュメント パーサーを同時に使用することにより、プロパティを昇格あるいは降格する過程を自動化することができます。ドキュメント プロパティの値が変化したとき、変更をリストに自動的に書き戻すことができます。リスト アイテムの列あるいはフィールドの値が変化したとき、変更を、そのリスト アイテムに対応するドキュメントに自動的に書き戻すことができます。このため、ドキュメントと対応するリスト アイテムを同期させることができます。
以下のイベントが発生したとき、SharePoint Foundation はプロパティの昇格あるいは降格を実行します。
ファイルがドキュメント ライブラリにアップロードされたとき。
ファイルに関連付けられたリスト アイテムのフィールドが変更されたとき。
SPFile オブジェクトの Properties プロパティがプログラミングにより更新されたとき。
リスト スキーマが変更された後でファイルが最初にダウンロードされたとき。
それぞれの場合で、SharePoint Foundation は、ファイルの種類にパーサーが関連付けられているかどうかを確認します。パーサーが関連付けられている場合、SharePoint Foundation はパーサーを呼び出して、ドキュメントとプロパティ バッグ オブジェクトをパーサーに渡します。次にパーサーは、リストに昇格される必要がある値でプロパティ バッグを埋めるか、あるいはプロパティ バッグからドキュメントに降格される必要がある値を抽出します。
SharePoint Foundation は、ドキュメントに適用されるリスト列と一致するドキュメント プロパティのみを昇格あるいは降格します。ドキュメントに適用される列は、次のように指定されます。
ドキュメントのコンテンツ タイプ (割り当てられている場合)。
ドキュメントにコンテンツ タイプがない場合は、ドキュメント ライブラリ内の列。
コンテンツ タイプの詳細については、「コンテンツ タイプ」を参照してください。
また、SharePoint Foundation はドキュメント プロパティ コレクション全体をハッシュ テーブルに格納します。このハッシュ テーブルは、SPFile オブジェクトの Properties プロパティを使用してプログラムによってアクセスできます。ユーザー インターフェイスを通じてドキュメント プロパティのハッシュ テーブルにアクセスすることはできません。
組み込み XML パーサーが XML ファイルのドキュメント プロパティを昇格あるいは降格する方法については、「XML ドキュメント プロパティの昇格と降格」を参照してください。
昇格
SharePoint Foundation は IParserPropertyBag インターフェイス のインスタンスを作成して、リストに指定されたドキュメント プロパティでオブジェクトを設定します。次にそのファイル形式のドキュメント パーサーを呼び出して、ドキュメントとプロパティ バッグの両方を引数として渡して、パーサーの Parse メソッドを呼び出します。メソッドが返ると、SharePoint Foundation はプロパティ バッグにアクセスして、どのドキュメント プロパティがリスト列に一致したか判定した後で、それらの値をリストに書き込みます。
次の図は、ドキュメントの昇格処理を示しています。この処理で、パーサーはドキュメントからドキュメントのプロパティを抽出し、そのプロパティをプロパティ バッグに書き込みます。4 つのドキュメント プロパティのうち、3 つはドキュメントのコンテンツ タイプに含まれています。SharePoint Foundation は、プロパティ バッグ内のプロパティをドキュメント ライブラリの列 (フィールド) に一致させ、これらのプロパティをドキュメント ライブラリに昇格します。つまり、これらのプロパティ値を適切な列に書き込みます。ドキュメントのコンテンツ タイプに Status 列は含まれていないので、SharePoint Foundation は、ドキュメント ライブラリに一致する列がある場合でも、4 番目のドキュメント プロパティ Status を昇格しません。また、SharePoint Foundation は、4 つのドキュメント プロパティすべてを、ドキュメント ライブラリのドキュメントを表す SPFile オブジェクトの Properties プロパティに書き込みます。
降格
SharePoint Foundation は IParserPropertyBag インターフェイス のインスタンスを作成して、リストに指定されたドキュメント プロパティでオブジェクトを設定します。次にそのファイル形式のドキュメント パーサーを呼び出して、ドキュメントとプロパティ バッグの両方を引数として渡して、パーサーの Demote メソッドを呼び出します。Demote メソッドはプロパティ バッグにアクセスして、どのドキュメント プロパティがリスト列に一致したか判定した後で、それらの値をリストに書き込みます。
次の図は、ドキュメント プロパティの降格処理を示しています。ドキュメントの 2 つのプロパティを更新するために、SharePoint Foundation はパーサーを呼び出して、パーサーに更新するドキュメントおよび 2 つのドキュメント プロパティを含むプロパティ バッグ オブジェクトを渡します。パーサーはプロパティ バッグからプロパティ値を読み取り、ドキュメント内のプロパティを更新します。パーサーはドキュメントの更新を終了すると、ドキュメントを変更したことを示す、出力パラメーターで渡されるフラグを設定します。次に、SharePoint Foundation は更新されたドキュメントをドキュメント ライブラリに保存します。