Questions & Answers

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

Type a product name