Zum Hauptinhalt gehen

"""java.lang.IllegalStateException: after deleting an element with the DeleteOpration.perform"""

Kommentare

6 Kommentare

  • Zendesk API User
    Author: hoebbel - 3/10/2021 7:03

    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

    0
  • Zendesk API User
    Author: zbennis - 3/10/2021 7:47

    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 :smileyhappy:

    Viele Grüße,

    Zakaria.

    0
  • Zendesk API User
    Author: hoebbel - 3/10/2021 8:02

    Hallo Zakaria,

    den TechSupport findest Du unter https://help.e-spirit.com/

    Viele Grüße

    Holger

    0
  • Zendesk API User
    Author: zbennis - 3/10/2021 8:11

    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.

    0
  • Zendesk API User
    Author: zbennis - 3/10/2021 8:20

    Hallo Holger,

    ich habe Deinen Kommentar erst gerade gesehen, vielen Dank :smileyhappy:

    Viele Grüße,

    Zakaria.

    0
  • Zendesk API User
    Author: zbennis - 3/10/2021 10:44

    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();

    0

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.