Versioned Features

specdraftimplproposal

Versionsauswahl pro Feature, Versionshistorie und unveränderliche Mementoes.

Umfang

Erweitert die vorhandenen Features-Ressourcen um Versionsauswahl-Semantik und stellt eine Time-Map-Ressource bereit. Der Anfrageparameter datetime selektiert die Version jedes Features, die den angegebenen Zeitpunkt oder das Intervall schneidet; ohne Angabe wird die aktuelle Version geliefert. Antworten zu einzelnen Versionen enthalten den Header Memento-Datetime sowie die in RFC 7089 definierten Linkrelationen (predecessor-version, successor-version, latest-version, version-history, timemap, memento, original). Zusammen mit den Bausteinen Transactions und CRUD erzeugen Mutationen neue Versionen (bzw. stellen vorhandene still), statt Zeilen in der Datenbank zu überschreiben.

Konfiguration

Optionen

NameDefaultBeschreibungTypSeit
buildingBlock
Immer VERSIONED_FEATURES.
string
v2.0
enabled
false
Soll der Baustein aktiviert werden?
boolean
v2.0
timeAxis
null
Zeitachse, entlang derer die Versionsintervalle einer Sammlung interpretiert werden. VALIDITY_TIME (die Gültigkeit des Features in der realen Welt) oder TRANSACTION_TIME (Zeitpunkt der Erfassung im System). Muss gesetzt sein, wenn der Baustein für eine Sammlung aktiviert ist.
string
v4.8
mutationTime
null
Quelle des Zeitstempels, der beim Erzeugen oder Stilllegen einer Version verwendet wird. SERVER verwendet den serverseitig erfassten Anfragezeitstempel; CLIENT verwendet einen vom Client gelieferten Zeitstempel. Muss gesetzt sein, wenn die Sammlung Mutationen akzeptiert.
string
v4.8
defaultDatetime
"now"
Standardwert für den Query-Parameter datetime auf den Features- und Feature-Ressourcen einer versionierten Collection: ein Datum oder Zeitstempel (RFC 3339) oder now. Mit dem Standardwert now liefern Anfragen ohne datetime die aktuelle Version jedes Features; ein festes Datum bzw. ein fester Zeitstempel wählt die zu diesem Zeitpunkt gültigen Versionen aus. Intervalle sind nicht erlaubt.
string
v4.8
retireWithModifications
[]
Eigenschaftspfade (in Punktschreibweise der Schema-IDs, z. B. anl oder lzi.beg), die in einer einzelnen Update-Aktion gemeinsam mit dem Setzen eines Werts für die Rolle PRIMARY_INTERVAL_END geändert werden dürfen. Nicht aufgelistete Eigenschaften führen dazu, dass ein Update, das Stilllegung mit weiteren Änderungen kombiniert, mit 400 Bad Request abgelehnt wird.
array
v4.8
compositeIdPattern
null
Regulärer Ausdruck, der einen zusammengesetzten Feature-Identifikator (verwendet in <fes:ResourceId rid="..."/>-Filtern und gml:id-Werten) in einen kanonischen Identifikator und einen erwarteten Suffix für PRIMARY_INTERVAL_START aufteilt. Das Muster muss zwei benannte Gruppen enthalten: id für den kanonischen Identifikator (unverändert in der Datenbank gespeichert) und start für das gepackte Zeitstempel-Suffix (geparst über compositeIdTimestampFormat). Bei Replace, Update und Delete wird das geparste Suffix als If-Unmodified-Since-artige Vorbedingung interpretiert: der Start der offenen Version muss damit übereinstimmen, sonst scheitert die Aktion mit 412 Precondition Failed. Bei Insert wird das Suffix entfernt, sodass die kanonische ID gespeichert wird.
string
v4.8
compositeIdTimestampFormat
"yyyyMMdd'T'HHmmss'Z'"
java.time.format.DateTimeFormatter-Muster zum Parsen des durch compositeIdPattern erfassten Suffixes. Standard: yyyyMMdd'T'HHmmss'Z' - das kompakte ISO-8601-Basisformat mit expliziten T-/Z-Markern, z. B. 20240215T121156Z. Wird ignoriert, wenn compositeIdPattern nicht gesetzt ist.
string
v4.8

Dieses Modul benötigt bzw. unterstützt keine zusätzlichen Konfigurationsdateien.

Beispiele


- buildingBlock: VERSIONED_FEATURES
 enabled: true
 timeAxis: VALIDITY_TIME
 mutationTime: CLIENT
 retireWithModifications:
 - anl
 compositeIdPattern: "^(?<id>DE[A-Za-z0-9]{14})(?<start>\\d{8}T\\d{6}Z)$"