aVogt
Returning Creator

Datensatz (incl. Freigabestand) über Arbeitsablauf löschen

Jump to solution

Hallo,

ich habe vor einen Datensatz über einen Arbeitsablauf zu löschen. Dabei soll auch der Freigabestand (wir verwenden die Freigabe) der Datensatz endgültig gelöscht werden.
Der Arbeitsablauf wird bei dem zu Löschenden Datensatz über "Arbeitsablauf -> ..." (rechte Maustaste) gestartet.

...

ContentWorkflowable WF = (ContentWorkflowable) context.getWorkflowable();
Entity ent = WF.getEntity();
...

Session sess = schema.getSession();
sess.delete(ent);
sess.commit();

//freigabestand löschen
Session relsess = schema.getSession(true);
Entity relEnt = sess.find(tableName , new Object[] {"98752"} );
....


Die "relEnt" liefert mir "null".
Hängt das damit zusammen, dass das Löschen über einen Arbeitsablauf vorgenommen wird und der Freigabestand erst mit dem Ende des Arbeitsablaufes zur Verfügung steht?

Ich habe auch versucht vor dem
schema.getSession(true);
ein
schema.refresh();
aufzurufen. Ohne Erfolg.

Wenn ich das erste Löschen und das Löschen des Freigabestandes hintereinander in einem Script ausführe, klappt dass ohne Probleme.

Kann ich das Löschen des Freigabestandes in dem Arbeitsablauf irgendwie realisieren, oder muss das Löschen nach Ablauf des Scriptes passieren (über einen Auftrag, oder ...)?

Danke für Hinweise
Andreas

12 Replies
aVogt
Returning Creator

Hallo,

besten Dank. Funktioniert mit einer kleinen Ergänzung.

Vor dem "getIncomingReferences" musste ich noch ein

     ent.getSession().rollback(); 

einfügen, das sollte ja eigentlich nichts machen, oder?

Beim ersten Löschen eines Datensatzes funktionierte das Script. Will ich danach gleich noch einen Datensatz löschen erhalte ich eine Fehlermeldung:

de.espirit.or.ORException: The entity de.espirit.or.impl.EntityImpl@6c0b4764{OHB_BGD,PERSISTENT,released,FS_ID=98944,FS_VALID_FROM=1311078... isn't deletable in release session (current version still valid)

(Den Code habe ich direkt in das (Arbeitsablauf-)Script geschrieben).

Viele Grüße aus DD

Andreas Vogt

20.07.2011

P.s. Ich habe die Methode in ein Modul gepackt und da funktioniert es wie von Ihnen gepostet

0 Kudos
TimoMeister
Returning Responder

Hallo zusammen,

gibt es hier ein fertiges Script vom Helpdesk? Dann müsste ich nicht bei 0 anfangen.

Viele Grüße

Timo Meister

0 Kudos
a_reg
I'm new here

Auch wenn es schon ein alter Post ist:

nach

Entity eRelease = releaseSession.find(e.getKeyValue());

sollte noch eine Null-Check eingefügt werden, da man sonst eine NPE bei noch nie freigegebenen Datensätzen bekommt.

if(eRelease == null)        

     return true;

Gruß,

Andreas

0 Kudos