Nord Toelichting Techniek

22
N.O.R.D. Nederlandse Overledene Registratie Donoren "The making of" Tjerk Valentijn ET ICT 27-10-2009

description

 

Transcript of Nord Toelichting Techniek

Page 1: Nord Toelichting Techniek

N.O.R.D.Nederlandse Overledene Registratie Donoren

"The making of"

Tjerk ValentijnET ICT27-10-2009

Page 2: Nord Toelichting Techniek

NORD techniek 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

Page 3: Nord Toelichting Techniek

NORD techniek 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

Page 4: Nord Toelichting Techniek

NORD techniek 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

Page 5: Nord Toelichting Techniek

NORD techniek 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)

Page 6: Nord Toelichting Techniek

NORD techniek 6

Page 7: Nord Toelichting Techniek

NORD techniek 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

Page 8: Nord Toelichting Techniek

NORD techniek 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

Page 9: Nord Toelichting Techniek

NORD techniek 9

Spring MCV

Page 10: Nord Toelichting Techniek

NORD techniek 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)

Page 11: Nord Toelichting Techniek

NORD techniek 11

Integration tests met Spring

Page 12: Nord Toelichting Techniek

NORD techniek 12

Hibernate: Java <--> DB

* Is gericht op de Java ontwikkelaar, maar niet bedoeld om de database te negeren of te verwaarlozen

Page 13: Nord Toelichting Techniek

NORD techniek 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

Page 14: Nord Toelichting Techniek

NORD techniek 14

Hibernate: een voorbeeld

Page 15: Nord Toelichting Techniek

NORD techniek 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

Page 16: Nord Toelichting Techniek

NORD techniek 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'

Page 17: Nord Toelichting Techniek

NORD techniek 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") @Pastprivate 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;

Page 18: Nord Toelichting Techniek

NORD techniek 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/

Page 19: Nord Toelichting Techniek

NORD techniek 19

Page 20: Nord Toelichting Techniek

NORD techniek 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

Page 21: Nord Toelichting Techniek

NORD techniek 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? 

Page 22: Nord Toelichting Techniek

NORD techniek 22

Einde