Web Services i OpenEdge
Tjenesteorientering av ”gamle” applikasjoner, illustrert med eksempler fra Kriminalomsorgen
Progress Brukerforening 30.11.2008
Tormod Sveli
Agenda
• Kort presentasjon• Hva er Web Services?
– Definisjoner, begreper og teknologi
• Kriminalomsorgen– Organisasjon– Fagsystemer og informasjonsflyt
• Praktiske eksempler– Provider– Consumer
• Demo
ProVentus AS
• Konsulentselskap og programvarehus– Etablert oppr. 1992
• Utvikling av kundespesifikke løsninger• Bransjeløsninger• Rådgivning• Teknologiområder:
Nøkkeltall 2004 2005 2006 2007(prognose)
2008Omsetning (1000 kr) 5 400 7 300 9 300 13 900 16 400
Antall ansatte 5 7 9 12 17
Hva er Web Services?
• Åpen standard for integrasjon mellom systemer på ulike teknologiplattformer.
• Forbindes gjerne med en tjenesteorientert arkitektur (SOA) - en systemarkitektur basert på løst koblede ”tjenester”.
• Synkron tjeneste.• Basert på standard protokoller som XML
og HTTP.
Hva kan de brukes til?
• Utveksle data mellom systemer.• Oppslag på informasjon i offentlige
databaser, f.eks Enhetsregisteret:
• Kommersielle informasjonstjenester:– Finans, aksjer, råvarepriser, værvarsel, etc.
Noen begreper
• Web Services Description Language (WSDL)– XML-basert språk som forteller om web-tjenester og
hvordan de skal brukes.
• Simple Object Access Protocol (SOAP)– Protokoll for beskrivelse av formatet på meldinger
som utveksles med en Web Service.
• XML Schema Definition language (XSD) – Brukes for å definere struktur og datatyper for SOAP
meldingen som sendes til og fra en Web Service.
• Mer info:– http://www.w3.org/2002/ws/
Flere begreper…..
• Service provider– Den som eier/tilbyr tjenesten
• Service consumer/requester– Den som kaller/bruker tjenesten
• Service broker– Katalogtjeneste med
informasjon om tilgjengelige tjenester og deres egenskaper.
Kriminalomsorgen
Praktisk kunde case:
Kriminalomsorgens organisasjon
Justisdepartementet
Kriminalomsorgs avdelingen
Kriminalomsorgens utdannings senter (KRUS)
Kriminalomsorgens sentrale
forvaltning (KSF)
6 Regionsko
ntorer 42 Fengsler
46 Friomsorgskontorer
4 Hybelhus / overgangsboliger
Kriminalomsorgens IT Tjeneste
(KITT)
Sentralt nivå
Regionalt nivå
Lokalt nivå
Kriminalomsorgens IT-Tjeneste
• Administrativ enhet i Oslo• Operativ driftsenhet i Horten
– Brukerstøtte, drift og teknisk service– Benytter ITIL (IT Infrastructure Library) som
rammeverk for IT Service Management.
• Landsdekkende, lukket intranett• Sentrale databaser• Applikasjoner distribueres via Citrix• Ca 4000 registrerte brukere totalt
Fagsystemer i Kriminalomsorgen
Kompis Kia• Straffegjennomføring i
fengsel• Fengselsplasser• Innsatte
• Utviklet 1993-94• Progress 10.1B
Fagsystemer i Kriminalomsorgen
Kompis Kif• Saksbehandling av
Straffegjennomføring i frihet
• Soning med elektronisk kontroll
• Utviklet 1995• Progress 10.1B
Fagsystemer i Kriminalomsorgen
Kompis Booking• Registrering av
rettskraftige dommer• Finne ledige
soningsplasser• Innkalling til soning• Begrense soningskø
• Utviklet i 2004• ASP .NET • MS SQL-Server
Fagsystemer i Kriminalomsorgen
DocuLive• Elektronisk dokumentarkiv• Alle dokumenter knyttet til
personer og saker i Friomsorgen
• Skal innføres i alle fengsler
• Innført i 2004• Standardprodukt basert på
Noark4 arkivstandard.• ASP .NET • MS SQL-Server
Øket krav til integrasjon
Dokument
Person/sak
Plasser
Tidl. opphold
Nye dommer
Arkivsak
Hvordan kan vi løse dette?
Innføre tjenesteorientering v.h.a.Web Services!
”KompisWebService” - arkitektur
KIAProgress
KIFProgress
Metode1.p
MetodeX.p
Metode2.p
Procedure Metode1:..End Procedure.*----------*Procedure Metode2:..End Procedure.
Osv.
WebRutKIAPlip
Procedure Metode1:..End Procedure.*------------*Procedure Metode2:..End Procedure.
Osv.
WebRutKIFPlip
pxAppServer
Metode3.p
KriminalomsorgensIntranett
KompisWS.dllKompisWSP.dllProgress.o4glrt.dllProgress.sss.dllProgress.Messages.dllAppServerConnect.dll
Web.config
Http://…/KompisWS.asmx
DatabaseServer
WebServer
Vis Tidligere opphold Kompis Booking
Prosedyre for hver WS metode
Se på ABL-kode
ProxyGen – velg prosedyrer
ProxyGen – generer .Net proxy
Resultat
”Monteres” i et .Net prosjekt
KompisWS.asmx.vbDefiner en function for hver ws metode:
Web.Config
DEMO !
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
Mere ABL-kode
pxConsumer
Kall av metode i ”egen” WS (fra Kif til Kia)
• Bruker WS for integrasjon mellom 2 Progress appl.:
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
Kall av ekstern WS-metode
• ”HentSakerForEnhet” fra Booking WS:
ConnectBookingWebService
px2TT.p
• Connect Appserver:
px2TT.p - forts
• Kjør ”WebServiceConsumer” på Appserver:
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
KompisWSC.p (WS-consumer) 1
• Hvilken webservice, hvilken metode?
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
• Connect ”WebService”:
KompisWSC.p (WS-consumer) 2
• En intern procedure for hver ekstern metode:
KompisWSC.p (WS-consumer) 3
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
• Kjør aktuell metode i ”hWsRutine”:
KompisWSC.p (WS-consumer) 4
• Konverterer XML-data fra wsmetode til dataset:
KompisWSC.p (WS-consumer) 5
Kall av eksterne Web Services
KriminalomsorgensIntranett
Procedure HentSaker.....Run px2TT.p (
Input ipcMetode, input ipcParam,output opcttHandles, output opcErrStatus)
..
..End.
Kompis-Kif applikasjon
DataBaseServer
WebServer
Terminalserver farm
pxKatalog DB
pxAppServer
KompisWSC.p
Procedure ExtMetode1...End./* -------------------------- */Procedure ExtMetode2...End./* -------------------------- */Procedure ExtMetodeX...End.
Http://…/BookingWebService.asmx
Connect pxAppServer – Run KompisWSC.p on hAppserverHdl (Input …., .. , Output…)
Hent saker for enhet
BookingWebService.dllMetode1 …...Metode2 …...
Http://…/BookingWebService.asmx
BookingMS/SQL
px2TT.p
• Overfører data fra dataset til interne T-T’s:
Tilbake i ”Hent Saker fra Booking” . w
DEMO !