有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

TFS Team Foundation服务器使用java SDK获取项目的用户

我正试图通过Java版本11.0.0的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());
            }
        }
}

此外,以下代码取自下载的zip中的示例,并包含组信息:

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);

但我不知道如何使用列表应用程序组readIdentifies方法,这些方法可能对找到解决方案很有用。 有没有人有办法让每个项目组的用户都参与进来

在@Cece-MSFT回答并查看blogMicrosoft 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始终为空。也许是方法项目。getURI()不合适吗?如果我把null

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

为什么我无法通过项目获得贡献者、读者和其他群体。getURI()列表应用程序组方法中?我只能带着它们

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

共 (0) 个答案