|
Dicas de uso, customizacoes, uso avancado e exemplos de desenvolvimento para o Atlassian JIRA |
|
CONTEUDO
DICA ESSENCIAL - Use API SOAP e REST, e evite API nativa interna.
Alguns links:
Abaixo, alguns itens sobre servicos remotos no Jira, como usa-los e estende-los:
Veja o tutorial [http://www.j-tricks.com/1/post/2010/10/soap-rpc-plugin.html|http://www.j-tricks.com/1/post/2010/10/soap-rpc-plugin.html]
https://studio.plugins.atlassian.com/wiki/display/JCLI/JIRA+Command+Line+Interface
http://confluence.atlassian.com/display/JIRACOM/Automating+JIRA+operations+via+wget
E aqui, um exemplo de criacao de option dentro de um customfield:
curl -X POST "http://3layer.com.br/jira/secure/admin/EditCustomFieldOptions!add.jspa?os_username=AAA&os_password=BBB&addValue=XXX&fieldConfigSchemeId=10251&fieldConfigId=10251&customFieldId=10231" |
Onde:
Duas opcoes:
h4 Como aplicar permissoes sobre o Jira em determinado passo do workflow?
|
Todo movimento da Atlassian em relacao a automacao de campos e telas em seus sistemas (Jira, Confluence, Crowd, etc.) esta focada no framework AUI (Atlassian User Interface). Algum links muito importantes antes de prosseguir: |
Vide o tutorial: http://www.j-tricks.com/1/post/2010/10/extending-jira-actions.html
Da para usar javascript e jquery para isso. Um exemplo bem interessante, onde se selecionado um Checkbox outro campo eh mostrado pode ser encontrado aqui http://confluence.atlassian.com/display/JIRACOM/Using+Javascript+to+set+custom+field+values
Alguns:
Um link bem interessante sobre isso eh este http://confluence.atlassian.com/display/JIRACOM/Using+Javascript+to+set+custom+field+values
Olhe http://confluence.atlassian.com/display/JIRA/Adding+JavaScript+to+all+pages+for+Google+Analytics
POREM, nos testes iniciais parece que isso nao funcionou muito bem. Tem que explorar mais.
Essa eh bem complexa, e entao vao algumas dicas:
Importante salientar que o suporte a JQuery ainda nao tem uma boa documentacao, e entao a pesquisa deve ser no google mesmo...
Alguns links:
Agora, se voce nao sabe nada sobre JQuery, comece aqui:
Alguns posts relacionados
Pacote do plugin para JQuery Resource Plugin no Jira
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import webwork.dispatcher.ActionResult;
import com.atlassian.core.ofbiz.CoreFactory;
import com.atlassian.core.util.map.EasyMap;
import com.atlassian.jira.action.ActionNames;
import org.ofbiz.core.entity.GenericValue;
import com.atlassian.core.ofbiz.CoreFactory;
import com.atlassian.core.util.map.EasyMap;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.project.ProjectManager;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.util.ImportUtils;
import com.atlassian.jira.issue.index.IssueIndexManager;
import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
import com.atlassian.jira.issue.*;
import com.atlassian.jira.issue.util.*;
import com.atlassian.jira.config.SubTaskManager;
import com.atlassian.jira.security.JiraAuthenticationContext;
import com.atlassian.jira.security.roles.*;
import com.atlassian.jira.issue.fields.layout.field.*;
import com.atlassian.jira.issue.fields.*;
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
import com.atlassian.jira.issue.comments.*;
import com.atlassian.mail.Email
import com.atlassian.mail.server.MailServerManager
import com.atlassian.mail.server.SMTPMailServer
import com.opensymphony.workflow.InvalidInputException;
import org.apache.log4j.Category;
import com.opensymphony.user.*;
import groovy.net.xmlrpc.*;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.issue.comments.CommentManager;
import com.atlassian.jira.user.util.*;
import com.atlassian.jira.issue.util.IssueChangeHolder;
//Instancia objetos genericos
ComponentManager componentManager = ComponentManager.getInstance();
CommentManager commentManager = (CommentManager) ComponentManager.getComponentInstanceOfType(CommentManager.class)
IssueManager issueManager = componentManager.getIssueManager()
SubTaskManager subTaskManager = componentManager.getSubTaskManager();
JiraAuthenticationContext authenticationContext = componentManager.getJiraAuthenticationContext();
IssueFactory issueFactory = componentManager.getIssueFactory();
ProjectRoleManager projectRoleManager = componentManager.getComponentInstanceOfType(com.atlassian.jira.security.roles.ProjectRoleManager.class);
ProjectManager projectManager = componentManager.getProjectManager();
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager()
FieldLayoutManager fieldLayoutManager = componentManager.getFieldLayoutManager()
CustomFieldManager customFieldManage = componentManager.getCustomFieldManager()
FieldManager fieldManager = componentManager.getFieldManager()
//Exemplo para ser executado via Groovy Runner
Issue issue = issueManager.getIssueObject("T-472")
MutableIssue mIssue = (MutableIssue) issue
String cfkey = "customfield_10406"
def cf = ComponentManager.getInstance().getCustomFieldManager().getCustomFieldObject(cfkey)
String cfvalue = (String) mIssue.getCustomFieldValue( cf ) ?: "";
def novoValor = "4h - um turno"
IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
transacaoSapCustomField.updateValue(null, mIssue, new ModifiedValue(issue.getCustomFieldValue(transacaoSapCustomField), novoValor),changeHolder);
|
Vide os links
Para desabilitar aba "Histórico de Mudanças"
Plugin:Issue Tab Panels Plugin 1.0
Opção: Issue Tab Panels Plugin 1.0 | Disable/Enable
Para desabilitar aba "Atividade"
Plugin: JIRA Activity Stream Plugin 5.1.0
Opção: Activity Stream Issue Tab Panel
Para desabilitar aba de "Transição"
Plugin: JIRA Suite Utilities 1.2.4
Opção: Transitions Summary Tab Panel
Use os links:
http://www.j-tricks.com/1/post/2010/08/workflow-validator.html
http://www.j-tricks.com/1/post/2010/08/workflow-condition.html
Muitas vezes, uma tela de workflow permite escolher o responsavel (Assignee) pela tarefa. Porem, para cenarios onde existem muitos assignable users (que implica em uma combobox muito grande) ou onde devido a caracteristica do workflow, onde somente algumas pessoas naquele momento deveriam poder ser "assignadas", é interessante restringir essa os valores da combobox Assignee para somente mostrar algumas pessoas.
Considere o cenario onde um solicitante ao abrir um chamado ele precisa a aprovacao de seu superior. Assim, quando ele abre o chamado, ele precisa direcionar o chamado aberto para a aprovacao. Entao, digamos que tenhamos a role "Aprovador" no sistema, com o ID 10020. Logo, para colocar isso em pratica:
Pronto, quando o solicitante estiver na tela de abertura de chamado, somente quem estiver na role "Aprovador" vai aparecer dentro da lista de Assingees, mesmo que dezenas de outros "Assignable Users" existam no modelo de permissao.
Mais informacoes: http://confluence.atlassian.com/display/JIRA/Workflow+Properties
Faca uma busca no site de plugins da atlassian.
Abaixo, alguns links indicados:
Use o plugin http://www.weengineer.com/home/products/atlassian/jira/plugins/WEENGWF/1.1.0/index.php
Nas postfuntions do workflow, use os plugins:
Outra forma eh usar script Jelly: