Лёгкое программирование под 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:
- Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
 - $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
 - # Получаем все группы
 - $allGroups = $g_login.WebServiceManager.AdminService.GetAllGroups()
 - # Осуществляем выборку
 - # Выводим результаты
 - $activeGroups | Out-GridView -Title "Активные группы"
 
Зная ID, либо имена групп, можно получить конкретную группу.
- Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
 - $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
 - $GroupID = 1
 - $GroupName = 'Все пользователи'
 - $GroupsIDs = 1,6
 - $GroupsNames = 'Все пользователи', 'Конструкторы'
 - # Получаем группы по имеющимся данным
 - $group1 = $g_login.WebServiceManager.AdminService.GetGroupById($GroupID)
 - $group2 = $g_login.WebServiceManager.AdminService.GetGroupByName($GroupName)
 - $group3 = $g_login.WebServiceManager.AdminService.GetGroupsByIds($GroupsIDs)
 - $group4 = $g_login.WebServiceManager.AdminService.GetGroupsByNames($GroupNames)
 - # Выводим результаты
 - $group1 | Out-GridView -Title ("Группа с ID=" + $GroupID)
 - $group2 | Out-GridView -Title ("Группа с именем=" + $GroupName)
 - $group3 | Out-GridView -Title ("Группы с ID=" + $GroupsIDs)
 - $group4 | Out-GridView -Title ("Группы с именами=" + $title)
 
Однако класс Group не хранит исчерпывающую информацию по группе. Существует расширяющий его класс GroupInfo. Получить экземпляры объектов этого класса также можно при помощи вызова методов.
- Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
 - $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
 - $GroupID = 1
 - $GroupsIDs = 1,6
 - # Получаем информацию по группам на основании имеющихся данных
 - $groupInfo = $g_login.WebServiceManager.AdminService.GetGroupInfoByGroupId($GroupID)
 - $groupsInfos = $g_login.WebServiceManager.AdminService.GetGroupInfosByGroupIds($GroupsIDs)
 - # Выводим результаты
 - $groupInfo | Out-GridView -Title ("Группа с ID=" + $GroupID)
 - $groupsInfos | Out-GridView -Title ("Группы с ID=" + $GroupsIDs)
 
Поскольку группы находятся в определенных отношениях друг с другом, есть смысл иметь доступ к этим связям.
- Add-Type -Path "c:\Program Files (x86)\Autodesk\Autodesk Vault 2014 SDK\bin\Autodesk.DataManagement.Client.Framework.Vault.Forms.dll"
 - $global:g_login=[Autodesk.DataManagement.Client.Framework.Vault.Forms.Library]::Login($null)
 - $GroupID = 1
 - # Получаем перечень непосредственных родительских групп
 - $parentGroups = $g_login.WebServiceManager.AdminService.GetParentGroupIdsByGroupId($GroupID)
 - $parentGroups | Out-GridView -Title ("Непосредственная родительская группа для группы с ID=" + $GroupID)
 - # Получаем перечень непосредственных дочерних групп
 - $memberGroups = $g_login.WebServiceManager.AdminService.GetMemberGroupsByGroupId($GroupID)
 - $memberGroups | Out-GridView -Title ("Непосредственные дочерние группы для группы с ID=" + $GroupID)
 - # Получаем перечень всех дочерних групп рекурсивно
 - $childGroups = $g_login.WebServiceManager.AdminService.GetChildGroupIdsByGroupId($GroupID)
 - $childGroups | Out-GridView -Title ("Все дочерние группы для группы с ID=" + $GroupID)
 
Автор перевода: Дмитрий Емельянов
Обсуждение: http://adn-cis.org/forum/index.php?topic=667
Опубликовано 11.04.2014Отредактировано 06.08.2014 в 15:04:34