andre_burgstale
I'm new here

Objekte Rekursiv Freigeben und Publizieren

Hy,

wir haben in FS5 einen Arbeitsablauf analog dem Beispiel in der Developer-Doku, Kapitel 4.10.2 (Abeitsablauf Recursive Release) erstellt, um von einem Knoten aus alle abhängigen Objekte freizugeben.

In einem zweiten Arbeitsablauf sollten diese vorher freigegebenen Objekte nun auch publiziert werden.

Frage: Kann ich über den ServerActionHandle an eine Liste aller Freigegebenen Objekte heran kommen? Und wie kann ich die dann einzeln publizieren? Bzw. kann ich die Teilpublizierung so weit einschränken, dass nur das jeweilige Objekt publiziert wird?

0 Kudos
6 Replies
stephan
I'm new here

Hallo,

auf dem ServerActionHandle kommt man über .getProgress(true) an den Progress der Freigabe und dort dann über .getReleasedElements() an die IDs der freigegebenen Objekte. Vor dem Deployment muss man dann den entsprechenden GenerierungsTask des Deploymentauftrags dahingehend manipulieren, dass die entsprechenden Seiten-IDs mit generiert werden.

Viele Grüße

Jörg Stephan

gockel
Crownpeak employee

ServerActionHandle kommt man über .getProgress(true) an den Progress der Freigabe und dort dann über .getReleasedElements() an die IDs der freigegebenen Objekte.

Achtung:

Die #getProgress Methode liefert immer nur den aktuellen Zustand des zugehörigen asynchronen Serverprozess zum Zeitpunkt des Methodenaufrufes. Erst wenn das bei #getProgress zurückgelieferte Objekt bei #isFinished auch true liefert, kann man sicher sein, dass in diesem Fall auch alle freigegebenen Elemente enthalten sind.

Wenn man nicht zyklisch den progress pollen will, dann sollte man zunächst mit #getResult() arbeiten. Die Methode blockiert solange bis der serverseitige Prozess abgeschlossen ist. Ein darauf folgendes #getProgress(true) enthält dann alle Daten.

Super! Vielen Dank für die hilfreiche Info!

0 Kudos

Zwei Fragen hätte ich noch:

den Arbeitsablauf für die rekursive Freigabe rufe ich mit folgenden Parametern auf:

handle = AccessUtil.release(se, false, true, true,

de.espirit.firstspirit.access.store.IDProvider.DependentReleaseTyp

e.DEPENDENT_RELEASE_NEW_AND_CHANGED);

releaseParentPath  ist also "true".

Allerdings wird dieser nur dann in die Freigabe einbezogen, wenn er neu angelegt wurde.

Ich würde erwarten, dass auch Änderungen im parent path bei der Freigabe berücksichtigt werden, da ich DEPENDENT_RELEASE_NEW_AND_CHANGED angegeben habe.

Frage 1: Ist dieses Verhalten so korrekt? Wenn ja, muss ich, um sicherzustellen, dass der parent path immer mit freigegeben wird, dies manuell programmieren?

Frage 2: Ist es korrekt, dass bei dieser Freigabe nur die ausgehenden Referenzen berücksichtigt werden, nicht aber die eingehenden? Beispiel:

Wird der Arbeitsablauf auf eine Referenz im Sitestore angewendet, wird auch die zugehörige Seite freigegeben,

wird er jedoch auf eine Seite im Pagestore angewendet, wird die zugehörige Referenz NICHT mit freigegeben.

0 Kudos

Frage 1: Meines Wissens nach wird duch diese Funktion sichergestellt, dass die "Vaterkette" im Freigabestand vorhanden ist. Also jeder Vaterknoten zumindest 1x freigegeben wurde, denn nur dann kann die Seite auch korrekt "dargestellt" werden.

Frage2: Das ist korrekt. Wenn man im konkreten Beispiel auch die Seitenreferenzen freigeben will, so kann man das durch Abfrage der IncomingReferences und entsprechender Freigabe sehr einfach machen.

Super, vielen Dank.

0 Kudos