1. N.O.R.D.
Nederlandse Overledene Registratie Donoren
"The making of"
Tjerk Valentijn
ET ICT
27-10-2009
2. Het project
• Registreren van overledenen in NL ziekenhuizen aan de
hand van medische status en donatieformulier
• In de jaren 90 een diskette-applicatie (zoals vroeger bij de
belastingaangifte), sinds 2001 een web-applicatie
• ~100 ziekenhuislocaties
• ~130 gebruikers (3 tot 5 concurrent)
• 40.000 records per jaar (110 - 150 p.dag)
• Gemiddelde gebruiker heeft nauwelijks
computervaardigheden
NORD techniek 2
3. Problemen met de huidige applicatie
• De oorspronkelijk opzet past niet bij de actuele wensen
• Er is geen consistente GUI
• Het datamodel is niet flexibel
• De gebruikers en de NTS zitten niet op 1 lijn wat definities
betreft
• Er bestaat (in DWH) een complexe, niet transparante laag
met PL/SQL "filters" die conclusies trekken over de
ingevoerde gegevens
NORD techniek 3
4. De oplossing
• Client-server (4e generatie), we maken geen gebruik
meer van de omweg van de 3e generatie web-
applicaties. De server handelt geen GUI events af
• Hoeven dus ook geen HTML op de server samen te
stellen
• Door client-side eventafhandeling kunnen we een snelle
en gebruiksvriendelijke GUI maken zodat de gebruikers
zoveel mogelijk geholpen worden bij het invoeren. Dit is
vergelijkbaar met DPA
NORD techniek 4
5. Waaraan moet een deeloplossing voldoen?
• Een grote 'community' (veel en goede
documentatie, google, forums etc.)
• Voor ontwikkelaars door ontwikkelaars
• Goede testbaarheid
• Vanuit oogpunt van de Java programmeur
• Productiviteit, minder werk zonder flexibiliteit en
transparantie op te geven
• Eenvoud (dingen zijn waar je ze verwacht)
• Modulariteit (verwisselbaarheid)
NORD techniek 5
7. Kenmerken van een REST architectuur
• Alternatief voor SOAP en andere RPC (Remote
Procedure Call) methoden
• Maak gegevens beschikbaar via unieke URLs
• Gebruik de vier werkwoorden van het web (GET, PUT,
POST, DELETE) om de gegevens achter de URLs te
manipuleren
• Werkt client-server waarbij de server geen informatie
over de client bijhoudt tussen requests
• Gelaagdheid, caching, ontkoppeling, schaalbaarheid
NORD techniek 7
8. Spring
Wat krijg je?
•
Goede testbaarheid, Spring regelt de koppeling tussen
objecten en de applicatie kan buiten de server werken
en getest worden
•
Gebruikte frameworks (Hibernate) worden eenvoudiger,
Spring regelt de noodzakelijke "loodgieterij"
Welke onderdelen?
•
Spring IOC (Inversion Of Control) container om
declaratief objecten te koppelen
•
Spring MVC om eenvoudig REST webservices te
maken
•
Spring testframework om persistence te testen in
geisoleerde transacties
NORD techniek 8
10. Alternatieven voor Spring MVC als web-controller
• Handgeschreven servlets (veel programmeren)
• Een JAX-RS implementatie (instabiel, onvolwassen)
• Het Restlet framework (degelijk, maar te veel
mogelijkheden)
• Grails (te exotisch, gebruikt Groovy ipv Java)
NORD techniek 10
12. Hibernate: Java <--> DB
* Is gericht op de Java ontwikkelaar, maar niet bedoeld om de
database te negeren of te verwaarlozen
NORD techniek 12
13. Hibernate: wat heb je er aan?
• Declaratieve manier om Java objecten en een
database te koppelen. In combinatie met Spring wordt
Hibernate nog eenvoudiger
• Declaratieve manier om caching van objecten toe te
passen om de database te ontlasten
• Hibernate update alleen de database als object(en)
daadwerkelijk aangepast zijn
• Zeer configurabel, maar dat is optioneel
• Eenvoudig ontwikkelen en testen tegen een 'in-
memory' database in plaats van een zware Oracle
database via het netwerk
NORD techniek 13
15. JQuery
is voornamelijk een DSL (Domain Specific Language) voor
webpagina's zoals SQL is voor Relationele databases
Wat levert dit op?
• Biedt ontwikkelaars een API bovenop JavaScript om snel
en crossbrowser te kunnen werken met de DOM
(Document Object Model)
• De ontwikkelaar kan DOM objecten eenvoudig selecteren,
groeperen, filteren en bewerken
• Biedt ontwikkelaars een manier om componenten binnen
een GUI los te koppelen door middel van 'custom events'
• Biedt veel plugins en een eenvoudige manier om plugins
te schrijven
NORD techniek 15
16. Testen
Automatisch testen staat centraal in dit project. Middelen?
Client
• Unit tests met Qunit (van de makers van JQuery)
• Functionele tests (use cases) met Selenium
Server
• Unit tests van Java code met JUnit
• Integration tests met Spring, afhankelijkheden zijn tijdens
tests te vervangen door 'test doubles'
NORD techniek 16
17. Bean validation (JSR 303)
• Standaard, declaratief validatieframework voor de
bussinesslaag van applicaties
• Mogelijkheden om de validaties naar meerdere lagen
(database of GUI) te exporteren
• Voorbeeld:
@NotNull(message="is verplicht") @Past
private Date overlijdenDatum;
@Min(value = -1, message="mimimaal 0") @Max(value = 150,
message="maximaal 150")
private int leeftijd;
@NotNull(message="is verplicht") @Pattern(regexp = VALID_PATNUM,
message="mag alleen uit cijfers en letters bestaan")
private String patientNummer;
NORD techniek 17
18. Tools
• Iedere ontwikkelomgeving kan unit tests uitvoeren
• Iedere ontwikkelomgeving biedt hulp om het werken met
Spring en Hibernate te vereenvoudigen
• Iedere ontwikkelomgeving biedt hulp met syntax
highlighting voor Java, JavaScript, CSS, HTML etc.
• Iedere ontwikkelomgeving biedt hulp met refactoring
Verder nog:
• Firefox developer plugins:
• Firebug
• Live HTTP Headers
• Online tools zoals JSLint en:
• http://tools.mozilla.com/
NORD techniek 18
20. Samenvattend: wat werkt?
• REST als communicatie-architectuur
• JSON als communicatieformaat
• GSON om JSON Strings naar Java objecten te vertalen en
weer terug
• Spring MVC om webservices te bouwen
• Spring integration tests en Junit unit tests
• Hibernate om de applicatie aan de database te koppelen
• JQuery selectors, plugins en event-binding
• Bean validation voor declaratieve validaties
• Caching verminderd communicatie tussen lagen,
bijvoorbeeld ETags en Hibernate object cache
• JavaScript als volwaardige programmeertaal
NORD techniek 20
21. Toepasbaarheid op de afdeling
• Hoe snel kan iemand met alleen basale
Java kennis hiermee productief worden?
• Wat is het beste opleidingstraject voor
mensen met alleen basale Java kennis?
NORD techniek 21