JIRA后置函数脚本需求:将初始估算时间写入工作日志并自动关单
解决方案:无插件实现Jira自动记录工作日志并关单
针对你提到的需求(因安全/审计要求无法采购插件,需将估算时间写入工作日志后自动关单,缩短短任务记录耗时),用Jira内置功能即可完成,无需额外工具:
优先方案:Jira原生自动化规则
- 创建自动化规则:
- 触发条件选择「当工单创建时」,添加筛选条件限制为你的特定自定义任务类型。
- 第一个动作选「记录工作日志」:
- 「耗时」字段选择「从工单字段获取」,关联到「估算时间(Estimated Time)」
- 可自定义日志描述,比如固定填写「自动同步估算时间为实际耗时」
- 第二个动作选「转换工单状态」,直接切换到「已关闭」状态
- 保存并启用规则
用户创建该类型工单时,只需填写标题和估算时间,规则会自动将估算时间写入工作日志(工时表可正常统计),并自动关闭工单,完全匹配你的需求。
替代方案:工作流脚本后置函数(仅当必须绑定工作流时)
如果你的场景必须通过工作流后置函数实现,且允许使用Script Runner(若你方禁止任何第三方插件则跳过此方案),可编写Groovy脚本作为后置函数:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.bc.issue.worklog.WorklogService import com.atlassian.jira.user.ApplicationUser def issue = issue as Issue def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser // 获取估算时间,为空则终止执行 def estimatedTime = issue.originalEstimate if (!estimatedTime) return // 初始化工作日志服务并创建日志 def worklogService = ComponentAccessor.getComponent(WorklogService) def worklogParams = worklogService.newWorklogInputParameters() .withIssue(issue) .withStartDate(new Date()) .withTimeSpent(estimatedTime) .withComment("自动同步估算时间至工作日志") def logValidation = worklogService.validateCreate(currentUser, worklogParams) if (logValidation.valid) { worklogService.create(currentUser, logValidation) } // 关闭工单,需将6替换为你实际的关闭状态过渡ID def issueService = ComponentAccessor.issueService def transitionValidation = issueService.validateTransition(currentUser, issue.id, 6) if (transitionValidation.valid) { issueService.transition(currentUser, transitionValidation) }
使用方法:在工作流的创建过渡(或对应触发过渡)中添加「Script Runner脚本后置函数」,粘贴上述脚本后,将过渡ID替换为你系统中实际的关闭工单过渡ID。
关键说明
- 工时表仅统计工作日志中的时间,直接更新
time spent字段不会被纳入统计,这也是你之前使用「Set Field Value Post Function」无效的核心原因。 - Jira自动化为原生内置功能,无需安装任何插件,完全符合你方的安全/审计要求。
内容的提问来源于stack exchange,提问作者Richard Marshall
相关产品推荐
相关产品推荐

