<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>JIRA PLUGIN FOR THE ALICE INSTANCE</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>А. Kondratyev</string-name>
          <email>kondratyev@jinr.ru</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>A. Bondyakov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Andrey Kondratyev</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aleksey Bondyakov</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Meshcheryakov Laboratory of Information Technologies, Joint Institute for Nuclear Research</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Russia</institution>
          ,
          <addr-line>141980, Dubna, Moscow region, Joliot-Curie, 6</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2021</year>
      </pub-date>
      <fpage>5</fpage>
      <lpage>9</lpage>
      <abstract>
        <p>As a bug tracking and project management system, the ALICE experiment uses Jira Software, which provides a wide range of configuration options. Jira also allows one to significantly expand the basic functionality with custom plugins. In this work, the LinkedIssuesHasStatus plugin for the JIRA service of the ALICE experiment is developed and implemented. The plugin returns tickets that link issues in the specified status and that are linked with the specified linking type.</p>
      </abstract>
      <kwd-group>
        <kwd>ALICE</kwd>
        <kwd>Jira</kwd>
        <kwd>Java</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Jira [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] is based on Java [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] and runs on several popular database management systems and
operating systems.
      </p>
      <p>The main accounting element in the system is an issue. It contains the project name, theme,
type, priority, components and content. The issue can be extended with additional fields, applications
or comments. It can be edited, or one can simply change its status, for example, from "open" to
"closed". Possible state transitions are determined through a custom workflow. Any changes to the
issue are logged. Jira has a large number of configuration options: for each application, a separate task
type can be defined with its own workflow, a set of statuses, one or several views (screens). In
addition, with the help of so-called "schemes", for each individual Jira project, one can define its own
access rights, behavior and visibility of fields, etc.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Jira features</title>
      <p>
        Table 1 shows popular bug tracking and project management systems, which received updates
no earlier than 2018, and their main features. All information was obtained from open sources and the
Internet. As shown, the Jira server side works with all popular databases and has integration with the
majority of source control systems. Jira enables workflow customization and has different user
interfaces such as applications for Android [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and iOS [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. ALICE Jira instances</title>
      <p>
        The ALICE experiment [
        <xref ref-type="bibr" rid="ref5 ref6 ref7">5, 6, 7</xref>
        ] has two Jira instances, i.e. develop [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and production [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
The develop instance is used to test new features, versions and plugins. The production instance is for
general use. Both instances have the following system specifications:
 Jira v.8.17;
 CentOS 7;
 PostgreSQL.
      </p>
      <p>According to statistics obtained in July 2021, the ALICE Jira production instance has:
 4,350 registered users;
 106 projects in 15 categories;
 32,354 issues;
 68 statuses and 51 issue types;
 more than 20 custom plugins installed;
 API for user and e-group management.</p>
      <p>Due to the large number of users, projects and links between issues, the
LinkedIssuesHasStatus plugin was developed and implemented to make working with issues more
convenient, faster and more efficient. The plugin returns tickets that link issues in the specified status
and that are linked with the specified linking type.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Jira plugins and JQL functions</title>
      <p>Jira plugins are also known as Jira apps or Jira add-ons. These are pieces of software that plug
into the Jira task management platform and provide new and enhanced functionality.</p>
      <p>There are two ways to install plugins into the Jira instance:
 Install the plugin using the Jira marketplace;
 Upload the custom plugin yourself.</p>
      <p>JQL functions are among the extension points that JQL (Jira Quick Language) provides to
developers. Functions allow calculating values at runtime within a JQL query. They are easy to write
and can be surprisingly powerful.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Plugin scheme</title>
      <p>issues that have the requested status is displayed on the screen.</p>
      <p>o It is possible to call a JQL function with more than one status as input parameters. The
output will show a list of linked issues that have a status declared as the first parameter and a link to
the issues with a status declared as the second parameter.</p>
      <p>For example, three statuses "Waiting", "Closed" and "Open" are declared as the first, second
and third input parameters. As an output, issues with the "Waiting" status that have a link to the issues
with the "Closed" status and issues with the "Waiting" status that have a link to the issues with the
"Open" status are shown.</p>
      <p>There are no restrictions on the number of statuses as input parameters.
 The function is called with a status and an inward link type as input parameters.
After all statuses as input parameters it is possible to put an issue link type.</p>
      <p>In Jira, links to issues have 6 default types. Custom types can also be created. These types
have inward or outward descriptions.</p>
      <p>The inward description denotes a description of how the issue is affected by other issues.</p>
      <p>In this case, issues with a status called in the JQL function as an input parameter are collected
from the list of linked issues obtained earlier. After that, the link type from the input is compared with
the list of link types. Issues with an inward link type are collected from the list of issues with the
requested status. Then, using the getValues() method described above, a list of linked issues that have
the requested status and requested inward link type is displayed on the screen.</p>
      <p>o It is possible to call a JQL function with more than one status as input parameters. The
link type should be the last parameter. The output will show a list of linked issues that have a status
declared as the first parameter, a link to the issues with a status declared as the second parameter and
an issue link type requested as the last parameter.</p>
      <p> The function is called with a status and an outward link type as input parameters.</p>
      <p>Another description for issue link types is the outward description, i.e. a description of how
the issue affects other issues.</p>
      <p>In this case, issues with a status called in the JQL function as an input parameter are collected
from the list of linked issues obtained earlier. After that, the link type from the input is compared with
the list of link types. Issues with an outward link type are collected from the list of issues with the
requested status. Then, using the getValues() method described above, a list of linked issues that have
the requested status and requested outward link type is displayed on the screen.</p>
      <p>o It is possible to call a JQL function with more than one status as input parameters. The
link type should be the last parameter. The output will show a list of linked issues that have a status
declared as the first parameter, a link to the issues with a status declared as the second parameter and
an issue link type requested as the last parameter.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Results and future plans</title>
      <p>As a result, the LinkedIssuesHasStatus plugin was developed, implemented and tested on the
ALICE Jira develop instance.</p>
      <p>Based on the logs, the following results were obtained:
 The developed plugin is workable;
 No errors were found while the plugin was running.</p>
      <p>Future plans:
 Integrate the plugin into the production instance;
 Update the plugin regularly;
 Identify and correct errors.</p>
    </sec>
    <sec id="sec-7">
      <title>7. References</title>
      <p>main page // URL: https://www.atlassian.com/ru/software/jira (accessed</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>[1] Atlassian Jira</source>
          <volume>01</volume>
          .
          <fpage>07</fpage>
          .
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2] Java main page // URL: https://www.java.
          <source>com/ (accessed 01.07</source>
          .
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3] Android main page // URL: https://www.android.com/intl/ru_ru
          <source>/ (accessed 01.07</source>
          .
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4] iOS main page // URL: https://www.apple.com/ru/ios/ (accessed 01.07.
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>ALICE</given-names>
            <surname>Collaboration</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Carminati</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Foka</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Giubellino</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Morsch</surname>
          </string-name>
          , G. Paic,
          <string-name>
            <surname>J-P Revol</surname>
          </string-name>
          et al.,
          <source>ALICE: Physics Performance Report - Vol</source>
          .
          <volume>1</volume>
          // J. Phys. G: Nucl. Part.
          <string-name>
            <surname>Phys</surname>
          </string-name>
          . - №
          <fpage>30</fpage>
          -
          <lpage>2004</lpage>
          - PII:
          <fpage>S0954</fpage>
          -
          <volume>3899</volume>
          (
          <issue>04</issue>
          )
          <fpage>83684</fpage>
          -
          <lpage>3</lpage>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>ALICE</given-names>
            <surname>Technical Design</surname>
          </string-name>
          <article-title>Report: Upgrade of the Online - Offline computing system</article-title>
          ,
          <source>J. Adam et al. // Tech. rep. CERN-LHCC-2015-006/ALICE-TDR-019 - 2015</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <article-title>[7] Interaction technology of the jAliEn client and ALICE central services</article-title>
          ,
          <string-name>
            <surname>Korenkov</surname>
            <given-names>V.V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kondratyev</surname>
            <given-names>A.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bondyakov</surname>
            <given-names>A.S.</given-names>
          </string-name>
          // Modern Information Technologies and IT Education, Vol.
          <volume>3</volume>
          , ISSN:
          <fpage>2411</fpage>
          -
          <lpage>1473</lpage>
          - 2019, in Russian
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>ALICE</given-names>
            <surname>Jira</surname>
          </string-name>
          develop instance // URL: https://dev2.its.
          <source>cern.ch/ (accessed 01.07</source>
          .
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>ALICE</given-names>
            <surname>Jira</surname>
          </string-name>
          production instance // URL: https://alice.its.
          <source>cern.ch/ (accessed 01.07</source>
          .
          <year>2021</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>