Aller au contenu principal

Wie kommt man an die Liste offener Workflows?

Commentaires

7 commentaires

  • Zendesk API User
    Author: hoebbel - 4/7/2025 14:56

    Hallo Matthias,

    ich würde die Workflows auf dieselbe Art identifizieren. 

    Auf dem Screenshot fällt mir auf, dass die Workflows, die Du nicht findest, einen roten Hintergrund haben. Das deutet darauf hin, dass mit diesen irgendetwas nicht in Ordnung ist. Das kann passieren, wenn entweder der zugrundeliegende Workflow oder der entsprechende Knoten im Projekt gelöscht wurde bzw. nicht erreichbar ist.

    Da die Knoten mit der Suche nicht gefunden werden, tippe ich darauf, dass diese im Projekt gelöscht wurden bzw. nicht erreichbar sind. In diesem Fall werden sie von der Suche auch nicht zurückgegeben.

    Such doch mal nach den entsprechenden UIDs (Suche/Suche nach Referenznamen und Suchen nach dem Wert in der Spalte Kontext). Wenn meine Vermutung korrekt ist, solltest Du diese auch nicht finden oder diese nach dem Anklicken des Suchergebnisses nicht im Baum angezeigt werden. (Der Knoten ist also Links im Baum nicht da, aber die Darstellung in der Mitte (GUI,...) ist sichtbar)

    An dieser Stelle wird es dann kompliziert. 
    Die Persistenz der Workflows ist unabhängig von der Persistenz der Knoten im Baum. Wenn beim Löschen eines Knotens etwas schief läuft, kann es theoretisch passieren, dass der darauf laufende Workflow nicht sauber geschlossen wird. 

    Je nachdem, was hier schief gelaufen ist und was fachlich die gewünschte Lösung ist, muss man entscheiden, wie es hier weitergehen soll.

    Wenn "nur" die rot hinterlegten Workflows einfach verschwinden sollen, reicht es (wahrscheinlich) aus, wenn diese einmalig über den Button "X" geschlossen werden. Dann wird in der Persistenz des Workflows hinterlegt, dass er geschlossen wurde und er sollte aus der Liste verschwinden.

    Wenn das zugrundeliegende Problem identifiziert und behoben werden soll, muss das Projekt mit dem Repository Viewer analysiert und gegebenenfalls repariert werden. In diesem Fall wende dich bitte an unseren Customer Support, da eine Fehlbenutzung dieses Backend Tools schlimmstenfalls dazu führt, dass das Projekt gar nicht mehr geöffnet werden kann. Insofern werde ich hier keine entsprechende Anleitung posten 

    Viele Grüße
    Holger

     

    0
  • Zendesk API User
    Author: matthiasforberg - 5/12/2025 11:41

    Hallo nochmal,

    ich habe ein Skript geschrieben, um die nach o.g. Methode gefundenen offenen Workflows zu schließen (wenn älter als x Tage, das habe ich hier im Beispiel gekürzt). Das läuft auch durch und meldet mir, dass angeblich alles entfernt wurde, aber die Tasks sind immer noch offen. Auch in den Seiten selbst sieht man keinerlei Änderung in der Historie. Warum funktioniert das item.removeTask() nicht? wenn ich es direkt im Kontext einer Seite oder Datensatz etc. per Beanshell anbringe, löscht es den Workflow korrekt. Nur in dem Skript nicht. Hier der Code:

    //!Beanshell import de.espirit.firstspirit.access.Task; import de.espirit.firstspirit.agency.QueryAgent; int count = 0; QueryAgent agent = context.requireSpecialist(QueryAgent.TYPE); for (item : agent.answer("fs.workflow = *")) { Task task = item.getTask(); context.logInfo("Workflow found for element "+item.getName()+" ("+item.getId()+") -> removing task"); try { item.removeTask(); count++; } catch (Exception ex) { context.logError(ex.getMessage()); } } context.logInfo("Removed "+count+" tasks.");

    und die Logausgabe:

    INFO 12.05.2025 12:27:41.670 (...ScriptContextImpl): Workflow found for element testpage_contentcreator (135119) -> removing task INFO 12.05.2025 12:27:41.689 (...ScriptContextImpl): Workflow found for element debugen_1t7vlpcw6u3q2 (94318) -> removing task INFO 12.05.2025 12:27:41.745 (...ScriptContextImpl): Workflow found for element FileType: #7053 (207586) -> removing task INFO 12.05.2025 12:27:41.797 (...ScriptContextImpl): Removed 3 tasks.

    Einzig auf dem Datensatz wurde der WF tatsächlich entfernt, er bleibt aber noch rot hinterlegt (als Fehler) in der Liste. Bei den beiden Seiten ist gar nichts passiert. Was mache ich falsch? 

    Viele Grüße
    Matthias

    0
  • Zendesk API User
    Author: hoebbel - 5/12/2025 11:51

    Hallo Matthias,

    wenn ich es direkt im Kontext einer Seite oder Datensatz etc. per Beanshell anbringe, löscht es den Workflow korrekt.
    Wirklich? Wenn Du das im SiteArchitect ausführst und anschließend auf dem entsprechenden Knoten den Refresh Button mit gedrückter Shift Taste betätigst, sollte der scheinbar gelöschte Task wieder erscheinen.

    Ursache ist, dass Du die Änderung (Entfernen des Tasks) nicht gespeichert hast, sie also nur für die aktuelle Session gültig ist.

    Lösung: Das Element erst mit einem Lock versehen, dann den Task löschen, das Element speichern und den Lock entfernen, also
    item.setLock(true);
    item.removeTask();
    item.save("Task removed");
    item.setLock(false);

    Viele Grüße
    Holger

    0
  • Zendesk API User
    Author: matthiasforberg - 5/12/2025 12:32

    Ogottogott, das ist ja peinlich

    Da hätte ich natürlich auch selbst drauf kommen können... Ich war davon ausgegangen, dass es dafür kein Lock/Save braucht, weil es direkt im Kontextmenü von Objekten auch ohne das auskommt. Aber klar, im größeren Kontext ist das natürlich nötig. Danke!

    Grüße
    Matthias

    0
  • Zendesk API User
    Author: matthiasforberg - 5/12/2025 16:09

    Einmal muss ich aber doch noch nachhaken. Die Workflows werden jetzt zwar von den jeweiligen Objekten entfernt, aber nicht aus der Liste im Knoten "Arbeitsabläufe". Es sagt mir "Fehlende Arbeitsablauf-Referenz im Element xyz":

    Muss da noch was anderes aktualisiert werden? Irgendein Index oder der Referenzgraph oder sowas?

    Grüße
    Matthias

    0
  • Zendesk API User
    Author: hoebbel - 5/13/2025 12:41

    Hallo Matthias,

    ich vermute, dass es daran liegt, dass die Tasks nicht explizit beendet werden (task.closeTask()), sondern nur vom Knoten entfernt werden (IDProvider.removeTask()).
    Kannst Du das Problem mittels task.closeTask() lösen (nach dem removeTask()) ?

    Viele Grüße
    Holger

    0
  • Zendesk API User
    Author: matthiasforberg - 5/14/2025 8:51

    Hallo Holger, vielen Dank für die Hilfe, mit dem task.closeTask() nach dem item.removeTask() klappt es jetzt vollständig!

    Viele Grüße
    Matthias

    0

Vous devez vous connecter pour laisser un commentaire.