zoukankan      html  css  js  c++  java
  • 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,在面板中添加一个过滤器,过滤出需要当前用户参与评审的问题,下面这个就是我的”指定给我的“过滤器:

    [sql] view plain copy
     
    1. 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  
  • 相关阅读:
    AndroidUI组件之ListView小技巧
    iframe属性參数
    Applet 数字签名技术全然攻略
    SoftReference
    递归算法浅谈
    VS2010 打包生成exe文件后 执行安装文件出现 TODO:<文件说明>已停止工作并已关闭
    创建新的Cocos2dx 3.0项目并解决一些编译问题
    ORACLE触发器具体解释
    SRM 624 D2L3: GameOfSegments, 博弈论,Sprague–Grundy theorem,Nimber
    cidaemon.exe进程cpu占用率高及关闭cidaemon.exe进程方法
  • 原文地址:https://www.cnblogs.com/kaola8023/p/8570365.html
Copyright © 2011-2022 走看看