atlassian JIRA 插件开发(六) — JIRA系统的插件体系,总体一瞥

【原文地址:http://blog.sina.com.cn/s/blog_3e7397cf0100k395.html,原作者博客:Rocky的博客http://blog.sina.com.cn/yuzhenxin


JIRA系统是一个非常优秀的项目管理系统,在JIRA系统上可以进行流程定义、表单定义、丰富的权限管理等等。但其最有特色的,我认为还是其高可配置、灵活的插件体系。在JIRA所提供的插件体系下,我们可以进行二次开发,通过功能扩展以满足差异化的需求。如:自定义菜单、扩展自定义属性、扩展流程的验证规则、扩展流程的流转条件、扩展流程的PostFunction等等。

 

JIRA的插件体系是基于OSGI可插拔式的,每一个插件实际上就是一个jar包。这个插件jar包放到%JIRA_HOME%\atlassian-jira\WEB-INF\lib目录下,重启JIRA系统,即可实现插件的动态部署。(转者注:插件version2,可以采用UPM方式,具体可见:http://blog.csdn.net/yieryi_/article/details/47955167)

 

那么JIRA是怎么能识别出插件的呢?  所有的JIRA插件jar包中,都必须要包含一个以atlassian-plugin.xml 命名的配置文件。下面是一个 atlassian-plugin.xml样例。(以jira-suite-utilities插件的配置文件为例子,红色部分是注释说明)

 

                  name="JIRA Suite Utilities"  plugin-version="2">

     

           Many objects to extendJIRA

           0.7.7

          

           

        

 

     

     

                     class="com.atlassian.jira.issue.customfields.impl.TextCFType"

                     i18n-name-key="custom.field.type.text_field.name">

         

          Saving locations and showing it atmaps.

         

         

         

          

     

 

      <!—流程流转的条件规则定义,如这里定义了一个“用户是否属于某个群组”的判断条件定义-->

     

                   class="com.googlecode.jsu.workflow.WorkflowUserIsInAnyGroupsConditionPluginFactory">

          It allows only users inany given groups to execute thetransition.

          

          com.googlecode.jsu.workflow.condition.UserIsInAnyGroupsCondition

         

         

          

     

   

    

    

                    class="com.googlecode.jsu.workflow.WorkflowDateCompareValidatorPluginFactory">

         Compare two datefields during a workflowtransition.

        

              com.googlecode.jsu.workflow.validator.DateCompareValidator

        

        

        

         

      

 

     

    

                class="com.googlecode.jsu.workflow.WorkflowCopyValueFromOtherFieldPostFunctionPluginFactory">

        It copies the value ofone field toanother.

       

               com.googlecode.jsu.workflow.function.CopyValueFromOtherFieldPostFunction

        

        true

        false

        true       

        false

       

       

       

    

   

   

   

                                   name="TransitionsSummary Tab Panel"

                                   class="com.googlecode.jsu.transitionssummary.issuetabpanel.TransitionsSummaryTabPanel">

       

       

        

       

    

 

当然,在这个JIRA插件配置文件中,定义的自定义属性、流程验证器、流程流转条件以及流程流转后处理方法等,也是需要按照JIRA的规范实现相关的接口的。这里,暂时先不展开描述。在后续的连载中,尽量详细介绍(因为我很懒,不知道什么时候会更新Blog)。

 

还是以刚刚的jira-suite-utilities插件为例。将jira-suite-utilities-0.7.7.jar拷贝到 %JIRA_HOME%\atlassian-jira\WEB-INF\lib目录下,重启JIRA系统。 登陆JIRA系统,我们在自定义属性中,就可以看见在原有的自定义属性类型中新增加了一种“LocationText Field”类型的字段。(转者注:可以清晰的看到,作者定义的这个插件atlassian-plugin.xml文件中有version=2的字样,所以采用UPM也是可以的。)如下所示:

atlassian JIRA 插件开发(六) — JIRA系统的插件体系,总体一瞥_第1张图片

同样,我们在流程的验证器中,也能发现系统中多了一些原来所没有的验证器,如“User Is In AnyGroups”验证器。

 
atlassian JIRA 插件开发(六) — JIRA系统的插件体系,总体一瞥_第2张图片

选中该验证器后点击下一步:

 atlassian JIRA 插件开发(六) — JIRA系统的插件体系,总体一瞥_第3张图片

以上的这些功能,都是通过插件方式提供的,而没有对JIRA系统做任何破坏性、侵入式的修改!



你可能感兴趣的:(Atlassian,JIRA,插件开发)