Zum Inhalt springen

Vertrag02 von 09

Welche Felder beschreibt ein Ereignis?

Ein Ereignis ist ein Satz mit Zeit, Quelle und Vertrauen.

Lesezeit
2 Min.
Erstfassung
Auf dieser Seite
  1. 01Ein geplanter Vertrag, kein erreichbarer Endpunkt
  2. 02Drei Zeiten, drei Herkünfte
  3. 03Vertrauen mit Beiträgen
  4. 04Doppel, Reihenfolge, Verspätung
  5. 05Schutz am Ereignis
  6. 06Schema
  7. 07Felder
  8. 08Fehlerfälle
  9. 09Grenze und Regel
  10. 10Quellen
  11. 11Verwandte Seiten

Was gebaut ist

Ein Ereignis hält fest, dass etwas zu einer Zeit an einer Quelle gemeldet wurde, und wie sehr man der Meldung traut. Dieser geplante Vertrag legt fest, welche Angaben jedes Ereignis trägt, damit Meldungen aus verschiedenen Systemen vergleichbar sind und ein Ereignis weder doppelt noch ungeordnet wirkt.

Ein geplanter Vertrag, kein erreichbarer Endpunkt

Die Felder beschreiben die vorgesehene Form eines Ereignisses. Der Umschlag folgt der Spezifikation CloudEvents mit den Pflichtfeldern id, source und type; die übrigen Felder sind Erweiterungen. Eine Verarbeitung von Ereignissen ist nicht gebaut, und diese Seite belegt keine.

Drei Zeiten, drei Herkünfte

Begriff · Ereignis

Eine beobachtete Änderung mit Identität, Zeitpunkt und Herkunft. Doppelte oder verspätete Zustellung muss behandelt werden.

Ereignis im Zusammenhang

Ein Ereignis trägt die Zeit des Geschehens, die Zeit der Aufnahme und die Angabe, woher die Zeit des Geschehens stammt: vom Gerät, vom Server der Quelle oder aus dem Eingang. Die Zeit des Geschehens wird zur Gültigkeitszeit, die Zeit der Aufnahme zur Erfassungszeit der Ontologie. Ist der Zeitpunkt unsicher, steht ein Intervall.

Eine Gerätezeit, die stark von der Aufnahmezeit abweicht, wird nicht stillschweigend korrigiert. Sie bleibt, wie gemeldet, mit dem Hinweis auf die Abweichung.

Vertrauen mit Beiträgen

Das Vertrauen ist kein einzelner Wert. Es nennt seine Beiträge, also Quelle, Güte der Angaben und Bestätigungen, jeweils mit Grund. Ein Wert ohne Beiträge ist ungültig. Wer das Vertrauen eines Pfads oder einer Gruppe berechnet, kann so zeigen, welche Meldung es trägt.

Doppel, Reihenfolge, Verspätung

Das Feld subject bestimmt die Ordnung: Ereignisse mit demselben Subjekt werden in der Reihenfolge ihrer Nummer angewandt. Eine Nummer, die nicht größer ist als die zuletzt angewandte, gilt als Doppel und wird verworfen. Eine Lücke stellt das Ereignis zurück, bis der Vorgänger eintrifft. Ein Ereignis nach dem Wasserzeichen wird als Korrektur abgelegt und nicht verworfen.

Schutz am Ereignis

Begriff · Schema

Ein versionierter Vertrag über Felder, Typen und erlaubte Werte. Die Prüfung muss unbekannte und ungültige Eingaben behandeln.

Schnittstellen: geplante Verträge

Jedes Ereignis trägt seine Markierung und verweist auf die Rohmeldung, die unverändert bleibt. Der Inhalt der Nutzlast ist nach dem Schema des Typs geprüft. Freitext in einer Nutzlast gilt als Inhalt einer Quelle mit niedrigem Vertrauen und nie als Anweisung.

Schema

{
  "specversion": "1.0",
  "id": "<ereignis-kennung>",
  "type": "<ereignistyp>.v1",
  "source": "<quelle>",
  "subject": "<objekt-kennung>",
  "sequence": <nummer>,
  "eventTime": "<zeitpunkt>",
  "timeSource": "device",
  "receivedAt": "<zeitpunkt>",
  "location": { "crs": "EPSG:4326", "coordinates": [<laenge>, <breite>] },
  "confidence": { "value": <wert>, "contributions": [{ "reason": "<grund>" }] },
  "classification": "internal",
  "raw": "<verweis-auf-rohmeldung>",
  "data": { }
}
Schema 1JSON · Schema mit Platzhaltern

Felder

FeldTypPflichtBedeutung
idstringjaKennung des Ereignisses, von der Quelle vergeben oder aus dem Inhalt gebildet. Grundlage zum Erkennen von Doppeln.
typestringjaVersionierter Ereignistyp, etwa <ereignistyp>.v1. Die Nutzlast folgt dem Schema dieses Typs.
sourcestringjaQuelle und Adapter, über die das Ereignis kam. Kein Ersatz für die Herkunft in der Rohzone.
subjectstringneinKennung des Objekts, auf das sich das Ereignis bezieht. Schlüssel für Ordnung und Nummer.
sequenceintegerneinFortlaufende Nummer je subject, wo die Quelle sie liefert. Nicht größer als die zuletzt angewandte heißt Doppel.
eventTimestring (date-time)jaZeit des Geschehens in UTC. Wird zur Gültigkeitszeit der Ontologie.
eventTimeEndstring (date-time)neinEnde eines Intervalls, wenn die Zeit des Geschehens unsicher ist.
timeSourcestringjaHerkunft der Zeit: device, server oder intake. Eine Meldung ohne eigene Zeit trägt intake.
receivedAtstring (date-time)jaZeit der Aufnahme. Wird zur Erfassungszeit und nie nachträglich geändert.
locationobjectneinOrt als Koordinate in WGS 84 mit Genauigkeit; die ursprüngliche Angabe bleibt erhalten.
confidenceobjectjaVertrauen als Wert mit Beiträgen und Gründen. Ohne Beiträge ungültig.
classificationstringjaMarkierung des Ereignisses. Ein fehlender Wert gilt nicht als öffentlich.
rawstring (ref)jaVerweis auf die unveränderte Rohmeldung in der Rohzone.
dataobjectjaNutzlast nach dem Schema des Typs. Freitext darin ist Inhalt, keine Anweisung.

Fehlerfälle

KennungBedeutung
EVENT_SCHEMA_INVALIDPflichtfeld oder Nutzlast passen nicht zum Schema des Typs; das Ereignis geht in die Fehlerspur.
EVENT_DUPLICATENummer nicht größer als die zuletzt angewandte; das Ereignis wird verworfen und gezählt.
EVENT_GAPEine Nummer fehlt; das Ereignis wird zurückgestellt, bis der Vorgänger eintrifft.
EVENT_LATEDas Ereignis kommt nach dem Wasserzeichen; es wird als Korrektur mit neuer Erfassungszeit abgelegt.
TIME_UNTRUSTEDGerätezeit und Aufnahmezeit weichen stark ab; die Zeit bleibt wie gemeldet, mit Hinweis.

Grenze

Grenze
Dieser Schnittstellenvertrag ist geplant. Er belegt weder eine veröffentlichte Schnittstelle noch eine laufende Verarbeitung von Ereignissen, und die Beiträge zum Vertrauen sind Angaben der Quelle, keine Prüfung durch das System.

Quellen

  1. CloudEvents SpecificationCNCF. Umschlag mit den Pflichtfeldern id, source, specversion und type.
  2. RFC 3339: Date and Time on the Internet: TimestampsIETF. Schreibweise der Zeitangaben.

Verwandte Seiten