alexanderan
I'm new here

Zugriff auf Versionshistorie von gelöschten Elementen

Jump to solution

Hallo Community,

ich habe in meinem Projekt die folgende Fragestellung:

Ich möchte von einem gelöschten Element aus der Strukturverwaltung die Versionshistorie auswerten. Konkret habe ich von einem gelöschten Element die ID und möchte herausfinden, wer dieses Element gelöscht hat.

Existiert der Elternknoten noch, so kann ich im SkriptContext auf dem Elternknoten über

e.getDeletedChilds(Rev-ID, ChildCount)

die gelöschten Elemente finden und in deren Revisions Objekten erfahre ich auch den User.

Doch wie verfahre ich, wenn ich

     a) nur die Element-ID habe und den Elternknoten nicht kenne

oder

     b) der Elternknoten ebenfalls gelöscht wurde.

Ich würde mich freuen, wenn mir hierbei jemand behilflich sein könnte.

Viele Grüße

Andreas

0 Kudos
1 Solution

Accepted Solutions
gockel
Crownpeak employee

Ein Hinweis vorweg. Egal welchen Weg sie einschlagen, hier betreten sie einen Bereich der API, der bei ungünstiger Benutzung extrem performancekritisch ist. Die Möglichkeiten der Einschränkung der Ergebnismengen bzw. die zeitlichen Grenzen sollten auf jeden Fall bewusst verwendet werden.

1. Möglichkeit:

===========

Die Methode #getDeletedChilds steht auf auf Store zur Verfügung. Wenn man also wenigstens weiss, in welchem Store man sucht, da könnte man darüber arbeiten:

SiteStoreRoot sitestore;

List<DeletedElementsInfo> deletedInfos = siteStore.getDeletedChilds(startRevision, 50);

2. Möglichkeit:

===========

Man könnte diese Informationen über die Revisionsdaten ermitteln. Einstiegspunkt: Project#getRevisions

import de.espirit.firstspirit.storage.RevisionFilter;

import de.espirit.firstspirit.storage.RevisionOperation;

import de.espirit.firstspirit.storage.RevisionOperation.OperationType;

import de.espirit.firstspirit.storage.DeleteOperation;

Project project;

List<Revision> deletedRevisions = project.getRevisions(fromRevision, toRevision, 50, RevisionFilter.DELETE_FILTER);

for (final Revision rev : deletedRevisions) {

     final RevisionMetaData meta = rev.getMetaData();

     final RevisionOperation operation = meta.getOperation();

     if (operation.getType == OperationType.DELETE) {

          final DeleteOperation deleteOp = (DeleteOperation) operation;

          // prüfen ob meine gesuchte ID diese DeleteOperation betreffen

          deleteOp.getDeleteRootElement();

          // oder

          deleteOp.getElements();

     }

}

View solution in original post

0 Kudos
2 Replies
gockel
Crownpeak employee

Ein Hinweis vorweg. Egal welchen Weg sie einschlagen, hier betreten sie einen Bereich der API, der bei ungünstiger Benutzung extrem performancekritisch ist. Die Möglichkeiten der Einschränkung der Ergebnismengen bzw. die zeitlichen Grenzen sollten auf jeden Fall bewusst verwendet werden.

1. Möglichkeit:

===========

Die Methode #getDeletedChilds steht auf auf Store zur Verfügung. Wenn man also wenigstens weiss, in welchem Store man sucht, da könnte man darüber arbeiten:

SiteStoreRoot sitestore;

List<DeletedElementsInfo> deletedInfos = siteStore.getDeletedChilds(startRevision, 50);

2. Möglichkeit:

===========

Man könnte diese Informationen über die Revisionsdaten ermitteln. Einstiegspunkt: Project#getRevisions

import de.espirit.firstspirit.storage.RevisionFilter;

import de.espirit.firstspirit.storage.RevisionOperation;

import de.espirit.firstspirit.storage.RevisionOperation.OperationType;

import de.espirit.firstspirit.storage.DeleteOperation;

Project project;

List<Revision> deletedRevisions = project.getRevisions(fromRevision, toRevision, 50, RevisionFilter.DELETE_FILTER);

for (final Revision rev : deletedRevisions) {

     final RevisionMetaData meta = rev.getMetaData();

     final RevisionOperation operation = meta.getOperation();

     if (operation.getType == OperationType.DELETE) {

          final DeleteOperation deleteOp = (DeleteOperation) operation;

          // prüfen ob meine gesuchte ID diese DeleteOperation betreffen

          deleteOp.getDeleteRootElement();

          // oder

          deleteOp.getElements();

     }

}

0 Kudos

Vielen Dank für die schnelle Antwort.

Allerdings hatte ich mir erhofft, dass es eine Möglichkeit gibt anhand der ID oder UID eines Elementes dessen Versionshistorie aufzurufen, ohne über sämtliche Revisionen und deren Metadaten zu iterieren.

0 Kudos