如何使用JIRA REST Java Client创建子任务

时间:2013-02-05 03:50:11

标签: java api jira

有没有办法使用JRJC v1.0创建子任务?我一直无法找到任何关于此的好文档。有任何样本代码吗?

似乎它不是通过库支持,但可以使用直接的REST API。

JIRA v5.1.5

3 个答案:

答案 0 :(得分:5)

我能够将以下代码放在一起工作。

    IssueInputBuilder issueBuilder = new IssueInputBuilder("Project1", 5L);//5 is the id for subtask type. You can know the id of subtask type by querying this REST api /rest/api/2/issue/createmeta
    issueBuilder.setDescription(">> Test Description");
    issueBuilder.setSummary("Test summary");
    issueBuilder.setProjectKey("Project1");
    Map<String, Object> parent = new HashMap<String, Object>();
    parent.put("key", "SOMEISSUE-234");
    FieldInput parentField = new FieldInput("parent", new ComplexIssueInputFieldValue(parent));

    Map<String, Object> customField = new HashMap<String, Object>();
    customField.put("value", "someValue");//This is some custom field value on the subtask
    customField.put("id", "12345");//This is the id of the custom field. You can know this by calling REST GET for a manually created sub-task

    issueBuilder.setFieldInput(parentField);
    issueBuilder.setFieldValue("customfield_12345",  new ComplexIssueInputFieldValue(customField));//here again you have to query an existing subtask to know the "customfield_*" value

    com.atlassian.jira.rest.client.domain.input.IssueInput issueInput = issueBuilder.build();
    BasicIssue bIssue = restClient.getIssueClient().createIssue(issueInput, pm);    
    System.out.println(">>> " + bIssue.getKey());

答案 1 :(得分:3)

您可以像往常一样创建问题(example),但将问题类型设置为所需的子任务类型。然后,将子任务链接到它的父使用linkIssue,类似于:

LinkIssuesInput linkIssuesInput = new LinkIssuesInput("TST-1", "TST-2", "jira_subtask_link", Comment.valueOf("simple comment"));
issueClient.linkIssue( linkIssuesInput , pm);

我自己没有测试过,我在旧的JIra中使用了XML-RPC,在新的中使用了python-jira。完整的API可用here

答案 2 :(得分:2)

REST API http://docs.atlassian.com/jira/REST/latest/#id326540有一条评论:

创建子任务类似于创建常规问题,有两个重要区别:

issueType字段必须对应于子任务问题类型(您可以使用/ issue / createmeta来发现子任务问题类型),以及 您必须在问题创建请求中提供父字段,其中包含父问题的ID或密钥。

所以我认为常规createIssue方法应该可以工作,但是你需要确保传入一个额外的FieldInput对象(“parent”,“ABC-123”)

如果使用子任务链接类型的链接确实有效,我会感到惊讶。