LoRA Organisationsservice
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å
- Objektunderstøttelse
- Bitemporalitet
- Skalérbarhed og performance
- Hændelsesdrevet opdatering
- 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
Princip | Implikation |
---|---|
En opdateringsfrekvens, der giver nyeste data foretrækkes | Batch jobs undgåes, beskeder foretrækkes |
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 |
Princip | Implikation |
---|---|
RabbitmQ skal bruges | AMQP protokol |
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.:
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. |
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
[OBS! Diagram mangler]
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.
- Generering af en database med objekttyperne Organisation, orgEnhed, orgFunktion, Bruger, It-system, Interessefællesskab.
- Databasen tilgås via PL/pgSQL, der udstiller funktionerne, herunder Søg/List funktionerne.
- 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:
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).
Man kan søge på relationer til et objekt ved at angive
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:
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:
|
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
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.