Jira provides an API to write directly into their product http://docs.atlassian.com/software/jira/docs/api/latest/ .
They also maintain plugins to the latest Java IDE environments for development, including NetBeans IDE and Eclipse.
The database schema that JIRA uses is also documented http://confluence.atlassian.com/display/JIRA/Database+Schema .
Jira plugins can be found at https://plugins.atlassian.com/search/by/jira , and range from Active Directory, Crystal Reports, MS Project servers, to many customization tools. By using these plugins, users can create their own custom fields, screens and even charts.
The benefits of Jira are listed in their 2004 Software awards, http://www.consensus.com.au/SoftwareAwards/CSAarchive/CSA2004/JIRA.htm .
bin Directory containing the scripts and Tomcat JAR files.
conf The properties and XML files that configure the server, including ports, Admin ports, database connections, etc.
lib The supporting JAR files needed to run Tomcat.
logs log files that are written during runtime and startup.
webapps any WAR files that contain the web applications. WAR files are similar to JAR files except they also contain the Web pages, like JSPs and Servlets. This is where the Flex applications will be stored.
Tomcat, and Catalina, will be the Web Server and Web Services that runs the Jira framework.
This means that application logging will be managed by the Server, JAR files, startup and shutdown scripts, class paths, and most of the directory structure will be managed and modeled after Apache Tomcat.
Jira is deployed with a version of Tomcat that it is tested against and is embedded in the Jira product.
With some skill in JSPs, these pages can be re-written to be customized beyond out of the box Jira. Looking at the default.jsp, it basically redirects the page to the Dashboard, we could change the code to send it to home page first:
To add plugins to Jira is usually just adding a new JAR file, like WorkflowReport-1.3.1.jar, to the “atlassian-jira/ WEB-INF/lib” directory. In this example, new graphics are automatically added to show Jira workflow and configuration in the Jira GUI to support it.
For advanced functionality, a class could be created to debug this plugin as it runs, and the “log4j.properties” (logging) file can be changed to log it running, in the “atlassian-jira/WEB-INF/classes” directory.
This means that normally a plugin is just adding a file, but level of configurability can be taken to extreme by manipulating some of the class files and properties files that run Jira.
Let’s take it to the extreme and look at Jira workflow.
The jira-workflow.xml is the default Jira workflow, more workflows are created with more projects being added to the Jira server.
These new workflows follow the same OSWorkflow format but are now stored in the Jira Database defined in the server.xml.
The database workflows can be handcrafted from http://confluence.atlassian.com/display/JIRACOM/Unordered+workflow+transitions+(eg.+issue+approval ) and http://confluence.atlassian.com/display/JIRACOM/Editing+JIRA+workflow+XML+by+hand
Jira’s default database is the HSSQLDB (Hyper Structured Query Language Database) which is a relational database management system written in Java. See http://en.wikipedia.org/wiki/HSQLDB .
HSSQLDB is loaded at runtime of Jira through its JDBC Java Database Driver, so it does not persist information in a database that is already loaded into the Operating System like MySQL or SQL Server. Therefore, HSSQLDB is normally used in a development environment.
Where is the data saved?
The configuration of the HSSQLDB is saved in the “database/jiradb.properties” file.
The data of the HSSQLDB is saved in the “database/jiradb.script” file.
The HS SQL Jar file is located in the “common/lib” directory and the physical database is in the “database” directory, the HS SQL DB Manager can be called using “ java -cp common/lib/hsqldb-184.108.40.206.jar org.hsqldb.util.DatabaseManager -user sa -url jdbc:hsqldb:database/jiradb” :
Jira doesn’t use straight SQL calls to talk to the database, it uses a Open Source framework called Hibernate. http://en.wikipedia.org/wiki/Hibernate_(Java )
Knowing this is very helpful, especially in logging. If the restore of data does not work due to a change in the database table structure, logging levels can be set in log4j to log the SQL queries from Hibernate. http://confluence.atlassian.com/display/CONF25/Enabling+detailed+Hibernate+logging
Jira uses another Apache Open source framework called Maven to build its code base as well as the plugins. Many pluigns and even some Jira code is available and Open Source. A section on Apache Maven will be given later.
Apache Maven 2 is a software tool for Java project management and build automation.
It uses a .pom file in XML form that will generate a configuration for pulling down libraries from Maven repositories, building the project and even testing the project with results.
See http://en.wikipedia.org/wiki/Apache_Maven , http://maven.apache.org/guides/getting-started/index.html, http://maven.apache.org/guides/getting-started/index.html and http://maven.apache.org/ as a reference.
Jira, not Open Source Even though Jira is not Open Source, it has many, many people that are part of the coding community who discuss its internal working and has documented it. It also appears the ability to modify the internal workings of Jira and all of its components because most portions of the source code appear to be available from vendors wiki pages. Many of the frameworks that Jira utilizes are Open Source.