Marsupilami
I'm new here

Mittels FS-API frühere Revision eines Datensatzes wiederherstellen

Jump to solution

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

14 Replies

Der Einstiegspunkt dafür ist Project.getUserService(Date).

Peter

so einfach! besten Dank! (besonders um diese Uhrzeit)

0 Kudos
gockel
Crownpeak employee
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:

  • Holen der Historie der Seite -> Menge von Revisions
  • Iterieren über diese Revisionen und jeweils Abfrage der Revisionsmetadate
  • Ermitteln der Veränderung einer speziellen Variable "X" über die Revisionsmetadaten

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

0 Kudos

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

0 Kudos