Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 10

/* ********** Compatível Jira 8.4.

2 ********** */
import com.atlassian.jira.bc.issue.IssueService
import com.atlassian.jira.bc.issue.IssueService.CreateValidationResult
import com.atlassian.jira.bc.issue.IssueService.IssueResult
import com.atlassian.jira.bc.issue.IssueService.IssueValidationResult
import com.atlassian.jira.bc.issue.IssueService.UpdateValidationResult
import com.atlassian.jira.bc.ServiceResultImpl
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.event.issue.IssueEvent
import com.atlassian.jira.event.type.EventDispatchOption
import com.atlassian.jira.issue.changehistory.ChangeHistoryManager
import com.atlassian.jira.issue.changehistory.DefaultChangeHistoryManager
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.customfields.impl.CascadingSelectCFType
import com.atlassian.jira.issue.customfields.manager.OptionsManager
import com.atlassian.jira.issue.customfields.option.Option
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.issue.fields.ImmutableCustomField
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.IssueInputParameters
import com.atlassian.jira.issue.IssueInputParametersImpl
import com.atlassian.jira.issue.IssueManager
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.link.IssueLinkImpl
import com.atlassian.jira.issue.link.IssueLinkManager
import com.atlassian.jira.issue.link.IssueLinkTypeManager
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.project.Project
import com.atlassian.jira.project.version.Version
import com.atlassian.jira.security.JiraAuthenticationContext
import com.atlassian.jira.util.ImportUtils
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.time.format.DateTimeFormatter
import java.time.LocalDate
import java.time.ZoneId
import java.util.ArrayList
import java.util.Calendar
import java.util.Date
import org.apache.commons.lang3.StringUtils
import com.onresolve.scriptrunner.runner.customisers.PluginModule
import com.onresolve.scriptrunner.runner.customisers.WithPlugin
import com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectFacade
import
com.riadalabs.jira.plugins.insight.channel.external.api.facade.ObjectTypeAttributeF
acade

@WithPlugin("com.riadalabs.jira.plugins.insight")
@PluginModule ObjectFacade objectFacade
@PluginModule ObjectTypeAttributeFacade objectTypeAttributeFacade

public String CriarIssue (Issue issuePai, String Projeto, String Tipo, String
Prioridade, String Sumario, String Descricao) {

IssueService issueService = ComponentAccessor.getIssueService()


IssueManager issueManager = ComponentAccessor.getIssueManager()
IssueLinkManager linkManager = ComponentAccessor.getIssueLinkManager()
CustomFieldManager customFieldManager =
ComponentAccessor.getCustomFieldManager()

def userManager = ComponentAccessor.getUserManager()


def user = userManager.getUserByKey('srv-apgov')
//log.warn('Usuário: '+user)
def userReporter =
ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser()
def issueFactory = ComponentAccessor.getIssueFactory()
def projectManager = ComponentAccessor.getProjectManager()
def versionManager = ComponentAccessor.getVersionManager()
def project = projectManager.getProjectObjByKey(Projeto)
def changeHolder = new DefaultIssueChangeHolder()
ChangeHistoryManager changeHistoryManager =
ComponentAccessor.getChangeHistoryManager()

//Issue issue = issueManager.getIssueObject("RDM-691")

/*** Importa os valores dos campos da tela "Requisição de Mudança - Tela


avulsa - Criar RDM" para variáveis ***/

/*** Importa o valor do campo 'Tipo de Mudança' para a variável cf_tipo_mudanca


***/
CustomField cf_tipo_mudanca =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Tipo de
mudança'}
def cf_tipo_mudanca_opcao = cf_tipo_mudanca.getRelevantConfig(issuePai)
Option tipo_mudanca =
ComponentAccessor.optionsManager.getOptions(cf_tipo_mudanca_opcao)?.find
{ it.toString() == issuePai.getCustomFieldValue(cf_tipo_mudanca).toString() }

/*** Importa o valor do campo 'SERVICEDESK: Serviços' para a variável


cf_servicos ***/
CustomField cf_servicos =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'SERVICEDESK:
Serviços'}
def cf_servicos_opcao = cf_servicos.getRelevantConfig(issuePai)
Option servicos =
ComponentAccessor.optionsManager.getOptions(cf_servicos_opcao)?.find
{ it.toString() == issuePai.getCustomFieldValue(cf_servicos).toString() }

/*** Importa o valor do campo 'Solicitante Nome' para a variável


'cf_solicitante_nome' ***/
CustomField cf_solicitante_nome =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Solicitante
Nome'}

/*** Importa o valor do campo 'Unidade executora' para a variável


cf_unidade_executora ***/
CustomField cf_unidade_executora =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Unidade
Executora'}
def cf_unidade_executora_opcao =
cf_unidade_executora.getRelevantConfig(issuePai)
Option coordenadoriaObj
Option unidadeObj
if (issuePai.getCustomFieldValue(cf_unidade_executora) != null) {
coordenadoriaObj =
ComponentAccessor.optionsManager.getOptions(cf_unidade_executora_opcao).getOptionFo
rValue(issuePai.getCustomFieldValue(cf_unidade_executora)[null].toString(),null)
if (issuePai.getCustomFieldValue(cf_unidade_executora)["1"] !=
null) {
unidadeObj =
ComponentAccessor.optionsManager.getOptions(cf_unidade_executora_opcao).getOptionFo
rValue(issuePai.getCustomFieldValue(cf_unidade_executora)
["1"].toString(),coordenadoriaObj.optionId)
}
}

/*** Importa o valor do campo 'Área / Serviço (Tecnologia)' para a variável


cf_area_servico ***/
CustomField cf_area_servico =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Área / Serviço
(Tecnologia)'}
def cf_area_servico_opcao = cf_area_servico.getRelevantConfig(issuePai)
Option areaObj
Option servicoObj
if (issuePai.getCustomFieldValue(cf_area_servico) != null) {
areaObj =
ComponentAccessor.optionsManager.getOptions(cf_area_servico_opcao).getOptionForValu
e(issuePai.getCustomFieldValue(cf_area_servico)[null].toString(),null)
if (issuePai.getCustomFieldValue(cf_area_servico)["1"] != null) {
servicoObj =
ComponentAccessor.optionsManager.getOptions(cf_area_servico_opcao).getOptionForValu
e(issuePai.getCustomFieldValue(cf_area_servico)["1"].toString(),areaObj.optionId)
}
}

/*** Importa o valor do campo 'Motivo da Mudança' para a variável


cf_motivo_mudanca ***/
CustomField cf_motivo_mudanca =
customFieldManager.getCustomFieldObjectsByName('Motivo da Mudança')[0]
def cf_motivo_mudanca_opcao = cf_motivo_mudanca.getRelevantConfig(issuePai)
Option motivo_mudanca =
ComponentAccessor.optionsManager.getOptions(cf_motivo_mudanca_opcao)?.find
{ it.toString() == issuePai.getCustomFieldValue(cf_motivo_mudanca).toString() }

/*** Importa o valor do campo 'Número do registro que motivou a mudança' para a
variável 'cf_num_registro' ***/
CustomField cf_num_registro =
customFieldManager.getCustomFieldObjectsByName('Número do registro que motivou a
mudança')[0]

/*** Importa o valor do campo 'Vulnerabilidade(s)' para a variável


'cf_Vulnerabilidades' ***/
CustomField cf_Vulnerabilidades =
customFieldManager.getCustomFieldObjectsByName('Vulnerabilidade(s)')[0]
def cf_Vulnerabilidades_valor =
issuePai.getCustomFieldValue(ComponentAccessor.getCustomFieldManager().getCustomFie
ldObject(26344))

/*** Importa o valor do campo 'Plataforma' para a variável cf_plataforma ***/


CustomField cf_plataforma =
customFieldManager.getCustomFieldObjectsByName('Plataforma')[0]
def cf_plataforma_opcao = cf_plataforma.getRelevantConfig(issuePai)
Option plataforma =
ComponentAccessor.optionsManager.getOptions(cf_plataforma_opcao)?.find
{ it.toString() == issuePai.getCustomFieldValue(cf_plataforma).toString() }

/*** Importa o valor do campo 'Haverá Indisponibilidade?' para a variável


cf_havera_indisponibilidade ***/
CustomField cf_havera_indisponibilidade =
customFieldManager.getCustomFieldObjectsByName('Haverá Indisponibilidade?')[0]
def cf_havera_indisponibilidade_opcao =
cf_havera_indisponibilidade.getRelevantConfig(issuePai)
Option havera_indisponibilidade =
ComponentAccessor.optionsManager.getOptions(cf_havera_indisponibilidade_opcao)?.fin
d { it.toString() ==
issuePai.getCustomFieldValue(cf_havera_indisponibilidade).toString() }

/*** Importa o valor do campo 'Lista dos ativos monitorados no Zabbix


indisponibilizados' para a variável 'cf_lista_ativos' ***/
CustomField cf_lista_ativos =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Lista dos
ativos monitorados no Zabbix indisponibilizados'}

/*** Importa o valor do campo 'Procedimento' para a variável 'cf_procedimento'


***/
CustomField cf_procedimento =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Procedimento'}
def procedimento = issuePai.getCustomFieldValue(cf_procedimento)

/*** Importa o valor do campo 'Plano de Rollback' para a variável


'cf_plano_rollback' ***/
CustomField cf_plano_rollback =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Plano de
Rollback'}

/*** Importa o valor do campo 'Complexidade' para a variável cf_complexidade


***/
CustomField cf_complexidade =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Complexidade'}
def cf_complexidade_opcao = cf_complexidade.getRelevantConfig(issuePai)
Option complexidade =
ComponentAccessor.optionsManager.getOptions(cf_complexidade_opcao)?.find
{ it.toString() == issuePai.getCustomFieldValue(cf_complexidade).toString() }

/*** Importa o valor do campo 'Janela proposta para execução (data/hora)' para
a variável 'cf_dt_implantacao' ***/
String jiraTimeFormat =
ComponentAccessor.getApplicationProperties().getString("jira.date.time.picker.java.
format")
DateFormat formatter = new SimpleDateFormat(jiraTimeFormat)

CustomField cf_janela =
customFieldManager.getCustomFieldObjectsByName('Janela proposta para execução
(data/hora)')[0]
String janela = null
if (issuePai.getCustomFieldValue(cf_janela)) {
janela = formatter.format(issuePai.getCustomFieldValue(cf_janela))
}

/*** Importa o valor do campo 'Duração (tempo para execução)' para a variável
'cf_duracao' ***/
CustomField cf_duracao =
customFieldManager.getCustomFieldObjects(issuePai).find {it.name == 'Duração (tempo
para execução)'}

/*** Importa o valor do campo 'Data e hora de início da execução' para a


variável 'cf_dt_execucao_ini' ***/
CustomField cf_dt_execucao_ini =
customFieldManager.getCustomFieldObjectsByName('Data e hora de início da execução')
[0]
String dt_execucao_ini = null
if (issuePai.getCustomFieldValue(cf_dt_execucao_ini)) {
dt_execucao_ini =
formatter.format(issuePai.getCustomFieldValue(cf_dt_execucao_ini))
}

/*** Importa o valor do campo 'Data e hora de fim da execução' para a variável
'cf_dt_execucao_fim' ***/
CustomField cf_dt_execucao_fim =
customFieldManager.getCustomFieldObjectsByName('Data e hora de fim da execução')[0]
String dt_execucao_fim = null
if (issuePai.getCustomFieldValue(cf_dt_execucao_fim)) {
dt_execucao_fim =
formatter.format(issuePai.getCustomFieldValue(cf_dt_execucao_fim))
}

IssueInputParameters issueInputParameters =
issueService.newIssueInputParameters()

issueInputParameters.with {
projectId = projectManager.getProjectObjByKey(Projeto).id
summary = Sumario
issueTypeId = Tipo
reporterId = userReporter.name
description = Descricao
priorityId = Prioridade

/*** Inclui nos campos da Issue de RDM criada os valores


informados nos campos da tela de transição ***/
if (issuePai.getCustomFieldValue(cf_tipo_mudanca) != null)
{ addCustomFieldValue(cf_tipo_mudanca.getId(), tipo_mudanca.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_servicos) != null)
{ addCustomFieldValue(cf_servicos.getId(), servicos.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_solicitante_nome) != null)
{ addCustomFieldValue(cf_solicitante_nome.getId(),
issuePai.getCustomFieldValue(cf_solicitante_nome).toString()) }
if (issuePai.getCustomFieldValue(cf_unidade_executora) != null)
{ addCustomFieldValue(cf_unidade_executora.getId(),
coordenadoriaObj.optionId.toString())
if (issuePai.getCustomFieldValue(cf_unidade_executora)["1"] !=
null) { addCustomFieldValue(cf_unidade_executora.getId() + ":1",
unidadeObj.optionId.toString())
}
}
if (issuePai.getCustomFieldValue(cf_area_servico) != null)
{ addCustomFieldValue(cf_area_servico.getId(), areaObj.optionId.toString())
if (issuePai.getCustomFieldValue(cf_area_servico)["1"] != null) {
addCustomFieldValue(cf_area_servico.getId() + ":1", servicoObj.optionId.toString())
}
}
if (issuePai.getCustomFieldValue(cf_motivo_mudanca) != null)
{ addCustomFieldValue(cf_motivo_mudanca.getId(),
motivo_mudanca.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_num_registro) != null)
{ addCustomFieldValue(cf_num_registro.getId(),
issuePai.getCustomFieldValue(cf_num_registro).toString()) }
if (issuePai.getCustomFieldValue(cf_plataforma) != null)
{ addCustomFieldValue(cf_plataforma.getId(), plataforma.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_havera_indisponibilidade) !=
null) { addCustomFieldValue(cf_havera_indisponibilidade.getId(),
havera_indisponibilidade.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_lista_ativos) != null)
{ addCustomFieldValue(cf_lista_ativos.getId(),
issuePai.getCustomFieldValue(cf_lista_ativos)) }
if (issuePai.getCustomFieldValue(cf_procedimento) != null)
{ addCustomFieldValue(cf_procedimento.getId(),
issuePai.getCustomFieldValue(cf_procedimento)) }
if (issuePai.getCustomFieldValue(cf_plano_rollback) != null)
{ addCustomFieldValue(cf_plano_rollback.getId(),
issuePai.getCustomFieldValue(cf_plano_rollback)) }
if (issuePai.getCustomFieldValue(cf_complexidade) != null)
{ addCustomFieldValue(cf_complexidade.getId(), complexidade.optionId.toString()) }
if (issuePai.getCustomFieldValue(cf_janela) != null)
{ addCustomFieldValue(cf_janela.getId(), janela) }
if (issuePai.getCustomFieldValue(cf_duracao) != null)
{ addCustomFieldValue(cf_duracao.getId(), issuePai.getCustomFieldValue(cf_duracao))
}
if (issuePai.getCustomFieldValue(cf_dt_execucao_ini) != null)
{ addCustomFieldValue(cf_dt_execucao_ini.getId(), dt_execucao_ini) }
if (issuePai.getCustomFieldValue(cf_dt_execucao_fim) != null)
{ addCustomFieldValue(cf_dt_execucao_fim.getId(), dt_execucao_fim) }

/*** Valida os campos obrigatórios ***/


IssueService.CreateValidationResult result =
issueService.validateCreate(user, issueInputParameters);

def msg

if (result.isValid()) {

def issueResult = issueService.create(user, result)


/*** Link Realização = 10320 ***/
linkManager.createIssueLink (issuePai.id, issueResult.issue.id,
Long.valueOf(10320), Long.valueOf(1), user)
msg = issueResult.issue

else {

log.info "Erro na criação da issue. Por favor verifique os


campos." + result.errorCollection
msg = "Atenção! Não foi possível criar a issue. Por favor,
verifique as seguintes condições: Campo obrigatório não informado, o tipo de issue
não existe para para o projeto informado ou você não tem permissão para criar issue
neste projeto.\n"
msg += "Erro: " + result.getErrorCollection().getErrors() + "\n"
msg += "Mensagem de erro: " +
result.getErrorCollection().getErrorMessages() + "\n"
msg += "Razões: " + result.getErrorCollection().getReasons() + "\
n"
}

/* Inclui os valores do campo "Vulnerabilidade(s) na RDM criada" */


Issue issueRDM = issueManager.getIssueObject("${msg}")
issueRDM.setCustomFieldValue(cf_Vulnerabilidades, cf_Vulnerabilidades_valor)
ComponentAccessor.getIssueManager().updateIssue(user, issueRDM,
EventDispatchOption.ISSUE_UPDATED, false)

/*** Atualiza a issuePai ***/


ComponentAccessor.getIssueManager().updateIssue(user, issuePai,
EventDispatchOption.ISSUE_UPDATED, false)

/*** Importa para a variável "cf_ProcedimentoOld" o campo "Procedimento" do


histórico da Issue Pai ***/
def cf_ProcedimentoOld = changeHistoryManager.getChangeItemsForField(issuePai,
"Procedimento")

/*** Importa para a variável "procedimentoOld" a string do último valor do


campo "Procedimento" ***/
String procedimentoOld = (String)
cf_ProcedimentoOld.max{it.created}.fromString

/*** Atualiza o valor do "cf_procedimento" com o valor da variável


"procedimentoOld" ***/
cf_procedimento.updateValue(null, issuePai, new
ModifiedValue(issuePai.getCustomFieldValue(cf_procedimento),procedimentoOld), new
DefaultIssueChangeHolder())

/*** Importa para a variável "cf_DtInicioOld" o campo "Data e hora de início


da execução" do histórico da Issue Pai ***/
def cf_DtInicioOld = changeHistoryManager.getChangeItemsForField(issuePai,
"Data e hora de início da execução")

/*** Inclui na variável "parser" o formato de data e hora ***/


SimpleDateFormat parser = new SimpleDateFormat("dd/MM/yyyy HH:mm")

/*** Importa para a variável "DtInicioOld" o último valor do campo "Data e hora
de início da execução" do histórico da Issue Pai no formato definido na variável
"parser" ***/
Date DtInicioOld = parser.parse((String)
cf_DtInicioOld.max{it.created}.fromString)

/*** Importa na variável "DtInicioOldConv" o valor convertido para o formato


java.sql.Timestamp da variável "DtInicioOld" ***/
java.sql.Timestamp DtInicioOldConv = new
java.sql.Timestamp(DtInicioOld.getTime())

/*** Atualiza o campo "cf_dt_execucao_ini" da Issue Pai ***/


cf_dt_execucao_ini.updateValue(null, issuePai, new
ModifiedValue(issuePai.getCustomFieldValue(cf_dt_execucao_ini),DtInicioOldConv),
new DefaultIssueChangeHolder())

/*** Importa para a variável cf_UnidadeExecutoraOld o campo "Unidade Executora"


do histórico da Issue Pai ***/
def cf_UnidadeExecutoraOld =
changeHistoryManager.getChangeItemsForField(issuePai, "Unidade Executora")
/*** Importa para a variável "UnidadeExecutoraOld" a string do último valor
do campo "Unidade Executora" ***/
String UnidadeExecutoraOld = (String)
cf_UnidadeExecutoraOld.max{it.created}.fromString

if (UnidadeExecutoraOld == null){

cf_unidade_executora.updateValue(null, issuePai, new


ModifiedValue(issue.getCustomFieldValue(cf_unidade_executora),null),changeHolder)

else{

/*** Importa para a string "CoordenadoriaOld" os caracteres da variável


"UnidadeExecutoraOld" que estão entre os caracteres "Parent values: " e ")(". No
fim, adiciona um parêntesis no resultado. ***/
String CoordenadoriaOld =
StringUtils.substringBetween(UnidadeExecutoraOld, "Parent values: ", ")(") + ')'

/*** Importa na string "UnidadeExecutoraOldReverse" o valor revertido


da variável "UnidadeExecutoraOld" ***/
String UnidadeExecutoraOldReverse = UnidadeExecutoraOld.reverse()

/*** Importa na string "UnidadeReverse" os caracteres da variável


"UnidadeExecutoraOldReverse" que estão ***/
String UnidadeReverse =
StringUtils.substringBetween(UnidadeExecutoraOldReverse, "(", " :seulav 1 leveL")

String UnidadeOld // Define a variável "UnidadeOld"

if (UnidadeReverse == null){

UnidadeOld = null

}
else{

/*** Importa na string "UnidadeOld" o valor revertido da


variável "UnidadeReverse" ***/
UnidadeOld = UnidadeReverse.reverse()

/*** Define na variável "parentOption" a primeira opção do campo


"cf_unidade_executora_opcao" conforme o valor da string "CoordenadoriaOld" ***/
def parentOption =
ComponentAccessor.getOptionsManager().getOptions(cf_unidade_executora_opcao)?.find
{ it.toString() == CoordenadoriaOld }

/*** Define na variável "childOption" a segunda opção do campo


"cf_unidade_executora_opcao", conforme o valor da string "UnidadeOld" ***/
def childOption =
ComponentAccessor.getOptionsManager().findByParentId(parentOption.optionId)?.find {
it.toString() == UnidadeOld }

/*** Define a variáverl "newValue" e insere a primeira e a segunda


opção com os valores das variáveis "parentOption" e "childOption" ***/
def newValue = [:]
newValue.put(null, parentOption)
newValue.put("1", childOption)

/*** Atualiza o campo "cf_unidade_executora" da issuePai com o valor da


variável "newValue" ***/
cf_unidade_executora.updateValue(null, issuePai, new
ModifiedValue(issue.getCustomFieldValue(cf_unidade_executora),
newValue),changeHolder)

/*** Importa para a variável cf_UnidadeExecutoraOld o campo "Unidade Executora"


do histórico da Issue Pai ***/
def cf_servicosOld = changeHistoryManager.getChangeItemsForField(issuePai,
"SERVICEDESK: Serviços")

/*** Importa para a variável "UnidadeExecutoraOld" a string do último valor


do campo "Unidade Executora" ***/
String servicosOld = (String) cf_servicosOld.max{it.created}.fromString

/*** Importa na variável "servicoOption" a opção do campo "cf_servicos",


conforme a string "servicosOld" ***/
def servicoOption =
ComponentAccessor.getOptionsManager().getOptions(cf_servicos_opcao)?.find
{ it.toString() == servicosOld }

/*** Atualiza o campo "cf_servicos" da issuePai com o valor da variável


"servicoOption" ***/
cf_servicos.updateValue(null, issuePai, new
ModifiedValue(issue.getCustomFieldValue(cf_servicos), servicoOption),changeHolder)

return msg
}

CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager()


IssueManager issueManager = ComponentAccessor.getIssueManager()
//MutableIssue issue = issueManager.getIssueObject("JIRA-1471")

CustomField cf_sumario = customFieldManager.getCustomFieldObjects(issue).find


{it.name == 'Sumário'} /*** Importa o valor do campo 'Sumário' na variável
cf_sumario ***/
CustomField cf_descricao = customFieldManager.getCustomFieldObjects(issue).find
{it.name == 'Descrição'} /*** Importa o valor do campo 'Descrição' para a variável
'cf_descricao' ***/

Project projeto =
ComponentAccessor.getProjectManager().getProjectObjByKey('RDM') /*** Importa o ID
do projeto "RDM" ***/
CustomField cf_tipo_mudanca = customFieldManager.getCustomFieldObjects(issue).find
{it.name == 'Tipo de mudança'} /*** Importa as opções do campo "Tipo de Mudança"
***/

String msg
String retorno = 'Issue criada: '

// 10300 Id do tipo de issue RDM.


msg = CriarIssue
(issue,"RDM","10300","3",issue.getCustomFieldValue(cf_sumario).toString(),issue.get
CustomFieldValue(cf_descricao).toString())
//String retorno = CriarIssue (issue,"RDM","10300","3","Sumário de
teste","Descrição de teste")

MutableIssue issueRDM = issueManager.getIssueObject(msg)

if (issueRDM) {
retorno += issueRDM.getKey()
}
else {
retorno = msg
}

/*** Apagar os campos Sumário e descrição da tela de transição ***/


cf_sumario.updateValue(null, issue, new
ModifiedValue(issue.getCustomFieldValue(cf_sumario),null), new
DefaultIssueChangeHolder())
cf_descricao.updateValue(null, issue, new
ModifiedValue(issue.getCustomFieldValue(cf_descricao),null), new
DefaultIssueChangeHolder())

UserMessageUtil.success(retorno)

You might also like