Wie im vorherigen Kapitel beschrieben, muss in der Konsolensitzung zwischen Anlegen der Originalversion und der Aktualisierung eine Verzögerung eingebaut werden, um irgendwie das "Zeitloch" zu simulieren, in dem - wenn wir bei dem vorherigen Beispiel bleiben - der Personalausweis als Verlust gemeldet war, aber tatsächlich schon wieder in meinem Besitz war.
Ohne jetzt groß validStart und validEnd anzupassen, habe ich das Beispiel mit einer Verzögerung von 50 Sekunden lassen:
( xdmp:invoke-function(local:create-temporal-fields#0), xdmp:invoke-function(local:create-range-index-fields#0), xdmp:invoke-function(local:create-axes#0), xdmp:invoke-function(local:create-temporal-collection#0), xdmp:invoke-function(local:insert-original#0), xdmp:sleep(50000), xdmp:invoke-function(local:insert-update#0))Plain Text
Und bekomme folgendes Ergebnis:
|
Document |
validStart |
validEnd |
systemStart |
systemEnd |
|
duesel_alex_270774.2462380991258156208.xml |
2019-03-19T14:17:00 |
unendlich |
2019-03-19T13:18:28 |
2019-03-19T13:19:18 |
|
duesel_alex_270774.819911042637597172.xml |
2019-03-19T14:17:00 |
2019-03-19T14:18:00 |
2019-03-19T13:19:18 |
unendlich |
|
duesel_alex_270774.xml |
2019-03-19T14:18:00 |
unendlich |
2019-03-19T13:19:18 |
unendlich |
Wie man sieht, müsste sich jetzt das Zeitloch von 50 Sekunden der Systemzeiten innerhalb der gültigen Zeiten befinden, um das Beispiel mit dem verlorenen Ausweis zumindest für die Zeitspanne von 50 Sekunden simulieren zu können.
Das korrekte Setup bleibt an dieser Stelle dem geneigten Leser selbst überlassen.
Zwei Queries, die die Werte in der Tabelle illustrieren, sind bspw. folgende:



Wie man sieht, kann man - ausreichend Lösungsphantasie vorausgesetzt - einiges mit diesen Queries anstellen. Hilfreich ist sicherlich auch die umfangreiche Liste der Vergleichsoperatoren, die MarkLogic zum Vergleichen von Zeiträumen bereitstellt: ISO Operators und ALLEN Operators.