jira新版本添加自定义字段html不生效_设置JIRA的工作流脚本,自动改变自定义字段值...

== 【1】待解决问题 ==

最近为了统计JIRA中的任务延期情况,需要每个任务都填写实际完成时间。

"实际完成时间"这个字段为日期格式的。

如果人工填写,增加了人员的额外劳动,另外也容易不真实。

所以,尝试使用JIRA的工作流,设置自动填写实际完成时间的值。

== 【2】尝试过的方法 ==

首先,使用了JIRA工作流的“结果处理”中的“更新问题字段”功能,

发现这个功能不支持自定义字段值的设置。就算是JIRA默认字段,也支持的非常少。

而,我们的“实际完成时间”字段为自定义字段,这个方法不可行。

之后,想通过插件实现这个功能。但考虑JIRA服务器的安全,不能随便挂载插件。

== 【3】正确方法的操作步骤 ==

后来,查了各种资料,使用JIRA工作流的“结果处理”中的“Script Post-Function”可以实现。

下面详细说明步骤:

1. 使用管理员权限的帐户登录JIRA

2. 登录后,点击右上角的“设置->项目”菜单

3. 在展开的页面中,点击主菜单中的“问题”,点击左侧菜单中的“工作流”菜单

4. 在展示的工作流列表中找到要编译的工作流,点击右侧的“编辑”链接

5. 在展示的工作中,点击需要添加脚本的工作流动作。我是要在“测试通过”的动作中添加脚本。

6. 选择“结果处理”页签,点击“添加结果处理功能”链接

7. 在展开的页面中,选择“Script Post-Function”后,点击“增加”按钮

8. 在新页面中,点击“Custom Script Post-Function”链接

9. 在展开的页面的“Inline script”栏中编写我们的脚本(脚本内容后面说明)后,点击“增加”按钮

10. 回到工作流编辑页面,点击“发布草稿”。这时,带有脚本的工作流就生效了。

11. 在JIRA中对任务进行“测试通过”的操作,脚本就会被执行。

12. 进入第6步的页面中查看执行日志。日志和任务界面都显示正确就OK了。

(没有上传图片,因为要处理项目信息,而图片比较多。看了步骤还不会的,请私信我)

== 【4】脚本内容 ==

import java.util.Date;

import java.text.SimpleDateFormat;

import com.atlassian.jira.ComponentManager;

import com.atlassian.jira.issue.Issue;

import com.atlassian.jira.issue.IssueManager;

import com.atlassian.jira.issue.CustomFieldManager;

import com.atlassian.jira.issue.fields.CustomField;

import com.atlassian.jira.component.ComponentAccessor;

import org.apache.log4j.Category;

import java.sql.Timestamp;

ComponentManager componentMgn = ComponentManager.getInstance();

def Category log = Category.getInstance("com.onresolve.jira.groovy")

//log.setLevel(org.apache.log4j.Level.INFO);

//log.info("[S] log:");

//Get CustomField of "实际完成时间"

def devFindateForm = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("实际完成时间");

//log.info("字段名:");

//log.info(devFindateForm);

//SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");

//log.info(sdf.format(new Date().getTime()));

//set value for "实际完成时间"

issue.setCustomFieldValue(devFindateForm, new Timestamp(new Date().getTime()));

== 【5】脚本说明 ==

JIRA工作流中使用的是Groovy脚本,会Java的应该都能写。

工作流中的脚本不能进行调试,只能通过输出log测试。

脚本测试通过后,就把log注释掉了。

这段脚本是加在任务工作流的“测试通过”的动作中,当操作者在JIRA任务中操作“测试通过”时,

脚本会被执行,“完成时间”字段会被设置为当前日期。

如果工作流存在回退的流程,还需要在回退的动作中,增加脚本删除这个字段的值。

关于JIRA API类和方法的使用,请参考下文中JIRA API官方网址。

脚本中最后一行的“issue”表示当前正在操作的JIRA任务。

== 【6】脚本运行问题解决说明 ==

虽然起作用的脚本只有两行,但在测试过程中,还是遇到了问题。

报错:java.lang.IllegalArgumentException: Java type java.util.Date not currently supported. Sorry.

原因:“实际完成时间”为日期格式的字段,把Date类型的对象作为setCustomFieldValue()的第2个参数

错误代码:issue.setCustomFieldValue(devFindateForm, new Date().getTime())

解决方法:日期格式的字段应该使用Timestamp类型作为参数,把Timestamp类型的对象作为setCustomFieldValue()的第2个参数

== 【7】设置“测试人员”脚本示例 ==

需求:

当任务完成时,设置“测试人员”为操作JIRA任务的人,以标识完成任务的人。

不使用经办人字段是因为这个字段一直在变,不便于统计。

脚本如下:

def devFindateForm = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("测试人员");

def currentUser = ((WorkflowContext)transientVars.get("context")).getCaller();

def appCurUser = ComponentAccessor.getUserManager().getUserByKey(currentUser);

issue.setCustomFieldValue(devFindateForm, appCurUser);

== 【8】JIRA API官方网址 ==

Index of ./software/jira/docs/api

自己选择不同的版本看,我看的是7.3.3

Atlassian JIRA 7.3.3 API

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值