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中写 ...
随机推荐
- 模板 - 数学 - 多项式 - 快速数论变换/NTT
Huffman分治的NTT,常数一般.使用的时候把多项式的系数们放进vector里面,然后调用solve就可以得到它们的乘积.注意这里默认最大长度是1e6,可能需要改变. #include<bi ...
- SpringMVC从Session域中获取值
SpringMVC从Session域中获取值 SpringMVC环境自行搭建 第一步:前端页面 第二步.后台代码 第三步.响应视图 第四步.在当前处理器所在的类设置@SessionAttributes ...
- RabbitMQ入门学习系列(七) 远程调用RPC
快速阅读 生产者和消费者启动以后,都有一个接收事件,消费者是接收事件是处理调用方法以后等待生产者的返回,生产者的接收事件是处理接收生产者发送的消息,进行处理.消费者发送的时候要在回调队列中加入一个标识 ...
- html5中output元素详解
html5中output元素详解 一.总结 一句话总结: output元素是HTML5新增的元素,用来设置不同数据的输出,没什么大用,了解即可 <form action="L3_01. ...
- python中list和dict
字典(Dictionary)是一种映射结构的数据类型,由无序的“键-值对”组成.字典的键必须是不可改变的类型,如:字符串,数字,tuple:值可以为任何python数据类型. 1.新建字典 1 2 3 ...
- 【JDBC】仅输入表名和要插入的记录数,自动检测表的字段和类型,然后插入数据的全自动程序(Oracle版)
之前写的批量插值程序只是五六半自动版本,因为表的字段还需要手工填写,这回只要指定表名和要插多少数据就行了,类似于全自动突击步枪,扣动扳机就把字段打完为止. 全自动程序如下,诸位拿下去后可以修改成自己想 ...
- Mosquitto配置----日志设置
https://blog.csdn.net/u012377333/article/details/71101725 # ======================================== ...
- MiniUI表单验证总结
原文地址:https://www.cnblogs.com/wllcs/p/5607890.html 1,页面效果图 2,代码实现 <!DOCTYPE html PUBLIC "-/ ...
- win cmd 设置代理
windows: HTTP(S)代理服务器:127.0.0.1:5783 SOCKS代理服务器:127.0.0.1:5789 set 2 set http_proxy=socks5://127.0.0 ...
- Flutter 介绍、运行环境
Flutter 是谷歌公司开发的一款开源.免费的移动 UI 框架,可以让我们快速的在 Android 和iOS 上构建高质量 App.它最大的特点就是跨平台.以及高性能. Flutter 基于谷歌的 ...