ADN Open CIS
Сообщество программистов Autodesk в СНГ

11/04/2014

Лёгкое программирование под Autodesk Vault. Часть 8

НазадСодержаниеДалее


Для получения группы необходимо вызвать один из методов Get*:

Операция

Объект

Метод

AllGroups

 

GetAllGroups

Group

ById

GetGroupById

ByName

GetGroupByName

Groups

ByIds

GetGroupsByIds

ByNames

GetGroupsByNames

GroupInfo

ByGroupId

GetGroupInfoByGroupId

GroupInfos

ByGroupIds

GetGroupInfosByGroupIds

ChildGroupIds

ByGroupId

GetChildGroupIdsByGroupId

MemberGroups

ByGroupId

GetMemberGroupsByGroupId

ParentGroupIds

ByGroupId

GetParentGroupIdsByGroupId

Самый простой – это GetAllGroups(), который возвращает все группы. После этого вы можете вывести все объекты, либо отфильтровать необходимые. В PowerShell фильтрацию можно  осуществить при помощи командлета Where-Object:

Код - PowerShell: [Выделить]
  1. Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
  2. $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
  3. # Получаем все группы
  4. $allGroups = $g_login.WebServiceManager.AdminService.GetAllGroups()
  5. # Осуществляем выборку
  6. $activeGroups = $allGroups | Where-Object{$_.IsActive -eq $true}
  7. # Выводим результаты
  8. $activeGroups | Out-GridView -Title "Активные группы"

Зная ID, либо имена групп, можно получить конкретную группу.

Код - PowerShell: [Выделить]
  1. Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
  2. $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
  3. $GroupID = 1
  4. $GroupName = 'Все пользователи'
  5. $GroupsIDs = 1,6
  6. $GroupsNames = 'Все пользователи', 'Конструкторы'
  7. # Получаем группы по имеющимся данным
  8. $group1 = $g_login.WebServiceManager.AdminService.GetGroupById($GroupID)
  9. $group2 = $g_login.WebServiceManager.AdminService.GetGroupByName($GroupName)
  10. $group3 = $g_login.WebServiceManager.AdminService.GetGroupsByIds($GroupsIDs)
  11. $group4 = $g_login.WebServiceManager.AdminService.GetGroupsByNames($GroupNames)
  12. # Выводим результаты
  13. $group1 | Out-GridView -Title ("Группа с ID=" + $GroupID)
  14. $group2 | Out-GridView -Title ("Группа с именем=" + $GroupName)
  15. $group3 | Out-GridView -Title ("Группы с ID=" + $GroupsIDs)
  16. $title=''; $GroupsNames | ForEach-Object{$title+= $_.ToString() +', ' }
  17. $group4 | Out-GridView -Title ("Группы с именами=" + $title)

Однако класс Group не хранит исчерпывающую информацию по группе. Существует расширяющий его класс GroupInfo. Получить экземпляры объектов этого класса также можно при помощи вызова методов.

Код - PowerShell: [Выделить]
  1. Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
  2. $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
  3. $GroupID = 1
  4. $GroupsIDs = 1,6
  5. # Получаем информацию по группам на основании имеющихся данных
  6. $groupInfo = $g_login.WebServiceManager.AdminService.GetGroupInfoByGroupId($GroupID)
  7. $groupsInfos = $g_login.WebServiceManager.AdminService.GetGroupInfosByGroupIds($GroupsIDs)
  8. # Выводим результаты
  9. $groupInfo | Out-GridView -Title ("Группа с ID=" + $GroupID)
  10. $groupsInfos | Out-GridView -Title ("Группы с ID=" + $GroupsIDs)

Поскольку группы находятся в определенных отношениях друг с другом, есть смысл иметь доступ к этим связям.

Код - PowerShell: [Выделить]
  1. Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
  2. $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
  3. $GroupID = 1
  4. # Получаем перечень непосредственных родительских групп
  5. $parentGroups = $g_login.WebServiceManager.AdminService.GetParentGroupIdsByGroupId($GroupID)
  6. $parentGroups | Out-GridView -Title ("Непосредственная родительская группа для группы с ID=" + $GroupID)
  7. # Получаем перечень непосредственных дочерних групп
  8. $memberGroups = $g_login.WebServiceManager.AdminService.GetMemberGroupsByGroupId($GroupID)
  9. $memberGroups | Out-GridView -Title ("Непосредственные дочерние группы для группы с ID=" + $GroupID)
  10. # Получаем перечень всех дочерних групп рекурсивно
  11. $childGroups = $g_login.WebServiceManager.AdminService.GetChildGroupIdsByGroupId($GroupID)
  12. $childGroups | Out-GridView -Title ("Все дочерние группы для группы с ID=" + $GroupID)

 

Автор: Дмитрий Емельянов
Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=667

Опубликовано 11.04.2014
Отредактировано 06.08.2014 в 15:04:34