JIRA中的并联审批流程定制
JIRA号称可以跟踪任何事务,让JIRA的流程来匹配团队的工作流程,而不是让你的团队适应JIRA的工作流程。但是在实践中,有些有些流程用JIRA还是比较困难的,比如并联审批流程,一个并联审批流程需求大概如下:
- 同时指定多个评审人
- 只有评审人才能够对该问题进行审批操作
- 评审人都能够及时收到通知
- 每个评审人都能够独立进行审批
- 最后一个评审人审批完毕时,自动更改状态为完成审批
- 评审负责人要清楚了解哪些人已经评审了,哪些还没有
这个需求JIRA本身的功能就很难满足,必须通过插件来完成,这也是JIRA功能的强大之处,可以通过插件来扩展其功能。这里我们需要安装一个Script Runner插件:
https://marketplace.atlassian.com/plugins/com.onresolve.jira.groovy.groovyrunner
这是一个免费的插件,有了这个插件你就可以在工作流中编写脚本,你的工作流想怎么执行就怎么执行。
下面分享一下我的并联审批解决方案:
1,先安装好Script Runner插件。
2,增加两个自定义字段”评审人“,”已评审“,都为多用户选择字段。“评审人”用于在创建评审问题时,指定参加评审的人员,“已评审”字段用于在评审过程中,保存已经评审的人,剩下还未评审的人保留在“评审人”字段中。
3,定制并联审批流程,我的流程如下:
4,设置审批动作的权限,点击工作流中的”审批(71)”动作,在弹出的菜单中选择“View Conditions”,添加一个动作的触发条件:
这个“Script Condition”是只有安装了Script Runner之后才有的,选择它就可以通过执行脚本的方式来判断是否有权限执行这个动作,这里我们选择内置脚本”Allows the transition if this query matches a JQL query ”来执行判断,这个脚本执行一个JQL查询,如果满足就允许这个动作,所以JQL就这么写:
- 评审人 in (currentUser())
这个表示当前用户为评审人中的一个时才允许这个动作。
5,让评审人都能够及时收到通知。JIRA的通知功能很强大,可以通过邮件、RSS、@、聊天等方式。要让评审问题在“开始审批”之后,通知相关的评审人,这里有两种方式,一种比较简单,就是修改通知方案,将“评审人”添加到通知设置中,如下:
另一种方案是采用Script Runner的脚本执行的方式,该脚本是在“开始审批”这个动作的“Post Functions”中执行的,如下:
选择执行脚本文件的方式,如下:
这里要注意,这个路径是系统的文件路径,不是http路径,我设置的时候一直没搞清楚是什么路径,又不好调试,只好逐一测试,按绝对路径写全就可以。
脚本内容参见附件中的startapproval.groovy,该脚本的设计思想就是开始审批动作执行之后,将评审人都加到关注列表中,然后通知方案就会通知到关注的人。
这个脚本的内容功能正确,但是写的很乱,有兴趣就凑合着看吧,因为我完全不懂java,所以脚本也是参考网上的众多例子,以及script runner的内置例子写成的。
6,最后一个评审人审批完毕时,自动更改状态为审批完成。这个功能可有可无,但是对于一个自动化系统来说,有这个自动功能当然更好,这个也试用Script Runner实现,基本原理就是,评审人点击”审批“之后,如果”评审人“字段为空了,也就是都评审完了(每评审一个,会将评审人添加到”已评审“字段中),那么就执行”审批完成“这个动作。
这个脚本在”审批“动作的Post Functions中设置,同样选择脚本文件的方式,脚本内容参见附件中的approval.groovy。
7,评审负责人能够了解哪些已经评审了,哪些还在评审当中。这个功能也在approval.groovy中执行,基本原理是每个评审人评审完毕后,将其从”评审人“字段中删除,添加到”已评审“字段中。
8,设置”重新审批“的动作,重新审批的意思是,当评审负责人发现某个评审人的评审有问题时,可以叫其重新进行审批,所以需要将其从”已评审“中去掉,或者需要添加评审人时,也可以使用”重新审批“这个动作。所以”重新审批“的PostFunctions中需要执行两个脚本,依次是reapproval.groovy和startaporoval.groovy,内容参见附件。
9,在面板中添加一个过滤器,过滤出需要当前用户参与评审的问题,下面这个就是我的”指定给我的“过滤器:
- issuetype = 审批 AND status in (审批中) AND (assignee in (currentUser()) OR 评审人 in (currentUser())) OR issuetype = 审批 AND status in (审批完成) AND assignee in (currentUser()) OR issuetype != 审批 AND status in (Open, "In Progress", Reopened, Resolved) AND assignee in (currentUser()) ORDER BY updated
JIRA中的并联审批流程定制的更多相关文章
- 使用Visual Studio Team Services敏捷规划和项目组合管理(七)——流程定制
使用Visual Studio Team Services敏捷规划和项目组合管理(七)--流程定制 在Team Services中,可以通过流程定制工作追踪体验.流程定义了工作项跟踪系统的构建部分,以 ...
- JIRA中的核心概念
转载自:http://blog.csdn.net/zhengxy2011/article/details/6940380 1.1.1 问题 JIRA跟踪问题(Issue),这些问题可以是bug,功 ...
- salesforce 零基础学习(四十六)动态美观显示列表中记录的审批状态
项目中,申请者申请某些事项以后,常常需要在申请列表中查看当前申请的记录所在的审批状态,动态美观的显示状态可以使UI更符合客户要求,比如下面这样. 以Goods__c表为例,申请者申请的一些采购以前需要 ...
- YbSoftwareFactory 代码生成插件【十六】:Web 下灵活、强大的审批流程实现(含流程控制组件、流程设计器和表单设计器)
程序=数据结构+算法,而企业级的软件=数据+流程,流程往往千差万别,客户自身有时都搞不清楚,随时变化的情况更是家常便饭,抛开功能等不谈,需求变化很大程度上就是流程的变化,流程的变化会给开发工作造成很大 ...
- FS BPM 业余研发(用户详细操作手册--单人串行/并行)之 深圳分公司技术部请假审批流程
1.FS BPM 简介 BPM软件中BPM是英文字母缩写,大致有二个意思.第一.Business Process Management,即业务流程管理,是一套达成企业各种业 务环节整合的全面管理模式. ...
- 【转】基于easyui开发Web版Activiti流程定制器详解(一)——目录结构
题外话(可略过): 前一段时间(要是没记错的话应该是3个月以前)发布了一个更新版本,很多人说没有文档看着比较困难,所以打算拿点时间出来详细给大家讲解一下,由于本人平时要工作还要陪老婆和孩子而且还经营着 ...
- 如何在JIRA中有效使用关注和@提及 我正在关注的问题 提及我的问题 在仪表板上显示
如何在JIRA中有效使用关注和@提及http://bbs.51testing.com/forum.php?mod=viewthread&tid=1157043&fromuid=1530 ...
- Android中Linux suspend/resume流程
Android中Linux suspend/resume流程首先我们从linux kernel 的suspend说起,不管你是使用echo mem > /sys/power/state 或者使用 ...
- shell中命令的执行流程
在shell中,一个命令有3中写法: 1 可以直接写(Normal Command) 2 可以放在双引号中("Command") 3 可以放在单引号中('Comand') 这3中写 ...
随机推荐
- [HAOI2015][bzoj 4033]树上染色(树dp+复杂度分析)
[题目描述]有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色.将所有点染色后,你会获得黑点两两之间的距离加上白点两两 ...
- Pytest权威教程15-运行Nose用例
目录 运行Nose用例 使用方法 支持的nose风格 不支持的习语/已知问题 返回: Pytest权威教程 运行Nose用例 Pytest基本支持运行Nose框架格式的测试用例. 使用方法 后安装py ...
- Note_4.1
2019/4/1 奇奇怪怪的笔记 多项式除法 问题描述 给定\(n\)次多项式\(A(x)\)和\(m\)次多项式\(B(x)\) 求: \[ A(x)=B(x)*C(x)+R(x) \] 我们要求\ ...
- Android中显式意图和隐式意图的区别
1.显式意图 可以直接通过名称开启指定的目标组件: 通过构造方法Intent(Context packageContext,class<?>cls)来实现. button_1 = (But ...
- 数据结构Java版之邻接矩阵实现图(十一)
邻接矩阵实现图,是用一个矩阵,把矩阵下标作为一个顶点,如果顶点与顶点之间有边.那么在矩阵对应的点上把值设为 1 .(默认是0) package mygraph; import java.util.Li ...
- python实用技巧之任务切分
Python 大任务切分小任务 今天来说说,Python中的任务切分.以爬虫为例,从一个存 url 的 txt 文件中,读取其内容,我们会获取一个 url 列表.我们把这一个 url 列表称为大任务. ...
- 学习DB2之Linux环境下下载
一 下载前的注册IBM地址:https://www-01.ibm.com/marketing/iwm/iwm/web/pick.do?source=swg-db2expressc&S_PKG= ...
- 【JVM】虚拟机类加载机制
什么是类加载 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. <[JVM]类文件结构& ...
- 深度学习面试题13:AlexNet(1000类图像分类)
目录 网络结构 两大创新点 参考资料 第一个典型的CNN是LeNet5网络结构,但是第一个引起大家注意的网络却是AlexNet,Alex Krizhevsky其实是Hinton的学生,这个团队领导者是 ...
- html中a标签的常见用法
html中a标签的常见用法 一.总结 一句话总结: a.页面跳转 b.使用锚点定位 c.下载文件 二.html中<a>标签的用法 转自或参考:html中<a>标签的用法http ...