Поделиться через


Навигация по иерархии коллекций COM+

Некоторые коллекции можно легко получить с помощью метода GetCollection в объекте COM Администратор Catalog. Этот метод извлекает коллекцию верхнего уровня; т. е. коллекция, например Application, которая стоит самостоятельно и которая является уникальной и не логически подмнождается в другой коллекции.

Однако многие коллекции логически подразделяются в другую коллекцию, так как они содержат элементы, которые являются частью какой-то более крупной структуры. Например, коллекция "Компоненты" подразделяется или связана с коллекцией "Приложения", так как она содержит компоненты, установленные в определенном приложении COM+, который сам соответствует элементу в коллекции "Приложения". Связанные коллекции, такие как это, не являются уникальными; Для каждого отдельного приложения существует коллекция компонентов .

Поэтому коллекции упорядочивается в иерархической структуре, которая естественно соответствует логическим связям между элементами, которые они содержат. Схему иерархии коллекций можно найти в com+ Администратор istration Collections. Для многих элементов, которые требуется настроить с помощью объектов COM Администратор, необходимо перейти по определенной части иерархии коллекции, чтобы получить соответствующий элемент.

На практике это означает, что если вы хотите получить элемент в связанной коллекции, сначала необходимо пройти все необходимые более высокие уровни, подмножные коллекции. Чтобы получить связанную коллекцию, необходимо получить определенный элемент в родительской коллекции, к которой связана дочерняя коллекция. Например, если вы хотите настроить элемент, соответствующий компоненту в определенном приложении COM+, необходимо выполнить следующие действия:

  1. Получите коллекцию "Приложения " и заполните ее.
  2. Перечисляйте содержимое коллекции "Приложения" , пока не получите элемент, соответствующий правильному приложению COM+.
  3. Получите и заполните коллекцию компонентов для этого конкретного приложения COM+.
  4. Перечисляйте содержимое коллекции компонентов , пока не получите элемент, соответствующий правильному компоненту.

В следующем примере 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 

Два разных метода GetCollection используются в предыдущем примере. Первый предоставляется COM Администратор Catalog и используется для получения коллекции верхнего уровня ( в данном случае —Application). Второй предоставляется COM Администратор CatalogCollection и используется для получения коллекции, связанной с текущей коллекцией; вы указываете точно, какая коллекция требуется, передав имя "Components" и значение свойства Key родительского объекта. Значение свойства Key часто является именем или ИДЕНТИФИКАТОРом GUID, уникальным образом идентифицирующий объект; это значение определяется в документации для каждой коллекции.

В большинстве случаев необходимо получить связанные коллекции итеративно вниз по иерархии коллекций, пока не получите нужную коллекцию. Шаги, которые вы будете предпринять, следуйте той же общей модели, повторяющейся. Полный список коллекций см. в разделе com+ Администратор istration Collections.

В некоторых случаях может потребоваться использовать ярлык метод во второй раз, когда вы следуете по пути через иерархию коллекций. Этот метод можно использовать только после того, как вы уже кэшировали все промежуточные значения ключа. Дополнительные сведения см. в разделе ICOM Администратор Catalog::GetCollectionByQuery.

Заполнение коллекций COM+

Запрос доступных связанных коллекций

Получение коллекций в каталоге COM+