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中写 ...
随机推荐
- 42、JDBC数据源案例
一.JDBC数据源案例 1.概述 Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据.读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种 ...
- AtCoder Grand Contest 015题解
传送门 \(A\) 找到能达到的最大的和最小的,那么中间任意一个都可以被表示出来 typedef long long ll; int n,a,b;ll res; int main(){ scanf(& ...
- SVN版本回滚实战
天在使用SVN发布的时候不小心修改了一些不正确的东西,新增和编辑了一些错误的文件,由于文件数量比较多,并且目录复杂,不可能单个进行处理,所以想到了SVN版本回滚. 回滚本地工作目录: 1.右键工作目录 ...
- 第10组 Alpha冲刺(2/6)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 了解了如何根据系统获取的实际情况进行后端任务的调整 网易云音乐推荐算法的分析 ...
- 深度学习面试题11:池化(same池化、valid池化、带深度的池化)
目录 Same最大值池化 多深度的same池化 Same平均值池化 Valid池化 参考资料 池化(Pooling)操作与卷积类似,取输入张量的每个位置的矩形领域内的最大值或平均值作为该位置的输出. ...
- element-ui表格显示html格式
<el-table-column type="String" label="内容" prop="tpl" width="58 ...
- c++ 函数后面加一个冒号的含义
转载自:https://zhidao.baidu.com/question/2010930169328038188.html 冒号后面跟的是赋值,这种写法是C++的特性. A( int aa, int ...
- gogs 实现webhook钩子(php接口形式)
1.概要流程 2.准备工作 gogs服务器 linux网站服务器(宝塔) 本地客户端 3.编写钩子访问的接口 在public下新建githook.php文件,代码如下: <?php $cmd = ...
- JS如何判断文字是全角还是半角
载自:http://www.php.cn/js-tutorial-362638.html 全角:是一种电脑字符,是指一个全角字符占用两个标准字符(或两个半角字符)的位置.全角占两个字节.半角:是指一个 ...
- 【E2E】Tesseract5+VS2017+win10源码编译攻略
一,记录我目前在win10 X64和VS2017的环境下成功编译Tesseract5.0的方式: 二,记录在VS2017 C++工程中调用Tesseract4.0的方法: 三,记录编译和调用Tesse ...