www.nr.no SPACE 1 og 2 Integrasjon (nesten) uten programmering Eirik Maus Norsk Regnesentral elandet Norge 19 oktober 2004



Like dokumenter
Vask av kjøretøy og eiere mot registeret infotorgkjøretøy

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

UNIVERSITETET I OSLO

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

INF1000 HashMap. Marit Nybakken 2. november 2003

Introduksjon til objektorientert programmering

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Hvordan kan en gjenbrukbar NOARK kjerne bidra til samhandling mellom forvaltningsnivåene?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

2 Om statiske variable/konstanter og statiske metoder.

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Øvingsforelesning 5 Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Øvingsforelesning 5 Python (TDT4110)

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

SQL Server guide til e-lector

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

Objektorientert programmering i Python

UiS-IKT Kompetanse Word Adresselister og fletting

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

Databaser kort intro. Tom Heine Nätt

Spesifikasjon av Lag emne

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

«Nå kommer kommunene» -Fra innovasjonsprogram til praktisk realitet. Lisbet Nederberg og Håvard Wiik, Skedsmo kommune Altinndagen, 3.

IN2010: Forelesning 11. Kombinatorisk søking Beregnbarhet og kompleksitet

Leveranse 2. September 27, 2002

1. Relasjonsmodellen Kommentarer til læreboka

INF1000 Prøveeksamen Oppgave 7 og 9

Innholdsfortegnelse. 1. Testing Feiltesting av koden Funksjonstesting: Kilder.10

INF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)

INF2220: Forelesning 3

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

AlgDat 10. Forelesning 2. Gunnar Misund

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

Ansvarsdrevet OO: CRC og UML Sekvensdiagrammer

1 Inledning. 1.1 Presentasjon. Tittel Informasjonsplattform for NorgesGruppen. Oppgave Utvikle en informasjonsplattform for butikkene i NorgesGruppen

Workshop NGIS API. Lars Eggan, Norconsult Informasjonssystemer desember 2014

Kravspesifikasjon. 14. oktober 2002

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

En beskrivelse av API for innhenting av informasjon fra registeret for sentralt godkjente foretak Direktoratet for byggkvalitet

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF Algoritmer og datastrukturer

PRESENTASJON NORDIG OKTOBER Alle skal kunne teste alt - overalt

Obligatorisk oppgave 1 i INF 4130, høsten 2008

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Mangelen på Internett adresser.

Informasjon Prøveeksamen i IN1000 høsten 2018

Flytte Lønn 5.0 fra SQL 2000 til SQL 2005 / 2008

Video om xid er tilgjengelig her:

SRD GLIS. Cecilie Dortea Gløsmyr, Espen Buø og Henrik Lie

AMS-case. Eksemplifisering av modellbasert. tilnærming til design av brukergrensesnitt

Prosjektoppgave: Bildedatabase. TDT4145 Datamodellering og Databasesystemer. Våren 2007

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

Eksamen i Internetteknologi Fagkode: ITE1526

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Veiledning til bransjenorm for opphør av forsikringer

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Technical Integration Architecture Teknisk integrasjonsarkitektur

Øvingsforelesning 1 Python (TDT4110)

Oppdatering av person/studentforekomster i FS mot folkeregisteret

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

En oppsummering (og litt som står igjen)

Steg 1: Rest etter divisjon

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Hvorfor objektorientert programmering?

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

INF1000: Forelesning 7

5XQH.MHOYLN )URQW3DJHRJGDWDEDVHU

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Etiming på nærløp. Dersom du får opp vinduet under er filene fra forrige løp flyttet, og du må oppgi hvor systemfilen ligger.

Småteknisk Cantor Controller installasjon

Et lite oppdrag i bakgrunnen

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Fra krav til objektdesign

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

Helhetlig integrasjonsplattform. Per Olav Nymo

Norsk informatikkolympiade runde

TDT4105 Informasjonsteknologi, grunnkurs

Tillatte hjelpemidler: alle skrevne og trykte. Antall sider: 2 (+ 1 side vedlegg, bakerst). Oppgave 1 [25%]

Prosjektoppgave: Bildedatabase. TDT4145 Datamodellering og Databasesystemer. Våren 2008

Oppsett «Visma Contacts»

CORBA Component Model (CCM)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

EKSAMEN I FAG SIF MMI OG GRAFIKK Lørdag 16. august 2003 Tid: kl

Generiske mekanismer i statisk typede programmeringsspråk

INF1010 MVC i tekstbaserte programmer

Nyheter i DSB-CIM 8.30 Nyheter i tilleggsmoduler One Voice AS

Spesifikasjon av Lag emne. Kursregistrering bruksmønstermodell (ny versjon) Dagens forelesning. Fra krav til objektdesign

Transkript:

SPACE 1 og 2 Integrasjon (nesten) uten programmering Eirik Maus Norsk Regnesentral elandet Norge 19 oktober 2004

Temaer Offentlig integrasjon og portal WebServices og andre tjenestegrensesnitt Space-prosjektet 1995-1998 Erfaringer til foredling og videreføring i space 2

Offentlig integrasjoner Grunnleggende prinsipper La datamaskiner gjøre jobben med å hente, fylle inn, søke og utveksle informasjon, ved å la tjenestene være tilgjengelige for dataprogrammer over internett, ved å definere sammensatte datatyper (tilsv. papirskjemaer ), definere tilgjengelige grensesnitt, med navngitte funksjoner, som tar imot og/eller utleverer slike skjemaer i utfylt tilstand til programmet som brukte funksjonen. (og lage logikken som får dette til å skje)

Informasjonsrelasjoner: eksempel Person. Pnr: siffer[11] Navn : Adresser : * AdresseRelasjon. Person Adresse AdrType 1 PersonNavn. Fornavn : tekst Mellomnavn : tekst Etternavn : tekst 1 NB: en person kan bare ha en adresse av hver type; alle personens adresser må ha forskjellig type, unntatt feriebolig, som det kan være flere av Adresse. Gatenavn: tekst Gatenr: heltall Bokstav: tekst Poststed En av: {folkereg, bosted, pendlerleil, arbeid, feriebolig} Poststed. Postnr: siffer[4] Poststed: tekst

Tjenestegrensesnitt: eksempel Datatype Person { siffer[11] Pnr, Navn navn,... } Interface PersonRegister { MessagePort: getfolkeregaddress - Inputs: Person p - Outputs: Adresse a MessagePort: lookuppersons - Inputs: Text fornavn, Text etternavn - Outputs: Person[] treff } MessagePort: addnewaddress - Inputs: Person p, Adresse a, AdrType t - Outputs: none

Tjenestefunksjonalitet Det som står igjen er Lage programmet på baksiden som gjør noe når de ulike meldingene kommer inn Koble det til eksisterende datasystem Publisere tjenesten på en server Lage program som benytter tjenestene Klientprogram Service I.F. Programkode Database

SPACE 1994-1998 Single Point of Access for Citizens in Europe Case: flytte i EØS-området Alle har rett til å bosette seg i EØS-området Men må på ørten offentlige kontorer Registrere ny adresse i folkeregisteret, Flytte helse- og pensjonsforsikring, barnehagesøknad, importere bil, innregistrere i skattelister, Vise oversatt helseattest, passnummer, vielsesattest, Hva hvis alt dette kunne hentes elektronisk? Med ETT besøk På ETT kontor

SPACE demonstrator-system Demonstrator for flytting med automatisk overhenting av nødvendig registreringsinfo 3 use-cases Give-Tailored-Advice Prepare-Portfolio : Retrieve-and-Open-Portfolio

Oppbygning og ansvar Citizen Data System wrapper database-interface Sector Expert object S E SE Sektor-spesifikke regler Country Master Nasjonale regler Andre land CM CM Egne sektorer Klient Egen CM K Brukerdialog-motor

Likheter og ulikheter Alle har 5 sektorer Men med ulikt ansvar Alle har regler for info de trenger til registrering Men ulike regler i hver sektor og land Alle sektorer har datasystemer som kan levere info Men ulike datasett hvert sted Ulike nøkler behøves Og ulike krav Alle må stille brukeren spørsmål Dessuten: brukere må få dialogen på ulike språk Ulike spørsål og betingelser for når

Konsekvenser Veldig mange land (12), sektorer (60) og datasystemer (hundrevis) En implementasjon per tilfelle alt for dyrt Standardiserte grensesnitt/tjenester utenkelig Alle sektorer ulike fra land til land, ulike regler Standardisert datastruktur/metadata umulig Samme sektor har ulike databaser i landene Ulike skjemaer og krav til registreringsinfo

Løsninger 1 : alle datatyper ut av programmet IKKE lag hardkodede datarelasjoner i programeller grensesnitt-koden Trekk data og datastrukturer ut av meldingstypene Lag generell DataFelt-type Med unike ID er for de ulike felt-typene som er med i Space-systemet La alle metoder ta imot / returnere / behandle mengder av DataFelt DataFelt. Verdi : text Verditype: {tall, tekst, sant/usant} Kilde : datakilde-id Feltnavn : NormalisertFeltNavn... Nfn_person_fornavn Nfn_person_etternavn Nfn_person_fodselsaar Nfn_antall_barn Nfn_bil_merke Nfn_bil_modell (ca 100 ulike felt-typer)

Løsninger 2 : Beskriv Persondatasystemene For hvert datasystem (x/folkeregisteret) Beskriv hva som kan slås opp og hvordan Hvilke NFN er kan slås opp her? Hvilke NFN er trengs som nøkkel til hvert oppslag? Når noen spør etter et datafelt, er det bare å finne databasen som inneholder feltet!

Løsninger 3 : Fjern faste brukerdialoger Skal uansett bare spørre om det som er nødvendig Ingen faste skjerm-skjemaer Dialoger lagres i sentral database Med ID og språk; Slås opp og vises ved behov

Løsninger 4 : Regelstyrte dialoger Brukerspørsmål gir resultat: DataFelt med NFN og verdi Regler avgjør hvilke dialoger som må vises Evaluerer reglene på bakgrunn av tidligere spørsmål og svar DataFelt med NFN og verdi Hvert land / sektor har egne dialog-regler i egen database

Løsninger 5 : Eksplisitte Regler for dok-krav Hovedspørsmålet: Hvilken dokumentasjon trenger hver sektor i det nye landet for innregistrering? Enkelt regelsett per land og sektor: if nfn_tar_med_bil = true then require nfn_bil_merke, nfn_bil_modell...

Gang i programmet 1. Bruker velger destinasjonsland 2. Henter generell dialog fra landet 3. Henter dialog-spørsmål på rett språk og viser 4. Henter spesifikk dialog fra sektorene i dest-land 1. Sektorer sjekker generelle svar mot regler 2. Returnerer mer spesifikk dialog iht regler 5. Henter krav til info / dokumentasjon fra dest-land og sektorer 1. Sjekk svar mot regler om krav 2. Returner de hvor regel traff 6. Skaff fra databaser 1. hvilke databaser har disse info 2. Hva trengs av nøkler? Spør bruker hvis mangler 3. Slå opp data 7. Pakk og send til mottaker(e)

GENERIC TECHNICAL CONCEPT On Top of Existing System SPACE Generic Design Implementation Design Implementation Design Implementation Design Specific Regulations, rules, policies Regulations, rules, procedures Implementation, access, security SPACE system Citizen (Client) Country (Master) Sector (Expert) Access (CDS) Existing sector based information system Scalability New countries can be added by filling inn data for a country master. New sectors can be added by filling in data for a sector expert and access to information systems.

Resultater 1: Skille oppgave og policy Oppgave Finn ut hva som trengs for å registrere flyttet person Still nødvendige spørsmål Finn ut hva som kreves av input til de ulike Skaff riktige data og send over Policy ( forvaltningslogikk?) Hvilke regler som gjelder Hvilke data som trengs under hvilke betingelser Hvor dataelementer finnes Hvordan man slår dem opp Hvordan spørre bruker om det som ikke finnes lagret

Resultater 2: Gjenbrukbar kode En sektor-regelmotor-implementasjon kan brukes for samtlige 60 sektorer Må kun fylle regel-databasen med andre regler Kan tilpasses nytt lovverk på 15 minutter! Bare skriv om regler som blir påvirket og restart INGEN REPROGRAMMERING Ingen program-messige bindinger til lovverket

Resultater 3 : Men virker det da? Det er jo bare en demonstrator Identisk kopi av finsk folkeregister ble tilknyttet systemet Plunder pga ikke-støttet hardware-plattform Totalt tidsforbruk: 50 timerverk

SPACE2 : forbedringer 1 Enklere dialogmekanisme. Knytt brukerdialog direkte til NFN Skal jo uansett spørre om det som ikke kan finnes i databaser og gjøre om svaret til NFN Støtt data-relasjoner og flere objekter Space 1 har bare bilens alder barnets navn, personens navn osv.

SPACE2 : forbedringer 2 Støtt flere og vilkårlige mål for bruker Ikke bare flytt til riket Støtt nesting av mål: fraværsmelding + grunn:syk => utfør mål:sykemelding Støtt vilkårlig lange runder med å evaluere betingelser for dialog / data som behøves Ikke bare 2 runder (land-regler + sektor-regler) Enklere men kraftigere regler, et sted mellom SQL og Excel-formler

Konklusjon Integrasjon mellom sektorer mulig nesten uten programmering Endring av reglene er hvertfall mulig uten programmering Noe må lages for hånd Hente data ut av databasen og lime det inn i fagsystem Slipper vi de dyre konsulentene? Ja, hvis dere klarer å lage reglene selv...

Konklusjon 2 Forutsetning for suksessen: Modellere data og relasjoner først Databeskrivelser utenfor systemet, ikke del av grensesnitt Modellere forvaltningsregler utenfor implementasjonskoden Lage generiske, fag-uavhengige grensesnitt for utveksling av regler og datafelt

Offentlig integrasjon: aktuelle problemstillinger Sentralisert portal eller adhoc-linker ved behov? Enhetlig strukturering av hvordan info-elementer henger sammen med hverandre først eller funksjoner/grensesnitt først og se hva de trenger av info inn og ut for å fungere Ad-hoc tjenestegrensesnitt eller noen (få?) standardiserte grensesnitt-typer

slutt Spørsmål?

Reserverfoiler: integrasjon

Fort og gæli: Lappverkintegrasjon Tenkt avdeling med 4 siloer (En fylkesmiljøavdeling i danmark hadde 47 siloer i daglig bruk) System B System D Det er jo dumt å skrive ting inn i A og B som alt finnes i C Data så da bare henter vi ut data fra C til A vi kan gjøre det samme igjen System A Data System C Data

Hmmm Og så lager vi noen nye tjenester på tvers av de gamle systemene B D Data Ja, god ide. Vi kan gjøre det flere ganger A C Data Data

Dobbelt-hmmm Hei, vent, dataene er jo ikke like Nei, men vi bare setter opp en boks som oversetter mellom dem, det er enkelt Oversetter 7 A B Oversetter 5 Oversetter 6 Oversetter 1 Oversetter 4 Oversetter 2 Oversetter 3 C D Data Vi bruker XML! Det kan vi gjøre alle stedene. Det går fort. Data Data Hei det er fra Drift. Kan vi ta ned system C for vedlikehold?

Trippel-hmmm Ledelsen: Vi lager noen nye integrerte tjenester på tvers av de gamle fagsystemene Ja, integrasjon er synergi Oversetter 7 A B Oversetter 5 Oversetter 6 Oversetter 1 Oversetter 4 Oversetter 2 Oversetter 3 C D Data Data Data Hei det er fra Drift. Den gamle serveren stoppet. Vet dere hvilken rekkefølge det skal startes opp i?

Hva skjedde? Hva gikk galt? Ingen oversikt over hva som finnes av data i systemet og hvor det kommer fra Kan aldri fjerne eller stoppe noe: Ingen aner sammenhengen, rekkefølgen eller konsekvensene av de mange ulike systemene Enhver feil kan forplante seg hvor som helst Hva er bra? Fikk resultater tidlig. For tidlig?

Reserverfoiler : space 2

Space 2.1: Lag oversikt over data Hvilke data finnes? Hvor? Og hvordan hente verdien for det feltet? Meta-Data-system Hva slags data finnes? Metadata Hvor er det lagret? Hvordan slå dem opp? A Data B C Data D Data

Space 2.2: Koordinert datainnhenting hent kunde.kategori Generell felles tjeneste for å hente data ut fra hvilket som helst system Meta-Datasystem Hva slags data finnes? Koordinert Data-aksess Finn hvordan Hent En lokal oversetter for hvert system Ikke en per klient Ganske like: mye gjenbruk Hvor er de lagret? Hvordan slå dem opp? A C B D

Space 2.3: Integrerte tjenester NÅ kan integrerte tjenester lages uten å skape kaos Kan alltid sjekke i regler og metadata om et system er i bruk Integrerte tjenester Sjekk regler Tjeneste eller mål for oppgave Hent eksisterende data Koordinert Data-aksess Registrere nye data Trenger ikke tenke på hvilke systemer data ligger i MetaDatasystem B A C D Kontrollert levering / registrering

Space 2.4: Regel- og måldefinerte tjenester Mål: Nye tjenester (av liknende type) uten å programmere! (typisk oppgave: registrere-bestilling-stamkunde ) Spesielt for hver tjeneste Målet / oppgaven som utføres Hvilke data som skal fylles inn: regler Felles for hver tjeneste / oppgave Måte å navngi oppgaver (og del- / underoppgaver) Måte å hente data Måte å angi hvilke data som må innhentes til oppgaven Men hva med? Måte å finne ut hvilke data som trengs til oppgaven Brukergrensesnitt?

Space 2: Regel-basert tjeneste Bruker-grensesnitt Bruker-dialog Tjeneste eller mål for oppgave Mål Spør bruker Regelstyrt tjeneste-lag Sjekk regler Regler Hvordan spørre bruker om denne info? Hent eksisterende data Koordinert Data-aksess Levere data B D Kontrollert levering / registrering Meta-Datasystem Meta- Data A C

SPACE 2: Alle sektorer like Felles Meta-Datasystem Regelstyrt tjeneste-lag Spør bruker Sjekk regler Levere data Sektor-oversikt Hent eksisterende data Data-innhenter Regel-innhenter Data-levering Spørsmål Hva Koordinert Data-henter sektorer Regel-henter Felles Regler Levere data Per sektor: Levere data Egne regler Datamottak Hvor Hvordan Meta- Data Sektor-data-innhenting B A Sektor / bedrift / avdeling Sektor / bedrift / avdeling C D Hent sektor-regler Sektor Regler Sektor datamottak