2016-02-26 4 views
0

Я пытаюсь получить всех пользователей, которые принадлежат к проекту через SDK для Java версии 11.0.0, но я застрял. С этим кодом я извлечь коллекции и проекты:Team Foundation server, получающий пользователей проекта с использованием Java SDK

TeamFoundationServerEntity teamFoundationServer=configurationServer.getTeamFoundationServerEntity(true); 
if (teamFoundationServer != null) 
{ 
     ProjectCollectionEntity[] projectCollections = teamFoundationServer.getProjectCollections(); 
     for (ProjectCollectionEntity pce : projectCollections) { 
      System.out.println("Collection: "+pce.getDisplayName()+" "+pce.getDescription()); 
      TeamProjectEntity[] tpe=pce.getTeamProjects(); 
      for (TeamProjectEntity teamProjectEntity : tpe) { 
       System.out.println(" teamProjectEntity: "+teamProjectEntity.getDisplayName()+" * "+teamProjectEntity.getProjectURI()); 
      } 
     } 
} 

Кроме того, с помощью следующего кода, взятого из примера в загруженной молнии и имеет информацию группы:

GUID[] resourceTypes = new GUID[]{ 
     CatalogResourceTypes.PROJECT_COLLECTION 
    }; 
    CatalogResource[] resources = 
     configurationServer.getCatalogService().queryResourcesByType(resourceTypes, CatalogQueryOptions.NONE); 

    if (resources != null) 
    { 
     for (CatalogResource resource : resources) 
     { 
      String instanceId = resource.getProperties().get("InstanceId"); 
      TFSTeamProjectCollection tpc = configurationServer.getTeamProjectCollection(new GUID(instanceId)); 

      System.out.println("TFSTeamProjectCollection"); 
      System.out.println("\tName: " + tpc.getName().toString()); 
      System.out.println("\tURI: " + tpc.getBaseURI()); 

      ProjectCollection pc=tpc.getWorkItemClient().getProjects(); 

      for (Project project : pc) { 
       System.out.println("---"+project.getName()+" * "+project.getID()); 

       String[] grps=tpc.getWorkItemClient().getGroupDataProvider(project.getName()).getGroups(); 
      } 
     } 
    } 

я нашел класс IdentityManagementService

IdentityManagementService ims=new IdentityManagementService(configurationServer); 

, но я не знаю, как использовать listApplicationGroups и readIdentities методы, которые могут быть полезны для поиска решения. У кого-нибудь есть идея получить пользователей в каждой группе проектов?

Еще несколько пробных испытаний после @Cece - MSFT ответили и посмотрели blog и книгу Microsoft Team Foundation Server 2015 Cookbook. Используя этот код

TeamFoundationIdentity[] appGroups=ims.listApplicationGroups(project.getURI(), ReadIdentityOptions.EXTENDED_PROPERTIES); 
for (TeamFoundationIdentity group : appGroups) 
{ 
    System.out.println(group.getDisplayName()); 
    TeamFoundationIdentity[] groupMembers= ims.readIdentities(new IdentityDescriptor[]{group.getDescriptor()}, MembershipQuery.EXPANDED, ReadIdentityOptions.EXTENDED_PROPERTIES); 
    for (TeamFoundationIdentity member : groupMembers) 
    { 
     for(IdentityDescriptor memberID : member.getMembers()) 
     { 
      TeamFoundationIdentity memberInfo=ims.readIdentity(IdentitySearchFactor.IDENTIFIER, memberID.getIdentifier(), MembershipQuery.EXPANDED, ReadIdentityOptions.EXTENDED_PROPERTIES); 
      System.out.println(memberInfo.getDisplayName()); 
     } 
    } 
} 

переменная appGroups всегда пусто. Может быть, метод project.getURI() не подходит? Если я ставлю нулевую

TeamFoundationIdentity[] tfi=ims.listApplicationGroups(null, ReadIdentityOptions.INCLUDE_READ_FROM_SOURCE); 
for (TeamFoundationIdentity teamFoundationIdentity : tfi) { 
    System.out.println(teamFoundationIdentity.getDisplayName()); 
    System.out.println(teamFoundationIdentity.getDescriptor().getIdentityType()); 
    IdentityDescriptor[] mbs=teamFoundationIdentity.getMembers(); 
    for (IdentityDescriptor mb : mbs) { 
     TeamFoundationIdentity mbi=ims.readIdentity(mb, MembershipQuery.EXPANDED, ReadIdentityOptions.EXTENDED_PROPERTIES); 
     System.out.println(mbi.getProperties()); 
    } 
} 

выход

[DefaultCollection]\Project Collection Administrators 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Build Administrators 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Build Service Accounts 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Proxy Service Accounts 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Service Accounts 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Test Service Accounts 
Microsoft.TeamFoundation.Identity 
[DefaultCollection]\Project Collection Valid Users 
Microsoft.TeamFoundation.Identity 

Почему я не могу получить Помощники, читатели и другие группы с project.getURI() в listApplicationGroups метод ? Я могу получить их только от

String[] grps=tpc.getWorkItemClient().getGroupDataProvider(project.getName()).getGroups(); 

ответ

0

this блог. В этом блоге автор использовал услугу IGroupSecurityService, чтобы получить список групп приложений и получить информацию о том, какая группа является пользователем.

Но сейчас IGroupSecurityService является устаревшим. Вместо этого вам необходимо использовать IIdentityManagementService или ISecurityService.

фрагмент кода должен выглядеть следующим образом:

var sec = tfs.GetService<IIdentityManagementService>(); 
Identity[] appGroups = sec.ListApplicationGroups(Scope Uri); 


foreach (Identity group in appGroups) 
{ 
    Identity[] groupMembers = sec.ReadIdentities(SearchFactor.Sid, new string[] { group.Sid }, QueryMembership.Expanded); 

    foreach (Identity member in groupMembers) 
    { 
     var groupM = new GroupMembership {GroupName = member.DisplayName, GroupSid = member.Sid}; 

     if (member.Members != null) 
     { 
      foreach (string memberSid in member.Members) 
      { 
       Identity memberInfo = sec.ReadIdentity(SearchFactor.Sid, memberSid, QueryMembership.Expanded); 

       var userName = memberInfo.Domain + "\\" + memberInfo.AccountName; 

Подробные шаги, вы можете проверить блог.

+0

Спасибо, я отредактировали вопросы, обеспечивающие более подробную информацию. –

+0

Проверка IIdentityManagementService.ListApplicationGroups Метод на https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.framework.client.iidentitymanagementservice.listapplicationgroups(v=vs.120).aspx, вам нужно использовать Scope Uri , –

+0

где я могу найти проект Scope URI? –

 Смежные вопросы

  • Нет связанных вопросов^_^