Hallo Community,
ich bekomme leider immer wieder eine "Not locked"-Exception beim Abschließen eines Workflows. Das ganze passiert aber nur bei einer Seitenreferenz, bei Inhalte(-Ordner) usw. klappt es.
Hier kurz die Fehlermeldung die mir FS ausspuckt:
Client Version: 4.2.454.47473
Java Version: 1.7.0_05 Oracle Corporation
FSVersion=4.2.454.47473#2499;JDK=1.7.0_05 64bit Oracle Corporation;OS=Windows 7 6.1 amd64;Date=18.02.2013 17:01:56
java.lang.IllegalStateException: node 'intra_telefonverzeichnis_1' (ID=1780377, project=1665384) not locked
at de.espirit.firstspirit.store.access.DefaultStoreElement.updateWorkflowData(DefaultStoreElement.java:654)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1154)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doAutomaticActivities(TaskImpl.java:1477)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1158)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1012)
at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:432)
at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:65)
at de.espirit.firstspirit.client.action.WorkflowAction.startWorkflow(WorkflowAction.java:74)
at de.espirit.firstspirit.client.action.WorkflowUtil.startWorkflow(WorkflowUtil.java:66)
at de.espirit.firstspirit.client.action.WorkflowMenuAction$WFStartAction.actionPerformed(WorkflowMenuAction.java:272)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:130)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:115)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:108)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Ich versuche die Freigabe über ein Executable auszuführen da wir dieses in ein Modul implementiert haben. Hier der relevante Teil des Codes von dem aus die Methode aufgerufen wird in welcher dann die Exception auftritt:
this.setLock(storeElement, true);
if (this.context instanceof WorkflowScriptContext) {
try {
LOG.info("do transition to 'Final'");
((WorkflowScriptContext) this.context).doTransition("Final"); // an dieser Stelle wird die Exception geworfen
} catch (IllegalAccessException ex) {
LOG.error(ex);
}
}
Für das "locking" habe ich mir eine Methode geschrieben damit es, der Doku entsprechend, immer "richtig" gemacht wird:
private boolean setLock(final IDProvider storeElement, final boolean lock) {
boolean isRecursive = false;
final boolean wasLocked = storeElement.isLocked();
try {
if (storeElement instanceof Page) {
isRecursive = true;
}
if (!wasLocked && lock) {
// set lock only if the node is not locked already
storeElement.setLock(lock, isRecursive);
} else if (wasLocked && !lock) {
// remove lock only if node is locked
storeElement.setLock(lock, isRecursive);
}
} catch (ElementDeletedException ex) {
LOG.error(ex);
} catch (LockException ex) {
LOG.error("Node '" + storeElement.getUid() + "' already locked by '" + ex.getUserLoginName() + "'!", ex);
}
return isRecursive;
}
Ich habe schon alle möglichen Konstellationen versucht aber nichts verhinderte den Fehler. Daher mein Gesuch an Euch.
Danke und Gruß
Christian