Обновите поле учетной записи связанных проблем после изменения поля учетной записи на Epic - malikovalibek/groovyForJira GitHub Wiki

Обзор Обновите поле «Учетная запись» для связанных выпусков эпика после изменения поля «Учетная запись эпика». Этот скрипт запускается при изменении поля Tempo Account в эпике. При запуске скрипт извлекает значение измененного поля учетной записи Tempo и применяет обновленное значение ко всем связанным выпускам эпика (эпическая ссылка) и всем подзадачам связанных задач (только когда для параметра «Наследовать от родителя» используется подзадача). Сценарий проверяет, принадлежат ли связанные проблемы (в которых значение учетной записи Tempo обновляется) проекту Jira, связанному с новой учетной записью Tempo.

Создайте настраиваемый прослушиватель, который прослушивает Issue Updatedсобытия.

пример Мне нужно изменить учетную запись Tempo, связанную с эпиком. У меня много выпущенных в эпике, и я хочу, чтобы мои задачи Jira автоматически обновлялись с новой учетной записью, чтобы мне не приходилось вручную обновлять их все. Я могу использовать этот скрипт, чтобы обновить все проблемы в эпике, чтобы показать новую учетную запись Tempo.

Хорошо знать Для этого скрипта требуются Tempo Timesheets, Tempo Planner или Tempo Budgets от Tempo для Jira. Если проверка не удалась, сценарий собирает проблемы, которые не удалось обновить. Пользователи скрипта могут при желании отправить эту информацию заинтересованным сторонам, например, опубликовать обновление в Slack или по электронной почте с помощью Jira API. С участием ScriptRunner для Jira от Adaptavist

Бюджеты Tempo по Tempo

Планировщик темпа от Tempo

Расписания Tempo от Tempo

Создано 1 год назад , Обновлено 3 месяца назад

Код сервера Код центра обработки данных

Требования Jira SoftwareПрограммное обеспечение Jira (7.7 - 8.6)

import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.onresolve.scriptrunner.runner.customisers.PluginModule import com.onresolve.scriptrunner.runner.customisers.WithPlugin import com.tempoplugin.accounts.account.api.AccountService import com.tempoplugin.accounts.account.api.Account

@WithPlugin(["com.tempoplugin.tempo-accounts"])

@PluginModule AccountService accountService

def issue = event.issue

// The issue is not an Epic, nothing to do here if (issue.issueType.name != "Epic") { return }

def loggedInUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser def change = event.changeLog.getRelated("ChildChangeItem")?.find { it.field == "Account" }

// a field other than the Account field updated, nothing to do here if (!change) { return }

def customFieldManager = ComponentAccessor.customFieldManager def accountField = customFieldManager.getCustomFieldObjects(issue).find { it.name == "Account" } def account = issue.getCustomFieldValue(accountField) as Account

def issuesWithMisconfigurationAccount = []

// Update the Account of all issues linked via Epic Link ComponentAccessor.issueLinkManager.getLinkCollection(issue, loggedInUser, false).getOutwardIssues("Epic-Story Link").each { def selectedAccountOnLinkedIssue = it.getCustomFieldValue(accountField)

def accountsRegisteredForProject = (accountService.getAccountsByProject(it.projectObject.id).returnedValue as List<Account>)*.key
def globalAccounts = (accountService.globalAccounts.returnedValue as List<Account>)*.key

// if the account is configured for the target issue or it is a global account then update
if (account.key in accountsRegisteredForProject || account.key in globalAccounts) {
    accountField.updateValue(null, it, new ModifiedValue(selectedAccountOnLinkedIssue, account), new DefaultIssueChangeHolder())
}
else {
    // else store the issue key to a list so later we can inform the user for which issues the account field was not updated
    issuesWithMisconfigurationAccount << it.key
}

}

⚠️ **GitHub.com Fallback** ⚠️