LoRA Organisationsservice

Fra Den Fælleskommunale Rammearkitektur
Skift til: Navigation, Søgning
Laboratorium-label.png
LoRA Organisationsservice
Status-2.png
V. 8918
Om Status

Baggrund

Frederiksberg kommune har besluttet at udvikle og implementere et lokalt organisationskomponent i.e. en central datakilde for autoritative data for organisationer.

Projektet omhandler en open source database for Organisation med rammearkitekturegenskaber, der kan tilgås via beskeder eller SQL samt kan skalere distribution til aftagersystemer.

Systemets arbejdstitel er LoRa Organisationsservice i.e Lokal Rammearkitektur Organisationsservice.

Status

Igangværende

Kontaktpersoner

Marius Hartmann, it og forretningsarkitekt, Frederiksberg kommune.

Beskrivelse

De tekniske og forretningsmæssige krav til et organisationskomponent som overholder standard for Organisation. Det teknologiske valg er fokuseret på

  1. Objektunderstøttelse
  2. Bitemporalitet
  3. Skalérbarhed og performance
  4. Hændelsesdrevet opdatering
  5. Velafprøvet platform (Leverandørunderstøttelse)

Ballerup har offentliggjort PHP script for MySQL konvertering baseret på deres distributionsdatabase for deres organisationssystem, som bl.a har inspireret løsningen. En ufuldstændig liste over aftagersystemer for organisationsdata udgør: FK LIS, telefonbog, AD, Autorisation, STS, Adgangsstyring.

Det er yderligere et krav, at LoRa Organisationsservice opdateres vha. beskeder, se relateret projekt MOX og datasikkerhed

Anvendte principper

Forretning
Princip Implikation
En opdateringsfrekvens, der giver nyeste data foretrækkes Batch jobs undgåes, beskeder foretrækkes
Information
Princip Implikation
Data skal være hændelsesdrevne Ændringer i data skal medddeles omverdenen
Object Orienteret Database foretrækkes Relationel database bør undgås
Applikation
Princip Implikation
RabbitmQ skal bruges AMQP protokol
Teknologi
Princip Implikation
JSON foretrækkes
PostgreSQL foretrækkes Blandt de eksisterende teknologier i FK vil en PostgreSQL evt. på en Windows platform være at foretrække, da kommunen allerede understøtter teknologien og ikke vil blive bebyrdet af yderligere licenser. Det vurderes at PostgreSQL har meget at tilbyde i funktionalitet såvel som i forhold til performance.

PostgreSQL bliver betragtet som en 'highend' avanceret SQL-løsning, der ligger op ad de mere komplekse SQL-typer såsom MSSQL og Oracle DB. Derfor er PostgreSQL et sikkert og klogt valg, hvis man ønsker stor funktionalitet og samtidig ‘value for money’, da de tre databasetyper stort set har de samme mål inden for funktionalitet.

PostgreSQL håndterer og/eller indeholder bl.a.:

  • Bi-temporalitet
  • Komplekse regelsæt
  • Transactions
  • Stored procedures
  • Komplekst/fleksibelt database design
  • Triggers
  • Views

Det har været væsentligt for teknologivalget, at PostgreSQL understøtter bi-temporalitet ud af boksen på lige fod med Oracle eller DB2. MSSQL understøtter kun dette via ekstra moduler.

Sikkerhed
Princip Implikation
Kompatibilitet med STS Adgangsstyring SAML 2.0.9 skal understøttes

Organisation serviceinterface

Serviceinterfacet formidler nedenstående objekttyper og relationer. Objekttyperne i organisation kaldes under et ’Aktør’.

Serviceinterface
Beskrivelse Objekttype
Organisation er alene den juridiske organisation (juridisk enhed). Det kan være en myndighed (ministerium, styrelse,

kommune, …) eller en virksomhed (med cvr-nummer).

Organisation
En organisationsenhed kan være tilknyttet en organisation direkte, indirekte eller slet ikke. En sådan enhed kan være en afdeling, sektion, kontor, udvalg, projektgruppe, styregruppe,

klasse, hold og lignende.

En organisatorisk enhed kan bruges som samlebegreb for et organisatorisk view ind på organiseringen.

Organisations Enhed(OrgEnhed)
It-systemer eller konfigurationselementer, som det er relevant at registrere noget om i organisationen. It-system
Begrebet ’organisatorisk funktion’ anvendes om en funktion eller rolle, som aktør har i forhold til de øvrige aktører. Organisatorisk funktion(OrgFunktion)
Bruger er en aktørtype, som repræsenterer en brugeridentitet – herunder et certifikat. Det kan være en person eller et it-system, som agerer bruger. Bruger
Interessefællesskab er at opfatte som en navngivet samling af personer, som ikke er en juridisk enhed. Dermed reserveres begrebet ’organisation’ til en formel organisation. Men ellers vil et interessefællesskab kunne have samme egenskaber som en organisation. Interessefællesskab
Relationer Objekttype
Klassifikation, der håndterer organisationens branche, opgaver, myndighedstype, enhedstype, it-systemtype, brugertype Klasse

Det bemærkes, at objekttypen ‘Bruger’ indgår som reference i alle de øvrige specifikationer, fordi det er den aktør, der bruges når man registrerer objekterne.

Relationer

Organisation kan have følgende relationer
Beskrivelse Objekttype Kardinalitet Betegnelse
Organisationen tilhører en relateret organisation Organisation 0..1 Tilhører
Organisationen er tilknyttet andre organisationer Organisation 0..n TilknyttedeOrganisationer
Organisationen har en overordnet OrgEnhed OrgEnhed 0..1 Overordnet
Organisationen har tilknyttet et antal organisationsenheder OrgEnhed 0..n TilknyttedeEnheder
Organisationen har tilknyttet et antal OrgFunktioner Org.Funktion 0..n TilknyttedeFunktioner
Organisationen har tilknyttet et antal it-systemer It-system 0..n TilknyttedeItSystemer
Organisationen har tilknyttet et antal brugere Bruger 0..n TilknyttedeBrugere
Organisationen har tilknyttet et antal interessefællesskaber Interessefællesskab 0..n Tilknyttede-Interessefællesskaber
Organisationen er en skatteenhed Virksomhed 0..1 Skatteenhed
Organisationen er en virksomhed Virksomhed 0..1 Virksomhed
Organisationen er en produktionsenhed Virksomhed 0..1 Produktionsenhed
Organisationen er et antal myndigheder Myndighed 0..1 Myndighed
Organisationen har et antal ansatte personer Person 0..n Ansatte
Organisationen har et antal tilknyttede personer. Person 0..n TilknyttedePersoner
Organisationen relaterer til den pågældende Branche Klasse(Klassifikation) 0..1 Branche
Organisationen har relation til et antal opgaver Klasse (Klassifikation) 0..n Opgaver
Organisationen har relation til et antal adresser Adresse 0..n Adresser(alle typer)
Organisation tilføres myndighedstype Klasse(Klassifikation) 0..1 Myndighedstype
Organisation tilføres virksomhedstype Klasse(Klassifikation) 0..1 Virksomhedstype


Funktionalitet

File:Moxsikkerhed.png|500px|Sikkerhedsmodel (Fejl)


Ovenstående diagram illustrerer komponenter og deres afhængighed. Komponenter der er grønne er helt eller delvis genstand for aftalen. Komponenter der er røde, udfører kald til rutiner, der udvikles i anden sammenhæng.

  1. Generering af en database med objekttyperne Organisation, orgEnhed, orgFunktion, Bruger, It-system, Interessefællesskab.
  2. Databasen tilgås via PL/pgSQL, der udstiller funktionerne, herunder Søg/List funktionerne.
  3. REST Serviceinterface. Organisationssservicen skal udstille et serviceinterface, hvorfra applikationer og MOX-agenter kan udføre funktioner på databasernes objekter.

REST interface

https://<host><:port>/<-miljø>/<endpoint>/<-version>/<objektid>/
<?variabel_1=værdi_1><&variabel_n=værdi_n> 
REST interface
Element Beskrivelse Eksempel
<host> Hostnavn svarer til en ip-adresse - Obligatorisk www.vera.dk

www.moxing.dk

localhost

12.234.456.43

<:port> Port skal kun anvendes, hvis den ikke er  :80. :8080
<-miljø> Miljø udtrykker driftsmiljø. –prod er default og behøver ikke angives. Andre miljøer: -test, -demo, -udv, -int, -kopi, … /-test
< endpoint> Objekttype eller service betegnelse. Endpoint kan være hierarkisk: organisation/orgEnhed eller Klassifikation/Klasse eller api/dokument/upload /orgEnhed
<-version> Version af endpoint kan angives, hvis det afviger fra den version der er som default i det pågældende miljø. /-1.2
<objektid> Interfacet anvender kun uuid som identifikation af objekter. Den interne tekniske nøgle anvendes ikke i interfacet. Objektid anvendes når man skal udføre en operation på objektet. Kan udelades, for operationer der arbejder med flere objekter. /ba79f9b5-5418-4fc3-ad12-8b2e829547cd
<?var_1=value_1> <&var_n=value_n> Parameter kan angives som url-parametre – den første skal have et ’?’ – de efterfølgende et ’&’. Variable og værdier svarer til værdier for objektet.

Der er en række standardparametre, der dækker de generelle egenskaber:

  • &virkningFra=<datotid>&virkningTil=<datotid>
  • &registreretFra=<datotid>&registretTil=<datotid>

Er disse ikke angivet sættes de fire værdier til søgetidspunktet – dermed får man ’actual state’. Man kan søge på den brugervendte nøgle for objektet og evt. Angive kontekst afgrænsning for den (typisk den organisation indenfor hvilken bvn skal være unik).

  • &bvn=<kontekst:><brugervendt nøgle> .

Man kan søge på relationer til et objekt ved at angive

  • &<uuid for relationsobjektet> eller &<kontekst:bvn>.

Den finder også selv ud af om det er en uuid eller en bvn og i hvilken rolle og objekttype der opfylder søgningen. Man kan afgrænse til en specifik rolle og objekttype ved at angive disse:

  • &<rolle>:<objekttype>=<uuid>| <kontekst:bvn>

Servicen kan tilbyde mere avancerede parametre – fx mulighed for select-statements på samme måde som Odata (option).

<data> Dataobjekt i det format, som http header angiver Json object
Metode Man kan anvende REST protokollens metoder (GET, POST, PUT, PATCH, DELETE, …) med følgende sammenhæng til de generelle egenskabers operationer:
  • Læs: GET / <objektid>
  • List: GET / <?parametre>
  • Søg: GET / <?parametre>
  • Slet: DELETE /<objektid>
  • Opret: POST <data>
  • Ret: PUT /<objektid> <data>
  • Import: PUT /<objektid> <data>
  • Passiver: PUT /<objektid> <data livscyklus=’PASSIV’>
POST
Header Brugerid, brugerrolle, token mv. sendes med http-header med de tilsvarende betegnelser. Content-Type sættes til det pågældende indhold. Content-Type = application/json

Organisation procestrin

Organisation procestrin


Serviceinterface
Starthændelse Procestrin Sluthændelse Beskrivelse
Klasse ændret Vedligeholder organisation Organisation registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

orgEnhed ændret Vedligeholder orgEnhed orgEnhed registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

orgFunktion ændret Vedligeholder orgFunktion orgFunktion registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

Interessefællesskab ændret Vedligeholder interessefællesskab Interessefællesskab registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

It-system ændret Vedligeholder it-system It-system registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

Bruger ændret Vedligeholder bruger Bruger registreret Vedligeholder omfatter operationerne opret, ret, slet, importer, passiver - de operationer der resulterer i en ny registrering.

Processen kan bruges til replikering eller ny registrering.

Organisation søges Fremfinder organisation Organisation fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.
orgEnhed søges Fremfinder orgEnhed orgEnhed fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.
orgFunktion søges Fremfinder orgFunktion orgFunktion fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.
Interessefællesskab søges Fremfinder interessefællesskab Interessefællesskab fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.
It-system søges Fremfinder it-system It-system fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.
Bruger søges Fremfinder bruger Bruger fremfundet Processen kan fremfinde objekter på grundlag af søgekriterier - herunder objektid, brugervendt nøgle, tilstand, attributter og relationer. Slutbeskeden indeholder en liste med 0, 1 eller flere ID, der opfylder søgekriteriet. Den er en samlebetegnelse for søg, læs og list operationerne.

Organisatiorisk funktion

Sammekædning af Bruger til orgEnhed foretrækkes via orgFunktion

orgFunktion kan have følgende relationer
Beskrivelse Objekttype Kardinalitet Betegnelse
OrgFunktion har relation til et antal organisationer Organisation 0..n TilknyttedeOrganisationer
OrgFunktion har relation til et antal organisationsenheder Org.Enhed 0..n TilknyttedeEnheder
OrgFunktion har relation til et antal It-systemer It-system 0..n TilknyttedeItSystemer
OrgFunktion har relation til et antal Interessefællesskaber Interessefællesskab 0..n Tilknyttede-Interessefællesskaber
OrgFunktion har relation til et antal Brugere Bruger 0..n TilknyttedeBrugere
OrgFunktion har relation til et antal personer Person 0..n TilknyttedePersoner
OrgFunktion har relation til et antal opgaver Klasse Klassifikation) 0..n Opgaver
En OrgFunktion kan have en eller flere adresser forstået som både geografiske beliggenhedsadresse, postboks, adressepunkt) og

elektroniske adresser (telefon, e-mail, EAN-adresse, URLadresse, FOA-adresse) mv.

Adresse 0..n Adresser alle typer)
Organisatorisk funktion tilføres funktionstype Klasse (Klassifikation) 0..1 OrganisatoriskFunktionstype


Implementering

PostgreSQL på Windows platform.

Gevinster

Autoritativ kilde til organisationsdata

  • Høj datakvalitet
  • Sikkerhed
  • Muliggør effektivisering af bruger og medarbejderadministration

Udeståender

Data skal vedligeholdes via kommende ansæt-ændr-ophør arbejdsprocesser.

Referencer

Organisation

Klassifikation