Olá Pessoal,
Gostaria de compartilhar uma necessidade que tivemos aqui na empresa para exibir o percentual de evolução do épico.
Um agilista precisava montar um board UpStream e apresentar no card a evolução do épico. Criamos esse calculo a partir do APP ScriptRunner na opção Custom Script Fields, esse campo calculado pode ser utilizado em relatórios nativos do Jira, boards e dashboards.
Segue abaixo o código que utilizamos nesse campo calculado:
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.jql.parser.JqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import java.text.DecimalFormat
import java.text.NumberFormat
def jqlQueryParser = ComponentAccessor.getComponent(JqlQueryParser)
def searchService = ComponentAccessor.getComponent(SearchService)
def issueManager = ComponentAccessor.getIssueManager()
def user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
NumberFormat nf = NumberFormat.getNumberInstance(Locale.US);
DecimalFormat df = (DecimalFormat)nf
df.applyPattern("###,##0.00")
// edit this query to suit
def query = jqlQueryParser.parseQuery("issueFunction in linkedIssuesOf(\"issuekey=" + issue.key + "\",\"Is Epic Of\")")
def search = searchService.search(user, query, PagerFilter.getUnlimitedFilter())
log.debug("Total issues: ${search.total}")
def Progresso = 0
def StatusFinalizado = 0
def Total = 0
def textoCategoria = ""
search.results.each { documentIssue ->
log.debug(documentIssue.key)
// if you need a mutable issue you can do:
def issueJira = issueManager.getIssueObject(documentIssue.id)
//ajuste para não entrar os itens removed
if (!issueJira.issueType.isSubTask() && issueJira.issueType.name != "Epic" && issueJira.getStatus().name != "Removed")
{
/// textoCategoria = textoCategoria + " - " + issueJira.issueType.name
if(issueJira.getStatus().getStatusCategory().name == "Complete" &&issueJira.getStatus().getStatusCategory().name != "Removed" ) {
(StatusFinalizado++)
textoCategoria = textoCategoria + " - " + issueJira.issueType.name
}
(Total++ )
}
}
if (Total > 0){
//Total de Features em Andamento ou finalizado
Progresso = (((int)StatusFinalizado) / (int)Total) * 100;
}
return df.format(Progresso) + "%"
Oi @Daiane Conte ,
Ótimo exemplo!
Tenho uma observação, esse script vai acontecer toda vez que a issue for carregada. Já que esse script utiliza JQL é necessário ter o cuidado de verificar se o Index esta disponível para ser usado.
Recomendo adicionar uma condição para verificar se o index esta disponível para ser utilizado, seguindo a documentação abaixo:
Isso vai evitar lentidão durante o full reindex.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.