2011-01-27 10 views
9

Mi escenario es: Un paso en mi flujo de trabajo de jira debería tener la capacidad de desanular una tarea, es decir, establecer una Versión de reparación en "Ninguno".JIRA - Función de publicación Jira - ¿Cómo actualizar el campo "corregir versión"?

me di cuenta de que yo no era capaz de actualizar la versión solución en una función de flujo de trabajo de post - No sé exactamente por qué, pero de todos modos lo hice implementar un plugin jira para ayudar a resolver mi problema, pero sé Voy contra la estructura jira (incluso las buenas prácticas de codificación de Java :)). No estoy seguro de si mi implementación puede causar problemas, pero de hecho está funcionando en mi jira instance 4.1.x.

Cómo he implementado un plug-in para actualizar versión de corrección en función de correos, 2 maneras muy similares:

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

supongo que una solución real debe utilizar clases como: ChangeItemBean, ModifiedValue, IssueChangeHolder - tomando como ejemplo los métodos updateValue de CustomFieldImpl (del código fuente de jira, project: jira, package: com.atlassian.jira.issue.fields).

Mi punto de publicar esto aquí es:

  • ¿Alguien sabe cómo implementar un plugin jira que contiene una función post para cambiar Fijar la versión correcta?

Respuesta

4

Si quieres hacerlo bien echar un vistazo en el código de

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

Las postfunciones que toman los parámetros de entrada aún no están documentadas, parece. Otros lugares para buscar código son otros complementos de código abierto.

1

Atlassian tiene un tutorial sobre hacer casi exactamente lo que quiere hacer, here:

+0

No veo nada en ese tutorial que muestra cómo modificar el objeto problema – mdoar

0

lo hago como en este fragmento:

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