Ranking Plugin

Name Ranking Plugin
Version 0.9.2 - BETA
Author(s) Translucent Technologies
Thomas Peter Berntsen
Kristian Andersen
Homepage http://www.translucent.dk
Price Free
License BSD
JavaDocs  
IssueTracking  
Download JAR translucent-atlassian-jira-plugin-ranking-0.9.2.jar
Previous Versions translucent-atlassian-jira-plugin-ranking-0.9.1.jar
translucent-atlassian-jira-plugin-ranking-0.9.jar
Download Source Coming soon

Description/Features

The Ranking Plugin enables users to create rankings for issues in JIRA.

The plugin may be used for project management and agile development methodologies, where the ability to perform absolute ordering is essential.

This plugin is related to the discussion about a ranking plugin in the JIRA issue "Strict priority for all open issues": http://jira.atlassian.com/browse/JRA-6482

The plugin will be developed with the goal of integrating seamlessly with JIRA, its user interface, and general workflows.

However, modifying the core application logic of JIRA in order to build ranking functionality into various areas of JIRA is undesirable, as most such modifications will lead to a forked JIRA.

We are attempting to find a route which leverages the possibilities of the JIRA plugin architecture and keeps the plugin as non-invasive as possible while supporting as many of the community's feature wishes as possible.

BETA software

This plugin is currently in a beta stage, so it is not at all advised for production use.

We have released it at this stage to accommodate the growing number of inquiries for the plugin, enabling interested parties to evaluate the functionality and provide feed-back.

It has been tested on JIRA 3.7.3 and 3.9 on Linux, OS X and Windows.

Furthermore, expect entries in log files etc., just as a window containing a portlet debug log will pop up when you use the portlet (ignore Netscape-related errors if you're using a Firefox/Mozilla browser).

Generally

The Ranking Plugin allows for any given issue to be part of an unlimited number of rankings.

Any given ranking is based on a filter in JIRA, where the issues in the filter make up the pool of issues in the ranking.

Three types of filters can be used for creating a ranking:

  • A user/personal filter (which a user has personal access to)
  • A group filter (which is shared with a JIRA group)
  • A global filter (which is shared with all users)

Permissions to edit the ranking follow the permissions on the filter which the ranking is based upon. Thus, a ranking based on a personal filter is only visible and editable by the user who has access to the filter, whereas a ranking based on a group filter or global filter is editable also by other people who have access to the filter, eg. the group or anybody.

This functionality enables individuals to create personal rankings and groups, departments, and companies etc. to create more public/official rankings of issues.

Dashboard portlet

The dashboard portlet enables users and project admins to create and view rankings.

The portlet leverages AJAX technology to present a responsive and dynamic user interface, which, among others, enables users to perform drag-and-drop ranking.

Reports

None developed at the moment, but reports could be useful.

Installation

The installation of the Ranking Plugin requires a certain level of technical expertise, and it is advisable that you read the following instructions thoroughly:

Download and deploy the the plugin in your JIRA

  1. Stop your JIRA (advisable)
  2. Copy the JAR file to the plugins folder inside your JIRA installation (typically atlassian-jira/WWB-INF/lib below the main JIRA folder in a JIRA Stand-alone distribution)
  3. Start your JIRA (if you stopped it)

Configure the plugin in your Dashboard

  1. Add the Ranking Plugin Portlet to your Dashboard (preferrably a to a new pane)

Usage

Open the pane that contains the Ranking Portlet. The Dashboard should show a screen containing an image with the text "Tibco General Interface" for a couple of seconds.

When the portlet has been started, you'll see a list of the available rankings. If you've just installed the portlet, you shouldn't see any rankings.

Create a new ranking

  1. Click the button "Create Ranking"
  2. Have a look at the issues in the available filters by single-clicking on a filter in the filter list
  3. Choose a filter as the basis for a new ranking by double-clicking the filter
  4. Enter the name and description for the ranking and click the "Save" button
  5. Open the newly created ranking by double-clicking on the ranking and move the issues around to rank them
  6. Save the ranking when you're done by clicking the "Save" button

A bug is the cause of this cumbersome workflow - in v. 1.0 you should be able to rank issues immediately upon creation of a new ranking (the rank isn't saved as it is now)

Edit a ranking

  1. Click the button "View Ranking" to view the list of rankings
  2. Click the ranking you wish to edit
  3. Rank issues, and edit name, description etc.
  4. Save the ranking when you're done by clicking the "Save" button
    Issue fields
    We have selected some standard fields that are shown as columns for issues in the portlet: Issue Key, Summary, Issue Status, Assignee, and Project Name.
    For now one has to edit the column set-up in the portlet application to enable further columns and change the position of these, but we expect to be able to present functionality in one of the upcoming versions that allow for run-time customisation of the columns.

Examples

Have a look at the "Screenshots" section below.

Version History

Changes from version 0.9.1 to 0.9.2

  • Fixed bug where the plugin would be unable to locate xml schemas for validation of incomming data.
  • Removed some unnecessary files.

Changes from version 0.9 to 0.9.1

  • Fixed bug where xml in various fields would cause the plugin to crash.
  • Fixed bug where an empty description when creating a new ranking would cause the plugin to crash without saving the ranking
  • The save button when creating a new ranking is now only available when a filter has been selected, and a name has been given to the ranking.

Open Issues

Screenshots

Screenshots
(view as slideshow)
       
  Editing a ranking   Showing the list of available rankings (default after launching the portlet)    
 
           
           
 

Labels

 
  1. Aug 04, 2007

    Nayana says:

    hi, thanks for the great plugin. Sorry for the bug report here, since there wa...

    hi, thanks for the great plugin.

    Sorry for the bug report here, since there was no JIRA project for the plugin i didnt want to keep adding to the request ticket,

    Jira version - Enterprise Edition, Version: 3.7.2-#186
    Tomcat version - 5.5.20
    Browser - Firefox 2.0.0.6

    after clicking create ranking and selecting a filter following error message shows up on the screen

    and then tomcat error log shows the following error

    Input: 10160
    PARSING ERROR:
    schema_reference.4: Failed to read schema document 'null', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not .
    Fatal Error:75:23: Element type "http:" must be followed by either attribute specifications, ">" or "/>".
    Failed to parse Document.
    org.xml.sax.SAXParseException: Element type "http:" must be followed by either attribute specifications, ">" or "/>".
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
    at dk.translucent.atlassian.jira.plugin.ranking.helper.JIRAAccess.getIssues(JIRAAccess.java:444)
    at dk.translucent.atlassian.jira.plugin.ranking.servlet.GetIssuesServlet.doPost(GetIssuesServlet.java:41)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at com.atlassian.plugin.descriptors.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:38)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
    at com.atlassian.jira.web.filters.JIRAProfilingFilter.doFilter(JIRAProfilingFilter.java:16)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:41)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.jira.web.filters.RequestCleanupFilter.doFilter(RequestCleanupFilter.java:49)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at com.atlassian.jira.appconsistency.db.DatabaseCompatibilityEnforcerFilter.doFilter(DatabaseCompatibilityEnforcerFilter.java:25)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)

    1. Sep 03, 2007

      Bernard Davison says:

      I'm getting the same error using JIRA Enterprise 3.10.2 Standalone with FireFox ...

      I'm getting the same error using JIRA Enterprise 3.10.2 - Standalone with FireFox 2.0.0.6.
      With Internet Explorer 6 SP1 I don't get any error message, it just fails seamingly silently.
      The log file however contains all the same details.

  2. Oct 16, 2007

    Kristian Andersen says:

    Theres a new version out, which contains some bugfixes. I haven't been able to r...

    Theres a new version out, which contains some bugfixes. I haven't been able to recreate the error you mention, but if its still there in the update please let me know.

    1. Oct 23, 2007

      Jens Utech says:

      Very promising (and very much needed) plugin\! Unfortunately I am getting the sa...

      Very promising (and very much needed) plugin!

      Unfortunately I am getting the same or at least a similar issue to Nayana and Bernard above in JIRA 3.11 Enterprise  and version 0.9.1 of the plugin . (This is an evaluation version only running against hsqldb and the bundled JRA). Browser is IE6 SP2.

      After creating a ranking it will not show up in the available rankings view, instead I get the following error message in the tomcat window:

      PARSING ERROR:
      schema_reference.4: Failed to read schema document 'null', because 1) could not
      find the document; 2) the document could not be read; 3) the root element of the
       document is not <xsd:schema>.

      I couldn't find a stacktrace anywhere though (I wasnt too sure where to look either other than in the top-level logs directory).

      Hope this helps!

      1. Oct 23, 2007

        Kristian Andersen says:

        Thanks for the report. I'll look into it when i can find the time.

        Thanks for the report. I'll look into it when i can find the time.

  3. Jan 03, 2008

    Kristian Andersen says:

    The new version hopefully corrects the error you have experienced.

    The new version hopefully corrects the error you have experienced.

    1. Jan 01, 2008

      Kishore Balakrishnan says:

      Seasons Greetings from Singapore. Please consider providing some more screen s...

      Seasons Greetings from Singapore.

      Please consider providing some more screen shots

      I created an issue today at https://support.atlassian.com/browse/JSP-18538

      See http://www.namastenetizen.com/collatodo/wp-admin/?tag=un

      Is every user able to drag and drop rank the issues and thus arrive at a group/community ranking ?

      Cheers, Kishore.

      1. Jan 03, 2008

        Kristian Andersen says:

        The rankings are connected to filters, so all users who have access to a particu...

        The rankings are connected to filters, so all users who have access to a particular filter will have access to all rankings tied to that filter.

  4. May 15

    David Watta says:

    This plug in doesn't seem to work for JIRA 3.12.1 which is a shame, as it is one...

    This plug in doesn't seem to work for JIRA 3.12.1 which is a shame, as it is one of the killer aps I need for my business. Are there any plans to release this as an updated Beta or to release the actual product?

  5. Jun 05

    carol paige says:

    This looks VERY promising.&nbsp; We are also on 3.12.&nbsp; Can you&nbsp;please ...

    This looks VERY promising.  We are also on 3.12.  Can you please post the source so we can make this workable in the newer verssions!?

    I am receiving the following error:13:38:01.860 jsx3.lang (INFO) - pkg.redefine eg.service

    13:38:01.860 jsx3.lang (INFO) - pkg.redefine eg.service

    13:38:01.870 jsx3.lang (INFO) - pkg.redefine eg.service

    13:38:01.870 jsx3.lang (INFO) - pkg.redefine eg.service

    13:38:01.870 jsx3.lang (INFO) - pkg.redefine eg.service

     
    13:38:31.102 jsx3.net.Service (ERROR) - The call to the operation, 'GetIssues', hosted at '../plugins/servlet/rpGetIssues' has returned an error (HTTP Status Code: '500').

    Description: Internal Server Error

     
    13:38:31.152 jsx3.net.Request (ERROR) - Parsing the result of the request to ../plugins/servlet/rpGetIssues as XML produced an error: [-1072896659] error code: -1,072,896,659, line: 56, character: 6, reason: End tag 'head' does not match the start tag 'link'., source:    </head>, URL:

     
    13:38:31.152 jsx3.net.Service (ERROR) - The call to the operation, 'GetIssues', hosted at '../plugins/servlet/rpGetIssues' did not return a valid response document. The inbound filter (e.g., doInboundFilter()) as well as the inbound mappings (e.g., doInboundMap()) will not be executed.

    Description: Internal Server Error

     
    13:39:04.871 jsx3.net.Service (ERROR) - The call to the operation, 'GetIssues', hosted at '../plugins/servlet/rpGetIssues' has returned an error (HTTP Status Code: '500').

    Description: Internal Server Error