2012-06-04 10 views
9

Mi chiedo se esiste un modo per creare automaticamente attività secondarie quando il problema viene creato.Crea attività secondarie JIRA automaticamente quando viene creato il problema

Ad esempio, creo un tipo di emissione standard personalizzato, XXX e Sub-tasks Tipo di problema YYY e ZZZ. Quando creo un problema con il tipo XXX, verranno create automaticamente due sotto-attività con i rispettivi tipi di emissione YYY e ZZZ.

risposta

10

Si potrebbe così facilmente utilizzare Jira Scripting Suite utilizzando la funzione di post sulla transizione di creazione del problema sul flusso di lavoro del progetto. Esempio di codice:

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) 
+0

Aveva una 'com.atlassian.jira.exception.CreateException' fino a quando non ha decommentato la riga con' setIssueType'. – Nakilon

+0

@Nakilonless grazie! fisso.. – Kuf

0

Una cosa da considerare è cosa succede se il problema genitore viene chiuso prima che tutte le attività secondarie siano chiuse. Vorrei raccomandare di mettere un gancio per richiedere all'utente di indirizzare tutte le attività secondarie prima di chiudere il problema.

1

Basta creare un ticket chiamato "modello" (con tutte le attività secondarie necessarie) e copiarlo/clonarlo ogni volta che si creano nuove istanze.