Como criar campos dinâmicos com Script Fields no Jira Server

Se você curte o Jira, não deixe de conferir meu artigo sobre gestão de backlog usando Jira!

No último artigo eu ensinei como criar diversos tipos de automações em Jira. Venho trabalhando com esta ferramenta desde 2018 e ela é bem poderosa, mais até do que a que usei por mais de 10 anos, o famoso TFS da Microsoft.

Entre as inúmeras funcionalidades, o Jira permite criar diversos campos customizados de vários tipos, mas, além disso, campos que carregam o seu conteúdo dinamicamente a partir de scripts Groovy, graças ao plugin Adaptavist ScriptRunner. Vou mostrar aqui como criar um campo dinâmico.

Este tutorial foi feito usando o Jira na versão server/on-premise (v7.10), mas possivelmente deve funcionar em versões posteriores e talvez até na cloud, desde que tenha o plugin/add-on do Script Runner. Você precisa de permissões de administrador do Jira para conseguir fazer o que vou mostrar.

Este artigo não tem a pretensão de ensinar a administrar Jira, mas apenas a dar um upgrade nas suas skills se já for um administrador de Jira Server. Para quem quer aprender a administrar Jira, recomendo os serviços de consultoria da e-core, parceiros Atlassian no Brasil e com quem eu aprendi.

Custom Fields

Por padrão o Jira permite que você crie Custom Fields ou Campos Personalizados. Nada mais são do que inputs comuns, usando os tipos pré-existentes do Jira, mas como rótulos/labels personalizados e que adicionam mais informações às screens já existentes ou a novas screens.

Caso isso seja novidade para você, o passo-a-passo abaixo mostra como criar um custom field simples. Me perdoe as imagens em português, foi uma imagem que tirou os prints e ela usa o Jira em pt-br (eu prefiro usar em inglês pois facilita a procura por informações na Internet).

  1. Acesse o painel de administração;
  2. Seção Issues;
  3. Sub-seção Fields;
  4. Opção Custom Fields/Add Custom Field
Add Custom Field
Add Custom Field

Na tela que se abrirá, preencha de acordo com o campo que precisa (campo de texto, de seleção, etc). Cada tipo de campo possui as suas particuliaridades, como a Select List, que exige que tu preencha manualmente todas as opções do drop-down.

A seguir, depois de clicar em Create, você vai ser solicitado que selecione em quais telas este campo vai aparecer.

Telas do campo
Telas do campo

E pronto. Caso ele ainda não apareça nas telas que você selecionou, dê uma olhada na Screen para ver se não tem de torná-lo visível pois às vezes ele está na tela, mas oculto/hidden.

Mas e para criar custom fields baseados em scripts, como faz?

Livro para Agile Coaches

Script Fields

Você pode criar campos dinâmicos que carregam o seu conteúdo a partir de scripts, o que chamamos de Script Field. Esse recurso é muito poderoso para, por exemplo:

  • exibir informações de linked issues dentro das issues principais (e vice-versa);
  • exibir informações resultantes de cálculos ou transformações de outros dados da issue;

Uma vez com o campo criado, é possível adicioná-lo em qualquer screen ou até mesmo usá-lo em queries e reports.

Para criar um Script Field você deve:

  1. Entre em Administration;
  2. Escolha a opção Issues;
  3. Clique em Custom Fields, abaixo da seção Fields;
  4. Clique em Add Custom Field;
  5. Em Select Field Type, encontre Scripted Field dentro de Advanced (o ícone é o mesmo do Script Runner);
  6. Next;
  7. Dê um nome e uma descrição ao campo (este último é opcional) e salve;
  8. Selecione todas as telas em que este campo deve aparecer e clique em Update;
  9. Retorna a Administration, Add-ons, Script Runner e Fields;
  10. Encontre o seu Scripted Field criado e depois clique em Edit;
Script Field
Script Field

Preencha o formulário como segue:

  • Field Name: não editável;
  • Field Description: não editável;
  • Note: uma nota opcional;
  • Template: como esse campo será renderizado na screen;
  • Script: o código Groovy que vai retornar o conteúdo desse campo. É aqui que a magia acontece e esse código sempre recebe um objeto issue como argumento, com as propriedades da issue atualmente visível na screen onde esse script field está.
  • Preview Issue Key: coloque o id de uma issue aqui e clique no botão preview para ver como seu Script Field vais e parecer na screen.

Clique em Update para finalizar.

Caso seu script field não aparece na screen que deveria, reveja as configurações de screen do custom field e/ou verifique na screen se o campo está aparecendo no editor visual dela.

Um exemplo de código Groovy para script field é mostrado abaixo. Nele, nós ascendemos na hierarquia da issue atual até encontrar qual o Projeto (um issue type custom) ela pertence, imprimindo essa informação então no custom script field:

No exemplo abaixo, de outro script field, dado um issue do tipo Mudança, a gente busca o item originador desta mudança (outra issue) e se tiver mais de um, pega apenas o primeiro para exibir no custom script field:

E nesse último abaixo, mais simples de todos, temos um custom script field que apenas exibe o nome do épico associado a esta issue:

Espero ter ajudado!

Infelizmente eu não possuo um curso de Jira, mas caso se interesse por métodos ágeis em geral, dê uma conferida no meu curso online de Scrum e Métodos Ágeis clicando no banner abaixo.

Curso de Scrum e Métodos Ágeis

Como criar automações e scripts no Jira Server

Se você curte o Jira, não deixe de conferir meu artigo sobre gestão de backlog usando Jira!

O Jira permite criar diversos tipos de automações, principalmente através de plugins como o famoso Adaptavist ScriptRunner ou o Automation for Jira. Vou mostrar aqui como criar alguns tipos diferentes de automação, todas usando o Jira Server v7.10 (a versão que mais tive contato, mas é possível que funcione nas posteriores) e necessitando de permissão de administrador para serem criadas.

Como uma dica geral, todas automações que exigem script Groovy você pode usar log.warn(“mensagem”) para registrar logs e ajudar no seu debug enquanto estiver programando e quando estiver em produção e ter de fazer troubleshooting.

Este artigo não tem a pretensão de ensinar a administrar Jira, mas apenas a dar um upgrade nas suas skills se já for um administrador de Jira Server. Para quem quer aprender a administrar Jira, recomendo os serviços de consultoria da e-core, parceiros Atlassian no Brasil e com quem eu aprendi.

Tipo 1: Automações de Workflow

Você pode criar automações que serão disparadas quando uma issue for realizar uma transição dentro do seu workflow, ou seja, mudar de um estado para outro. Esse recurso é muito poderoso para:

  • criar validações na troca de estado, como garantir que campos estejam preenchidos, por exemplo;
  • Realizar atividades automáticas após uma troca de estado (atualizar um campo, disparar um script Groovy, etc);
  • Disparar eventos que podem ser tratados depois, pelo Jira (listeners, mais adiante);

Para criar uma validação de campo obrigatório (ou que tenha de ter um valor específico preenchido), você deve:

  1. Clicar em Project Settings (ícone da engrenagem);
  2. Clicar em Workflows;
  3. Clicar no botão de Edit do workflow em questão (ícone do lápis);
  4. Seleciona a visualização em forma de Diagram;
  5. Clica na linha da transição que deseja adicionar a validação;
  6. Seleciona a opção Validators (ou Post Function se for querer disparar eventos depois da transição);
  7. Clique no link “Add validator”;
  8. Seleciona a opção “Script validator [Script Runner]”;
  9. Seleciona a opção “Simple scripted validator”;
Automação por Workflow
Automação por Workflow

A seguir, preencha os campos da seguinte forma:

  • Note: nome da validação;
  • Condition: o seu código Groovy que deve retornar true ou false, dizendo se aquela transição vai poder acontecer ou não;
  • Error Message: mensagem de erro que vai aparecer se a validação bloquear a transição (retorno false);
  • Field: se você deixar esse campo em branco, a mensagem de erro vai aparecer no topo do formulário. Preencha se quiser que ela apareça ao lado do campo;

No exemplo abaixo, o campo Área de Negócio deve ser preenchido para que uma issue possa ser criada:

Caso você quer que algo aconteça DEPOIS da transição ocorrer, você usa post-function ao invés de validator e além de vários templates prontos, você também pode codificar o comportamento usando Script Runner.

Tipo 2: Automações para Jira Service Desk

Você pode criar automações baseadas no Service Desk e seus serviços. Para fazê-lo, precisa de permissão de administrador no Jira Service Desk ao invés do Jira Software. Esse recurso é muito poderoso para:

  • Criar alertas diversos, como SLA expirando, por exemplo;
  • Atualizar issues relacionadas toda vez que a principal for alterada;
  • Reabrir issues que tenham sido comentadas;
  • Muitos tipos de regras personalizadas;
  1. Clique em Project Settings;
  2. Clique em Automation;
  3. Clique em Add Rule;
  4. Selecione o tipo de regra que deseja adicionar, neste exemplo usarei Custom Rule (Regra Personalizada);
Automação de Jira Service Desk
Automação de Jira Service Desk

Preencha os campos como segue:

  • Rule name: o nome da automação;
  • Description: a descrição do que faz esta automação;

Construa a automação como segue:

  • When: a situação ou evento que irá disparar esta automação. Adicione tantas triggers (gatilhos) quanto forem necessárias. Por exemplo, toda vez que o status de uma issue seja atualizado.
  • If: a condição (uma ou mais) que será validada para esta automação executar ou não. As condições disponíveis no if dependem do when. Quando for uma issue, por exemplo, as condições vão ser relacionadas a issues.
  • Then: uma ou mais ações que serão executadas quando esta automação ocorrer. Por exemplo, você pode mudar o estado de uma issue ou enviar um e-mail.

Neste tipo de automação não qualquer criação de script, é tudo visual.

Tipo 3: Automações com Escalation Services

Você pode criar automações que serão disparadas automaticamente, de tempos em tempos. Esse também é um recurso do ScriptRunner e permite fazer coisas como fechar chamados automaticamente depois de X tempo;

Para criar um escalation service, você deve:

  1. Ir na administração geral do Jira Software estando autenticado como administrador;
  2. Acesse a aba Add-ons;
  3. No menu esquerdo, vá em Escalation Services, dentro da subseção Script Runner;
  4. Clique em Create Escalation Service;

Existem vários tipos, vamos usar aqui o Escalation Service de Issue.

Escalation Services
Escalation Services

Preencha os campos do formulário como segue:

  • Description: o nome do escalation service;
  • JQL Query: a consulta que irã ser executada de tempos em tempos para executar a ação automática sobre as issues retornadas;
  • As User: o usuário que irá executar a automação;
  • Interval/CRON Expression: uma expressão CRON que determine a periodicidade da automação;
  • Action: opcional, permite escolher uma transição de workflow pré-existente, útil se você apenas quer mudar o status das issues retornadas pelo JQL;
  • Additional issue actions: script Groovy que faz a operação que você deseja, nas issues retornadas pelo JQL.
  • Transition Options: alguns cheats para tornar a transição mais fácil como ignorar validators, permissões ou conditions.

Clique em Add e o tempo começará a correr, executando a automação no próximo CRON. Caso queira executar imediatamente, clique em “Run now”.

Livro para Agile Coaches

Tipo 4: Automações com Listeners

Você pode criar automações que serão disparadas automaticamente, quando algum evento acontecer no Jira. Esse também é um recurso do ScriptRunner e permite fazer coisas parecidas com as post-functions de workflow. Na verdade, a base dos Listeners são “escutar” (listen) eventos gerados por transições de estado, mas diferente das automações de workflow, você não cria em um workflow, mas de maneira global e genérica, o que é muito útil quando tem vários times com diferentes workflows mas uma automação e aplica a todos eles.

Para criar um listener, você deve:

  1. Acesse Administration;
  2. Add-ons;
  3. Clique na opção Listeners, dentro da subseção ScriptRunner;
  4. Clique em Create Listener;
  5. Escolha um dos templates prontos ou a opção Custom Listener para adicionar um código Groovy personalizado, opção que vou usar aqui;
Listener
Listener

Preencha o formulário como segue:

  • Note: o nome do listener;
  • Project(s): um ou mais projetos que este listener vai ficar escutando eventos;
  • Events: os eventos que vão disparar este listener. Você pode escolher eventos pré-definidos do Jira (que ele dispara sozinho) ou algum evento que você tenha criado manualmente e que dispare através de workflow post-functions ou de outras formas existentes;
  • Inline script: seu código Groovy. Ele recebe um objeto event por padrão, com as propriedades do evento;
  • Script file: opcional, permite dizer o caminho de um arquivo com o código Groovy dentro.

Clique em Add.

Um exemplo de código Groovy para listener pode ser visto abaixo. Neste exemplo, quando uma issue é resolvida (evento Issue Resolved) e ela está associada a um épico, ela propaga a sua informação de épico às issues de Service Desk (SDN) relacionadas à ela:

Tipo 5: Automações com e-mail

Você pode criar automações de e-mails que serão disparadas automaticamente, de tempos em tempos, baseada em consultas construídas por você (JQL). Esse é um recurso natural do Jira Software, embora com o Jira Service Desk também possa ser feito, como mencionado anteriormente.

  1. Faça uma consulta qualquer (JQL) na caixa de pesquisa do Jira;
  2. Salve a sua consulta, dando um nome à ela;
  3. Clique em Details e selecione a opção New Subscription;
Filter Subscription
Filter Subscription

Configure a Subscription dessa forma:

  • Recipients: quem vai receber essa assinatura de e-mails? Você pode enviar para grupos de pessoas;
  • Schedule: qual a recorrência? Em Advanced você pode definir uma expressão CRON para a recorrência;
  • “E-mail this filter…”: por padrão o resultado da consulta só é enviado por e-mail quando ele traz resultados. Marque se quiser receber um e-mail mesmo sem resultados na consulta.

Ao clicar em Subscribe, a automação de emails passará a funcionar.

Espero ter ajudado!

Infelizmente eu não possuo um curso de Jira, mas caso se interesse por métodos ágeis em geral, dê uma conferida no meu curso online de Scrum e Métodos Ágeis clicando no banner abaixo.

Curso de Scrum e Métodos Ágeis

Transformação Digital nas empresas

Se você está trabalhando com TI ou ao menos atuando no mundo corporativo assim como eu, certamente você já deve ter ouvido falar em Transformação Digital. Toda semana os principais sites de negócios comentam que a empresa X está fazendo sua transformação digital com a consultoria Y. Ou que a empresa W avança em sua transformação digital através da estratégia de implantar os processos ABC e a solução XPTO.

Mas será que é isso que significa fazer uma transformação digital? Implantar um ERP de mercado? Mudar para processos mais ágeis? Contratar uma consultoria boutique?

Afinal o que é uma transformação digital? O que é uma empresa digital?

Pensando em auxiliar quem está tentando descobrir as respostas para estas perguntas, no artigo de hoje trago algumas definições, estudos de mercado e experiências próprias, com o mínimo de achismo possível e o máximo de fatos e conceitos consolidados. Eu não inventei estas teorias e vários trechos eu li em outros lugares, sendo que informarei os links originais ou citarei o autor sempre que possível.

Curso de Scrum e Métodos Ágeis

O que é Transformação Digital?

Esse é um termo que está cada vez mais famoso no Brasil, certo?

Mesmo por aqui, Transformações Digitais estão eclodindo em todas grandes empresas que não querem ficar de fora da profusão de matérias sobre o tema e da atenção dos investidores. No entanto, ser digital está longe de apenas informatizar processos manuais e trocar tecnologias, exige um redesenho da organização e uma evolução de sua cultura, dois elementos muito mais delicados.

A questão é que transformações de negócios, de qualquer tipo, são extremamente custosas e arriscadas. Para um negócio se tornar digital, não basta adicionar uma camada de tecnologia ou executar o desenvolvimento de software, você tem de inserir a mesma nas entranhas das camadas já existentes. Não é algo que você resolve investido no departamento de TI da empresa, mas distribuindo a TI por toda a empresa. Ou então o contrário, distribuindo business por toda TI. Não importa.

Não ajudei muito até aqui, certo? Calma, vai melhorar.

Muitas corporações estão se deparando com a necessidade de uma transformação digital, mesmo sem saber direito o que é uma. 

De acordo com uma pesquisa de 2017 da CEB chamada “The New IT Operating Model for Digital”, dois-terços dos líderes de negócios acreditam que suas empresas vão perder competitividade se eles não se tornarem significativamente mais digitais. Eles entendem que a sobrevivência de suas empresas depende da sua habilidade de se adaptar a esse novo modelo da economia digital.

Mas o que é ser digital?

A versão online do dicionário Merriam-Webster oferece várias definições para o vocábulo “digital” e duas delas tem a ver com as transformações que estão acontecendo: “dados na forma de dígitos binários” e “interação tátil com os dedos”.

Digital
Digital

Tecnicamente, quando falamos de transformação digital expandimos esses dois conceitos básicos para mais quatro (segundo Phillipe Assouline, da InfoQ):

  • Experiência do Cliente (CX)
  • Cybersegurança
  • Automação
  • Mídias Sociais
Digital Expandido
Digital Expandido

Sendo assim, uma empresa digital é, por essas verticais, aquela que:

  • possui sistemas digitais;
  • sistemas estes de interação fácil e intuitiva (pra não ficarmos preso ao tátil);
  • cujos clientes (internos e externos) possuem uma boa experiência;
  • se preocupa com segurança cibernética;
  • possui processos automatizados;
  • entende e se comunica com seus clientes através de plataformas sociais;

Uma empresa que deseja se tornar digital deve considerar esses seis verticais de prioridades na hora de compor a sua “estratégia digital”. Estratégia essa que pode ser mais ou menos agressiva, mais ou menos intensa, mais inclinada para um vertical e menos para outro, mas sem negligenciar qualquer um deles.

Estratégia de Transformação Digital

No seu famoso Digital Transformation Guide, Assouline menciona que toda empresa passando por uma transformação digital está em um de três estágios: Going, Becoming ou Being Digital e que a jornada de transformação é justamente ir do primeiro estágio ao terceiro.

Jornada Digital

O autor entende que absolutamente TODAS empresas estão aptas a saírem da inércia e chegarem aos estágios um e dois, sendo que o dois é a famosa Transformação Digital que tanto se fala, onde sistemas, processos, comunicação, experiência do cliente e segurança são aperfeiçoados.

E aí que mora uma falha comum na definição da estratégia digital, ou melhor, na falta de UMA!

Ao invés de planejar como sairemos da inércia para um plano de transformação digital (estágio um, Going Digital) é comum vermos executivos mudando sistemas e implantando novos processos por toda empresa, sem entender o que se está buscando com cada mudança e como elas se conversam entre si, causando um caos completo e banalizando o termo “digital” como algo hipster que está na moda mas que não traz valor algum, coisa de empresa que gasta dinheiro para parecer cool.

O autor afirma que uma empresa digital está mais relacionada à conectividade da empresa com o mercado e a sua capacidade de entregar valor de maneira rápida e barata na ponta do que a adoção de novas tecnologias por si só.

Entender o nível desejado de união entre negócios + tecnologia que se quer alcançar é a chave para planejar, mapear e comunicar a intenção da organização com a transformação digital que se deseja iniciar. Para isso, Assouline, que é Head de Data Science e Market Insights em uma grande consultoria, criou um modelo de planejamento, representado na imagem abaixo, que ele chama de DTF: Digital Transformation Framework.

Digital Transformation Framework
Digital Transformation Framework

Por este framework, temos que a base de toda transformação digital deva ser a segurança cibernética (de comunicação e relação automática com os seres humanos), sustentando três pilares.

O primeiro pilar, Tema Digital, é fortemente baseado na definição do que é ser digital que comentei lá em cima, desdobrados em seis temas que fazem sentido para uma empresa fictícia. Enquanto que User Experience, Automation e Social Media são transcrições literais dos verticais abordados anteriormente (além da própria fundação de cybersecurity), Cryptography, Cloud Computing e IoT são demandas específicas da transformação digital de exemplo.

O autor não menciona isso explicitamente, mas menciona de leve que qualquer um dos temas devem ser substituídos pela sua estratégia de transformação, usando os verticais originais como base e as tendências atuais de mercado. Também é interessante notar que uma transformação pode ser faseada, e diferentes temas ou os mesmos temas com intensidades diferentes podem ser abordados em cada fase, como na metodologia Toyota Kata.

Só para citar como exemplo, no Agibank, onde trabalhei de 2017 a 2019 como Agile Coach, os temas da transformação digital eram 4: Infraestrutura Híbrida, Cybersegurança, Business Agility e Arquitetura Corporativa. Obviamente eu trabalhava focado no tema #3 e apenas apoiava o #2 e #4.

O segundo pilar, Orientação ao Cliente, te ajuda a definir se a estratégia é focada no cliente externo ou interno. Este framework assume que a estratégia digital pode ser composta por várias sub-estratégias, ou seja, podemos ter alguns temas que serão dedicados ao cliente externo em uma estratégia e outros temas ao cliente interno, por exemplo.

O terceiro pilar, Nível de Competência, cruza com os Temas Digitais, onde define-se qual o nível de competência a empresa irá buscar em cada um dos temas definidos para sua transformação digital, considerando três possíveis níveis: Competitivo, Indústria e Mínimo.

  • o nível Competitivo demonstra que a empresa deseja ser referência no tema específico e para isso investirá tempo e dinheiro acima da média do mercado; será um diferencial competitivo;
  • o nível Indústria demonstra que a empresa deseja atender aos padrões de mercado, às expectativas comuns para este tema em sua área de atuação; deseja se equiparar aos seus competidores;
  • por fim, o nível Mínimo demonstra que a empresa deseja apenas alcançar o mínimo de competência, entendendo que estará abaixo de seus concorrentes neste tema, mas que não o deixará desassistido;

Seguindo esta explicação do framework e continuando com o exemplo de transformação anterior, podemos plotar o segundo resultado usando o DTF, como uma proposta de transformação digital (totalmente hipotética, baseado nas necessidades e situação de um cliente fictício).

DTF Preenchido
DTF Preenchido

Neste exemplo do DTF preenchido temos uma estratégia composta por duas sub-estratégias, conforme explicação a seguir.

A estratégia 1 (verde claro) é de investir pesado em automação de processos para clientes externos (finais), tornando-se extremamente competitivo neste campo, acima de seus competidores, enquanto que a UX destes mesmos clientes externos deva atender às exigências do seu mercado, equiparando com seus concorrentes.

Já a estratégia 2 (amarelo) é de atender às exigências médias de mídias sociais para sua área de atuação com os clientes externos (talvez esta empresa não se comunicava com os clientes por redes sociais) e oferecer o mínimo de infraestrutura em nuvem para os clientes internos (talvez alguns ambientes para os time de tecnologia).

Essas duas estratégias não abrem mão de segurança digital, não sendo uma opção investir ou não nesse tema.

No próximo artigo, vou explorar como desdobrar esta estratégia em ação na sua empresa, ainda usando o framework DTF de Phillipe Assoulini.

Quer um material de referência para Transformações Ágeis em empresas? Conheça meu livro sobre o assunto clicando no banner abaixo.

Livro para Agile Coaches