在RTC的团队区域中向用户添加角色 [英] Adding roles to users in team area in RTC

查看:89
本文介绍了在RTC的团队区域中向用户添加角色的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要添加用户(用户已经存在于存储库中.我只需要添加他们即可.)和角色(从CSV文件到团队区域).项目区域和团队区域已经存在.我可以成功添加用户,但不能成功添加csv文件中的角色.

I need to add users ( users are already present in repository. I only need to add them.) and roles from a CSV file to team areas. Project area and Team Area already exists.I could successfully add users but not the roles from csv file.

CSV文件格式为:

Project name,Team Area name,Members,roles
Project1,User_Role_TA,Alex,Team Member
Project2,TA2,David,Scrum Master

下面是它的代码.它成功添加了用户,并且当前已从项目区域向他们添加角色,但是我需要从CSV文件向用户添加角色.在下面的代码中,如果可以在"IRole [] availableRoles = clientProcess.getRoles(area,null);"行中从csv文件获取角色. ,我认为应该可以解决问题.我没有收到任何错误,但没有添加角色.

Below is the code for it. It successfully add the users and currently add roles to them from project area but I need to add roles to the users from CSV file. In the below code, If I can get roles from csv file in the line "IRole[] availableRoles = clientProcess.getRoles(area, null);" , I think it should resolve the issue. I am not getting any error but it doesn't add the roles.

     while((row = CSVFileReader.readLine()) != null ) 
            {
            rowNumber++;
            st = new StringTokenizer(row,",");
            while (st.hasMoreTokens()) {
             projectAreaList.add(st.nextToken());
             teamAreaList.add(st.nextToken());
             membersList.add(st.nextToken());
             roleList.add(st.nextToken());
            }
            }
            for (int i=1; i<rowNumber; i++)
            {
            projectAreaName = projectAreaList.get(i);
            teamAreaName = teamAreaList.get(i);
            members = membersList.get(i);
            member_roles =roleList.get(i);


               URI uri = URI.create(projectAreaName.replaceAll(" ", "%20"));
               IProjectArea projectArea = (IProjectArea) processClient.findProcessArea(uri, null, null);
                if (projectArea == null)
                {
                    System.out.println("Project Area not found");
                }
                if (!teamAreaName.equals("NULL")){
                    List <TeamAreaHandle> teamlist = projectArea.getTeamAreas();
                    ITeamAreaHandle newTAHandle = findTeamAreaByName(teamlist,teamAreaName,monitor);
                    if(newTAHandle == null) {
                    System.out.println("Team Area not found");
                    }
                    else {
                        ITeamArea TA = (ITeamArea)teamRepository.itemManager().fetchCompleteItem(newTAHandle,ItemManager.DEFAULT,monitor);
                        IRole role = getRole(projectArea);
                    IContributor user = teamRepository.contributorManager().fetchContributorByUserId(members,monitor);

                    /*role1 = getRole(area).getId();
                    if(role1.equalsIgnoreCase(member_roles))
                    {
                        user_role = getRole(area);
                        }*/


                     IProcessAreaWorkingCopy areaWc = (IProcessAreaWorkingCopy)service.getWorkingCopyManager().createPrivateWorkingCopy(TA);
                     areaWc.getTeam().addContributorsSettingRoleCast(
                             new IContributor[] {user}, 
                             new IRole[] {role}); 
                    areaWc.save(monitor);

                    }

public static IRole getRole(IProcessArea area) throws TeamRepositoryException {
            ITeamRepository repo = (ITeamRepository) area.getOrigin();
            IProcessItemService service =(IProcessItemService) repo
                .getClientLibrary(IProcessItemService.class);
            IClientProcess clientProcess = service.getClientProcess(area, null);
            IRole[] availableRoles = clientProcess.getRoles(area, null);
            for (int i = 0; i < availableRoles.length; i++) {
                return availableRoles[i];
            }
            throw new IllegalArgumentException("Couldn't find role");
        }

推荐答案

您要使用的某些API在RTC3.x中是私有的

Some of the API you are trying to use are private in RTC3.x

请参见此主题不同的选项(有点类似于您的代码):

See this thread for different options (a bit similar to your code):

ProjectAreaWorkingCopy workingCopy = (ProjectAreaWorkingCopy)manager.getWorkingCopy(project);

此类扩展到ProcessAreaWorkingCopy

public class ProjectAreaWorkingCopy extends ProcessAreaWorkingCopy implements IProjectAreaWorkingCopy

ProcessAreaWorkingCopy setRoleCast中检索团队并设置角色.

In ProcessAreaWorkingCopy setRoleCast retrieves the team and sets the role.

一个人可以通过以下方式在团队一级设置角色

One can set the role at the team level via

team.setRoleCast(contributor, roleCast);
# or
projWc.getTeam().addContributorsSettingRoleCast(new IContributor[] {contributor}, roles);


OP Kaushambi Suyal 报告:


The OP Kaushambi Suyal reports:

创建线程中提到的方法,只需进行很少的更改即可.
另外,我们需要在此处通过过程区域,而不是在项目区域 ,因为我正在尝试向团队区域而不是项目区域的用户添加角色.

Created a method as mentioned in the thread with few changes and it worked.
Also we need to pass the process area here and not the project area, because I am trying to add roles to users in team area and not project area.

这篇关于在RTC的团队区域中向用户添加角色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆