0

我目前正在开发一个插件,允许项目管理员分组管理用户。我一直在梳理 api 参考文档,但似乎找不到任何可以让我看到与特定项目关联的组的调用。

我查看了与我正在搜索的内容相关的每个位置的 API,但无济于事。

我目前有一个数据库查询,可以为我提供我正在寻找的内容。

SELECT ROLETYPEPARAMETER AS "Groups"

FROM projectrole PROJECT_ROLE,
projectroleactor PROJECT_ROLE_ACTOR

JOIN project PROJECT
    ON PROJECT.id = PROJECT_ROLE_ACTOR.PID
JOIN cwd_group
    ON group_name = roletypeparameter

WHERE PROJECT_ROLE_ACTOR.projectroleid = PROJECT_ROLE.id
AND PKEY = <projectkey>;

如果可能的话,我宁愿通过 API 操作这些数据。

我可以使用所有其他部分来完成插件以添加,从组中删除用户。

我知道我正在寻找的信息是可用的。如果您导航到角色页面,您将拥有角色中的用户和角色中的组。我确定我忽略了 API 的一些小问题,以便为我提供与项目相关的组。

4

1 回答 1

0

在实现了我的数据库路由之后,我又回到了非数据库方法。这是解决问题的实现。

实施组的方式是作为项目角色下的一组角色参与者。再往下一层,您将组名作为角色演员的描述符。

//Create TreeMap to Store the Role-Group association.  Note a role can have more than one group
TreeMap<String,Collection<String>> projectGroups = new TreeMap<String,Collection<String>>();

//Get all the project roles
Collection<ProjectRole> projectRoles = projectRoleManager.getProjectRoles();

//Iterate through each role and get the groups associated with the role
for (ProjectRole projectRole : projectRoles)
{
    //Get the role actors for the project role 
    ProjectRoleActors roleActors = projectRoleManager.getProjectRoleActors(projectRole, project);

    //Create an iterator to grab all of the groups for this project role
    Iterator <RoleActor> roleActorIterator = roleActors.getRoleActors().iterator();

    //Create a collection of strings to store all of the group's roles to put in the map
    Collection <String> groupRoles = new ArrayList<String>();

    //Iterate the role actors to get the groups
    while (roleActorIterator.hasNext())
    {

        //Add the group by string name into collection
        groupRoles.add(roleActorIterator.next().getDescriptor());

    }//END While

    //Add that role, and the associated groups to that role into our map.
    projectGroups.put(projectRole.getName(), groupRoles);

}//END For

这个的输出看起来和这个类似

{Administrators=[jira-administrators], Developers=[jira-developers, jira-users], Users=[jira-users]} 
于 2014-02-19T14:20:24.950 回答