Журнал работы: время, прошедшее с момента последнего перехода - malikovalibek/groovyForJira GitHub Wiki

Обзор Timetracker предоставляет возможность создавать рабочие журналы со связанными атрибутами. Используйте этот сценарий для автоматического протоколирования времени, прошедшего с момента последнего перехода, как часть функции публикации рабочего процесса. Время, в которое вы входите таким образом, должно соответствовать правилам и ограничениям, настроенным в приложении Timetracker, таким как количество часов в день, в которые вы регистрируетесь.

пример Как разработчик, я хочу автоматически регистрировать количество времени, прошедшее с момента последнего перехода, когда я перемещаю задачу в другой статус. Таким образом, я знаю, сколько времени заняла работа в этом статусе, и мне не нужно регистрировать работу вручную.

Хорошо знать Для этого скрипта требуется Timetracker - Time Tracking & Reporting для Jira . Timetracker имеет множество правил проверки, разрешений и дополнительных атрибутов, которые применяются при создании рабочего журнала с его помощью. Узнайте больше о способах интеграции Timetracker и ScriptRunner.

import com.atlassian.jira.component.ComponentAccessor import com.onresolve.scriptrunner.runner.customisers.PluginModule import com.onresolve.scriptrunner.runner.customisers.WithPlugin import org.everit.jira.timetracker.service.WorklogService import java.time.Instant import java.time.temporal.ChronoUnit

@WithPlugin("org.everit.jira.timetracker.plugin")

@PluginModule WorklogService worklogService

def changeHistoryManager = ComponentAccessor.changeHistoryManager

// Get the time of the last transition and the current time def timeLastTransition = changeHistoryManager.getChangeItemsForField(issue, 'status')?.last()?.created final currentTime = Instant.now()

// Get the time since the last transition in minutes def timeToLog = ChronoUnit.MINUTES.between(timeLastTransition.toInstant(), currentTime)

// Define optional worklog attributes (case sensitive) def worklogAttributes = ['billable']

// Create the worklog with the following paramters: issue key, duration, start date, comment, attributes // The worklog will be created by the logged in user def worklogCreateFailed = worklogService.createWorklog(issue.key, "${timeToLog}m", Instant.now(), 'PostFunction Worklog', worklogAttributes) if (!worklogCreateFailed.empty) { log.error("Worklog creation failed: ${worklogCreateFailed}") }