Architektura aplikace MARBES-JIRA plugin
Tým: GRSS Členové: František Schneider Jaroslav Ráb Lukáš Gemela Jaromír Staněk Upravil F. Schneider F. Schneider
Verze dokumentu 1.0 2.0
Datum 25.3.2012 25.4.2012
1. Obsah 1.
Obsah..................................................................................................................................................... 1
2.
Účel dokumentu .................................................................................................................................... 2
3.
Architektura........................................................................................................................................... 2 3.1
Architektura model-view-controller.............................................................................................. 2
3.2
Použité technologie ....................................................................................................................... 2
3.3
Okolí systému ................................................................................................................................ 2
4.
Databázový model ................................................................................................................................. 3 4.1
Tabulka MC_CATEGORY ................................................................................................................ 3
4.2
Tabulka MC_RECORD .................................................................................................................... 3
4.3
Tabulka MC_ATTACHMENT ........................................................................................................... 3
5.
DataObject Model ................................................................................................................................. 4
6.
View model ............................................................................................................................................ 4
7.
Controller............................................................................................................................................... 4
8.
UML model ............................................................................................................................................ 6
9.
Klíčové třídy a komponenty ................................................................................................................... 7 9.1
Servlety a JSP ................................................................................................................................. 7
9.1.1
Category balíček .................................................................................................................... 7
9.1.2
Record balíček ....................................................................................................................... 7
9.1.3
Attachment balíček ............................................................................................................... 7
9.2
DAO a JavaBeans ........................................................................................................................... 7
9.3
Service ........................................................................................................................................... 7
10.
Struktura ............................................................................................................................................ 7
10.1
atlassian-plugin.xml ....................................................................................................................... 7
10.2
Struktura pluginu ........................................................................................................................... 8
1
2. Účel dokumentu Tento dokument popisuje návrh architektury aplikace, aplikační logiky včetně databázového modelu a použitých návrhových vzorů. Všechny použité techniky jsou zdůvodněny.
3. Architektura 3.1 Architektura model-view-controller Model-view-controller (MVC) je softwarová architekru, která rozděluje datový model aplikace, uživatelské rozhraní a řídící logiku do tří nezávislých komponent tak, že modifikace některé z nich má minimální vliv na ostatní. Proto jsme se ji rozhodli využít, pro případné snadnější změny a celkovou lepší přehlednost system.
3.2 Použité technologie Celá aplikace (systém JIRA) běží na webovém serveru Tomcat. Aplikace (= plugin jira-znalostnibaze-1.0.0-SNAPSHOT.jar) je napsán v jazyce JAVA s tím, že jsou použity další technologie a knihovny, které usnadňují samotný vývoj. Pro přístup do databáze je používán databáze HSQL konektor. Plugin využívá závislostí a implementaci ostatních již existujících pluginů, které se v systému JIRA nacházejí.
3.3 Okolí systému
2
4. Databázový model Všechny tabulky splňují štábní kulturu MarbesConsulting pro pojmenováni. Všechny tabulky mají název s prefixem MC_.
4.1 Tabulka MC_CATEGORY Obsahuje seznam všech dostupných kategorií a uchovává informace o nich.
ID_MC_CATEGORY – identifikátor kategorie NAME – název kategorie DESCRIPTION – popis kategorie ICON – cesta k souboru určující ikonu
4.2 Tabulka MC_RECORD Je vázána na tabulku MC_CATEGORY a obsahuje seznam všech záznamů.
ID_MC_RECORD – identifikátor záznamu ID_MC_CATEGORY – identifikátor kategorie pod kterou záznam padá DESCRIPTION – popis záznamu NAME – název záznamu PUBLICATION_TIME – datum kdy byl záznam zveřejněn LAST_EDIT_TIME – poslední modifikace záznamu USER – uživatel, který záznam vytvořil IS_PUBLISHABLE – určuje, zda je záznam viditelný i pro ostatní uživatele LANGUAGE – jazyk záznamu
4.3 Tabulka MC_ATTACHMENT Tabulka obsahující seznam všech příloh pro daný záznam.
ID_MC_ATTACHMENT – identifikátor přílohy TYPE – typ přílohy (doc, pdf, xls) PATH –cesta na disku k příslušné příloze ID_MC_RECORD – identifikátor záznamu, ke ktérému příloha patří 3
5. DataObject Model Tabulky databáze jsou mapovány na objekty, které obsahují stejné atributy jako samotné tabulky. Každá instance objektu reprezentuje jeden záznam identifikovaného pomocí primárního klíče v databázi.
6. View model View model je realizován pomocí .JSP souborů, které používají webový framework WEBWORK. Každý JSP soubor je nutné registrovat do souboru atlassian-plugin.xml (význam a struktura je popsána níže) pod nějakou vykonávanou akci.
7. Controller Controller je vrstva, která se stará o napojení aplikační logiky s uživatelským rozhraním view. V této vrstvě se nachází JAVA soubory, které se o toto starají v rámci system JIRA. Aby systém JIRA tyto třídy správně interpretoval je třeba aby byly všechny odděděny od abstraktní třídy AbstractMCWebAction(ta je navíc odděděná od JiraWebActionSupport).
4
5
8. UML model Zjednodušený UML model tříd.
6
9. Klíčové třídy a komponenty 9.1 Servlety a JSP Starají se o aplikační logiku a zpracovávají jednotlivé požadavky, které přijdou od uživatele z vyšší vrstvy view. Všechny dědí od AbstractMCWebAction. JSP jsou psány pomocí frameworku WEBWORK. Jednotlivé začleňování má pak na starosti PICO CONTAINER. 9.1.1 Category balíček Třídy pro práci a manipulaci s kategoriemi.
CreateCategory.java DeleteCategory.java ListCategory.java ViewCategories.java
9.1.2
Record balíček CreateRecord.java DeleteRecord.java PublishRecord.java ViewRecord.java ViewRecordsAdmin.java
9.1.3
Attachment balíček
9.2 DAO a JavaBeans Práce s perzistentními objekty.
9.3 Service Třídy které jsou používány napříč celým pluginem.
LoggingService – logování (Log4J) IndexRecordService – indexace záznamů (Lucene) a vyhledávání RecordService, CategoryService – přístup k databázi vytváření perzistentních objektů
10. Struktura 10.1 atlassian-plugin.xml Tento XML soubor popisuje plugin samotný a definuje dostupné rozhranní a jejich implementace. V tomto souboru se registrují jednotlivé JSP soubory, třídy rozhranní pro DAO objekty a jejich implementace. Dále obsahuje seznam rozhraní pro service třídy a jejich implementace. Tento způsob je používán v pluginu pro vytváření instancí tříd přes reflexi. 7
Zde se rovněž registrují odkazy a akce které se mají provést po kliknutí na odkaz (registrace servletů).
10.2 Struktura pluginu
jar - obsahuje JSP soubory, obrázky, java script, css styly src - zdrojové soubory o main java – java zdrojové soubory resources – atlassian-plugin.xml templates – velocity šablony xml – ostatní xml soubory, definice entit a tabulek pro HSQL databázi o test – adresář pro testování (JUnity…) target – přeložené soubory o jira-znalostni-baze-1.0.0-SNAPSHOT.jar – hotový plugin pro JIRU
8