HUSkun tausta
HUS-Servis liikelaitokselle tehty sovellus, joka tarkoitettu sisäisten kustannusten
jakoon koko HUS-kuntayhtymän sisällä.
Alkuun tarkoitettu lähinnä Itellalta tulevien laskujen käsittelyyn.
HUSkun lyhyt historia
- Aloitettu keväällä 2011 Haaga-Heliassa Ohjelmistoprojekti-opintojaksolla
- Alkuun kaksi kilpailevaa projektia, josta käyttöön valikoitui HUSku
- Syksyllä 2011 työt jatkui uuden ryhmän toimesta
- Kesällä 2012 sovellus saatiin ensimmäisen kerran tuotantoon
- Ensimmäinen versio sovelluksesta 0.7 ja työ viimeisteltiin erillisenä toimeksiantona
HUSkun stack
- Java 6 ajoympäristö
- Spring 3.2 -kirjasto (Core, MVC, Integration, Security)
- Java EE 6 (JPA 2.0, Servlet 3.0, Inject, Transaction jne.)
- Jetty web-container
- PostgreSQL-tietokanta, Hibernate ORM-kirjasto
- Windows Server 2008, Apache Commons daemon Procrun
- Google Guava
- Apache Lucene
- AspectJ
- Apache Maven
Tavoitteet
Raportoinnin lisääminen ja parantaminen
Itsestään päivittyvät tapahtumat
Useampien laskuttajien tukeminen
Käyttöliittymän ja suorituskyvyn parantaminen
Raportointi
Alkuperäinen JasperReports-kirjastolla puutteellinen
Lisättiin kaksi uutta raportointitapaa. Selaimessa näkyvä Google Charts ja Apache POI -kirjastolla luotu Excel-raportti
Google Charts esimerkki
Tapahtumat
HUSku-sovelluksessa ajetaan prosesseja taustalla
HTTP-protokolla on tilaton, joten jotain tälläistä:
- Selainlaajennukset (Flash, Java Applet)
- Polling-tekniikat
- WebSocket
- Server-Sent Events
Server-Sent Events
- HTML5 mukana tullut uusi tilallinen protokolla
- Yksisuuntainen liikenne palvelimelta asiakkaalle
- Kaikissa muissa selaimissa tuki paitsi Internet Explorer
- Rakenteeltaan hyvin yksinkertainen:
event: batchevent\n
data: {"time":1416308631476,"title":"Virhe","body":"Virhe","url":"","type":"ERR"}\n\n
Useampien laskuttajien tukeminen
- Laskut tulevat sovellukseen EDI ecXML formaatissa
- Alunperin tuki vain Itellan laskuja, uusi eleb01 ja fi020
- CastorXML-kirjastolla parsitaan ja esimerkki:
<Group25 slot="20">
<LIN e1082="20" e1229="004"/>
<IMD e7077="F" eC273.7008.1="Economy kirje"/>
..
<MOA eC516.5025="203" eC516.5004="147.85"/>
..
</Group25>
UI ja suorituskyvyn parannukset
- Parannettiin käyttöliittymää ja lisättiin ohjeita
- Sivuja pilkottiin osiin ja osa sivuista haetaan Ajax-kutsuilla
- Geneerinen DAO-luokka uusiksi JPA2.0 speksien mukaiseksi
- Säädettiin ORM-kirjaston asetuksia
- Samalla voitiin ajaa Hibernate vs EclipseLink -testit
Hibernate ~500 ms vs EclipseLink ~1000 ms + suola...
Parannettu haku
- Laskurivit jaetaan kustannuksiksi eri kustannuspaikkoihin jakokaavion avulla
- Oikea jakokaavio saadaan hakemalla laskuriville kirjoitettu infokoodi
- Toimeksiantajalta tuli toive parantaa hakuprosessia
- SQL-kyselyn muuntaminen, pg_trgm-moduuli, jne.
- Lisättiin Lucene-indeksi muistiin ja sumea kysely sitä vasten
Infokoodin haku
HUSkun kehitys
HUSkun kehitys part2