No workflow provides the "einreichen" action.

  • Guten Abend,
    nach langem Suchen und kein Finden der passenden Antwort bin ich nun hier gelandet. Ich bilde mit Plone einen Workfow ab. In diesem Workflow sollen Dokuments von öffentlichen Ordnern in die privaten Nutzerordner verschoben werden und der Status des Dokuments angepasst werden.

    Als ich zu Beginn das ganze als Administrator versuchte kam die folgende Fehlermeldung:
    No workflow provides the "einreichen" action. Daraufhin habe ich in meinen Intitialstatus (private) die einreichen-Transition hinzugefügt und ich konnte das Workflowskript ausführen.

    Nun jedoch habe ich mich als normaler Nutzer angemeldet. Dieser Nutzer hat eine lokale Rolle für das Objekt, welches ich verschieben möchte. Wenn ich nun allerdings das Skript wieder ausführe, kommt wieder die Meldung:
    No workflow provides the "einreichen" action. Mein Skript sieht wie folgt aus:

    Das Traceback sieht so aus:

    Wäre schön wenn mir jemand helfen könnte und mir Hinweise oder Tipps geben könnte um diesen Fehler zu beseitigen.

    Schon mal recht herzlichen Dank im voraus.

  • Hallo,

    koenntest du bitte mal deinen Kompletten Workflow beschreiben, graphisch wäre am optimalsten. Das Problem könnte sein, das du zwischen Zustand und Übergangstransition(Action) die Begrifflichkeiten verwechselt hast.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Hallo und danke für die rasche Antwort!

    Ich hab den aktuellen Workflow angehangen.
    "Privat" ist der Ausgangszustand, wenn der Übergang "einreichen" gewählt wurde, kopiert es das aktuelle Dokument in den home-Ordner des Nutzers mit der Rolle "Modulverantwortlicher". Dabei wird ein neuer Anfangsstatus gesetzt ("wartend"). Und genau dieser Schritt funktioniert nur, wenn ich ihn als Admin ausführe.
    In den nächsten Schritten wird das Dokument nicht mehr verschoben, sondern nur noch von berechtigten Personen der Status geändert.
    Nur an den gestrichelten Linien wird jeweils ein Dokument kopiert, und dort schlägt es fehl. Es scheint, dass nur ein Manager dazu berechtigt ist. Ich hab schon probiert, dem Skript die Proxy-Rolle Manager zu geben, und der Rolle Member weitere Einzelrechte.

    Vielen Dank für deine Hilfe!

  • Ich glaube du hast das Problem eigentlich schon erfasst, der workflow ist eigentlich in Ordnung. Die Permissions machen dir einen Strich durch die Rechnung.
    Ein Manager (Admin) kann jederzeit und überall Content erzeugen, ein normaler Nutzer nicht. Workflow Skripts werden aber mit den Nutzerrechten des Anwenders genutzt.
    Entweder muss jeder in jedem Ordner anlegen dürfen, oder aber du must das Skript ausserhalb des ProcetedPython laufen lassen.

    Gruss Pumukel.

    PS: AJung könnte bestimmt die genau Skript Lösung aufzeigen.

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Erst einmal recht herzlichen Dank für dein Bemühen.
    Jedoch ist mir noch derzeit noch einiges unklar. Das Kopieren und Einfügen funktioniert ohne Probleme. Da die lokale Rolle zugewiesen ist, ist das kein Problem. Kopiere ich das Dokument geht das originale Dokument in den Folgestatus jedoch die Kopie geht in den Anfangsstatus (private). Das Rechteproblem tritt also dann nur ein wenn ich den Status ändern will. Liegt dies dennoch an Schreibrechten? Und wie gesagt, als Admin angemeldet trat das Problem auch auf, bis ich die Transition in den Anfangstatus mit einfügte als mögliche Übergänge. Das verwirrt mich ein bisschen.

    Zitat

    ...oder aber du must das Skript ausserhalb des ProcetedPython laufen lassen.


    Bedeutet die ein externes Skript schreiben und dann vom Workflow aufrufen?

  • Hallo,

    Das was du sagst ist in sich schon die Antwort. Du hast einen Zustandsbasierten Automaten mit dm Workflow. Eine Transition aus einem Zustand heraus die diesen nicht akzeptiert führt immer in einen Fehler.
    Was ich nicht verstehe ist, warum du unbedingt kopieren willst, das schaft doch bloss Redundanz und ist unnütz, vorallem da Plone ja auch nach dem Verschieben die URL Reference behält, also die Seite unter der ursprünglichen Adresse verfügbar bleibt.

    Und ja die Skripte aus dem FileSystem haben nicht die Protected Python Beschränkungen.

    Also nochmal durchdenken, wie es arbeiten soll, und warum diese Wege, und entsprechend den Workflow und das Transitionsskript anpassen.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Hallo und danke!
    Ich hab mir deinen Ratschlag zu Herzen genommen und den Workflow noch mal neu aufgebaut. Vielleicht liegt es daran, dass ich nun vordefinierte actions verwende, oder daran, dass ich an einer anderen Stelle eine Rolle setze - aber es funktioniert.
    Und wozu das Kopieren dient: Wenn ein Dokument bearbeitet wird, muss die alte Version so lange bestehen bleiben, bis die neue Version durch mehrere Redakteure abgesegnet wurde. So lange liegt die alte Version im öffentlichen Ordner bestehen. (War nicht meine Idee... :-()

  • Erstmal gut wenn es funktioniert.

    Die sache mit der Kopie ist soweit einleuchtend, kann aber ggf. Probleme aufwerfen, wenn man später nicht mehr weiss welche das Orginal ist, welche abgesegnet ist usw. Interessant ist, dass Plone 3 einen working copy support bietet, der aber interne Referencen behält und vieles für einen macht.

    Vielleicht hilft es dir noch etwas.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Gut zu wissen, aber Upgrading kommt für mich leider nicht in Frage, weil ich dazu erst einmal zum Kampf gegen das Rechenzentrum ziehen müsste :x
    Später soll allerdings ein Versionierungs-Zusatzprodukt installiert werden.

    Übrigens habe ich herausgefunden, woran der Fehler wirklich gelegen haben könnte: Wenn ein Dokument kopiert wurde, während das gleiche Dokument vorher schon mal dort reinkopiert wurde und noch immer in diesem Ordner liegt, bricht der Workflow zusammen. Intern legt Plone das Dokument als "Kopie von xyz" an, und das Skript versucht, von dem bereits im "visible"-Zustand liegenden Dokument den Zustand zu "visible" zu ändern... Ohmann, jetzt habe ich Kopfschmerzen :smilie101:

  • Hallo Pumukel!
    Ich hätte da noch mal eine Frage: Du hast internen Referenzen erwähnt - was ist der Unterschied zur ID?
    Ich habe nämlich jetzt das Modul in einem anderen Dokument gelinkt, und wenn ich das gelinkte Modul mit dem neuen Modul ersetze, dann verschwindet der Link aus dem anderen Dokument.
    Ist das eine Art GarbageCollector, der alle toten Referenzen entfernt? Und kann man das irgendwie abschalten? Die URL zu dem Modul bleibt ja die gleiche, deswegen ist es in meinem Fall unerwünscht, dass diese Referenz entfernt wird. (Es wird durch mein System ja nie zu einem 404er Fehler kommen)
    Danke für's Lesen und (hoffentlich) eine Antwort!

  • Plone nutzt sehr stark Kataloge. Der Portal_Catalog speichert alle Metadata zu einem Objekt / Dokument, sobald man aber mehr als diese Metadaten braucht gibt es weitere Kataloge, z.B. den UID_Catalog oder den Reference_Catalog. Dieser Reference_Catalog wird beispielsweise bei LinguaPlone verwendet um eine Interne Referenz zwischen den Übersetzungen zu speichern.

    Die ID bzw. UID sind Index-Referenzen des Portal_Catalog of ein Objekt, die UID darf sich nie ändern, die ID ist der generierte Kurzname eines Objekts / Dokuments und kann geändert werden. Wenn du jetzt ein Objekt löscht, und wenn es bloss eine Kopie ist, hat diese eine eigene UID und ID, solange du dich auf die beziehst ist es logisch das der Portal_Catalog nach dem löschen nichts mehr finden kann.

    http://openbook.galileocomputing.de/plone25/plone_kap_04_003.htm

    Zur Implementierung schau dir mal LinguaPlone und plone.app.iterate an, da kann man sehen wie es genutzt wird.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Danke für die schnelle und informative Antwort!
    Weil also kein Weg daran vorbei geht, habe ich die Inhalte der Kopie ins Original kopiert und die Kopie gelöscht, sodass das Original mit seiner Referenz erhalten bleibt.
    Dies war (hoffentlich) mein letzter Hilferuf wegen Plone :)