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 ({@code predecessor-version}, {@code successor-version}, {@code latest-version}, {@code version-history}, {@code timemap}, {@code memento}, {@code 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. {@code VALIDITY_TIME} (die Gültigkeit des Features in der realen Welt) oder {@code 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. {@code SERVER} verwendet den serverseitig erfassten Anfragezeitstempel; {@code 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 {@code datetime} auf den Features- und Feature-Ressourcen einer versionierten Collection: ein Datum oder Zeitstempel (RFC 3339) oder {@code now}. Mit dem Standardwert {@code now} liefern Anfragen ohne {@code 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. {@code anl} oder {@code lzi.beg}), die in einer einzelnen {@code Update}-Aktion gemeinsam mit dem Setzen eines Werts für die Rolle {@code PRIMARY_INTERVAL_END} geändert werden dürfen. Nicht aufgelistete Eigenschaften führen dazu, dass ein {@code Update}, das Stilllegung mit weiteren Änderungen kombiniert, mit {@code 400 Bad Request} abgelehnt wird.
array
v4.8
compositeIdPattern
null
Regulärer Ausdruck, der einen zusammengesetzten Feature-Identifikator (verwendet in {@code <fes:ResourceId rid="\u2026"/>}-Filtern und {@code gml:id}-Werten) in einen kanonischen Identifikator und einen erwarteten Suffix für {@code PRIMARY_INTERVAL_START} aufteilt. Das Muster muss zwei benannte Gruppen enthalten: {@code id} für den kanonischen Identifikator (unverändert in der Datenbank gespeichert) und {@code start} für das gepackte Zeitstempel-Suffix (geparst über {@code compositeIdTimestampFormat}). Bei {@code Replace}, {@code Update} und {@code 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 {@code Insert} wird das Suffix entfernt, sodass die kanonische ID gespeichert wird.
string
v4.8
compositeIdTimestampFormat
"yyyyMMdd'T'HHmmss'Z'"
{@code java.time.format.DateTimeFormatter}-Muster zum Parsen des durch {@code compositeIdPattern} erfassten Suffixes. Standard: {@code yyyyMMdd'T'HHmmss'Z'} \u2014 das kompakte ISO-8601-Basisformat mit expliziten {@code T}-/{@code Z}-Markern, z. B. {@code 20240215T121156Z}. Wird ignoriert, wenn {@code 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)$"