- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Freigabe von Datenquellen per Script im Workflow
Hallo,
folgende Frage: In einem Workflow lasse ich ein Script laufen, welches einen Datensatz der Datenbank freigeben soll. Im Kern tut es folgendes:
// Content2 holen, auf dem der Workflow gestartet wurde
cc = context.getTask().getWorkflowable().getContent();
cc.refresh();
// Entity / Zeile holen, auf der der Workflow gestartet wurde
ce = context.getTask().getWorkflowable().getEntity();
ce.refresh();
// Wenn noch nicht freigegeben, dann freigeben
if (!ce.isReleased()){
print(ce.getState());
se.release(ce,"Workflow");
}
Ab und zu mal klappt das, aber ab und zu kommt auch folgender Fehler. Hat jemand eine Idee, woran das liegen kann? Und warum kann man die ganzen famosen Freigabe-Optionen der Admins nicht auch den Usern freischalten (oder hab ich da was รผbersehen?)
Danke & Grรผรe,
Arndt
ERROR 15.03.2011 16:47:55.395 (de.espirit.firstspirit.client.action.WorkflowAction): Error creating task - de.espirit.or.ORException: Release error: No entity with the id (de.espirit.or.impl.IdentifierImpl$TemporalIdentifierUC@988bc4fc{users,FS_ID=192,FS_VALID_FROM=1300204196250,FS_VALID_TO=9223372036854775807,FS_RELEASE_TO=0}) 9223372036854775807
FSVersion=4.2.219.38784#1870;JDK=1.5.0_14 32bit Sun Microsystems Inc.;OS=Windows XP 5.1 x86;Date=15.03.2011 16:47:55
de.espirit.or.ORException: Release error: No entity with the id (de.espirit.or.impl.IdentifierImpl$TemporalIdentifierUC@988bc4fc{users,FS_ID=192,FS_VALID_FROM=1300204196250,FS_VALID_TO=9223372036854775807,FS_RELEASE_TO=0}) 9223372036854775807
at de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:269)
at de.espirit.or.impl.ReleaseCommand.accept(ReleaseCommand.java:42)
at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:599)
at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:74)
- Labels:
-
Developers
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wenn ich das richtig verstehe starten sie den Workflow auf einem Datensatz im Bereich Datenquellen und es soll genau der Datensatz freigegeben werden, auf dem der Workflow auch gestartet wurde.
Warum verwenden Sie dafรผr nicht die FS-Funktionalitรคten des Workflows, wie in dem Beispielworkflow im Mithras Energy Demoprojekt?
Diesen Workflow kรถnnen sie dann auch individuell den verschiedenen Benutzergruppen zur Verfรผgung stellen (Arbeitsablaufrechte)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo,
weil ich einen einzigen Workflow fรผr "Rekursiv" und "Einzeln freigeben" gebaut habe. Dabei bin ich zu dem Schluร gekommen, dass beides in einem einzigen Workflow nur mit einem Script hinzubekommen ist. Das mit den Datenbanken ist dann spรคter dazu gekommen. Die Aufgabenstellung entspringt also mitunter historischen Grรผnden
Der Hinweis auf die normalen Mechanismen ist sehr hilfreich, das werde ich auf jeden Fall als Workaround verwenden. Trotzdem wรผrde es mich natรผrlich interessieren, ob Sie da eine These haben, warum die beschriebene Vorgehensweise nicht passt - meine Redakteure haben sich schon so an den bisherigen Workflow gewรถhnt.
Herzliche Grรผรe,
Arndt Bรคr
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Trotzdem wรผrde es mich natรผrlich interessieren, ob Sie da eine These haben, warum die beschriebene Vorgehensweise nicht passt
Der typische Fall, bei dem diese Exception auftritt, ist der Zustand, dass der freizugebene Datensatz auf dem Server bereits geslรถscht wurde. Dies ist im Multiuserbetrieb ein valider Betriebszustand und sollte im Skript entsprechend behandelt werden.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Das ist leider definitiv nicht der Fall - es gibt momentan in der Testdatenbank nur 4 Datensรคtze, und die sind alle da.
Ich meine aber etwas anderes rausgefunden zu haben: Die Exception scheint gar nicht meiner Release-Aktion zu entspringen, sondern dem FS-eigenen Release-Mechanismus. Beim Workflow war nรคmlich "Freigeben" im letzten Schritt angehakt (um den FS-Workflow-eigenen Mechanismus zu verwenden, siehe Ihren Hinweis). Kann es sein (meine These), dass FS beim finalen Freigeben des einzelnen Datensatzes die Exception wirft, wenn ich den vorher schon per Script freigegeben hatte?
Ich habe mein Script jetzt folgendermaรen modifiziert:
- "Freigabe" durch FS ist angehakt
- Wenn ich Einzelelemente freigebe (Seiten/Medien/Datensรคtze), verlasse ich mich voll auf FS
- Wenn ich Datensรคtze komplett freigebe (wie Admin: "Alle Zeilen freigeben"), lasse ich den selektierten Datensatz aus
- Wenn ich Medien/Seiten rekursiv per Script freigebe, muss ich auf den selektierten Knoten nachher wieder ein Lock setzen, weil FS das so erwartet
Alternativ hรคtte ich auch einfach die "Freigabe"-Option im Workflow ausschalten kรถnnen, aber dann hรคtte ich im Page/Site/Mediastore รผber die Kinder rekursieren mรผssen - jetzt benutze ich das Rekursiv-Flag der .release-Methode ๐
Macht das als These Sinn? Die Erprobung in der Praxis wird es weisen.
Grรผรe,
Arndt Bรคr
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Herr Bรคr,
arnbae schrieb:
...Ich habe mein Script jetzt folgendermaรen modifiziert:
- "Freigabe" durch FS ist angehakt
- Wenn ich Einzelelemente freigebe (Seiten/Medien/Datensรคtze), verlasse ich mich voll auf FS
- Wenn ich Datensรคtze komplett freigebe (wie Admin: "Alle Zeilen freigeben"), lasse ich den selektierten Datensatz aus
- Wenn ich Medien/Seiten rekursiv per Script freigebe, muss ich auf den selektierten Knoten nachher wieder ein Lock setzen, weil FS das so erwartet
Alternativ hรคtte ich auch einfach die "Freigabe"-Option im Workflow ausschalten kรถnnen, aber dann hรคtte ich im Page/Site/Mediastore รผber die Kinder rekursieren mรผssen - jetzt benutze ich das Rekursiv-Flag der .release-Methode ๐
Macht das als These Sinn? Die Erprobung in der Praxis wird es weisen.
Das klingt fรผr mich erst einmal einleuchtend.
Nur warum verzweigen Sie im Skript nicht einfach auf zwei verschiedene Endpunkte? Wenn Sie per Skript freigegeben, dann schalten Sie eine Transition zu einem Endpunkt ohne Freigabe.
Wenn Sie die FirstSpirit Mechanismen nutzen wollen und somit nicht per Skript freigegeben, dann schalten Sie zu einem Endpunkt mit Freigabe.
Viele Grรผsse aus Dortmund,
Holger Hรถbbel
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Wenn meine These stimmt, dann wรคre das sicherlich der Kรถnigsweg.
Um ihre Warum-Frage zu beantworten: Weil sich das mit der Zeit so entwickelt hat :smileysilly: => "Historisch gewachsene Lรถsung ..."

