captFuture
I'm new here

Freigabeworkflow mit speziellen Benutzerrechten und besonderen Scriptaktionen

Guten Morgen,

In unseren Projekten habe ich eine spezielle Anforderung an Benutzerfreigaben, die nun per Workflow erledigt werden sollen.


Der Status Quo stellt sich wie folgt dar:

Es gibt momentan 5 Benutzer die Das Portal contentseitig warten und 5 Entwickler die zwar nur JSPs schreiben aber inhalte aus dem CMs beziehen.
Alle Benutzer sind im Moment Admin, was zwar funktioniert, aber nicht im Sinne des Erfinders einer Rechteverwaltung ist.

Szenario das umgesetzt werden soll:

- Es gibt nur EINEN Admin (den standard Admin Benutzer) und dieser Login soll nur für Notfälle benutzt werden.
- Die "minderen" Redakteure haben alle die Rolle Editor und dürfen editieren, anlegen... jedoch müssen sie eine Freigabe per Workflow anfordern.

- Es gibt 3 Chefredakteure, die das Recht haben direkt freizugeben und angeforderte Freigaben zu bestätigen

- Entwickler haben die Selben Rechte wie Chefredakteure (mit dem zusatz, dass sie auch Templates bearbeiten dürfen)

In Progress (in der testinstanz des CMS):
- Benutzer und Gruppen sind angelegt und richtig zugewiesen

- Der Anforderungs und Freigabeworkflow sowie die Direktfreigabe funktionieren bei einzelnen Seiten einwandfrei.

Mein Problem (anhand eines Realbeispiels):

- Die Chefredakteure bearbeiten täglich ca. 5 Seiten (jeder von Ihnen) und sitzen nicht im Selben Büro, somit ist die Kommunikation nicht unbedingt gegeben. Bei der Freigabe wird (z.B. von Chefredakteur 1) eine rekursive Freigabe verwendet und der komplette SubBaum wird somit freigegeben, egal ob eine Seite eines anderen benutzers (z.B. von Chefredakteur 2) noch gar nicht fertig ist. Dies bringt das Problem mit sich, dass unvollständige oder auch noch nicht für die Kunden bestimmte Inhalte auf das Portal gespielt werden.

Mein Wunsch:
- Bei einer Rekursiven direktfreigabe werden nur die vom startenden Benutzer editierten Inhalte freigegeben.

Das momentane Freigabescript (aus dem Demoprojekt)

//!Beanshell

import de.espirit.firstspirit.access.AccessUtil;

import de.espirit.firstspirit.access.store.pagestore.Page;

import de.espirit.firstspirit.access.store.IDProvider;

import de.espirit.firstspirit.access.schedule.ScheduleEntryRunningException;

/////////////////////////////////////////////////

/////////////////////////////////////////////////

checkOnly = false;         // Testlauf

releaseParentPath = true;    // Vaterkette freigeben

recursive = true;        // Rekursiv

IDProvider.DependentReleaseType dependentType = IDProvider.DependentReleaseType.DEPENDENT_RELEASE_NEW_AND_CHANGED; // Neue und geänderte Objekte (PageRef->Page->Media)

/////////////////////////////////////////////////

/////////////////////////////////////////////////

storeElement = context.getElement();

if (storeElement != null) {

    if (storeElement instanceof Page) {

        storeElement.setLock(false, true); // Sperre rekursiv lösen, damit der ServerActionHandle die Seite freigeben kann   

        recursive = true;

    } else {

        storeElement.setLock(false, false); // Sperre lösen, damit der ServerActionHandle die Seite freigeben kann

    }

    sah = AccessUtil.release(storeElement, checkOnly, releaseParentPath, recursive, dependentType);

    result = sah.getResult(true);

    // Sperre NICHT rekursiv setzen, damit die Transition geschaltet werden kann

    storeElement.setLock(true, false);

}

context.doTransition("Final");

Vielen Dank für die Hilfe

Christoph

0 Kudos
2 Replies
marza
I'm new here

Hallo Christoph,

die Lösung des Problems liegt vermutlich nicht allein im BeanShell-Script, sondern in dem Freigabeprozess selber. Wir haben zu diesem Zweck auf GitHub ein kleines Beispiel, "BasicWorksflows" veröffentlicht, mit dem man sehen kann, dass bei einer Freigabe alle mit der aktuellen Seite verbundenen Elemente, wie z.B. Bilder, freigegeben werden können: https://github.com/e-Spirit/basicworkflows

Ich denke, es dürfte keinen allzu großen Aufwand bedeuten, dass Beispiel so anzupassen, dass nur Änderungen an den bearbeiteten Seiten des aktuellen Benutzers rekursiv freigegeben werden (siehe ).http://www.e-spirit.com/odfs51/access/de/espirit/firstspirit/access/store/StoreElement.html#getEdito...

Viele Grüße und einen guten Start ins neue Jahr,

Marian

0 Kudos
pavone
I'm new here

Hallo Christoph,

benötigst Du noch weitere Hilfe oder hat Dir Marians Antwort bereits geholfen? In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Tim

0 Kudos