我想知道当日志工作时间达到估计时间时是否有发送通知的选项。
例如:开始。
估计:原始估计 - 5 分钟 5m
剩余:剩余估计 - 5 分钟 5m
记录:所用时间 - 未指定 未指定
当我记录时间。
估计:原始估计 - 5 分钟 5m
剩余时间:花费时间 - 4 分钟剩余估计 - 1 分钟 1m
记录:花费时间 - 4 分钟剩余估计 - 1 分钟 4m
我喜欢 JIRA 在 1 分钟结束或我设置的任何内容之前发送通知。
我很抱歉英语不好。
谢谢
我想知道当日志工作时间达到估计时间时是否有发送通知的选项。
例如:开始。
估计:原始估计 - 5 分钟 5m
剩余:剩余估计 - 5 分钟 5m
记录:所用时间 - 未指定 未指定
当我记录时间。
估计:原始估计 - 5 分钟 5m
剩余时间:花费时间 - 4 分钟剩余估计 - 1 分钟 1m
记录:花费时间 - 4 分钟剩余估计 - 1 分钟 4m
我喜欢 JIRA 在 1 分钟结束或我设置的任何内容之前发送通知。
我很抱歉英语不好。
谢谢
我相信您想在记录的工作接近原始估计时创建某种触发事件,但我不知道您如何在 JIRA 中做到这一点。尽管如此,我知道一些仍然可以帮助您解决问题的东西。
尝试使用以下 groovy 脚本:
import com.atlassian.jira.ComponentManager
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.APKeys
import com.atlassian.jira.config.properties.ApplicationProperties
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.search.SearchResults
import com.atlassian.jira.issue.worklog.Worklog
import com.atlassian.jira.jql.parser.DefaultJqlQueryParser
import com.atlassian.jira.web.bean.PagerFilter
import com.atlassian.mail.Email
import com.atlassian.mail.MailException
import com.atlassian.mail.MailFactory
import com.atlassian.mail.queue.SingleMailQueueItem
import com.atlassian.query.Query
import groovy.text.GStringTemplateEngine
import org.apache.log4j.Logger
import com.atlassian.core.util.DateUtils
def componentManager = ComponentManager.getInstance()
def worklogManager = componentManager.getWorklogManager()
def userUtil = componentManager.getUserUtil()
def user = userUtil.getUser('admin')
def searchProvider = componentManager.getSearchProvider()
def queryParser = new DefaultJqlQueryParser()
Logger log = Logger.getLogger('worklogNotification')
Query jql = queryParser.parseQuery('project = ABC and updated > startOfDay(-1d)')
SearchResults results = searchProvider.search(jql, user, PagerFilter.getUnlimitedFilter())
List issues = results.getIssues()
String emailFormat = 'HTML'
def mailServerManager = componentManager.getMailServerManager()
def mailServer = mailServerManager.getDefaultSMTPMailServer()
String defaultSubject = 'Logged work on JIRA issue %ISSUE% exceeds original estimate'
String body = ''
Map binding = [:]
String loggedWorkDiff = ''
String template = '''
Dear ${issue.assignee.displayName}, <br /><br />
Logged work on issue <a href="$baseUrl/browse/${issue.key}">${issue.key} (${issue.summary})</a> exceeds original estimate ($loggedWorkDiff more than expected).<br />
*** This is an automatically generated email, you do not need to reply ***<br />
'''
GStringTemplateEngine engine = new GStringTemplateEngine()
ApplicationProperties applicationProperties = componentManager.getApplicationProperties()
binding.put("baseUrl", applicationProperties.getString(APKeys.JIRA_BASEURL))
if (mailServer && ! MailFactory.isSendingDisabled()) {
for (Issue issue in issues) {
if(issue.originalEstimate) {
loggedWork = 0
worklogs = worklogManager.getByIssue(issue)
worklogs.each{Worklog worklog -> loggedWork += worklog.getTimeSpent()}
if(loggedWork - issue.originalEstimate) {
loggedWorkDiff = DateUtils.getDurationString(Math.round(loggedWork - issue.originalEstimate))
email = new Email(issue.getAssigneeUser().getEmailAddress())
email.setFrom(mailServer.getDefaultFrom())
email.setSubject(defaultSubject.replace('%ISSUE%', issue.getKey()))
email.setMimeType(emailFormat == "HTML" ? "text/html" : "text/plain")
binding.put("issue", issue)
binding.put('loggedWorkDiff', loggedWorkDiff)
body = engine.createTemplate(template).make(binding).toString()
email.setBody(body)
try {
log.debug ("Sending mail to ${email.getTo()}")
log.debug ("with body ${email.getBody()}")
log.debug ("from template ${template}")
SingleMailQueueItem item = new SingleMailQueueItem(email);
ComponentAccessor.getMailQueue().addItem(item);
}
catch (MailException e) {
log.warn ("Error sending email", e)
}
}
}
}
}
此脚本获取项目 ABC 的问题,这些问题已在前一天 ( JQL : "project = ABC and updated > startOfDay(-1d)"
) 更新,计算记录的工作和估计的工作之间的差异,如果记录的工作超过原始估计,则向问题受理人发送通知。
您可以将此脚本添加到 JIRA 服务列表(JIRA -> 管理 -> 系统 -> 高级 -> 服务)。
姓名: [任何姓名]
类: com.onresolve.jira.groovy.GroovyService
延迟: 1440
输入文件: [服务器上脚本的路径]
延迟: 1440
请注意,您将 1440(分钟)作为服务延迟,相当于 1 天。因此,该脚本将每天执行一次,向受让人发送有关超出原始估计的通知。
另请注意,应安装Groovy Scripting 插件以便能够运行您的脚本。