joschka
I'm new here

Entsperren von Elementen ohne Workflowmodul

Hallo zusammen,

bei einem Kunden haben wir ein Übersetzungsworkflow Modul implementiert, allerdings ohne auf das FS Workflowmodul aufzusetzen, da dies nicht lizensiert ist.

Es gibt aktuell aber noch ein Problem.

Anforderung ist, dass die zur Übersetzung freigegebenen Elemente nicht bearbeitet werden dürfen.

Hierfür werden die betroffenen Store Elemente auf "nur lesend" gestellt:

    try {

        element.setLock(true, false);

        element.setWriteLock(true);

        element.save("setting write lock", false);

    } catch (LockException e) {

        Logging.logError("Lock error: " + e.getMessage(), LOGGER);

    } catch (ElementDeletedException e) {

        Logging.logError("Lock error: " + e.getMessage(), LOGGER);

    } finally {

        try {

            element.setLock(false, false);

        } catch (Exception e) {

            Logging.logError("Lock error: " + e.getMessage(), LOGGER);

        }

    }

   

Beim Import der übersetzten Dateien soll dieser Schreibschutz folgendermaßen wieder aufgehoben werden:

    try {

        element.setLock(true, false);

        element.setWriteLock(false);

        element.save("removing write lock", false);

    } catch (LockException e) {

        Logging.logError("Lock error: " + e.getMessage(),LOGGER);

    } catch (ElementDeletedException e) {

        Logging.logError("Lock error: " + e.getMessage(), LOGGER);

    } finally {

        try {

            element.setLock(false, false); // unlock non-recursive

        } catch (Exception e) {

            Logging.logError("Lock error: " + e.getMessage(), LOGGER);

        }

    }

   

Allerdings bekomme ich beim unlock dann folgende Exception:

de.espirit.firstspirit.access.store.templatestore.WorkflowLockException: Element '15964' is locked by workflow!

Habe ich hier irgendwo einen Fehler beim Sperren / Entsperren? Ich vwerwende wie gesagt nie das Workflowmodul. Wie bekomme ich denn das Element wieder entsperrt?

Schon mal vielen Dank und Gruß

Joachim Biggel

0 Kudos
4 Replies
mbergmann
Crownpeak employee

Hallo Joachim,

hier muss zuerst der WriteLock entfernt werden und dann das Lock erfolgen:

element.setWriteLock(false);

element.setLock(true, false);

Viele Grüße

Michael

0 Kudos

Hallo Michael,

habe ich jetzt mal probiert, aber das geht leider auch nicht.

Das

element.setWriteLock(false);

läuft noch durch, beim

element.setLock(true, false);

bekomm ich die o.g. LockException. Ich habe auch versucht, davor mit element.setLock(false, false); einen evtl. bestehenden lock zu entfernen. Hilft nix, bei element.setLock(true, false); kommt die LockException dann wieder.

Bin auf FS 4.2.501.62540.

Das Ganze ist ein Modul, welches über ein Client Skript aufgerufen wird. Kann es sein, dass es auch ein Berechtigungsproblem der ausführenden Person ist? Allerdings kann selbst der Projektadmin die Sperre nicht aufheben. Er bekommt die gleiche Fehlermeldung.

Danke und Gruß

Joachim

0 Kudos

Hallo Joachim,

sind hier ggf. Ordner in der Vaterkette des entsprechenden Elementes auch noch mit Schreibschutz versehen? Der Schreibschutz wirkt rekursiv (er wird allerdings nicht rekursiv gesetzt), d.h. wenn ein Ordner einen Schreibschutz hat, kann man auch alle darin enthaltenen Elemente nicht bearbeiten.

Mit einem setLock(false) kannst Du übrigens immer nur eigene Locks entfernen, keine fremden (wobei sich das "fremd" hier auf Sessions und nicht User bezieht).

Viele Grüße

Michael

0 Kudos

Hallo Joachim,

benötigst du noch weitere Hilfe oder konnten dir Michaels Antworten bereits weiterhelfen? In diesem Fall wäre es toll, wenn du die "richtige Antwort" entsprechend markierst.

Solltest du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es super, wenn du diese hier bereitstellst.

Viele Grüße

Michaela

0 Kudos