创建问题时自动创建JIRA子任务

时间:2012-06-04 01:32:55

标签: jira jira-plugin

我想知道有一种方法可以在创建问题时自动创建子任务。

例如,我创建了自定义标准问题类型,XXX和子任务问题类型YYY和ZZZ。当我创建类型为XXX的问题时,将自动创建两个具有相应问题类型YYY和ZZZ的子任务。

4 个答案:

答案 0 :(得分:11)

通过在项目工作流程上的问题创建转换上使用post函数,您可以轻松地使用Jira Scripting Suite。示例代码:

from com.atlassian.jira.util import ImportUtils
from com.atlassian.jira import ManagerFactory
from com.atlassian.jira.issue import MutableIssue
from com.atlassian.jira import ComponentManager
from com.atlassian.jira.issue.link import DefaultIssueLinkManager
from org.ofbiz.core.entity import GenericValue;

# get issue objects
issueManager = ComponentManager.getInstance().getIssueManager()
issueFactory = ComponentManager.getInstance().getIssueFactory()
authenticationContext = ComponentManager.getInstance().getJiraAuthenticationContext()
subTaskManager = ComponentManager.getInstance().getSubTaskManager();
issueLinkManager = ComponentManager.getInstance().getIssueLinkManager()
customFieldManager = ComponentManager.getInstance().getCustomFieldManager()
userUtil = ComponentManager.getInstance().getUserUtil()

# define subtask
issueObject = issueFactory.getIssue()
issueObject.setProject(issue.getProject())
issueObject.setIssueTypeId("5") # normal subtask
issueObject.setParentId(issue.getId())

# set subtask attributes
issueObject.setFixVersions(issue.getFixVersions())
issueObject.setAffectedVersions(issue.getAffectedVersions())
issueObject.setPriority(issue.getPriority())
issueObject.setSummary("Auto created sub task- "+issue.getSummary())
issueObject.setAssignee(userUtil.getUserObject("joe"))

# Create subtask on JIRA 4.x
# subTask = issueManager.createIssue(authenticationContext.getUser(), issueObject)
# subTaskManager.createSubTaskIssueLink(issue.getGenericValue(), subTask, authenticationContext.getUser())

# Create subtask on JIRA 5 and higher
subTask = issueManager.createIssueObject(authenticationContext.getLoggedInUser(), issueObject)
subTaskManager.createSubTaskIssueLink(issue, subTask, authenticationContext.getLoggedInUser())

# Link parent issue to subtask   issueLinkManager.createIssueLink(issue.getId(),issueObject.getId(),10300,1,authenticationContext.getUser())

# Update search indexes
ImportUtils.setIndexIssues(True);
ComponentManager.getInstance().getIndexManager().reIndex(subTask)
ImportUtils.setIndexIssues(False)

答案 1 :(得分:1)

只需创建一个名为“template”的票证(包含所有必需的子任务),并在创建新实例时复制/克隆它。

答案 2 :(得分:0)

要考虑的一件事是,如果在关闭所有子任务之前关闭父问题,会发生什么。我建议放入一个钩子来提示用户在关闭问题之前解决所有子任务。

答案 3 :(得分:0)

我找到了一个使用附加脚本运行器的简单解决方案 - http://isolasoftware.it/2014/01/08/create-an-issue-in-jira-with-predefined-sub-tasks/

您不必编写任何代码,只需在工作流编辑器中设置Post Function“Create a sub-task”。