コンテナー
フォルダーは、ほかのオブジェクトを保持できるコンテナーを表します。これらのオブジェクトには、カスタム・オブジェクト、ドキュメント、フォルダー (およびそのサブクラス) などがあります。
子フォルダーは、通常、直接包含されています。すなわち、そのコンテナー・モデルは 1:N (1 対多) の関係です。包含する (親) フォルダーには、複数の子フォルダーを含めることができますが、それぞれの子フォルダーは、多くても 1 つの親フォルダー内に直接包含されます。参照として包含されるフォルダーを作成することもできますが、実際に必要になることはまれであり、アプリケーションは、一般に、フォルダーが直接包含されていると想定しています。
カスタムのオブジェクトおよびドキュメントは、常に参照として包含されます。参照により包含されるオブジェクトの場合、コンテナー・モデルは N : M 関係 (多対多関係) です。参照として包含されるオブジェクトは、複数のフォルダー内に包含されることも、同じフォルダー内に重複して包含されることもあります。
- 1 つのフォルダー内に非常に多数のサブフォルダーがある。詳細については、「多数のフォルダー、ドキュメント、およびオブジェクトの処理 (Handling a large number of folders, documents and objects)」を参照してください。
- オブジェクトをファイリングするために autounique 命名機能を過剰に使用する。詳細については、コンテナー名を参照してください。
フォルダー
Folder オブジェクトには次のような特性があります。
- フォルダーは個別にセキュリティー保護ができます。初期のセキュリティーは、クラスによって設定されます。フォルダーのセキュリティーについては、セキュリティーの親からの継承、セキュリティー・ポリシーの割り当て、またはその両方を選択できます。詳しくは、オブジェクトのセキュリティーを参照してください。
- フォルダーには、0 個以上のアノテーション (Annotation オブジェクト) を関連付けることができます。
- フォルダーは、照会を使用して検索および取得できます。
- フォルダーをワークフロー・サブスクリプションの対象にできます。フォルダーは自身に添付されたワークフローを持ち、手動で、またはフォルダーの削除、フォルダーへのオブジェクトのファイリング等のイベント発生時にワークフローを起動できます。
- フォルダーは、フォルダーの追加、削除などのイベント発生時に起動するサーバー側イベントにサブスクライブできます。詳細については、イベントの概念とサブスクリプションの概念を参照してください。
- フォルダーに関する操作は監査できます。詳細については、監査の概念を参照してください。
- フォルダーは、Folder.lock メソッドを使用してロックできます。アプリケーションは、Folder.isLocked メソッドを使用してロック状態を確認できます。
- フォルダーは、リンク関係に参加できます。詳細については、Link インターフェースを参照してください。
各オブジェクト・ストアには、自動的に作成されたルート・フォルダーがあります。このフォルダーは、オブジェクト・ストアに関連付けられた、デフォルトのルート・コンテナーを表します。ルート・フォルダーを作成または削除することはできませんが、ObjectStore オブジェクトの getRootFolder メソッドを呼び出すか、RootFolder プロパティーを取得することにより、これにアクセスできます。
ルート・フォルダーの直下に包含されるフォルダーは、最上位フォルダーと呼ばれます。通常、これらのフォルダーは、フォルダー・ナビゲーションの起点を表します。多くのアプリケーションでは、ルート・フォルダーを表示することも、ルート・フォルダーへのオブジェクトの追加をユーザーに許可することもないためです。オブジェクト・ストアの最上位フォルダーには、次の方法でナビゲートできます。
- ObjectStore オブジェクトの getRootFolder メソッドを呼び出し、次にルート Folder オブジェクトの getContainees メソッドを呼び出すことにより、包含されるフォルダーが返されます。
- ObjectStore オブジェクトの TopFolders プロパティーを取得します。
Folder オブジェクトのシステム・プロパティーについては、フォルダー・プロパティーを参照してください。Folder インスタンスの作成方法については、Folder オブジェクトの作成を参照してください。
参照コンテナー関係
参照コンテナー関係には、動的関係と静的関係の 2 種類があります。
静的関係
静的参照コンテナー関係とはフォルダーと、CustomObject オブジェクト、一連のバージョン内の特定バージョンのドキュメント、または (多くありませんが) フォルダーとの関係です。この関係は、ReferentialContainmentRelationship オブジェクトで表されます。
CustomObject オブジェクトについては、オブジェクトをフォルダーにファイリングする際に Folder.file メソッドを呼び出したときに、この種類の関係が暗黙的に作成されます。ReferentialContainmentRelationship オブジェクトを作成して、フォルダーに包含しようとしているオブジェクトに Head プロパティーを、包含する側のフォルダーに Tail プロパティーを設定することにより、CustomObject オブジェクトまたはドキュメントに、明示的にこの種類の関係を作成することもできます。
ReferentialContainmentRelationship オブジェクトには、以下の追加コンテナー機能が用意されています。これらは、ほかのインターフェース (Folder インターフェース、Containable インターフェースなど) 経由では利用できません。
- 参照コンテナー関係を、フォルダーと、特定のドキュメント・バージョンとの間に生成します。情報については、フォルダーへの特定のドキュメント・バージョンの関連付けの指示を参照してください。
- 参照として包含されるフォルダーを作成します。詳しくは、ReferentialContainmentRelationship オブジェクトの作成を参照してください。
動的関係
動的参照コンテナー関係とは、フォルダーと、ドキュメントの現在のバージョンとの関係です。この場合、現在のドキュメント・バージョンは使用される順に、リリース済みバージョン (ある場合)、それがなければ現在のバージョン (ある場合)、それもなければ予約バージョンになります。ドキュメントをフォルダーにファイリングする際に Folder.file メソッドを呼び出したときに、この種類の関係が暗黙的に作成されます。DynamicReferentialContainmentRelationship オブジェクトを作成することにより、明示的にこの関係を作成することもできます。
コンテナー名
コンテナー名とは、ユーザー・インターフェースでフォルダーに表示されるオブジェクトの名前のことです。オブジェクト名と異なる名前を指定できます。コンテナー名には、ドキュメント・タイトルに対する制限以上に、追加の規則があります。コンテナー名で許容される文字の説明については ReferentialContainmentRelationship.ContainmentName プロパティーを参照してください。
コンテナー名はフォルダー内で必ず固有である必要があります。オブジェクトをフォルダーにファイリングするときにコンテナー名を指定しない場合、コンテナー名はオブジェクトの Name プロパティーの値に設定されます。Name プロパティーの値が null の場合、コンテナー名はオブジェクトの Id プロパティーの値 (GUID) に設定されます。コンテナー名をオブジェクトの Id プロパティーの値に設定した結果、フォルダー内のコンテナー名が重複した場合は、Content Engine サーバーが自動的にそれを変更して固有性を保ちます。
ユーザー指定の名前の場合、Folder.file メソッドには autounique 命名機能が含まれています。この機能は、名前が競合した場合に Content Engine によって自動的に固有のコンテナー名を付けるようにするものです。しかしこの機能を使用可能にすると、重複するコンテナー名を使用して同一フォルダーにファイリングされている多数のオブジェクトを対象にこの機能を使用する際に、パフォーマンスに重大な影響が出る可能性があります。特定の条件下では、ファイリング操作が正常に完了するまでに Content Engine がファイリング操作を何度も試行することがあります。このような場合にはタイムアウトが発生する可能性があります。したがって、クライアント・アプリケーションでは、auto-unique 命名機能が必要となる頻度が低くなるように、オブジェクトごとに固有のコンテナー名を付けるようにする必要があります。(「フォルダーへのオブジェクトのファイリング」を参照してください)。