1

ユーザーを追加する必要があります (ユーザーは既にリポジトリに存在します。追加するだけで済みます)。CSV ファイルからチーム エリアにロールを追加します。プロジェクト エリアとチーム エリアは既に存在します。ユーザーを正常に追加できましたが、csv ファイルからロールを追加できませんでした。

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 ファイルからロールを取得できた場合 、問題を解決する必要があると思います。エラーは発生していませんが、ロールは追加されません。

     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");
        }
4

1 に答える 1

0

使用しようとしている API の一部は、RTC3.x では非公開です。

さまざまなオプションについては、このスレッドを参照してください (コードに少し似ています)。

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

このクラスは次のように拡張されますProcessAreaWorkingCopy

public class ProjectAreaWorkingCopy extends ProcessAreaWorkingCopy implements IProjectAreaWorkingCopy

チームを取得し、ProcessAreaWorkingCopy setRoleCast役割を設定します。

を介してチームレベルで役割を設定できます

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

OP カウシャンビ スヤルは次のように報告しています。

スレッドに記載されているように、変更をほとんど加えずにメソッドを作成し、機能しました。
また、プロジェクト エリアではなくチーム エリアでユーザーにロールを追加しようとしているため、ここではプロジェクト エリアではなくプロセス エリアを渡す必要があります。

于 2013-06-27T11:13:38.900 に答える