2013-02-05 98 views
1

有沒有方法使用JRJC v1.0創建子任務?我一直無法找到任何關於此的好文檔。任何示例代碼?如何使用JIRA REST Java客戶端創建子任務

它似乎不支持通過庫,但可能使用直接REST API。

JIRA V5.1.5

+0

什麼是Jira版本? – Abubakkar

+0

用JIRA版本更新了我的帖子。我結束了使用REST API並使其工作。知道這是否可以用JRJC庫完成仍然很好。 –

回答

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

+0

按照您提到的步驟獲取以下錯誤 '由:com.atlassian.jira.rest.client.RestClientException引發:問題類型是一個子任務,但未指定父問題密鑰或ID。如何在不創建newIssue的情況下獲得fromIssueKey?因爲在將issueType設置爲子任務之後,它會請求父鍵,但是此字段在Issue界面中不存在。 – eatSleepCode

+0

對於現有的子任務,我能夠獲得魔法'jira_subtask_link'問題鏈接,以使現有子任務顯示在不同的父級下。但是,它並未從當前父級中刪除子任務。我不知道如何獲得這些魔術問題鏈接的ID。有任何想法嗎? –

+0

他們沒有任何檢查,你可以創建循環的親子關係... LinkIssuesInput linkIssuesInput = new LinkIssuesInput(「1」,「2」,「jira_subtask_link」); LinkIssuesInput linkIssuesInput = new LinkIssuesInput(「2」,「1」,「jira_subtask_link」); –

2

的REST API http://docs.atlassian.com/jira/REST/latest/#id326540有一個評論:

創建一個子任務類似於創建一個普通的問題,有兩個重要的區別:

的問題類型字段必須對應於一個子任務問題類型(您可以使用/ issue/createmeta來發現子任務問題類型)和 您必須在問題創建請求中提供父字段,其中包含父問題的ID或密鑰。

所以我認爲,正規createIssue方法應該可行,但你需要確保你已經在(「父」,「ABC-123」)構造一個額外的FieldInput對象傳遞

我會如果使用子任務鏈接類型實際上起作用,則會感到驚訝。

2

我能夠把下面的代碼放在一起。

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());