apetrov
I'm new here

entity.isReleased immer false?

Jump to solution

Hallo zusammen! Wir versuchen über einen Workflow derzeit einen freigegebenen Datensatz zu publizieren. Nach dem Workflow wird jedoch der zuvor freigegebene Datensatz wieder auf nicht freigegeben gesetzt. Die Methode entity.isReleased() gibt entsprechend bei freigegebenen Datensätzen immer ein false zurück.

Über welchen Weg kann man denn nun den echten Freigabestand herausfinden?

Hier der relevante Teil des Scripts:

Entity entity = workflowable.getEntity();

context.logInfo(entity.isReleased);        //gibt auch bei freigegebenen Datensätzen ein false

(Verwendet wird die Version 5.0.210.55630)

1 Solution

Accepted Solutions
lschilling
I'm new here

So, folgende Zeilen sollten dafür sorgen den ReleaseStatus zu bekommen, der vor dem Start das Workflows aktiv war.

historyEntities = entity.getSession().getHistory(entity.getKeyValue());
for(Entity historyEntity : historyEntities)
{
   if(!historyEntity.equals(entity)
   {
     isReleased = historyEntity.isReleased();
     break;
   }
}

View solution in original post

0 Kudos
6 Replies
Peter_Jodeleit
Crownpeak employee

Bereits das Starten des Workflows ändert den Status des Datensatzes auf "nicht freigegeben". Der Status im Skript ist also "der echte" Freigabestand.

Peter
0 Kudos

Und wie gelangt man an den Status vor dem Starten? Das letzte Elemement von der History? Oder wurde die History mit starten des Worklfows auch geändert?

Und welche Möglichkeit gibt es dennoch herauszufinden, ob der Datensatz vor dem Aufruf des Workflows bereits freigegeben war?

0 Kudos

Man kann die Historie des Elements befragen - oder man wählt einen ganz anderen Ansatz. Entweder man integriert das Publizieren in den Freigabeprozess (oder die Freigabe in den Publizierungsprozess). Das ist das übliche Vorgehen. Oder man macht einen Publizierungs-Workflow, der nicht auf dem Datensatz gestartet wird (also einen Workflow, der nur in den Nutzdaten einen Verweis auf das freizugebende Element hat).

Peter
0 Kudos

Danke! Über den Workflow soll ja gar nichts freigegeben werden. Sondern anhand des aktuellen Status (freigeben/nicht freigegeben) werden Nachrichten an die UX Bridge versendet. Somit fällt das übliche Vorgehen aus, da der Status des aktuellen Datensatzes eben nicht verändert werden soll. Mal schauen was die Historie so hergibt.

0 Kudos
lschilling
I'm new here

So, folgende Zeilen sollten dafür sorgen den ReleaseStatus zu bekommen, der vor dem Start das Workflows aktiv war.

historyEntities = entity.getSession().getHistory(entity.getKeyValue());
for(Entity historyEntity : historyEntities)
{
   if(!historyEntity.equals(entity)
   {
     isReleased = historyEntity.isReleased();
     break;
   }
}

0 Kudos