Журнал работы: время, прошедшее с момента последнего перехода - 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}") }