Man sollte das laut und deutlich sagen, daß REI3 ein tolles Chance Logging bietet. Das ist ein eher seltenes Feature und bei mir steht es ganz oben auf der Wunschliste. Die Benutzer wollen vor allem diese Transparenz, die das UI von REI3 bietet - daß man den Verlauf der Änderungen anzeigen kann. Aber mich quälen auch so Fragen wie "Wo hat jemand etwas falsch verstanden/wo ist die Krankenstandsvertretung der Urlaubsvertretung am Werk?", "Wann arbeit Teilzeitmitarbeiter X derzeit?", "Gibt es einen kleinen Edit War irgendwo?".
Besondert toll: Es funktioniert auch bei Änderungen über das API. An sich könnte man ja mit (fast) demselben Aufwand, mit dem man den API-Aufruf zusammenbaut, ein SQL-Statement an die Datenbank schicken. Aber beim API bekommt man ein sehr intelligentes Chance Log.
Es wird nämlich genau notiert, welches Feld geändert wurde und redundante API-Aufrufe müllen daher das Change Log nicht zu.
Dieses Statement liefert alles, was ich brauche:
SELECT to_timestamp(date_change) AS time,
u.name AS user_name,
record_id_wofk AS record_id,
m.name AS schema_name,
r.name AS relation_name,
a.name AS column_name,
value
FROM instance.data_log_value v
JOIN instance.data_log l ON l.id = data_log_id
JOIN instance.login u ON u.id = login_id_wofk
JOIN app.relation r ON r.id = relation_id
JOIN app.module m ON m.id = module_id
JOIN app.attribute a ON a.id = attribute_id
ORDER BY 1 desc;
(attribute_id_nm und outside_in habe ich noch nicht behirnt bzw. scheinen sie keine Rolle zu spielen, in meinem Fall.)
Natürlich muß sich das jeder für seine Bedürfnisse aggregieren und filtern. Von daher verstehe ich auch, daß im Forum an mancher Stelle zu lesen ist, daß REI3 den Zugriff auf dieses Log nicht direkt unterstützt. Das ist auch insoferne wahr, als man dazu zuerst in REI3 eine Relation definieren muß, die man dann periodisch mit einem SQL-Statement befüllt. Das geht auch in einer Backend-Function, also rein mit REI3-Mitteln, vermutlich. Filtern und Aggregieren ist natürlich das Um und Auf dabei.
Und falls man motiviert ist, dann kann man sich da eine echte temporale Datenbank basteln und Fragen beantworten wie: Was war der durchschnittliche Wert von Attribut X? Oder: wie oft wurde er geändert?
Das ist weniger theoretisch, als man glauben würde. Wir hatten schon Ärger zwischen Menschen, die Rechnungsentwürfe einmal erfassen, dann tagelang darüber nachdenken und andere, die das in einem Aufwaschen erledigen. Oder Sendungen, die aus irgendeinem Grund nicht fertig bearbeitet wurden.
Das verrät einem die temporale Datenbank, die in REI3 versteckt ist, ohne daß man selbst vorher Prozesse definieren muß und z.B. den Änderungszeitpunkt im Datensatz selbst erfaßt. Das ist besonders für KMUs wichtig, die nie vorher wissen, was sie nachher an Informationen benötigen und wo Ad-Hoc-Management normal ist.