Page tree
Skip to end of metadata
Go to start of metadata


Denne side indeholder en anvenderrettet beskrivelse og dokumentation af grunddataprogrammets historikmodel ved anvendelse og implementering af bitemporalitet.

Dokumentet er opdelt i en mere generel forretningsvendt del, hvor der primært er fokus på virkningsdimension for data, og en del der primært henvender sig til en mere teknisk og udviklerorienteret gruppe, som har behov de specifikke datamæssige og implementeringsmæssige detaljer.

Afslutningsvis henvises til registerspecifikke sider omhandlende bitemporalitet, som giver overblik i de registermæssige forskelle, der er i implementeringen af bitemporalitet for de forskellige registre, afledt af forretningsmæssige behov eller leverandørspecifikke teknologivalg.






Indledning til historik

Hvorfor har vi brug for historik, og hvor kommer krav til historikken fra?

  • Det kan være afledt af lovgivningsmæssige forhold, der beskriver at historik skal være tilgængelig eller at en lov f.eks. træder i kraft en bestemt dato, og at sager før denne dato forholder sig til ældre lovgivning
  • Der er historik i forhold til sagsbehandling- hvornår og på hvilket grundlag er sagen behandlet og afgjort
  • Der kan være sammenhæng til arkivering og mulighed for at arkivere et tidsmæssig forløb

Banker har anvendt dobbelthistorik i lang tid, hvor der fx på en kontooversigt både opereres med en Bogføringsdato og Rentedato. Bogføringsdatoen er hvornår banken har registret transaktionen på din konto, og Rentedato er dato for hvornår transaktionen har effekt/gyldighed på din saldo.

Hvad hvis vi ikke har historik i det hele taget?

Det vil betyde at man kun har gældende version. Gældende version betyder, at man kun har en udgave/version af et givent dataobjekt, og dette er altid den der gælder. Hvis man laver ændringer til dette f.eks. opdaterer en attribut, kan man ikke se, hvad den gamle værdi var, eller hvornår data er blevet opdateret og dermed ikke hvilke ændringer, der evt. er gennemført.

Eksempel: Et kundesystem indeholder data om kunder og deres navn

  • En kunde er registreret med følgende data
    • Navn: Kurt Hansen
    • Adresse: Nordhavnsgade 8, 2100 København Ø
    • : +45 21212121
  • Kunde skifter navn til Kurt Nielsen, hvilket registreres i systemet.
    • Navn: Kurt Nielsen
    • Adresse: Nordhavnsgade 8, 2100 København Ø
    • : +45 21212121

Da der er ikke er nogen form for historik, træder ændring i kraft med det samme. Det er endvidere ikke muligt at se, hvad kundens navn var tidligere, samt at se hvornår opdatering i systemet blev gennemført.

Bitemporalitet er også uundværligt, hvis det skal være muligt at gennemføre registreringer, som først træder i kraft på et tidspunkt i fremtiden, således at man kan oprette data, når man kender data, og samtidig give anvendere mulighed for ved selvsyn at se, der kommer ændringer eller oprettelser. Et reelt eksempel her er matrikulær udstykning, der kan oprettes, når det er besluttet, men inden selve udstykning er opmålt og matrikuleret. 

Registrering af dobbelthistorik omkring et forretningsobjekt er relevant i forhold til at kunne registrere og distribuere data, som giver mulighed for sporbarhed i de foretagne registreringer. Sporbarhed er de egenskaber, som et offentligt forvaltningsgrundlag skal kunne understøtte, således det til enhver tid er muligt at fremfinde og dokumentere det datamæssige forvaltningsgrundlag (historiske beslutningsgrundlag), som en myndighed har anvendt som grundlag for en konkret beslutning/sagsbehandling.




Målgruppe

Dokumentet har to målgrupper, hvor de første afsnit af dokumentet primært er rettet mod forretningsanvendere af data fra grunddataregistrene distribueret gennem Datafordeleren.

Afsnittet ”Det registervendte/system perspektiv” og de efterfølgende afsnit i dokumentet, har de mere tekniske anvendere som målgruppe, herunder dataspecialister, systemdesignere, udviklere og modellører, hvorfor de indeholder mere tekniske beskrivelser og detaljer. Denne målgruppe forventes at anvende de tjenester som Datafordeleren udstiller, både REST og fil-udtrækstjenester.






Det primære forretningsmæssige perspektiv på historik (virkningstiden)

Her beskrives virkningstid og den generelle forretningsmæssige anvendelse med eksempler. Dvs. der beskrives alene den ene tidsdimension af dobbelt-historikken.

De forretningsmæssige behov i forhold til virkningstid kan beskrives som 3 entydige udsagn om data:

  1. Hvad er gældende nu?
  2. Hvad var gældende på et givet tidspunkt i fortiden?
  3. Hvad vil være gældende på et givet tidspunkt i fremtiden?

Et typisk eksempel på virkningstid i fremtiden er love og forordninger, hvor det ofte i selve loven er angivet, hvornår den træder i kraft. Eksempelvis angiver Persondataforordningen at den træder i kraft 25. maj 2018.

Virkningstid kan også ses som historikken for data, som vil være relevant at kende i forbindelse med anvendelse af data.

Eksempel med adresse og flytning for Per Jensen. Eksemplet er opbygget, ud fra forudsætning af at dags dato er 01. marts 2018.

Adresse:

  1. januar 2000: Per Jensen bor på Gammel Strand 40, 4. th, 1202 København K
  2. februar 2017: Per Jensen flytter til Ny Strandvej 8, 3060 Espergærde
  3. februar 2018: Per Jensen melder flytning til Strandvejen 23, 4600 Køge pr. 1. april 2018

Forløb for virkning-til og virkning-fra


Adresse

Virkning fra

Virkning til

Gammel Strand 40, 4. th, 1202 Kbh K

01-01-2000

01-02-2017

Ny Strandvej 8, 3060 Espergærde

01-02-2017

01-04-2018

Strandvejen 23, 4600 Køge

01-04-2018



I grunddataprogrammet er der tilføjet en ekstra dimension, da man kan tilføje en status på data, hvorved der kan være flere versioner, der er gældende på et givet tidspunkt. For data i grunddataregistrene er dette gjort ved at dataobjekter inkluderer et statusfelt (Status-attribut).

Dette illustreres bedst gennem nedenstående eksempel:

En adresseflytning kan være midlertidig, f.eks. i forbindelse med ophold i sommerhus eller genhusning.

Det er vigtigt at fremhæve, at betydningen af Status-feltets indhold er både forretnings- og register-specifikt, så anvendere skal altid besøge den registerspecifikke dokumentation for at kunne anvende og tolke data korrekt.

Udvides ovenstående eksempel med Status-felt kan data evt. se således ud (dette er et tænkt eksempel og ikke udtryk for hvordan adresser registreres):

Eksemplet viser at i perioden 01-04-2018 til 31-08-2018 har Per Jensen reelt 2 aktive adresser, nemlig den permanente adresse (folkeregisteradressen) og en ”midlertidig adresse”. Så når man vil finde Per Jensens adresse, skal man som anvender af data, fremsøge adressen med den ønskede Status.


Adresse

Virkning fra

Virkning til

Status

Gammel Strand 40, 4. th, 1202 Kbh K

01-01-2000

01-02-2017

Permanent

Ny Strandvej 8, 3060 Espergærde

01-02-2017

01-04-2018

Permanent

Strandvejen 23, 4600 Køge

01-04-2018


Permanent

Stenvej 16, 3250 Gilleleje

01-04-2018

31-08-2018

Midlertidig


I grunddataprogrammet registreres alle forekomster i systemet/registret med en virkningstid bestående af to tidsstempler - et fra-timestamp og et til‐timestamp, hvor fra‐timestamp er inklusiv og til‐timestamp er eksklusiv.

Virkningstid kan oprettes i fortiden, nutiden eller fremtiden, og skal ikke have overlappende perioder. Dette dog med den tilføjelse, at der skal kun være én gældende virkningstid for en given objektstatus på et givet tidspunkt. Så hvis der kigges på virkningstid alene, kan der forekomme overlap. Dette uddybes i næste afsnit.






Det registervendte/system perspektiv

I Grunddataprogrammet er der i forbindelse med udstilling af data på den fællesoffentlige Datafordeler behov for en stringent måde at definere registreringstid og virkningstid på. Dette er vigtigt, dels fordi data skal kunne sammenstilles på tværs af registre og dels danne grundlag for en bedre og mere effektiv brug af de offentlige grunddata.

Bitemporalitet er et anerkendt begreb, som anvendes i databaser mange forskellige steder i verden og består af:

  • Unik identifikation (UUID)
  • Registreringstid (til og fra timestamp)
  • Virkningstid (til og fra timestamp)

I Grunddataprogrammets modelleringsregler er dobbelthistorik beskrevet til at indeholde de bitemporale egenskaber samt:

  • Registreringsaktør
  • Virkningsaktør

Disse aktørregistreringer kan eksterne anvendere udelade at anvende.

Derudover er der et yderligere krav til at alle objekter indeholder en statusattribut:

  • Objektstatus

Af hensyn til fælles forståelse, implementering og anvendelse, beskrives disse 6 egenskaber under begrebet dobbelthistorik /bitemporalitet.






Dobbelthistorik begreber

Dette afsnit beskriver kort de begreber Grunddataprogrammet anvender i forbindelse med dobbelthistorik.

Beskrivelsen anvender følgende termer:

  • ”Begreb”: Det der fremgår af informationsmodellerne.

  • ”Forretningsobjekt”: En konkret instans af begrebet (har en UUID).

  • ”Forekomst”: De enkelte rækker i tabellen.


Unik identifikation

Alle begreber modelleres med en persistent, unik nøgle af typen UUID (”Universal Unique IDentifier”), dvs. et globalt unikt id, som ikke ændres i et forretningsobjekts levetid.

Normalt vil forretningsobjektet, ud over denne unikke nøgle, have en eller flere forretningsnøgler. Men forretningsnøglerne kan ikke stå alene, da disse i nogle tilfælde ændres over tid, ligesom den samme forretningsnøgle løbende kan indgå i flere forekomster.


Registreringstid

Alle forekomster registreres i databasen med en registreringstid, bestående af to tidsstempler - et fra-timestamp og et til-timestamp. Fra-timestamp er inklusiv, og til-timestamp er eksklusiv.

Registreringstiden er tidsrummet fra versionen registreres til den enten erstattes af en nyere version eller afregistreres (logisk slettes). Registreringstiden er således fortløbende for et givent forretningsobjekt.

Der kan over tid eksistere flere forekomster med samme identifikation, virkningstid og objektstatus. Her vil registreringstid afgøre, hvilken der er/var gældende på et givet tidspunkt.


Virkningstid

Alle forekomster registreres i databasen med en virkningstid bestående af to tidsstempler - et fra- timestamp og et til-timestamp. Fra-timestamp er inklusiv, og til-timestamp er eksklusiv.

Virkningstid kan oprettes i fortiden, nutiden eller fremtiden.

Der skal kun være én gældende virkningstid for en given objektstatus på et givet tidspunkt.

Virkningstid må ikke være overlappende for samme registreringstid og objektstatus.


Objektstatus

Alle forekomster registreres i databasen med en status, der angiver, hvor et forretningsobjekt er i sin livscyklus.


Registrerings‐ og virkningsaktør

De to attributter udfyldes med navn eller id på den person eller det program, der foretager ændringen. Registreringsaktør, er den aktør der opdaterer databasen, virkningsaktør er den aktør, der er forretningsmæssig ansvarlig for opdateringen.

Attributterne udfyldes altid og er, af hensyn til overskueligheden, ikke medtaget i resten af dokumentet, da indholdet ikke anvendes aktivt i forbindelse med dobbelthistorikken.






Generelle regler

Dette afsnit beskriver kort reglerne omkring ovenstående begreber.

Dobbelthistorik registreres pr. forretningsobjekt, dvs. hvert UUID har sin egen dobbelthistorik.

Et ”Null” timestamp betragtes som uendelig, eksempelvis implementeret som 9999-12-31‐ 23.59.59.999999. ”Null” timestamps anvendes kun på registreringTil og virkningTil.

RegistreringFra og virkningFra skal altid udfyldes med et ikke‐fiktivt timestamp. Ligeledes skal objektstatus også altid udfyldes.

Der oprettes altid en ny forekomst i databasen, når en af egenskaberne for et forretningsobjekt ændrer sig. Dvs. at når en forekomst først er oprettet, må den ikke ændres efterfølgende. Eneste undtagelse er opdatering af sluttidspunkt for registreringen (registreringTil), der udfyldes, når en ny forekomst af samme forretningsobjekt oprettes.

Ved oprettelse af et nyt forretningsobjekt sættes forekomstens virkningstid, registreringstid og objektstatus således:

  • VirkningFra = Timestamp for start på forekomstens gyldighed
  • VirkningTil = ”Null” eller slut på forekomstens gyldighed, hvis denne kendes
  • Objektstatus = Forekomstens livscyklus status, gældende for den angivne virkningstid
  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”

Ved ændring af et forretningsobjekt, oprettes en forekomst, hvor virkningstid, registreringstid og objektstatus sættes som ved en oprettelse med følgende tilføjelse:

  • RegistreringTil = Aktuelt timestamp (på den eksisterende forekomst der opdateres)

Der må således ikke opstå ”huller” mellem registreringstiden på de to forekomster.

Følgende use cases kan for ændringer af et forretningsobjekt inddeles i nedenstående variationer:

  • Rettelse af indholdsmæssige fejl til samme virkningstid og objektstatus
  • Opdatering af oplysninger til ny virkningstid og/eller ny objektstatus
  • Logisk sletning af et forretningsobjekt
  • Tilføjelse af historik
  • Flere samtidige versioner

Use casene er beskrevet nærmere i nedenstående.


Rettelse af indholdsmæssige fejl til samme virkningstid og objektstatus

Ved rettelse af indholdsfejl til samme virkningstid, foretages følgende:

  • RegistreringTil = Aktuelt timestamp (på den eksisterende forekomst der opdateres)

Der oprettes en ny forekomst med:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Kopieres fra den forekomst, der rettes
  • VirkningFra = Kopieres fra den forekomst, der rettes
  • VirkningTil = Kopieres fra den forekomst, der rettes
  • Opdatering af oplysninger til ny virkningstid og/eller ny objektstatus

Ved opdatering af oplysninger til ny virkningstid og/eller ny objektstatus

foretages følgende:

  • RegistreringTil = Aktuelt timestamp (på den eksisterende forekomst der opdateres)

Der oprettes en ny forekomst som en kopi af den tidligere forekomst hvor:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Kopieres fra den forekomst, der rettes
  • VirkningFra = Kopieres fra den forekomst, der rettes
  • VirkningTil = VirkningFra på den nye forekomst (nedenfor)

Der oprettes en ny forekomst med:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Forekomstens livscyklus status, gældende for den angivne virkningstid
  • VirkningFra = Timestamp for start på forekomstens gyldighed
  • VirkningTil = ”Null” eller slut på forekomstens gyldighed, hvis denne kendes

Logisk sletning af et forretningsobjekt

Ved logisk sletning af et forretningsobjekt, foretages følgende:

  • RegistreringTil = Aktuelt timestamp (på den eksisterende forekomst der opdateres)

Der oprettes en ny forekomst som en kopi af den tidligere forekomst hvor:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Kopieres fra den forekomst, der rettes
  • VirkningFra = Kopieres fra den forekomst, der rettes
  • VirkningTil = Timestamp for slut på forekomstens gyldighed (tid for sletning)

OBS: Registre med objektstatus ’Nedlagt’ o.lign er ikke en sletning, men en opdatering, hvor objektstatus anvendes til at beskrive en logisk sletning. Logisk sletning skal anvendes, hvis registreret arbejder med flere samtidige versioner.

Tilføjelse af historik

Ved tilføjelse af historik, foretages følgende:

  • RegistreringTil = Aktuelt timestamp (på den eksisterende forekomst der opdateres)

Der oprettes nye forekomster, som kopier, af de objekter, hvis virkningstid er berørt af historik-tilføjelsen: (der kan være tale om en eller flere forekomster)

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Kopieres fra den forekomst, der rettes
  • VirkningFra = VirkningFra, fra den tidligere instans, eller en ny virkningFra, hvis historik tilføjelsen ændrer på virkningFra.
  • VirkningTil = VirkningTil, fra den tidligere instans, eller en ny virkningTil, hvis historik tilføjelsen ændrer på virkningTil.

Der oprettes en ny forekomst med den nye historik:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Forekomstens livscyklus status, gældende for den angivne virkningstid
  • VirkningFra = Timestamp for start på forekomstens gyldighed (start for den nye historik)
  • VirkningTil = Timestamp for slut på forekomstens gyldighed (slut for den nye historik)

Flere samtidige versioner

Ved oprettelse af en ny version af et forretningsobjekt, vil resultatet blive flere forekomster med overlappende registreringstid og virkningstid, men med forskellige objektstatus.

Ved oprettelse af nye versioner, foretages følgende:

Der oprettes en ny forekomst med:

  • RegistreringFra = Aktuelt timestamp
  • RegistreringTil = ”Null”
  • Objektstatus = Forekomstens livscyklus status, gældende for den angivne virkningstid
  • VirkningFra = Timestamp for start på forekomstens gyldighed
  • VirkningTil = ”Null” eller slut på forekomstens gyldighed, hvis denne kendes

Hvis der eksisterer en anden forekomst med samme objektstatus og virkningstid, skal dette objekt først logisk slettes, jf. nedenstående beskrivelse.

Når forekomsten, der beskriver den nye version skifter objektstatus, til samme status som forekomsten der beskriver den aktive version, skal der foretages følgende:

  • Forekomsten for den aktive version skal udgå efter reglerne for ”Logisk sletning af et forretningsobjekt”, hvorved virkningTil angives med tidspunkt (TID) for skiftet til forekomsten for den nye version
  • Forekomsten for den nye version skal opdateres efter reglerne for ”Opdatering af oplysninger til ny virkningstid og/eller ny objektstatus”, hvor virkningFra sættes til TID







Læsning af forretningsobjekter med dobbelthistorik

Læsning af forretningsobjekter, er altid med udgangspunkt i en identifikation, i form af en nøgle (UUID, evt. Fundet via forretningsnøglen) kombineret med virkningstid og registreringstid. For forretningsobjekter med flere samtidige versioner skal objektstatus dog også anvendes. De to tidsangivelser kan både angives som tidspunkter og som perioder, hvor sidstnævnte vil kunne resultere i en liste af forekomster.

Beskrivelserne i nedenstående eksempler tager udgangspunkt i, at der forespørges på tidspunkter – ikke perioder.


Gyldige forretningsobjekter på et givent tidspunkt

Et gyldigt forretningsobjekt på et givent tidspunkt (TID) identificeres som den forekomst af forretningsobjektet, med den nyeste registreringstid (registreringTil = ”Null”), hvor VirkningFra <= TID og VirkningTil > TID.

Et gyldigt forretningsobjekt på et givent tidspunkt (TID) med en bestemt objektstatus (STATUS) identificeres som den forekomst af forretningsobjektet med den nyeste registreringstid, hvor VirkningFra <= TID og VirkningTil > TID og Objektstatus = STATUS.


Genskabning af forretningsobjekter på et givent real‐tidspunkt

Et forretningsobjekt kan genskabes på et givent real-­‐tidspunkt (TID), via registreringstid, ved at hente de forekomster hvor RegistreringFra <= TID og RegistreringTil > TID.

Forespørgslen kan naturligvis også kombineres med andre elementer, fx en given objektstatus eller en given virkningstid.






Eksempler på anvendelse af dobbelthistorik

Eksemplerne er opbygget af en illustration, der grafisk viser sammenhængen mellem registreringstid og virkningstid for de enkelte forekomster i eksemplerne.

Virkningsperioder og registreringsperioder er i eksemplerne for overskueligheds skyld angivet som datoer. De registrerede informationer i databasens tabeller vil naturligvis være af typen ”timestamp” i overensstemmelse med Grunddataprogrammets modelregler.

Eventuelle registreringer forud for den kontekst, som anvendes i eksemplerne er ikke medtaget.

Der er, ud over parametrene til dobbelthistorik, medtaget 2 yderligere elementer:

  • Indhold, der med udgangspunkt i NavngivenVej, illustrerer de forretningsmæssige ændringer i eksemplerne.

  • ID, der er et løbenummer, som er medtaget for at skabe en entydig sammenhæng mellem tabel og illustration. ID vil ikke fremgå af databasen.

I tabellerne er der anvendt følgende farver:

  • Sort tekst betyder eksisterende information i databasen

  • Rød tekst betyder ændringer til eksisterende information i databasen

  • Blå tekst betyder nye informationer i databasen

 I figurer til illustration af de enkelte eksempler er anvendt to farver til illustration af dobbelthistorikken:

  • Rød farve anvendes til at illustrere virkningstiden på en forekomst

  • Blå farve anvendes til at illustrere registreringstider på samme forekomst

Teksten der ses over den røde linje, er forekomstens objektstatus i henhold objektets livscyklus.







Eksempler uden flere samtidige versioner

Oprettelse: I eksemplet registreres det den 18.12.2014, at der oprettes en navngiven vej med status foreløbig pr. 01.01.2015.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

1

xxxx

Københavnvej

18-12‐2014

-

01-01‐2015

-

Foreløbig




Rettelse til samme virkningstid: I eksemplet registreres der den 27.01.2015 en rettelse af en stavefejl i vejnavnet med tilbagevirkende kraft fra 01.01.2015.

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

1

xxxx

Københavnvej

18-12‐2014

27-01-2015

01-01‐2015

-

Foreløbig

2

xxxx

Københavnsvej

27-01-2015

-

01-01-2015


Foreløbig





Ændring i status: I eksemplet registreres det den 16.02.2015 at den navngivne vej gøres gældende pr. 01.03.2015.

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

2

xxxx

Københavnsvej

27-01‐2015

16-02-2015

01-01‐2015

-

Foreløbig

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

01-03-2015

Foreløbig

4

xxxx

Københavnsvej

16-02-2015


01-03-2015

-

Gældende





Ændring med ny virkningstid: I eksemplet registreres det den 17.12.2017 at den navngivne vej skiftede navn pr. 15.12.2017.

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

4

xxxx

Københavnsvej

16-02‐2015

17-12-2017

01-03‐2015

-

Gældende

5

xxxx

Københavnsvej

17-12-2017

-

01-03-2015

15-12-2017

Gældende

6

xxxx

Hovedvejen

17-12-2017


15-12-2017

-

Gældende





Sletning ved statusskifte: I eksemplet registreres det den 16.05.2018 at den navngivne vej nedlægges pr. 20.05.2018.

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

2

xxxx

Københavnsvej

27-01‐2015

16-02-2015

01-01‐2015

-

Foreløbig

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

01-03-2015

Foreløbig

4

xxxx

Københavnsvej

16-02-2015


01-03-2015

-

Gældende





Genoplivning ved statusskifte: I eksemplet registreres det den 05.06.2019, at den nedlagte navngivne vej skal genoplives pr. 01.07.2019.

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

8

xxxx

Hovedvejen

16-05‐2018

05-06-2019

20-05‐2018

-

Nedlagt

9a

xxxx

Hovedvejen

05-06-2019

-

20-05-2018

01-07-2019

Nedlagt

10a

xxxx

Hovedvejen

05-06-2019


01-07-2019

-

Gældende







Fortryd nedlæggelse: I eksemplet registreres det den 05.06.2019, at nedlæggelsen af den navngivne vej skal fortrydes.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

8

xxxx

Hovedvejen

16-05‐2018

05-06-2019

20-05‐2018

-

Nedlagt

9b

xxxx

Hovedvejen

05-06-2019

-

20-05-2018

20-05-2018

Nedlagt

10b

xxxx

Hovedvejen

05-06-2019


20-05-2018

-

Gældende

Bemærk at 9b kun er relevant for forretningsobjekter, hvor der kan eksistere flere samtidige versioner.







Sletning (ikke ved statusskifte): I eksemplet registreres det den 23.08.2020, at den navngivne vej skal slettes pr. 01.09.2020.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

10a

xxxx

Hovedvejen

05-06‐2019

23-08-2020

01-07‐2019

-

Gældende

11

xxxx

Hovedvejen

23-08-2020

-

01-07-2019

01-09-2020

Gældende







Tilføjelse af historik: I eksemplet registreres det den 13.04.2022, at den navngivne vej havde et andet navn i perioden 11.11.2017 – 03.03.2018.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

5

xxxx

Københavnsvej

17-12‐2017

13-04-2022

01-03‐2015

15-12-2017

Gældende

7

xxxx

Hovedvejen

16-05-2018

13-04-2022

15-12-2017

20-05-2018

Gældende

12

xxxx

Københavnsvej

13-04-2022

-

01-03-2015

11-11-2017

Gældende

13

xxxx

Svinget

13-04-2022

-

11-11-2017

03-03-2018

Gældende

14

xxxx

Hovedvejen

13-04-2022

-

03-03-2018

20-05-2018

Gældende







Samlet eksempel: I dette afsnit vises et total-billede af forekomsterne i database, for de ovenstående eksempler, hvis de alle foretages på det samme forretningsobjekt, i den rækkefølge ovenstående eksempler er beskrevet fra oprettelse via forandringer til sletning.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

1

xxxx

Københavnvej

18-12-2015

27-01-2015

01-01-2015

-

Foreløbig

2

xxxx

Københavnsvej

27-01-2015

16-02-2015

01-01-2015

-

Foreløbig

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

01-03-2015

Foreløbig

4

xxxx

Københavnsvej

16-02-2015

17-12-2017

01-03-2015

-

Gældende

5

xxxx

Københavnsvej

17-12-2017

13-04-2022

01-03-2015

15-12-2017

Gældende

6

xxxx

Hovedvejen

17-12-2017

15-05-2018

15-12-2017

-

Gældende

7

xxxx

Hovedvejen

16-05-2018

13-04-2022

15-12-2017

20-05-2018

Gældende

8

xxxx

Hovedvejen

16-05-2018

05-06-2019

20-05-2018

-

Nedlagt

9a

xxxx

Hovedvejen

05-06-2019

-

20-05-2018

01-07-2019

Nedlagt

10a

xxxx

Hovedvejen

05-06-2019

23-082020-

01-07-2019

-

Gældende

11

xxxx

Hovedvejen

23-08-2020

-

01-07-2019

01-09-2020

Gældende

12

xxxx

Københavnsvej

13-04-2022

-

01-03-2015

11-11-2017

Gældende

13

xxxx

Svinget

13-04-2022

-

11-11-2017

03-03-2018

Gældende

14

xxxx

Hovedvejen

13-04-2022

-

03-03-2018

20-05-2018

Gældende







Hvis eksemplet ordnes efter de forekomster, der er gældende ved afslutningstidspunktet for eksemplet, 13.04.2022, ser det således ud:


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

01-03-2015

Foreløbig

9a

xxxx

Hovedvejen

05-06-2019

-

20-05-2018

01-07-2019

Nedlagt

11

xxxx

Hovedvejen

23-08-2020

-

01-07-2019

01-09-2020

Gældende

12

xxxx

Københavnsvej

13-04-2022

-

01-03-2015

11-11-2017

Gældende

13

xxxx

Svinget

13-04-2022

-

11-11-2017

03-03-2018

Gældende

14

xxxx

Hovedvejen

13-04-2022

-

03-03-2018

20-05-2018

Gældende







Eksempel med flere samtidige versioner

Dette afsnit beskriver startpunktet for de efterfølgende eksempler med flere samtidige versioner. Der indgår ikke flere samtidige versioner i startpunktet.

Udgangspunktet er en Navngiven vej, der har gennemløbet følgende forløb:

  • Registreringstid 1, 18.12.2014: Oprettet som foreløbig med virkning fra 01.01.2015
  • Registreringstid 2, 27.01.2015: Rettelse af stavefejl, uændret virkningstid
  • Registreringstid 3, 16.02.2015: Navngiven vej gøres gældende med virkning fra 01.03.2015

Illustreret giver dette følgende registreringer:


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

Oprettelse som foreløbig

1

xxxx

Københavnvej

16-02-2015

-

01-01-2015

-

Foreløbig

Rettelse af stavefejl

1

xxxx

Københavnvej

23-08-2020

27-01-2015

01-01-2015

-

Foreløbig

2

xxxx

Københavnsvej

27-01-2022

-

01-01-2015

-

Foreløbig

Navngiven vej gøres gældende

1

xxxx

Københavnvej

18-12-2014

27-01-2015

01-01-2015

-

Foreløbig

2

xxxx

Københavnsvej

27-01-2015

16-02-2015

01-01-2015

-

Foreløbig

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

01-03-2015

Foreløbig

4

xxxx

Københavnsvej

16-02-2015

-

01-03-2015

-

Gældende







Ny samtidig version oprettes: I eksemplet registreres det den 23.12.2017, at der oprettes en ny version af den Navngivne vej som foreløbig pr. 01.12.2017.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

1

xxxx

Københavnvej

18-12-2014

27-01-2015

01-01-2015

-

Foreløbig

2

xxxx

Københavnsvej

27-01-2015

16-02-2015

01-01-2015

-

Foreløbig

3

xxxx

Københavnsvej

16-02-2015

-

01-01-2015

-

Foreløbig

4

xxxx

Københavnsvej

16-02-2015

-

01-03-2015

-

Gældende

5

xxxx

Rustvej

23-12-2017

-

01-12-2017

-

Foreløbig







Ny version gøres gældende og gammel version udgår: I eksemplet registreres det den 05.02.2018, at den nye foreløbige version skal gøres gældende pr. 01.12.2017.


ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

4

xxxx

Københavnsvej

16-02-2015

05-02-2018

01-03-2015

-

Gældende

5

xxxx

Rustvej

23-12-2017

05-02-2018

01-12-2017

-

Foreløbig

6

xxxx

Københavnsvej

05-02-2018

-

01-01-2015

01-12-2017

Gældende

7

xxxx

Rustvej

05-02-2018

-

01-12-2017

-

Gældende







Eksempel med flere objekter

I nedenstående eksempel er dataeksemplet udvidet således, at der er flere sæt registreringstid og virkningstid, der skal tages i betragtning for at finde de ønskede data. Eksemplet er forholdsvist simpelt, hvor der skal kombineres data for Vej og Postnummer. Eksemplet er fiktivt, og ikke udtryk for hvorledes DAR registeret er modelleret.

Vej

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

4

xxxx

Københavnsvej

16-02-2015

05-02-2018

01-03-2015

-

Gældende

5

xxxx

Rustvej

23-12-2017

05-02-2018

01-12-2017

-

Foreløbig

6

xxxx

Københavnvej

05-02-2018

-

01-01-2015

01-12-2017

Gældende

7

xxxx

Rustvej

05-02-2018

-

01-12-2017

-

Gældende


Postnummer

ID

UUID

Indhold

Reg. Fra

Reg. Til

Virk. Fra

Virk. Til

Status

1

yyyy

1234 København K

01-01-2005

01-11-2018

01-01-1960

-

Gældende

2

yyyy

1235 København V

01-01-2018

06-02-2018

01-11-2017

-

Gældende

3

yyyy

1234 København V

06-02-2018

-

01-11-2017

-

Gældende










Ønsker man at kombinere ovenstående data, dvs. at man gerne vil have vejnavn + postnummer, er det vigtigt at være helt præcis med angivelse af de bitemporale attributter.

Eksempel for Virkningstid alene, dvs. uden angivelse af registreringstid: Her antager vi, at registreringstid skal være dags dato, samt at det kun er Gældende objekter, vi er interesseret i.

Virkningstid = 01-02-2018, udvælges ID= 7 fra Vej og ID=3 fra Postnummer og det datamæssige resultat bliver:

Rustvej, 1234 København V

Virkningstid = 20-11-2017, udvælges ID= 6 fra Vej og ID=3 fra Postnummer og det datamæssige resultat bliver:

Københavnvej, 1234 København V

Eksempel hvor Registreringstid også anvendes, kombineret med Virkningstid, og stadig kun Gældende objekter.

Inkluderes Registreringstid således at Virkningstid = 20-11-2017 og Registreringstid = 01-02-2018, udvælges ID = 4 fra Vej og ID = 2 fra Postnummer og det datamæssige resultat bliver:

Københavnsvej, 1235 København V

Ændres tider således at Virkningstid = 20-11-2017 og Registreringstid = 05-02-2018, udvælges ID = 6 fra Vej og ID = 2 fra Postnummer og det datamæssige resultat bliver:

Københavnvej, 1235 København V







Modelreglerne

Dette afsnit beskriver kort hvorfor modelregler er relevante for anvendere af tjenester på Datafordeleren, og hvilke modelregler man som minimum bør kende til for at kunne anvende tjenester, både i forhold til input parametre og deres betydning samt i forhold til data der returneres ved kald til tjenester og den forretningsmæssige betydning.

Nærværende afsnit er en opsummering af modelreglerne for grunddata, med det formål at give et overblik over disse, afgrænset til relevante dele i forhold til bitemporalitet. Afsnittet kan på ingen måde anvendes som erstatning for modelreglerne. Modelreglerne kan findes på: http://arkitekturguiden.digitaliser.dk/grunddata-modelregler

Målsætningen med modelreglerne er:

at man som bruger oplever sammenhæng på tværs af grunddataforretningsdomænerne, og at man oplever ensartet begrebsanvendelse samt ensartede modellering og generelle egenskaber for modelentiteterne i datamodellerne.

Mere konkret skal modelreglerne opfylde følgende:

  • Modelreglerne skal danne grundlag for ensartet modellering af grunddata. Relevant for grunddataregistrene i udviklingsfasen
  • Modelreglerne skal sikre det nødvendige abstraktionsniveau til at imødekomme alle interessenters behov
  • Modelreglerne skal sikre genbrug af allerede eksisterende standarder, hvor det er muligt
  • Modelreglerne skal gøre det nemt for databrugere at bygge applikationer, der bruger grunddata, og at stille ensartede forespørgsler på tværs af grunddata

Det forudsættes at læseren er bekendt med UML og har indsigt i informationsmodellering med UML.






Modelregler

Alle entiteter skal modelleres med ”status”

Regel: Alle modelentiteter skal modelleres med status, der klart angiver, hvor et forvaltningsobjekt er i sin livscyklus. 

Udfaldsrum: Er en domænespecifik liste, værdien må ikke være tom

Rationale/beskrivelse: Forvaltningsobjekter gennemløber typisk en livscyklus. Fx kunne en livscyklus for en bygning være: “Forslag > Under projektering > Under opførelse > I brug > Under nedrivning > Historisk”. Forretningsdomænet kan opstille regler for hvilke statusser, der er gyldige for et givet objekt, og for, hvordan forvaltningsobjektet kan gennemløbe disse.


Alle modelentiteter skal understøtte dobbelthistorik

Regel: Alle modelentiteter skal modelleres med angivelse af både registrering og virkning

Rationale/beskrivelse:

Dobbelthistorik: På tværs af grunddata er der behov for at implementere dobbelthistorik, for at kunne understøtte et samlet krav om revisionsspor. Dataobjekter skal med andre ord kunne rekonstrueres på en måde, hvor der er styr på objektets sammensætning eller tilstand til et givet tidspunkt. Formålet hermed er bl.a. at dokumentere det konkrete historiske beslutningsgrundlag i forbindelse med fx sagsbehandling.

Dobbelthistorik modelleres ved hjælp af bitemporale egenskaber. Det dobbelte består i, at to tidsaspekter “virkningstid” og “registreringstid” håndteres i sammenhæng.

Registreringstid: Tidsrummet fra versionen registreres i databasen, indtil den enten erstattes af en nyere version eller afregistreres

Virkningstid: Tidsrummet hvor en given version af data svarer til de forhold i virkeligheden, som versionen afbilder.

Implikationer: Et data-objekt kan bestå af en række (1-*) versioner (ændres en enkelt attributværdi, betragtes dataobjektet som ændret og dermed versioneret). Alle versioner betragtes som dele af et “stamdataobjekt”, og har den samme Identifikation.

Alle versioner skal være karakteriseret ved hjælp af deres registreringstid og deres virkningstid. Disse tidsaspekter modelleres ved anvendelse af attributterne registreringFra, registreringTil, virkningFra og virkningTil.

Enhver version af et stamdataobjekt identificeres entydigt af objektets unikke identifikation kombineret med attributten registreringFra.

Når en bruger til et bestemt formål skal fremfinde den eller de relevante versioner af et objekt, anvendes objektets identifikation samt en kombination af registreringstid, virkningstid og/eller objektets status.

Virkningstidsrummet skal fortolkes således at virkningsintervallet er inklusiv starttidspunkt men eksklusiv sluttidspunktet.






Oversigt over registerspecifikke forhold for bitemporalitet

En række sider beskriver registerspecifikke forhold af implementeringsnær karakter, som anvendere skal være opmærksom på ved anvendelse af tjenester og data for de enkelte registre.

Beskrivelsen er opdelt pr. register. Hvor der er forhold, som gælder for alle tjenester og data for et register, beskrives dette først efterfulgt af tjeneste- eller dataspecifikke detaljer.


Bygnings- og Boligregistret (BBR)

Danmarks Administrative Geografiske Inddelinger (DAGI)

Danmarks Adresseregister (DAR)

Danske stednavne

Det Centrale Personregister (CPR)

Det Centrale Virksomhedsregister (CVR)

Ejendomsbeliggenhed (EBR)

Ejendomsvurdering (VUR)

Ejerfortegnelsen (EJF)

GeoDanmark 

Matriklen (MAT)

  • No labels