Search the FirstSpirit Knowledge Base
Hallo,
ich würde gerne wissen, wie ich mittels der FS-API vorherige Revisionen von Datensätzen wiederherstellen kann (so wie es mit der Versionshistorie im Client funktioniert)?
Hintergrund ist, daß Änderungen an mehreren Tausend Datensätzen, die von einem bestimmten Nutzer modifiziert wurden, wieder rückgängig gemacht werden sollen.
Server-Version 4.1.51
Gruß
Martin
Der Einstiegspunkt dafür ist Project.getUserService(Date).
so einfach! besten Dank! (besonders um diese Uhrzeit)
Ziel ist es textliche Veränderungen in den einzelnen Variablen herauszufinden.
Wenn das der Anwendungsfall ist, dann würde ich hier eher empfehlen über die Revisionsmetadaten zu gehen. Diese enthalten bereits die Information, welche Variablen geändert wurden und das ist deutlich performanter.
Vorgehen wäre dabei:
Pseudo-Code:
MY_VARIABLE = "st_text"; // Name des editors der auf Änderungen geprüft werden soll
pageId = page.getId();
metaData = revision.getMetaData();
Map<BasicStoreElement, Map<ChangedType, RevisionChangeDetail>> changedElements = metaData.getChangedElements();
iter(entry : changedElements) {
if (entry.getKey().getNodeId == pageId) {
changes = entry.getValue();
iter(changeEntry : chages) {
if (changeEntry == ChangeType.DATA_XML) {
dataChange = (DataChangeDetail) changeEntry.getValue();
Map<String, DataChangeDetail.EditorChange> editorChanges = dataChange.getEditorChanges();
EditorChange editorChange = editorChanges.get(MY_VARIABLE);
if (editorChange != null) {
// todo : we found a change in editor
}
}
}
}
}
Einstiegspunkt:
Hallo Herr Gockel,
das ist absolut die perfekte Lösung.
Wenn man jetzt über alle Revisionen iteriert, dann bekommt man genau die Veränderungen
zu einer Sprache in der jeweiligen Variable.
Danke hierfür.
Beste Grüße,
Levent Meric
Hallo,
sehe ich das richtig, dass die oben aufgeführten Funktionen nicht auf die Datenquellen übertragbar sind?
Beispiel:
Dataset dataset = content2StoreElement.getDataset(entity);
List<Revision> storeElementHistory = dataset.getHistory();
for (Revision revision : storeElementHistory) {
RevisionMetaData storeElementMetaData = revision.getMetaData();
}
Problem: das getMetaData ist immer null
Oder gibt es da einen anderen Ansatz?
Danke