Versioned Features
specdraftimplproposalVersionsauswahl 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
| Name | Default | Beschreibung | Typ | Seit |
|---|---|---|---|---|
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 |
ignoreRepeatedVersions | false | Mit true liefert ein Replace, dessen neue Version zum Beginn der offenen Version (PRIMARY_INTERVAL_START) beginnt, die offene Version erneut und lässt das Feature unverändert; die Aktion ist ohne Änderungen erfolgreich. Mit false wird ein solches Replace abgelehnt, da eine Version nicht zu ihrem eigenen Beginn enden kann. | boolean | v4.9 |
ignoreExistingFeaturesOnInsert | false | Mit true lässt ein Insert eines Features, von dem bereits eine Version (offen oder stillgelegt) existiert, das Feature unverändert; das Element wird mit einer Warnung übersprungen. Mit false wird ein solches Insert abgelehnt, da neue Versionen eines Features mit Replace, Update oder Delete hinzugefügt werden. | boolean | v4.9 |
insertUnknownFeaturesOnReplace | false | Mit true fügt ein Replace eines Features, von dem noch keine Version existiert, das Feature mit einer Warnung ein. Mit false wird ein solches Replace abgelehnt. Ein Replace eines Features, dessen Versionen alle stillgelegt sind, wird in jedem Fall abgelehnt. | boolean | v4.9 |
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)$"