【问题标题】:RTC Programmatic Creation of Work Items with Plain Java Client使用普通 Java 客户端以 RTC 编程方式创建工作项
【发布时间】:2020-07-08 14:25:30
【问题描述】:
public class CreateWorkItem {
    
    private static class LoginHandler implements ILoginHandler, ILoginInfo {
        
        private String fUserId;
        private String fPassword;
        
        private LoginHandler(String userId, String password) {
            fUserId= userId;
            fPassword= password;
        }
        
        public String getUserId() {
            return fUserId;
        }
        
        public String getPassword() {
            return fPassword;
        }
        
        public ILoginInfo challenge(ITeamRepository repository) {
            return this;
        }
    }
    
    private static class WorkItemInitialization extends WorkItemOperation {
        
        private String fSummary;
        private ICategoryHandle fCategory;
        
        public WorkItemInitialization(String summary, ICategoryHandle category) {
            super("Initializing Work Item");
            fSummary= summary;
            fCategory= category;
        }
        
        @Override
        protected void execute(WorkItemWorkingCopy workingCopy, IProgressMonitor monitor) throws TeamRepositoryException {
            IWorkItem workItem= workingCopy.getWorkItem();
            workItem.setHTMLSummary(XMLString.createFromPlainText(fSummary));
            workItem.setCategory(fCategory);
        }
    }
    
    public static void main(String[] args) {
        
        boolean result;
        TeamPlatform.startup();
        try {
            result= run(args);
        } catch (TeamRepositoryException x) {
            x.printStackTrace();
            result= false;
        } finally {
            TeamPlatform.shutdown();
        }
        
        if (!result)
            System.exit(1);
        
    }
    
    private static boolean run(String[] args) throws TeamRepositoryException {
        
        if (args.length != 7) {
            System.out.println("Usage: CreateWorkItem  <repositoryURI> <userId> <password> <projectArea> <workItemType> <summary> <category>");
            return false;
        }
        
        String repositoryURI= args[0];
        String userId= args[1];
        String password= args[2];
        String projectAreaName= args[3];
        String typeIdentifier= args[4];
        String summary= args[5];
        String categoryName= args[6];
        
        ITeamRepository teamRepository= TeamPlatform.getTeamRepositoryService().getTeamRepository(repositoryURI);
        teamRepository.registerLoginHandler(new LoginHandler(userId, password));
        teamRepository.login(null);
        
        IProcessClientService processClient= (IProcessClientService) teamRepository.getClientLibrary(IProcessClientService.class);
        IAuditableClient auditableClient= (IAuditableClient) teamRepository.getClientLibrary(IAuditableClient.class);
        IWorkItemClient workItemClient= (IWorkItemClient) teamRepository.getClientLibrary(IWorkItemClient.class);
        
        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.");
            return false;
        }
        
        IWorkItemType workItemType= workItemClient.findWorkItemType(projectArea, typeIdentifier, null);
        if (workItemType == null) {
            System.out.println("Work item type not found.");
            return false;
        }
        
        List path= Arrays.asList(categoryName.split("/"));
        ICategoryHandle category= workItemClient.findCategoryByNamePath(projectArea, path, null);
        if (category == null) {
            System.out.println("Category not found.");
            return false;
        }
        
        WorkItemInitialization operation= new WorkItemInitialization(summary, category);
        IWorkItemHandle handle= operation.run(workItemType, null);
        IWorkItem workItem= auditableClient.resolveAuditable(handle, IWorkItem.FULL_PROFILE, null);
        System.out.println("Created work item " + workItem.getId() + ".");
        
        teamRepository.logout();
        
        return true;
    }
}

**这是 jazz.net 的官方示例代码。我的问题是如何在“private static boolean run(String[] args) throws TeamRepositoryException”函数中将值设置为“categoryName”。在主要功能中,没有描述“arg []”。谁能给我一个示例到初始“categoryName”参数。 **

【问题讨论】:

  • run() 的 args 数组是从 main(..) (这是一个标准的 Java 程序入口点)传递的,因此是从程序的命令行参数中获取的,这就是你的意思吗?您可以在 IDE 类运行配置或“java”运行命令中指定命令行参数,使用空格分隔它们。
  • 我想:我可以在“categoryName”中输入什么值。在“运行”功能中。 String repositoryURI= args[0];//值为localhost:9443/ccm; String categoryName= args[6];//这里可以放什么值;

标签: workitem rational-team-concert


【解决方案1】:

类别名称参数是在 RTC CCM 项目中针对时间线或项目定义的。下面显示了一个示例。 这些是类别名称参数中预期的值。

您可以查看您的项目设置以获取此信息。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 2017-03-30
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多