Transactions

specdraftimplcandidate

Atomare und gestapelte Transaktionen über mehrere Objektarten.

Umfang

Stellt eine einzelne Ressource POST /transactions bereit, die ein Transaktionsdokument mit einer oder mehreren insert-, replace-, update- oder delete-Aktionen über eine oder mehrere Objektarten der API entgegennimmt. Die kanonische Anfragecodierung ist application/ogc-tx+json; die Antwort ist application/json.

Es werden zwei Semantiken unterstützt: atomare Transaktionen führen alle Aktionen in einer einzigen Datenbanktransaktion aus (Rollback bei Fehlern), Batch-Transaktionen führen jede Aktion unabhängig aus und liefern Ergebnisse pro Aktion.

Zur Interoperabilität mit WFS 2.0-Produzenten kann der Baustein zusätzlich wfs:Transaction-XML-Payloads im atomaren Modus entgegennehmen.

Der Anfrage-Header Prefer wird gemäß RFC 7240 ausgewertet: return=representation (Standard), return=minimal oder return=none steuert den Umfang der Transaktionsantwort; handling=strict validiert jeden insert- und replace-Payload vor dem Schreiben gegen das Schema der Objektart (greift nur, wenn die Objektart eine Schema-Validierung konfiguriert hat \u2014 JSON Schema für GeoJSON-Payloads, XSD für GML-Payloads). respond-async wird mit 501 abgelehnt.

Der Anfrage-Header Content-Crs gibt das CRS der Koordinaten im Anfragetext an. Fehlt der Header, wird das Standard-CRS der API angenommen (CRS84, sofern nicht überschrieben); syntaktisch ungültige Werte oder ein nicht von der API unterstütztes CRS werden mit einem 4xx-Fehler abgelehnt.

Erfolgreiche und atomar fehlgeschlagene Antworten verwenden dieselbe Dokumentstruktur des Part-11-Transaction-Response (mit summary, den pro Aktion gegliederten Ergebnis-Arrays und gegebenenfalls einem exceptions[]-Array), so dass Clients zum Auswerten der Antwort nicht nach Statuscode unterscheiden müssen.

Limitierungen

Es gelten die folgenden Einschränkungen:

  • Provider und Anfragebereich:
  • Es werden nur Objektarten von einem SQL-Feature-Provider unterstützt, der Mutationen
    erlaubt (datasetChanges.mode CRUD).
  • Asynchrone Transaktionen werden nicht unterstützt.
  • Antworten werden ausschließlich als JSON geliefert; die WFS
    wfs:TransactionResponse-XML-Antwort wird nicht erzeugt.
  • wfs:Transaction-XML-Payloads werden nur im atomaren Modus akzeptiert.
  • Filter in update-, replace- und delete-Aktionen:
  • Filter sind auf die Auswahl von Objekten über deren Id beschränkt. JSON-Aktionen
    akzeptieren nur einen CQL2-Ausdruck der Form id IN (...) (Platzhalter _ID_); andere
    CQL2-Prädikate (Vergleichs-, Raum-, Zeit- oder boolesche Operatoren auf normalen
    Eigenschaften) werden mit einem 4xx-Fehler abgelehnt.
  • wfs:Transaction-XML akzeptiert ausschließlich fes:ResourceId/@rid; andere
    fes:Filter-Elementtypen werden nicht erkannt.
  • Semantik von update:
  • Updates werden als RFC 7396 JSON Merge Patch über einer GeoJSON-Repräsentation der
    aktuellen Objektinstanz angewendet, unabhängig von der Payload-Kodierung.
  • In einer atomaren Transaktion darf ein update keine Objektinstanz betreffen, die im
    selben Vorgang bereits eingefügt, ersetzt, aktualisiert oder gelöscht wurde; die Aktion
    wird vorab abgewiesen, da der Lesezugriff innerhalb eines update über den normalen
    Abfragepfad des Providers geht und noch nicht festgeschriebene Schreibvorgänge derselben
    Transaktion nicht sehen kann.
  • In einem wfs:Update muss wfs:ValueReference jeder wfs:Property den GeoJSON-Namen
    der Eigenschaft (den Wire-Namen) verwenden, nicht den zugrundeliegenden GML-Element-
    oder Schemanamen; ein unbekannter Name wird stillschweigend ignoriert und die
    Eigenschaft bleibt unverändert.

Konformitätsklassen

Der Baustein basiert auf den Konformitätsklassen "Transactions", "Atomic Semantics", "Batch Semantics", "JSON Encoding" und "Features" aus dem Entwurf von OGC API - Features - Part 11: Atomic and Batch Transactionsopen in new window.

Konfiguration

Optionen

NameDefaultBeschreibungTypSeit
buildingBlock
Immer TRANSACTIONS.
string
v2.0
enabled
false
Soll der Baustein aktiviert werden?
boolean
v2.0
atomic
true
Schaltet die Konformitätsklasse für atomare Transaktionen frei. Anfragen ohne semantic-Parameter oder mit semantic=atomic werden in einer einzigen Datenbanktransaktion ausgeführt; jeder Fehler führt zum Rollback der gesamten Anfrage.
boolean
v4.8
batch
true
Schaltet die Konformitätsklasse für Batch-Transaktionen frei. Anfragen mit semantic=batch führen jede Aktion unabhängig aus und melden Ergebnisse pro Aktion, inkl. Ausnahmen bei Fehlern.
boolean
v4.8
wfsTransaction
false
Aktiviert die Dekodierung von WFS 2.0 wfs:Transaction-XML-Payloads bei POST /transactions. Nur zulässig, wenn atomic aktiv und der GML-Baustein aktiviert ist.
boolean
v4.8
defaultSemantic
ATOMIC
Semantik, die für Anfragen ohne explizite Angabe verwendet wird. Der Standard entspricht der Vorgabe aus OGC API Features Part 11.
string
v4.8
maxActionsPerRequest
0
Optionale Obergrenze für die Anzahl der Aktionen pro Anfrage. Der Wert 0 oder null deaktiviert die Begrenzung.
number
v4.8

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

Beispiele


- buildingBlock: TRANSACTIONS
 enabled: true
 atomic: true
 batch: true
 wfsTransaction: false
 defaultSemantic: ATOMIC