Workflow-Aktion konnte nicht abgeschlossen werden

cancel
Showing results for 
Search instead for 
Did you mean: 
dsoe
Member II

Workflow-Aktion konnte nicht abgeschlossen werden

Hallo zusammen,

ich habe folgenden Anwendungsfall durch eine Regel nachgebildet:

Wenn der Benutzer A ein Dokument im Ordner X erstellt, wird dem Dokument automatisch ein einfacher Workflow zugewiesen:  „Verschieben Element nach 'Y' wenn Aktion 'Genehmigen' durchgeführt wird.“

Wenn der Benutzer A die Aktion 'Genehmigen' durchführt, erscheint folgender Hinweis: „Die Workflow-Aktion konnte nicht abgeschlossen werden“. Das Problem liegt wohl daran, dass der Benutzer A keine Zugriffsberechtigung auf Ordner 'Y' hat. Der Anwendungsfall sieht dies aber auch nicht vor, denn Benutzer A darf nur Zugriffsberechtigungen auf Ordner X haben.

Wie lässt realisieren, dass die eigentliche Workflowaktion, also das Verschieben von Dokumenten, vom System und nicht vom Anwender durchgeführt wird?
2 Replies
jpfi_4454
Member II

Re: Workflow-Aktion konnte nicht abgeschlossen werden

Hallo,
hinter dem Simple-Workflow hängt auf der Alfresco-Repo Ebene ein ActionExecuter (org.alfresco.repo.action.executer.TransitionSimpleWorkflowActionExecuter).
Diesen musst du über eigene bean überschreiben & AuthenticationUtil.runAs rund unm dein move nutzen, e.g.:

AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>()
         {
            public String doWork() throws Exception
            {
                nodeService.moveNode(
                      actionedUponNodeRef,
                      destinationFolder,
                      ContentModel.ASSOC_CONTAINS,
                      QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, qname));
               return null;
            }
         }, AuthenticationUtil.getSystemUserName());
cheers, jan
dsoe
Member II

Re: Workflow-Aktion konnte nicht abgeschlossen werden

Danke für deine schnelle Antwort. Der Benutzer A kann nun die Aktion 'Genehmigen' durchführen und das Dokument wird in Ordner Y verschoben (ohne das Benutzer A Zugriffsrechte auf Ordner Y besitzt).

Ab hier entsteht leider ein neues Problem:

1. Der Ordner, in dem das genehmigte Dokument verschoben wurde, ist ebenfalls mit einer Regel ausgestattet. Die Regel ist ähnlich wie die erste: Beim 'Genehmigen' soll das Dokument verschoben werden, sagen wir in Ordner Z (Benutzer B hat keine Zugriffsrechte auf Z). Jetzt kann Benutzer B das Dokument aber nur genehmigen, wenn er die Koordinator-Rolle im Ordner Y besitzt. Anderenfalls erscheint der Hinweis: „Die Workflow-Aktion konnte nicht abgeschlossen werden“. Komisch, ich dachte der SystemUser übernimmt durch meine Erweiterung sämtliche Kopiervorgänge?

2. Hat der Benutzer B also die Koordinator-Rolle im Ordner Y, kann er das Dokument in Ordner Z verschieben. Wie sich vielleicht erahnen lässt, ist Ordner Z ebenfalls mit einer Regel ausgestattet. Problem: Die Regel greift nicht, verschobene Dokumente werden nicht mit einem Workflow ausgestattet.




Grüße
dsoe