Oracle9i Software Configuration Manager(旧Oracle Repository)では、同時に多数のユーザーがサポートされます。各ユーザーに、リポジトリ内のすべてのオブジェクトを表示する必要がない場合があります。また、あるユーザーの作業が他のユーザーの作業の妨げとならないようにするためのメカニズムも必要です。これら2つの問題を解決するために、Software Configuration Managerでは個別のワークエリア、つまり独自のオブジェクトに対して作業を行うリポジトリの特定のビューを作成できます。これにより、他のユーザーに属すオブジェクトは表示されなくなり、自分の加えた変更が別のユーザーによって上書きされる心配もなくなります。
次に、ユーザーのワークエリアの概念図を示します。ワークエリアは、リポジトリ内のオブジェクトのうち、ユーザーが作業するオブジェクトのサブセットの特定のビューを提供します。ワークエリアは、不要なオブジェクトをエクスクルードするよう定義できます。
たとえば、バージョン・コントロールがアクティブで、ユーザーAが自分が所有するリポジトリ・オブジェクトの一部に対して作業すると想定します。ユーザーAはこれらのオブジェクトをチェックアウトし、同時にそれらをロックします。他のユーザーは、これらのオブジェクトにアクセスできる場合、依然としてチェックアウトおよび更新が可能です。ただし、ロックが解除されるまで、それらを同じブランチにチェックインすることはできません。次にユーザーAはオブジェクトで作業し、作業が終了したらそれらをチェックインします。これによりロックが解除され、他のユーザーが各自のバージョンをチェックインできるようになります。ただし、チェックインを有効にするには、それらのバージョンとユーザーAのバージョンをマージする必要があります。
オブジェクトをロックせずにチェックアウトおよび更新することができます。このとき、他のユーザーは同じオブジェクトをチェックアウトおよび更新できます。この場合、最初のユーザーは更新したオブジェクトをチェックインできますが、他のユーザーは行った更新を最初のユーザーの更新にマージする必要があります。オブジェクトがチェックアウトされるたびにロックされるよう、リポジトリ・オプションを設定することも可能です。厳密なロック制御ポリシーと呼ばれるこのオプションでは、最初のユーザーがオブジェクトをチェックインするまで、他のユーザーはそのオブジェクトをチェックアウトできません。
JDeveloperでは、ワークエリア・ウィザードに従ってワークエリアを作成することができます。ワークエリアは作成時はプライベート・ワークエリアで、作成者のみがアクセスできます。ワークエリアを作成するには、リポジトリ所有者からワークエリア・リポジトリ権限が割り当てられている必要があります。
注意: JDeveloperでは、共有ワークエリアに対する接続および作業はサポートされません。プライベート・ワークエリアに対する接続および作業のみがサポートされます。これにより、ある開発者が誤って他の開発者のデータを上書きするなどのデータの損失を防げます。ただし、連係目的の共有ワークエリアはサポートされます。共有ワークエリアは1つ以上のプライベート・ワークエリアを定義するベースとして使用できます。共有ワークエリアを使用することで、複数の開発者がそれぞれのプライベート・ワークエリアの定義で共有できるコンフィグレーションを作成することが可能になり、効果的なチーム・ベースの開発を行うことができます。
ワークエリアの作成者が、その所有者になります。所有権は、後から別のユーザーに移行できます。
特定のワークエリアに表示するリポジトリ・オブジェクトまたはオブジェクト・バージョンを、厳密に選択できます。たとえば、特定のオブジェクトやバージョンをインクルードまたはエクスクルードするオプションを使用できます。
バージョン・コントロールを使用している場合、ワークエリアには、特定のオブジェクトの1つのバージョンのみが表示されます。ただし、使用中のワークエリアに表示されるバージョンは変更できます。
リポジトリの作業を行うには、少なくとも1つのワークエリアを使用できる必要があります。ワークエリアは独自に作成するか、使用できるよう設定されたワークエリアを使用します。ワークエリアでは、コンテナを少なくとも1つは作成しないと、他のリポジトリ・オブジェクトを作成することはできません。バージョニングされたコンテナまたはオブジェクトはいずれも、複数のワークエリアにインクルード(つまり表示)できます。ただし、バージョニングされていないコンテナまたはオブジェクトは、複数のワークエリアには表示できません。
オブジェクトをワークエリアに表示するには、一連のルールからなるワークエリア仕様を定義します。ルールとは、ワークエリアに表示するオブジェクトの明確なバージョンを定義したものです。たとえば、特定のブランチ上にあるオブジェクトの最新バージョンや、指定した期間の最新バージョンなどが常にワークエリアにインクルードされるよう指定できます。さらに、コンフィグレーション(オブジェクト・バージョンの事前定義済セット)をワークエリア仕様にインクルードすることもできます。
ワークエリアは、ルール、コンフィグレーション、またはその両方を含む仕様ファイルから作成できます。仕様ファイルのデフォルトの拡張子は .CWSです。
ワークエリアをリフレッシュすると、現行のワークエリア仕様に従ってワークエリアの内容が再表示されます。その結果、ワークエリアに表示される一連のオブジェクトに対して、オブジェクトの追加、更新、または削除が実行される場合があります。ワークエリアのリフレッシュにより、ワークエリアのオブジェクト・バージョン間で発生する可能性のある競合も解決できます。
次の図は、競合する可能性のある2つのコンフィグレーションが仕様に含まれているワークエリアをリフレッシュした場合の効果を示しています。
この例では、バージョン・コントロールが使用されているとの想定で、オブジェクトAのバージョン1.1が他のオブジェクトとともにワークエリアWA1にインクルードされています。オブジェクトAのバージョン1.2は、そのコンフィグレーションconfig2が同じオブジェクトのバージョン1.1を含むconfig1よりも下にリストされているため、エクスクルードされます。
特定の開発ブランチで作業を行うように、ワークエリアを設定できます。そのためには、そのワークエリアを介して更新したすべてのバージョニングされているオブジェクトがチェックイン時に同じブランチに割り当てられるよう、デフォルトのチェックイン・ブランチを指定します。この機能を有効にするには、自動ブランチ化ポリシーがアクティブになっている必要があります。