バージョン管理
Document クラスまたはその任意のサブクラスのインスタンスは Versionable オブジェクトです。すなわち、このオブジェクトには複数のバージョンを関連付けることができます。 新規ドキュメントの作成時およびチェックイン時には初期バージョンが作成され、既存のドキュメントのチェックアウトおよびチェックイン時には新しい追加バージョンが作成されます。Versionable オブジェクトを使用して実行できるアクションには、バージョンのカスタム・プロパティーの固定、マイナー・バージョンからメジャー・バージョンへの昇格、メジャー・バージョンからマイナー・バージョンへの降格などがあります。また、VersionSeries オブジェクトを取得することもできます。このオブジェクトは、ドキュメントの完全なバージョン・セットを表します。VersionSeries オブジェクトを使用すると、呼び出しを 1 回発行するだけで、すべてのドキュメント・バージョンに対してアクションを一括実行できます。例えば、すべてのドキュメント・バージョンの内容を同時に別の場所に移動することができます。便宜上、VersionSeries クラスに含まれる一部のメソッドとプロパティーが Versionable クラスにも含まれています。このため、一部のアクションはどちらのオブジェクトでも実行できます。
Content Engine のバージョン管理の詳細については、Content Engine 管理ヘルプでバージョン管理関連のトピックを参照してください。バージョン管理コードの例については、「バージョン管理関連オブジェクトの操作」を参照してください。
バージョン・レベル
Content Engine では、バージョン管理無効、単一レベルのバージョン管理、2 レベルのバージョン管理の 3 つのバージョン管理レベルをサポートします。ドキュメントのクラスは、そのクラスに割り当てられたドキュメントのバージョン管理が有効かどうかを指定します。 Content Engine のシステム管理者は、クラスのバージョン管理のサポート設定を (いずれかの方向で) 変更できます。 しかし、クラスの設定を変更しても、既存のドキュメントへの影響はありません。すなわち、ドキュメントのバージョン管理が可能かどうかは初期バージョンの作成時期に決まり、変わることはありません。また、(システム管理者によって、または Content Engine Java™ API の changeClass メソッドを使用して) ドキュメントのクラスが変更されても、ドキュメントのバージョン管理が可能かどうかは変わりません。
あるクラスに対して (したがって、そのクラスのドキュメントに対しても) バージョン管理が無効になっている場合、そのドキュメントに対してバージョン管理関連の操作 (ドキュメントをオブジェクト・ストアからチェックアウトするなど) を実行することはできません。 この場合、ドキュメントには関連付けられた VersionSeries オブジェクトがありますが、バージョン・シリーズには 1 つのドキュメント・バージョンしかありません。ドキュメントのバージョン管理が有効かどうかをチェックするには、そのオブジェクトの IsVersioningEnabled プロパティーを Document または VersionSeries インターフェースから取得します。バージョン管理が無効なドキュメントの詳細については、バージョン管理の有効化についてを参照してください。
単一レベルのバージョン管理では、すべてのドキュメントがリリース済みの (メジャー) ドキュメントになります。2 レベルのバージョン管理では、マイナーとメジャーの両方のドキュメント・バージョンを使用できます(マイナー・バージョンは通常は不完全なドラフト・ドキュメントで、広範囲に配布する準備ができていないものです)。なお、あるクラスに対してバージョン管理が有効になっている場合は、単一レベルと 2 レベルの両方のバージョン管理が有効になります (このため、単一レベルまたは 2 レベルのバージョン管理を有効化する構成は必要ありません)。アプリケーションに 2 レベルのバージョン管理のマイナー・バージョン機能を開示するには、CheckinType パラメーターを MINOR_VERSION に設定して、checkin メソッドを呼び出します。単一レベルおよび 2 レベルのバージョン管理の詳細については、単一レベルのバージョン管理および 2 レベルのバージョン管理を参照してください。
バージョン番号の指定
アプリケーションに単一レベルのバージョン管理が開示されるか 2 レベルのバージョン管理が開示されるかにかかわらず、各バージョン・シリーズには、マイナーとメジャーのバージョン番号が関連付けられています。これは、バージョン・シリーズにおける現行のバージョン番号を表しています。例えば、ドキュメントの初期バージョンをメジャー・バージョンとしてチェックインした場合、そのメジャー・バージョン番号は 1 になり、マイナー・バージョン番号は 0 になります (したがって、これらを小数点で区切って結合すると、1.0 と表示できます)。これらの番号は、Versionable オブジェクトの MajorVersionNumber プロパティーと MinorVersionNumber プロパティーで指定されます。Content Engine で初期値が割り当てられる方法と、これらの値が増減されるタイミングについては、バージョン番号付けを参照してください。
バージョン状況
各ドキュメント・バージョンにはバージョン状況が関連付けられています。バージョン状況は、そのドキュメントが予約オブジェクト、置換済みドキュメント、または現在リリース済みのドキュメントのいずれであるかを表します。アプリケーションに 2 レベルのバージョン管理が開示された場合は、ドキュメント・バージョンの状況が「処理中」になる場合もあります。この状況は、Versionable オブジェクトの VersionStatus プロパティーに指定されます。詳細な定義については、バージョン状況を参照してください。ドキュメント関連アクションからバージョン状況に与える影響については、バージョン管理アクションを参照してください。
セキュリティー
ドキュメント・バージョンには状況が関連付けられています。バージョン状況に基づいて、ドキュメントのさまざまなバージョンにセキュリティーを自動的に適用することができます。例えば、処理中のドキュメント・バージョンに対して、置換済みバージョンとは異なるアクセス権を設定したいとします。このような場合は、VersioningSecurityTemplate クラスを使用してバージョンのセキュリティーを制御します。Content Engine API でこの機能を開示する方法の詳細については、セキュリティー・ポリシーを参照してください。
また、予約オブジェクトの操作 (ドキュメントのチェックイン、チェックアウトの取り消しなど) を実行する際のセキュリティーに関する考慮事項もあります。
予約オブジェクト
新規ドキュメントの作成時や既存のドキュメントのチェックアウト時には、Content Engine サーバーによって予約オブジェクトが作成されます。このオブジェクトは基本的に、ドキュメントをチェックインする目的を記録します。予約オブジェクトは個別のオブジェクト・クラスではなく、まだチェックインされていない新規のドキュメント・バージョンです。ドキュメントが予約オブジェクトである場合、その VersionStatus プロパティーの値は VersionableStatus.RESERVATION になります。
予約オブジェクトは、コラボレーション型 (適切な権限を持つすべてのユーザーが予約をチェックイン、変更、削除できる) または排他型 (予約の作成者しか予約をチェックイン、変更、削除できない (ただし例外が 1 つあり)) にすることができます。デフォルトの予約動作は、ObjectStore オブジェクトの DefaultReservationType プロパティーによってオブジェクト・ストア・レベルで定義されます。(なお、新規オブジェクト・ストアの作成時には、このプロパティーが値 EXCLUSIVE に初期設定されます。) 初期の予約オブジェクト (新規ドキュメントの作成時に作成された予約オブジェクト) は、デフォルトの予約タイプを使用します。 既存のドキュメントに対しては、予約をコラボレーション型にするか、排他型にするか、Versionable オブジェクトに対して checkout メソッドを呼び出す際にデフォルト・タイプを使用するかを指定できます。
排他的な予約オブジェクトの場合、Content Engine は、ドキュメントをチェックアウトしたユーザーのチェックを実行してから、通常のセキュリティー・アクセス・チェックを実行します。予約を作成したという理由で、ユーザーに付加的な権限が与えられることはありません。 予約オブジェクトを作成したユーザー以外のユーザーは、オブジェクトのクラスの変更、予約のチェックイン、書き込み権限を必要とするプロパティー変更を実行することはできません。ユーザーには、ドキュメントをチェックインするための適切なアクセス権 (マイナー・バージョンのチェックインには RIGHT_MINOR_VERSION、メジャー・バージョンのチェックインには RIGHT_MAJOR_VERSION) も必要です。WRITE_ACL または WRITE_OWNER 権限を必要とするセキュリティー・プロパティーの変更は、通常のアクセス・チェックに従って許可されます。 さらに、(チェックアウトの取り消しによる) 予約の削除は、予約を作成したユーザーと WRITE_OWNER および DELETE 権限を持つユーザー以外は禁止されます。
新規ドキュメントの作成後または既存のドキュメントのチェックアウト後に返される予約オブジェクトには、最初はコンテンツが関連付けられていません。1 つ以上のコンテンツ・エレメントをドキュメントと関連付ける場合は、ドキュメントをチェックインする前にコンテンツを設定する必要があります。また、(Content Engine によって自動的に値を設定するのではなく)Document オブジェクトの MimeType プロパティー値を明示的に設定する場合は、ドキュメントをチェックインする前に値を設定する必要もあります。なお、初期の予約オブジェクトをフォルダーにファイリングできます。