HUSku

Projektin loppuunvienti

Mika Kumanto

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

Loppu - Kiitos!

Postia? mika.kumanto@gmail.com

“Play Hard, Go Pro! cu @ cpl”