COM+ コレクション階層内の移動

COMAdminCatalog オブジェクトで GetCollection メソッドを使用することにより簡単に取得できるコレクションもあります。 このメソッドは、"最上位レベル" のコレクションを取得します。つまり、Applications など、独立した一意のコレクションであり、別のコレクションの下に論理的に包含されていません。

ただし、多くのコレクションは、いくつかの大きな構造の一部である要素を含んでいるため、論理的に別のコレクションの下に包含されています。 たとえば、Components コレクションは、特定の COM+ アプリケーションにインストールされているコンポーネント (それ自体が Applications コレクション内の項目に対応するコンポーネント) を含むため、Applications コレクションに包含されているか、関連しています。 このような関連するコレクションは一意ではありません。個別のアプリケーションごとに Components コレクションがあります。

したがって、コレクションは、含まれる項目間の論理リレーションシップに自然に対応する階層構造に配置されます。 コレクション階層の図は、COM+ 管理コレクションにあります。 COMAdmin オブジェクトを使用して構成する要素の多くでは、コレクション階層の一部を移動して適切な項目を取得する必要があります。

これは、実際には、関連するコレクション内の項目を取得する場合、必要なすべての上位レベルのコレクションを最初に包含する必要があることを意味します。 また、関連するコレクションを取得するには、子コレクションが関連付けられている親コレクション内の特定の項目を取得する必要があります。 たとえば、特定の COM+ アプリケーションのコンポーネントに対応する項目を構成する場合、次の手順を実行する必要があります。

  1. Applications コレクションを取得して設定します。
  2. 適切な COM+ アプリケーションに対応する項目に到達するまで、Applications コレクションの内容を列挙します。
  3. 特定の COM+ アプリケーションの Components コレクションを取得して設定します。
  4. 適切なコンポーネントに対応する項目に到達するまで、Components コレクションの内容を列挙します。

以下の Microsoft Visual Basic の例は、上記の手順を実行する方法を示しています。

On Error GoTo My_Error_Handler

Dim Catalog As COMAdminCatalog 
Set Catalog = CreateObject("COMAdmin.COMAdminCatalog")

' Get the Applications collection and populate it.
Dim Applications As COMAdminCatalogCollection 
Set Applications = Catalog.GetCollection("Applications") 
Applications.Populate

' Get the correct application, "My Application".
Dim AppObject As COMAdminCatalogObject 
For Each AppObject in Applications 
    If AppObject.Name = "My Application" Then 
        Exit For 
    End If
Next 

' Get and populate the Components collection for "My Application".
Dim Components As COMAdminCatalogCollection 
Set Components = Applications.GetCollection("Components", AppObject.Key) 
Components.Populate

' Get the correct component, "My Component".
Dim CompObject As COMAdminCatalogObject 
For Each CompObject in Components 
    If CompObject.Name = "My Component" Then 
        Exit For 
    End If
Next 

前の例では、2 つの異なる GetCollection メソッドが使用されています。 1 つ目は COMAdminCatalog によって公開され、最上位レベルのコレクション (この場合は "Applications") を取得するために使用されます。 2 つ目は COMAdminCatalogCollection によって公開され、現在のコレクションに関連するコレクションを取得するために使用されます。親オブジェクトの "Components" という名前と Key プロパティ値を渡すことにより、必要なコレクションを正確に指定します。 Key プロパティの値は多くの場合、オブジェクトを一意に識別する名前または GUID です。この値は、各コレクションのドキュメントで識別されます。

最も一般的な事例では、必要なコレクションを取得するまで、関連するコレクションをコレクション階層の下で繰り返し取得する必要があります。 実行する手順は、同じ一般的なモデルに従って繰り返し実行します。 コレクションの完全な一覧については、「COM+ 管理コレクション」をご覧ください。

場合によっては、2 回目にコレクション階層のパスに従う際に、ショートカット メソッドの使用が必要になることがあります。 このメソッドは、すべての中間 Key 値を既にキャッシュした後のみ使用できます。 詳しくは、「ICOMAdminCatalog::GetCollectionByQuery」をご覧ください。

COM+ コレクションの設定

利用可能な関連するコレクションの照会

COM+ カタログでのコレクションの取得