- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
java.lang.IllegalStateException: after deleting an element with the DeleteOpration.perform
Hallo zusammen,
Die DeleteOperation wirft eine Exception beim Lรถschen einer Seite, die Deprecated AccessUtil.delete aber nicht.
Ist das ein Bug oder mache ich was falsch?
*********************** DELETE SKRIPT *************************
doDelete() {
if (se != null) {
pageName = se.getName();
se.setLock(false);
OperationAgent operationAgent = context.requireSpecialist(OperationAgent.TYPE);
DeleteOperation deleteOperation = operationAgent.getOperation(DeleteOperation.TYPE);
DeleteOperation.Result result = deleteOperation.perform(se);
if (result.isSuccessful()) {
showInfoMessage("Die Seite : " + pageName + " wurde erfolgreich gelรถscht");
context.doTransition("->End");
} else {
deleteFailedElements = "\nDeleteFailed : " + result.getDeleteFailedElements();
lockedFailedElements = "\nLockedFailedElements : " + result.getLockFailedElements();
referencedElements = "\nReferencedElements : " + result.getReferencedElements();
missingElements = "\nMissingElements : " + result.getMissingPermissionElements();
nonChangeablePackagePoolElements = "NonChangeablePackagePoolElements : " + result.getNonChangeablePackagePoolElements();
fails = "\nFails:" + referencedElements + lockedFailedElements + deleteFailedElements + missingElements + nonChangeablePackagePoolElements;
text = "Fehler bei lรถschen der Seite : " + pageName + fails;
log(text, RequestOperation.Kind.ERROR);
context.doTransition("->End");
}
} else {
showInfoMessage("Die Seite : " + pageName + " wurde nicht gefunden");
}
}
********************************************************************************
Client Version: 5.2.210108.79507
Java Version: 11.0.9.1 AdoptOpenJDK
FSVersion=5.2.210108.79507#6336;JDK=11.0.9.1 64bit AdoptOpenJDK;OS=Windows 10 10.0 amd64;Date=09.03.2021 15:47:41 (I)
java.lang.IllegalStateException: element ''todelete' (ID=64058, project=2005)' deleted
at de.espirit.firstspirit.store.access.DefaultStoreElement.updateWorkflowData(DefaultStoreElement.java:664)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1233)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doAutomaticActivities(TaskImpl.java:1617)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1237)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doAutomaticActivities(TaskImpl.java:1617)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1237)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doAutomaticActivities(TaskImpl.java:1617)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1237)
at de.espirit.firstspirit.server.taskmanagement.TaskImpl.doTransition(TaskImpl.java:1085)
at de.espirit.firstspirit.agency.WorkflowClientAgentImpl.startWorkflow(WorkflowClientAgentImpl.java:500)
at de.espirit.firstspirit.agency.WorkflowClientAgentImpl.startWorkflow(WorkflowClientAgentImpl.java:100)
at de.espirit.firstspirit.agency.WorkflowClientAgentImpl.startWorkflow(WorkflowClientAgentImpl.java:110)
at de.espirit.firstspirit.client.action.WorkflowUtil.startWorkflow(WorkflowUtil.java:66)
at de.espirit.firstspirit.ui.actions.workflows.WorkflowStartAction.perform(WorkflowStartAction.java:40)
at de.espirit.firstspirit.ui.actions.swing.SwingAction.actionPerformed(SwingAction.java:150)
at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.desktop/java.awt.Component.processEvent(Unknown Source)
at java.desktop/java.awt.Container.processEvent(Unknown Source)
at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:161)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:138)
at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:131)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Caused by: de.espirit.firstspirit.access.store.ElementDeletedException
at de.espirit.firstspirit.store.access.DefaultStoreElement._setLock(DefaultStoreElement.java:479)
at de.espirit.firstspirit.store.access.DefaultStoreElement._setLock(DefaultStoreElement.java:488)
at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:470)
at de.espirit.firstspirit.store.access.DefaultStoreElement.setLock(DefaultStoreElement.java:461)
at de.espirit.firstspirit.store.access.DefaultStoreElement.updateWorkflowData(DefaultStoreElement.java:660)
... 54 more
Caused by: de.espirit.firstspirit.server.storemanagement.exception.ElementNotFoundException: Element with id 64058 not found in pagestore!
at de.espirit.firstspirit.store.access.StoreElementLockCache.lockElement(StoreElementLockCache.java:104)
at de.espirit.firstspirit.store.access.DefaultStoreRoot.lockElement(DefaultStoreRoot.java:639)
at de.espirit.firstspirit.store.access.DefaultStoreElement._setLock(DefaultStoreElement.java:477)
- Labels:
-
Developers
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
doDelete() {
se = context.getElement();
parent = se.getParent();
if (se != null) {
pageName = se.getName();
se.setLock(false);
OperationAgent operationAgent = context.requireSpecialist(OperationAgent.TYPE);
DeleteOperation deleteOperation = operationAgent.getOperation(DeleteOperation.TYPE);
DeleteOperation.Result result = deleteOperation.perform(se);
if (result.isSuccessful()) {
if (parent != null) {
parent.refresh();
context.getGuiHost().gotoTreeNode(parent);
}
showInfoMessage("Die Seite : " + pageName + " wurde erfolgreich gelรถscht");
context.doTransition("->End");
} else {
deleteFailedElements = "\nDeleteFailed : " + result.getDeleteFailedElements();
lockedFailedElements = "\nLockedFailedElements : " + result.getLockFailedElements();
referencedElements = "\nReferencedElements : " + result.getReferencedElements();
missingElements = "\nMissingElements : " + result.getMissingPermissionElements();
nonChangeablePackagePoolElements = "NonChangeablePackagePoolElements : " + result.getNonChangeablePackagePoolElements();
fails = "\nFails:" + referencedElements + lockedFailedElements + deleteFailedElements + missingElements + nonChangeablePackagePoolElements;
text = "Fehler beim Lรถschen der Seite : " + pageName + fails;
log(text, RequestOperation.Kind.ERROR);
context.doTransition("->End");
}
} else {
showInfoMessage("Die Seite : " + pageName + " wurde nicht gefunden");
}
}
doDelete();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Zakaria,
bei Fehlern ist es sinnvoller, diese beim TechSupport einzureichen, damit das Verhalten dort analysiert und gegebenenfalls als Bug aufgenommen werden kann.
Dem Stacktrace nach sieht es nach einem Reihenfolge-Problem aus - die Seite wird gelรถscht und danach wird versucht, den Workflow auf der Seite weiterzuschalten.
Das Problem sollte verschwinden, wenn Du den Workflow zuerst durchschaltest [ context.doTransition("->End"); ] und danach die Seite lรถscht [ DeleteOperation.Result result = deleteOperation.perform(se); ]
Das gleiche Problem mรผsste aber auch bei AccessUtil.delete auftreten, sofern Du auch dort auf das Ergebnis wartest, bevor Du weiterschaltest. Kann es sein, dass <ServerActionHandle>.getResult(true) dort nicht oder erst nach dem Weiterschalten aufgerufen wurde?
Viele Grรผรe
Holger
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Moin Holger,
danke fรผr die schnelle Rรผckmledung und die Empfehlung, ich habe es leider schon so probiert wie von Dir beschrieben, es kommt zu dem selben Fehler ๐
Also erstmal [ context.doTransition("->End"); ] und danach die Seite gelรถscht [ DeleteOperation.Result result = deleteOperation.perform(se); ] Der selbe Fehler tritt auf.
Mit AccessUtil.delete, was ja Deprecated ist, funktioniet es wie gewollt, der Fehler tritt in diesem Fall nicht auf.
Hรคttest Du vllt. einen Link fรผr den TechSupport? Danke im Voraus! Ich kann in diesem Fall gerne die Skripte und den Workflow zur Verfรผgung stellen
Viele Grรผรe,
Zakaria.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Holger,
ich habe leider keinen Konto fรผr den TechSupport. Wie gesagt siehe bitte oben der Code, wo der Fehler auftritt.
Der Code unten funktioniert problemlos.
***********************************************************************************************************************************************
//!Beanshell
import de.espirit.firstspirit.common.gui.*;
import de.espirit.firstspirit.ui.operations.*;
import de.espirit.firstspirit.store.operations.DeleteOperation;
import de.espirit.firstspirit.access.store.BasicInfo;
import de.espirit.firstspirit.agency.OperationAgent;
import de.espirit.firstspirit.access.AdminService;
showInfoMessage(message) {
JOptionPane.showMessageDialog(null, message, "", JOptionPane.INFORMATION_MESSAGE, null);
}
log(String text, RequestOperation.Kind kind) {
requestOperation = context.requireSpecialist(OperationAgent.TYPE).getOperation(RequestOperation.TYPE);
requestOperation.setKind(kind);
requestOperation.addOk();
requestOperation.perform(text);
}
doDelete() {
se = context.getElement();
parent = se.getParent();
try {
se.setLock(false, false);
handle = de.espirit.firstspirit.access.AccessUtil.delete(se, true);
handle.getResult();
handle.checkAndThrow();
Set notDeleted = new HashSet();
progress = handle.getProgress(true);
notDeleted.addAll(progress.getDeleteFailedElements());
notDeleted.addAll(progress.getMissingPermissionElements());
notDeleted.addAll(progress.getLockFailedElements());
notDeleted.addAll(progress.getReferencedElements());
if (!notDeleted.isEmpty()) {
text = "Folgende Elemente konnten nicht gelรถscht werden: " + notDeleted;
log(text,RequestOperation.Kind.INFO);
}
if (parent != null) {
parent.refresh();
context.getGuiHost().gotoTreeNode(parent);
}
if (!se.isDeleted()) {
se.setLock(true, false);
}
showInfoMessage("Die Seite : " + se.getName() + " wurde erfolgreich gelรถscht");
context.doTransition("->End");
} catch (Exception ex) {
text = "Fehler beim Lรถschen der Seite "+se.getName()+": \n" + ex;
log(text,RequestOperation.Kind.ERROR);
}
}
doDelete();
****************************************************************************************************************************************************
Kรถnntest du es bitte an dem Techsupport weiterleiten? Vielen Dank!
Viele Grรผรe,
Zakaria.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Holger,
ich habe Deinen Kommentar erst gerade gesehen, vielen Dank
Viele Grรผรe,
Zakaria.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
doDelete() {
se = context.getElement();
parent = se.getParent();
if (se != null) {
pageName = se.getName();
se.setLock(false);
OperationAgent operationAgent = context.requireSpecialist(OperationAgent.TYPE);
DeleteOperation deleteOperation = operationAgent.getOperation(DeleteOperation.TYPE);
DeleteOperation.Result result = deleteOperation.perform(se);
if (result.isSuccessful()) {
if (parent != null) {
parent.refresh();
context.getGuiHost().gotoTreeNode(parent);
}
showInfoMessage("Die Seite : " + pageName + " wurde erfolgreich gelรถscht");
context.doTransition("->End");
} else {
deleteFailedElements = "\nDeleteFailed : " + result.getDeleteFailedElements();
lockedFailedElements = "\nLockedFailedElements : " + result.getLockFailedElements();
referencedElements = "\nReferencedElements : " + result.getReferencedElements();
missingElements = "\nMissingElements : " + result.getMissingPermissionElements();
nonChangeablePackagePoolElements = "NonChangeablePackagePoolElements : " + result.getNonChangeablePackagePoolElements();
fails = "\nFails:" + referencedElements + lockedFailedElements + deleteFailedElements + missingElements + nonChangeablePackagePoolElements;
text = "Fehler beim Lรถschen der Seite : " + pageName + fails;
log(text, RequestOperation.Kind.ERROR);
context.doTransition("->End");
}
} else {
showInfoMessage("Die Seite : " + pageName + " wurde nicht gefunden");
}
}
doDelete();

