当前位置: 首页 > 面试题库 >

Rally使用Java Toolkit for Rally REST API从Java更新Changeset数据

蒋无尘
2023-03-14
问题内容

给定我具有故事的formattedID和objectID的情况,我需要为该故事创建一个新的Changeset条目。我正在使用给定的Java Toolkit
for Rally REST API(http://developer.rallydev.com/help/java-toolkit-rally-rest-
api)

这里的任何帮助将非常有用,谢谢!


问题答案:

以下是如何完成此操作的示例:

public class RestExample_AddChangesetToUserStory {

    public static void main(String[] args) throws URISyntaxException, IOException {

        // Rally parameters
        String rallyURL = new String("https://rally1.rallydev.com");
        String wsapiVersion = new String("1.36");
        String userName = new String("user@company.com");
        String userPassword = new String("password");
        String applicationName = new String("RestExample_AddChangeSetToStory");

        // Workspace and Project refs
        String workspaceRef = new String("/workspace/12345678910");
        String projectRef = new String("/project/12345678911");

        // Create and configure a new instance of RallyRestApi
        RallyRestApi restApi = new RallyRestApi(
                                                    new URI(rallyURL), 
                                                    userName,
                                                    userPassword
                                                );
        restApi.setWsapiVersion(wsapiVersion);
        restApi.setApplicationName(applicationName);

        // Changeset Owner Username
        String changesetOwner = new String("changesetowner@company.com");

        // SCM Repository Name
        String scmRepositoryName = new String("SVNRepository");

        // FormattedID of Artifact to associate to
        String storyFormattedID = "US14";

        //Read User
        QueryRequest userRequest = new QueryRequest("User");
        userRequest.setFetch(new Fetch("UserName", "Subscription", "DisplayName"));
        userRequest.setQueryFilter(new QueryFilter("UserName", "=", changesetOwner));
        QueryResponse userQueryResponse = restApi.query(userRequest);
        JsonArray userQueryResults = userQueryResponse.getResults();
        JsonElement userQueryElement = userQueryResults.get(0);
        JsonObject userQueryObject = userQueryElement.getAsJsonObject();        
        String userRef = userQueryObject.get("_ref").toString();
        System.out.println("userRef: " + userRef);

        // Query for SCMRepository which pertains to this ChangeSet
        QueryRequest scmRequest = new QueryRequest("SCMRepository");
        scmRequest.setFetch(new Fetch("ObjectID","Name","SCMType"));
        scmRequest.setWorkspace(workspaceRef);
        scmRequest.setProject(projectRef);
        scmRequest.setQueryFilter(new QueryFilter("Name", "=", scmRepositoryName));
        QueryResponse scmQueryResponse = restApi.query(scmRequest);
        JsonObject scmJsonObject = scmQueryResponse.getResults().get(0).getAsJsonObject();
        String scmRef = scmJsonObject.get("_ref").toString();
        System.out.println("scmRef: " + scmRef);

        // Query for Story to which we want to add ChangeSet
        QueryRequest storyRequest = new QueryRequest("HierarchicalRequirement");
        storyRequest.setFetch(new Fetch("FormattedID","Name","Changesets"));
        storyRequest.setQueryFilter(new QueryFilter("FormattedID", "=", storyFormattedID));
        storyRequest.setWorkspace(workspaceRef);
        storyRequest.setProject(projectRef);
        QueryResponse storyQueryResponse = restApi.query(storyRequest);
        JsonObject storyJsonObject = storyQueryResponse.getResults().get(0).getAsJsonObject();
        JsonArray changesetJsonArray = storyJsonObject.getAsJsonArray("Changesets");
        String storyRef = storyJsonObject.get("_ref").toString();

        System.out.println("storyRef: " + storyRef);
        System.out.println("Number of existing Changesets: " + changesetJsonArray.size());

        // Setup JsonObject for new Changeset
        JsonObject newChangeset = new JsonObject();
        newChangeset.addProperty("SCMRepository", scmRef);
        newChangeset.addProperty("Author", userRef);
        newChangeset.addProperty("Revision", "2451");
        newChangeset.addProperty("Uri", "https://svnrepo.company.com:8001");
        newChangeset.addProperty("CommitTimestamp", "2012-07-18T18:00Z");
        // Artifacts JsonArray for collection on Changeset
        JsonArray artifactsJsonArray = new JsonArray();
        artifactsJsonArray.add(storyJsonObject);

        // Associate newChangeset to Story artifact
        newChangeset.add("Artifacts", artifactsJsonArray);

        try {

            //Create the Changeset
            System.out.println("Creating Changeset...");

            CreateRequest createRequest = new CreateRequest("Changeset", newChangeset);
            System.out.println(createRequest.getBody());
            CreateResponse createResponse = restApi.create(createRequest);

            if (createResponse.wasSuccessful()) {
                System.out.println(String.format("Created %s", createResponse.getObject().get("_ref").getAsString()));
                String[] warningList;
                warningList = createResponse.getWarnings();
                for (int i=0;i<warningList.length;i++) {
                    System.out.println(warningList[i]);
                }
            } else {
                String[] errorList;
                errorList = createResponse.getErrors();
                for (int i=0;i<errorList.length;i++) {
                    System.out.println(errorList[i]);
                }
            }

        } finally {
            //Release all resources
            restApi.close();
        }
    }
}


 类似资料:
  • 我在Rally中收集了大量测试用例。为了更容易搜索测试用例,我在测试用例对象中引入了一个新字段,称为“功能”。此字段的属性类型为“下拉列表(多值)”。现在我需要创建一个Ruby脚本,这样我就可以给这个字段分配(可能有多个)值,这就是我的问题所在:我该如何编写它?我假设变量包含一个数组或指向列表的指针。我希望能够分配和删除单个值,而不影响已经分配给特定测试用例的其他值。 通过查看当我查询变量时Ral

  • 我想知道ehcache是否有办法检测数据库更新/插入(spring/java,hibernate web应用程序),并使用数据库中的当前(最新)数据刷新其缓存。如果没有,检测数据库更新的最佳方法是什么,以保持与缓存和数据库之间的数据同步?

  • 问题内容: 我需要有关ajax的帮助。我想更新一个php文件,它将更新数据库。我有一个表格,它将选中的复选框发送到一个php文件,然后更新数据库。我想用ajax做到这一点,但我为此感到挣扎。我知道如何通过Ajax 更新HTML元素,但是无法解决。 HTML脚本 PHP updateDB.php 我希望此更新无需刷新页面。 问题答案: 我只想要一些建议,首先您的html页面代码应该喜欢- 现在我转向

  • 我写的剧本的最终目标是从rally下载所有附件。我能够成功地连接到服务器,请求工作区中的所有附件,最后,通过迭代检索每个附件的内容。这将生成“AttachmentContent”的动态对象。对于任何API来说都是新的#和。NET,我现在被卡住了。我无法找到一种方法来访问此对象的内容并将其下载到我的计算机上的文件中。我在下面评论的这句话是我当前遇到错误并被卡住的地方。任何帮助都将不胜感激。提前谢谢!

  • 我用一个名为“Person”的对象创建了一个表,我可以从Postman发布、删除和放置。我对如何从postman中输入的JSON创建新查询没有问题。但是,每当我尝试删除或更新(使用put)我的查询时,我都会使用@PathVariable选择我想要的查询,并使用@RequestVariable更新所选数据。但我希望能够从JSON文件中删除或更新。下面是我的代码的样子。 人与物 个人控制器 这是我的P

  • 我有一个列结构的熊猫数据帧(df): 此数据框包含例如1月、2月、3月、4月的数据。A、B、C、D是数字列。对于2月份,我想重新计算列A并在数据框中更新它,即对于月份=2月份,A=B C D 我使用的代码: 这运行时没有出现错误,但没有更改2月份A列中的值。在控制台中,它给出了一条消息: 试图在数据帧切片的副本上设置值 尝试使用。loc[row\u indexer,col\u indexer]=改