2011-01-27 103 views
9

我的場景是:我的jira工作流程中的一步應該能夠取消調度任務,即將修復版本設置爲「無」。JIRA - Jira post功能 - 如何更新「修復版本」字段?

我發現我不能夠在工作流功能後更新修復版本 - 我完全不知道是什麼原因,但無論如何我沒有實現JIRA插件來幫助我解決我的問題,但我知道我正在反對jira結構(甚至java良好的編碼習慣:))。我不確定我的實現是否會導致問題,但實際上它是在我的jira實例4.1.x中工作的。

如何,我實現了一個插件,以更新後的功能,2種非常相似的方式修復版本:

public class BrandsclubPostFunctionUnschedule extends AbstractJiraFunctionProvider { 
    // Here I create an empty Collection to be the new value of FixVersion (empty because I need no version in Fix Version) 
    public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException { 
     MutableIssue issue = this.getIssue(transientVars); 
     Collection<Version> newFixVersion = new ArrayList<Version>(); 
      issue.setFixVersions(newFixVersion); 
      issue.store(); 
    } 
} 

public class BrandsclubPostFunctionUnschedule extends AbstractJiraFunctionProvider { 
    // here I clear the Collection I got from "old" Fix Version and I have to set it again to make it work. 
    public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException { 
     MutableIssue issue = this.getIssue(transientVars); 
     Collection fixVersions = issue.getFixVersions(); 
     fixVersions.clear(); 
     issue.setFixVersions(fixVersions); 
     issue.store(); 
    } 
} 

我推測,真正的解決辦法應該使用類,如:ChangeItemBean,ModifiedValue,IssueChangeHolder - 以CustomFieldImpl(來自jira源代碼,項目:jira,包:com.atlassian.jira.issue.fields)的updateValue方法爲例。

我在這裏發佈此點是:

  • 有誰知道如何實現包含交函數改變正常修復版本一個JIRA插件?

回答

4

如果你想要做正確採取在代碼中查找

./jira/src/java/com/atlassian/jira/workflow/function/issue/UpdateIssueFieldFunction.java processField ()

採用輸入參數的Postfunctions沒有記錄,但似乎。其他地方代碼是其他開源插件。

1

Atlassian的有一個教程做的只是你想要做什麼,here

+0

我沒有看到在該教程,顯示什麼如何修改問題對象。 – mdoar 2015-04-30 23:31:21

0

我在這個片段中做到這一點,如:

List<GenericValue> genericValueList = issueManager.getIssues(issues); 
versionManager.moveIssuesToNewVersion(genericValueList, lastVersion, newVersion);