Невозможно обновить новую связанную проблему - Jira / Scriptrunner - Epic / Issues In Epic - PullRequest
0 голосов
/ 11 июля 2019

У меня есть кусок кода. Я могу просмотреть все значения, но когда дело доходит до обновления поля «Учетная запись» новой связанной темы, ничего не происходит. Я использую Scriptrunner для пользовательского слушателя Jira

Я ожидаю, что у новой связанной проблемы (issueInEpic) будет обновлено значение поля «Account» Tempo (connectedField) (oldCfValue) со значением (newCfValue) значения поля «Account» Epic.

log.info () показывает все значения правильно. Единственная проблема - обновление связанной проблемы.

import com.atlassian.jira.event.issue.link.IssueLinkDeletedEvent
import org.apache.log4j.Logger
import org.apache.log4j.Level

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.index.IssueIndexingService
import com.atlassian.jira.util.ImportUtils
import com.atlassian.jira.issue.MutableIssue
import com.atlassian.jira.event.type.EventDispatchOption

import com.atlassian.jira.issue.util.IssueChangeHolder


def log = Logger.getLogger(com.atlassian.jira.event.issue.link.IssueLinkCreatedEvent)
log.setLevel(Level.INFO)


if ([IssueLinkCreatedEvent].contains(event.getClass())) {


    if (event.issueLink.issueLinkType.name == "Epic-Story Link") {
          def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser 
          def issueManager = ComponentAccessor.getIssueManager()
          def cfManager = ComponentAccessor.getCustomFieldManager()
          def accountField = cfManager.getCustomFieldObjects(event.issueLink.sourceObject)?.find{it.name == "Account"}
          def linkedField = cfManager.getCustomFieldObjects(event.issueLink.destinationObject)?.find{it.name == "Account"}
          MutableIssue issueInEpic = event.issueLink.destinationObject as MutableIssue
          MutableIssue epic = event.issueLink.sourceObject as MutableIssue
          def newCfValue = accountField.getValue(epic) 
          def oldCfValue = linkedField.getValue(issueInEpic)


          issueInEpic.setCustomFieldValue(linkedField, newCfValue)
          issueManager.updateIssue(currentUser, issueInEpic, EventDispatchOption.DO_NOT_DISPATCH, false)


        def issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService.class)
        def wasIndexing = ImportUtils.isIndexIssues()
        ImportUtils.setIndexIssues(true)
        issueIndexingService.reIndex(event.issueLink.destinationObject)
        ImportUtils.setIndexIssues(wasIndexing)

        log.info(accountField)
        log.info(newCfValue)
        log.info(oldCfValue)
        log.info(issueInEpic)
        log.info(epic)
        log.info(linkedField)
        } 
}


...