Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中的Rally Rest客户端创建BE Initiative、BE特性和CPM特性_Java_Rest_Rally - Fatal编程技术网

使用Java中的Rally Rest客户端创建BE Initiative、BE特性和CPM特性

使用Java中的Rally Rest客户端创建BE Initiative、BE特性和CPM特性,java,rest,rally,Java,Rest,Rally,我们正在尝试自动化从一个Rally工作区到另一个工作区的项目迁移。一切似乎都很好,就像我们能够将项目和相关版本/迭代/用户故事/任务从一个工作区迁移到另一个工作区一样。 但是在尝试迁移BE Initiative/BE Feature/CPM Feature时,我们得到了一些与空指针异常相关的异常,但是我们在响应中得到的错误似乎没有提供太多信息 代码示例如下: String oldProjectObjectId = "12345"; String newProjectObject

我们正在尝试自动化从一个Rally工作区到另一个工作区的项目迁移。一切似乎都很好,就像我们能够将项目和相关版本/迭代/用户故事/任务从一个工作区迁移到另一个工作区一样。 但是在尝试迁移BE Initiative/BE Feature/CPM Feature时,我们得到了一些与空指针异常相关的异常,但是我们在响应中得到的错误似乎没有提供太多信息

代码示例如下:

    String oldProjectObjectId = "12345";
    String  newProjectObjectId = "67890";

    String oldRallyWorkspaceObjectId = "32145";
    String newRallyWorkspaceObjectId = "67894";
    QueryResponse beInitiativeResponse = queryRally("portfolioitem/beinitiative", "/project/"+this.oldProjectObjectId, "/workspace/"+this.oldRallyWorkspaceObjectId);

    int beInitiativeCount = beInitiativeResponse.getTotalResultCount();

    if(beInitiativeCount >0){

        JsonArray initiativeArray = beInitiativeResponse.getResults();

        for(int i=0; i< initiativeArray.size();i++){        

            JsonObject beInitiativeObject = initiativeArray.get(i).getAsJsonObject();

            String oldBeInitiativeObjectId = beInitiativeObject.get("ObjectID").getAsString();
            String oldBeInitiativeName = beInitiativeObject.get("_refObjectName").getAsString();

            String owner = getObjectId(beInitiativeObject, "Owner");

            JsonObject BeInitiativeCreateObject = getJsonObject(oldBeInitiativeName, "/project/"+this.newProjectObjectId, "/workspace/"+this.newRallyWorkspaceObjectId, owner);
            CreateResponse beInitiativeCreateResponse = createInRally("portfolioitem/beinitiative", BeInitiativeCreateObject);

            if(beInitiativeCreateResponse.wasSuccessful()){
                String newBeInitiativeObjectId = beInitiativeCreateResponse.getObject().get("ObjectID").getAsString();

                String mapKey = oldBeInitiativeObjectId;
                String mapValue= newBeInitiativeObjectId;
                this.beInitiativesHashMap.put(mapKey, mapValue);
            }
            else{   
                String[] errorList;
                errorList = beInitiativeCreateResponse.getErrors();
                for (int j = 0; j < errorList.length; j++) {
                    System.out.println(errorList[j]);
                }
            }

        }
    }
因此,现在我没有创建初始主题,而是尝试仅在新工作区中创建主题,但出现以下错误-

请求的类型名称\“/portfolioitem/theme\”未知

我传递给CreateResponse函数的对象是-

{"Name":"xyz","Project":"/project/1804","Workspace":"/workspace/139"}
CreateInraly函数的代码如下所述-

public CreateResponse createInRally( String query, JsonObject object) throws IOException{

    CreateRequest createRequest = new CreateRequest(query, object);

    CreateResponse createResponse = restApi.create(createRequest);

    return createResponse;
}

因此,这肯定是web服务api中的一个错误。对于未处理的空指针,您永远不会得到500个响应。我最初的猜测是,当您创建新对象时,其中的某个字段仍在引用旧工作区中的对象,而当我们尝试正确连接所有关联时,它无法读取新工作区中的其中一个对象。你能提供更多关于你要创建的实际对象的信息吗?具体来说,您包括哪些对象关系(在新工作区中可能无效)?

由于未传递我们试图在其中创建公文包项目的工作区的对象id,因此发生了未知类型错误。 因此,在修改createInraly函数以包含工作区对象id之后,我们能够创建initiative portfolio项。 修改后的createInraly函数如下所示-

    CreateRequest createRequest = new CreateRequest(query, object);

    createRequest.addParam("workspace", "/workspace/1333333333");

    CreateResponse createResponse = restApi.create(createRequest);

    return createResponse;

你能再具体一点吗?上面哪一行是错误的?很抱歉没有在问题本身中指出这一点。当尝试执行
if(beInitiativeCreateResponse.wassucccessful())
时,它将执行else块,从而执行
else{String[]errorList;errorList=beInitiativeCreateResponse.getErrors();for(int j=0;j
在问题中也更新了相同的内容。@KyleMorse请您调查一下这个问题,因为我已经用信息更新了它。必需。谢谢您的回答。我已经用必需的信息更新了问题。在更新1标题下。
    CreateRequest createRequest = new CreateRequest(query, object);

    createRequest.addParam("workspace", "/workspace/1333333333");

    CreateResponse createResponse = restApi.create(createRequest);

    return createResponse;