cancel
Showing results for 
Search instead for 
Did you mean: 

Workflow avancé avec gestion de la visibilité

john90
Champ in-the-making
Champ in-the-making
Bonjour à tous !

Alors voilà, je suis un nouvel utilisateur Alfresco mais j'ai déjà bien cherché avant de vous soumettre ma question.

Il est possible de crée un Workflows basique (ou simple) sur un espace permettant de gérer une notion de droit en déplacent les contenu d'un espace à un autre.
Il est également possible de crée des Workflows avancés associés à un contenu qui nous permettent de gérer des statuts et d'affecter des taches à des personnes.

Mais est t'il possible de combiner les deux afin d'attribuer des taches à des utilisateur et qu'en fonction d'un état, la visibilité (l'espace) du contenu soit modifié.

Par exemple, tant qu'un utilisateur n'a pas validé un contenu je souhaite que ce contenu ne soit pas visible des autres utilisateurs.
Il est simple de réaliser cela avec un workflow basique sauf que l'utilisateur ne sera pas prévenu qu'il a un document à valider.
L'utilisation d'un workflow simple permet de prévenir le relecteur, mais il ne déclanche pas d'approbation lorsque le contenu est approuvé.

Il me semble que ce scénario est assez classique, mais ce workflow est-il réalisable ?
Et si oui comment dois-je m’y prendre ?

J’ai vu que d’autres questions sur les droits et les workflow n’avaient pas obtenues de réponse, alors merci par avance de votre aide.
13 REPLIES 13

cytrix
Champ in-the-making
Champ in-the-making
J'ai pas trop regardé le workflow wfl:lifecycleapproval mais j'imagine que quand tu le lances manuellement, un formulaire apparaît te demandant la saisie du valideur.

Le problème de lancer un workflow automatiquement, c'est que ce formulaire n'apparaît plus ; ce qui entraîne je pense ton erreur, bpm_assignee étant une variable définit par l'un des "composants" (aspect) alfresco permettant de sélectionner un utilisateur.

Pour essayer de contourner le problème, je passe par les groupes alfresco. J'ai créé un groupe "valideurs", et quand mon workflow s'exécute automatiquement, il assigne une tâche partagée aux utilisateurs de ce groupe.
Une autre solution je pense consisterait à créer une première tâche à l'initiateur du workflow (celui qui upload les documents), et à lui faire saisir dans cette première tâche le ou les noms des valideurs (via par exemple l'aspect alfresco bpm_assignee). Il passerait ensuite le workflow dans une tâche "lancer la validation", ce qui créerait la tache "validation" pour le valideur. Je n'ai pas testé cette solution, mais je pense que ça devrait fonctionner.

Pour le déplacement des documents, j'avais mis le bout de code pour le faire dans le post que je t'ai donné. Je te le recolle ici :

<task-node name="Validation directeur">
      <task name="alwf:wf2_directeurValidation" swimlane="directeur1"/>
      <transition name="Publication" to="end1">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <runas>admin</runas>
              <script>
               <variable name="bpm_package" access="read" />
               <variable name="companyhome" access="read" />
               <expression>
                  for (var i=0; i &lt; bpm_package.children.length; i++) {
                     logger.log("  > deplacement document : " + bpm_package.children[i].name);
                     var dest = companyhome.childByNamePath("documents validés");
                     bpm_package.children[i].move(dest);
                     logger.log("    deplacement OK");
                  }
               </expression>
              </script>
           </action>
      </transition>
   </task-node>

Bon courage.

john90
Champ in-the-making
Champ in-the-making
Merci pour cette réponse Cytrix, c'est vraiement très aimable à toi.

J'ai décidé de faire mon propre Workflow qui sera plus simple que le lifecylce puis de tester ce que tu me propose pour déclencher le WF et déplacer dans un repertoire.
J'ai donc fait placé mes fichiers
      * WFModel.xml
      * WF_processdefinition.xml
      * WF-context.xml
dans mon répertoire "C:\Alfresco\tomcat\shared\classes\alfresco\extension"

Après avoir corrigé quelques étourderies de mon cru Alfresco à démarré.
Par contre je ne retrove pas mon WF dans la liste des WF avancé.
Il doit etre mal déployé mais je n'ai pas encore trouvé ce qui manque!

cytrix
Champ in-the-making
Champ in-the-making
Tu es sûr d'avoir bien renseigné le fichier workflow-context.xml ?


<bean id="extension.workflows.workflowBootstrap" parent="workflowDeployer">
      <property name="workflowDefinitions">
         <list>
            <props>
               <prop key="engineId">jbpm</prop>
               <prop key="location">alfresco/extension/mywf_validation_fic1_processdefinition.xml</prop>
               <prop key="mimetype">text/xml</prop>
               <prop key="redeploy">true</prop>
            </props>
         </list>
      </property>
   </bean>

   <!– Deploiement du modele –>
   <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
      <property name="models">
         <list>
            <value>alfresco/extension/mywf_validation_fic1Model.xml</value>
         </list>
      </property>
   </bean>

john90
Champ in-the-making
Champ in-the-making
Oui j'ai renseigné ce fchier de cette manière.
J'ai tout de même fait l'expèrience de renommer mon fichier WF-context.xml en workflow-context.xml et de modifier son contenu pour qu'il ressemble d'avantage a ce que tu me propose.
workflow-context.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
<bean id="extension.workflows.workflowBootstrap" parent="workflowDeployer">
      <property name="workflowDefinitions">
         <list>
            <props>
               <prop key="engineId">jbpm</prop>
               <prop key="location">alfresco/extension/WF_processdefinition.xml</prop>
               <prop key="mimetype">text/xml</prop>
               <prop key="redeploy">true</prop>
            </props>
         </list>
      </property>
   </bean>

   <!– Deploiement du modele –>
   <bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
      <property name="models">
         <list>
            <value>alfresco/extension/WFModel.xml</value>
         </list>
      </property>
   </bean>
</beans>

Mais après avoir relancé le serveur je n'ai toujours pas mon workflow dans la liste des Workflows disponibles.