cancel
Showing results for 
Search instead for 
Did you mean: 

Problème de Workflow

huberd
Champ in-the-making
Champ in-the-making
Bonjour,

Pourquoi faut-il donner le droit de lecture sur le contenu du repertoire dans lequel on a éxécuter le Workflow pour que les acteurs puisse valider les étapes ?

Dans mon cas de figure, je dispose de plusieurs dossiers qui correspondent à mon circuit d'approbation.

Ces dossiers sont Drafts, Review, Pending Approval, Published

Drafts : Seul les redacteurs de document doivent avoir accès à ce répertoire.
Review : Les relecteurs, l'auteur et l'initiateur du workflow a accès ont ce répertoire en lecture seule.
Pending Approval : Les approbateurs, l'auteur et l'initiateur du workflow ont accès à ce répertoire en lecture seule
Published : Tous les lecteurs concernés ont accès en lecture seule.

Quand un initiateur initie un Workflow dans le repertoire Drafts (Adhoc Task (Assign task to colleague) par exemple), pour un relecteur qui n'appartient pas au groupe des relecteurs, le relecteur obtient un message lui disant ceci lorsqu'il souhaite valider son étape :

Veuillez corriger les erreurs ci-dessous puis cliquer sur OK.

    * Une erreur système s'est produite pendant l'opération : Accès interdit. Vous n'avez pas la permission de réaliser cette opération.


Pour résoudre le problème, je suis obligé de donner accès à mon groupe de relecteur au dossier drafts en lecture seule.

Pourquoi ce mode de fonctionnement ? Comme ci le workflow était créé dans le dossier Drafts. Comment contourner ce problème sans avoir à devoir donner l'accès au répertoire Drafts ?

Merci pour votre aide précisieuse.
9 REPLIES 9

huberd
Champ in-the-making
Champ in-the-making
Personne n'a d'idéees sur le sujet ?  :?

ericc
Champ in-the-making
Champ in-the-making
Un workflow est créé sur un fichier, donc si tu n'as pas accès au fichier tu ne pourra (il me semble) y accéder.
Après un workflow peut être assigné à un utilisateur ou groupe d'utilisateur, ta solution se trouve peut être de ce coté.

huberd
Champ in-the-making
Champ in-the-making
Un workflow est créé sur un fichier, donc si tu n'as pas accès au fichier tu ne pourra (il me semble) y accéder.
Après un workflow peut être assigné à un utilisateur ou groupe d'utilisateur, ta solution se trouve peut être de ce coté.

A ton avis puis-je déplacer ce fichier ? Par exemple dans un dossier où tous le monde pourrait y avoir accès en lecture seul.

huberd
Champ in-the-making
Champ in-the-making
Où puis-je trouver le workflow dans la structure Alfresco. Il semblerait qu'il soit créé dans le même repertoire que le document sur lequel on l'initialise. Y a t'il moyen de le déplacer au même titre que le document, afin de le rendre accessible aux différents acteurs du workflow. Si oui comment ?

huberd
Champ in-the-making
Champ in-the-making
Toujours pas d'idée sur le sujet ?

michel
Champ in-the-making
Champ in-the-making
Bonjour,

La raison du Accès interdit est effectivement, du au fait que l'utilisateur n'a pas accès (au minimum en lecture) au document associé au workflow.
De ce fait, on ne peut approuver, ni rejeter le document et encore moins le modifier.

Pour ce qui est de déplacer le document, il faut que la personne qui déplace, via le workflow, est un droit en écriture dans les espaces source et destination, ainsi que sur le document en lui même (ou sur la copie de travail du document).

Le workflow n'existe pas dans l'entrepôt d'alfresco, c'est un fichier xml qui se trouve dans l'arborescence de TOMCAT et est traduit par le moteur jBPM dans la base de données (voir les tables commençant par jbpm).

Donc pour résoudre ton problème il faut que les utilisateurs qui vont exécuter le workflow aient les bon droit sur les espaces utilisés pendant l'opération qui leurs sont assignés.

Bien à Toi.

Michel

huberd
Champ in-the-making
Champ in-the-making
Bonjour,

La raison du Accès interdit est effectivement, du au fait que l'utilisateur n'a pas accès (au minimum en lecture) au document associé au workflow.
De ce fait, on ne peut approuver, ni rejeter le document et encore moins le modifier.

Pour ce qui est de déplacer le document, il faut que la personne qui déplace, via le workflow, est un droit en écriture dans les espaces source et destination, ainsi que sur le document en lui même (ou sur la copie de travail du document).

Le workflow n'existe pas dans l'entrepôt d'alfresco, c'est un fichier xml qui se trouve dans l'arborescence de TOMCAT et est traduit par le moteur jBPM dans la base de données (voir les tables commençant par jbpm).

Donc pour résoudre ton problème il faut que les utilisateurs qui vont exécuter le workflow aient les bon droit sur les espaces utilisés pendant l'opération qui leurs sont assignés.

Bien à Toi.

Michel

Non, le problème ne vient pas du document.

Pour récapituler, le document sur lequel est appliqué le Workflow se situe dans le répertoire Drafts. Le répertoire Drafts est accessible uniquement par l'initiateur du Workflow. Lors de l'initialisation du Workflow, le document est déplacé dans le répertoire Review, qui lui est accessible à tous et autorise le document à être relu par tous les acteurs du Workflow.

Le problème ne provient pas des droits du document, mais bel est bien sur les droits de l'espace sur lequel le Worklow a été initialisé. Je constate à ce jour qui'il me faut autoriser les acteurs du Workflow à pouvoir entrer dans le répertoire Drafts, pour qu'ils puissent executer les tâches qui leur sont attribués.

J'ai remarqué en approfondissant un peu le sujet que le nom de l'espace qui a été utilisé pour initialiser le Workflow se trouve dans la variable "bpm_context". N'y aurait-il pas moyen de modifier cette variable pour dire au Workflow de s'executer dans le répertoire Review accessible à tous, en espérant que cela résolve bien mon problème et m'évite ainsi d'autoriser tous le monde à visualiser le dossier Drafts.

Merci pour votre aide précieuse.

huberd
Champ in-the-making
Champ in-the-making
Après tests, je confirme que le problème venait bien du contenu de la variable bpm_context et non des droits sur le document. Pour résoudre le problème, et pour tests, j'ai recopié bêtement le contenu de la variable companyhome dans la variable bpm_context comme indiqué ci-dessous, et ça marche nickel.

executionContext.getContextInstance().setVariable("bpm_context") = executionContext.getContextInstance().getVariable("companyhome");
Maintenant les acteurs du workflow n'ont plus besoin d'avoir accès à l'espace Drafts dans lequel le workflow a été initialisé.

Maintenant mon problème est comment attribué un nodeRef à la variable bpm_context, sachant que le contenu de la variable bpm_context retourne ceci :

Récupération de la variable
Object res = executionContext.getContextInstance().getVariable("bpm_context");
Résultat
Node Type: {http://www.alfresco.org/model/content/1.0}systemfolder, Node Aspects: [{http://www.alfresco.org/model/content/1.0}auditable, {http://www.alfresco.org/model/system/1.0}referenceable, {http://www.alfresco.org/model/bpm/1.0}workflowPackage]
et que pour obtenir le nodeRef correspondant à la variable bpm_context, je dois faire cela
((JBPMNode) res).getNodeRef();

Etant donnée que le contenu de ma variable nodeRef que je souhaite appliquer à la variable bpm_context est celle ci :
workspace://SpacesStore/14f53fc4-0620-11dd-882d-2f9ed3253cba

Comment puis-je faire pour pouvoir affecter mon nodeRef à la variable bpm_context afin de changer mon bpm_context qui est positionné à l'initiation du workflow avec le nodeRef de l'espace dans lequel le workflow a été initialisé.

executionContext.getContextInstance().setVariable("bpm_context") = [Contenu de mon nodeRef]

Pour répondre à Eric (http://forums.alfresco.com/fr/viewtopic.php?f=11&t=1273#p8239) et pour info, un workflow n'est pas créé sur le document sur lequel il agit, mais bel est bien dans un context qui lui est propre.

Merci pour votre aide précieuse.

huberd
Champ in-the-making
Champ in-the-making
Ce sujet est toujours d'actualité et suis toujours à la recherche d'une solution à mon problème cf : http://forums.alfresco.com/fr/posting.php?mode=reply&f=11&t=1273#pr9254.
Merci pour votre aide.