E-mail et notifications dans un workflow

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

Re: E-mail et notifications dans un workflow

Vous pouvez voir que l'affichage des propriétés au sein des formulaires de taches est gérée dans le web-client-config-properties.xml (dans tomcat/webapps/alfresco/WEB-INF/classes/alfresco)
Vous devriez surcharger la définition de l'affichage de la tâche wf:submitReviewTask dans votre fichier web-client-config-custom.xml (dans tomcaT/shared/classes/alfresco/extension)

hope this helps
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Effectivement, dans le fichier web-client-config-properties.xml, je peux voir l'affichage des propriétés et je vois qu'il y a bpm:assignee pour submitReviewTask.

Cependant, dans web-client-config-custom.xml, suis-je sensé intégrer une portion de code de ce type : 


   <config evaluator="node-type" condition="wf:submitReviewTask" replace="true">
      <property-sheet>

     CODE ici      


      </property-sheet>
   </config>
afin de surcharger ladite définition de l'affichage?

Ou bien ai-je mal interprété vos propos?
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

oui absolument
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Ok merci beaucoup!

Toudefois, plutôt que de modifier le workflow review_processdefinition.xml, j'ai implanté le workflow défini dans parallelreview_processdefinition.xml. Cela me permet simplement d'ajouter ce workflow dans l'UI d'Alfresco.
Pour info, dans bootstrap-context.xml, j'ai rajouté cette portion de code :

      <props>
                    <!– WCM workflow definition –>
                    <prop key="engineId">jbpm</prop>
                    <prop key="location">alfresco/workflow/parallelreview_processdefinition.xml</prop>
                    <prop key="mimetype">text/xml</prop>
                    <prop key="redeploy">true</prop>
                </props>
En redémarrant Alfresco, le nouveau workflow apparaît dans la liste des workflows avancés.

Maintenant, je vais essayer d'implanter la fonction de notification d'e-mails dans ce workflow, en suivant le raisonnement précédent. Je poste ma solution une fois que je l'ai faite.
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Une autre question me passe par la tête au passage….
Dans l'e-mail que j'écris aux personnes, serait-il possible de préciser dans le corps du texte le nom de la tâche que je leur ai donnée (par exemple "Tâche à faire"), le nom et prénom de la personne ayant initiée le workflow, le nom de l'espace dans lequel est situé le document ainsi que le lien direct vers le document?

Si oui, comment faire??

Sinon, j'ai presque trouvé la solution à mon problème (même si pour le moment je n'arrive pas à lancer le mail à la personne initiatrice une fois qu'une des personnes assignées a donné son avis sur le doc) :

<?xml version="1.0" encoding="UTF-8"?>

<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:parallelreview">

    <swimlane name="initiator" />

    <start-state name="start">
        <task name="wf:submitParallelReviewTask" swimlane="initiator" />
        <transition name="" to="startreview"/>
    </start-state>

    <node name="startreview">
        <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
            <foreach>#{bpm_assignees}</foreach>
            <var>reviewer</var>
        </action>
        <event type="node-enter">
            <script>
                <variable name="wf_approveCount" access="write" />
                <expression>
                    wf_approveCount = 0;
                </expression>
            </script>
        </event>
        <transition name="review" to="review">
                  <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = reviewer.properties.email;
                mail.parameters.subject = "A workflow has been created for you";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "You have a TASK from";
                mail.execute(bpm_package);
                }
                </script>
                </action>
         </transition>
    </node>

    <task-node name="review">
        <task name="wf:reviewTask">
            <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
               <actor>#{reviewer}</actor>
            </assignment>
            <event type="task-create">
                <script>
                    if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
                    if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
                </script>
            </event>
        </task>
        <transition name="reject" to="endreview" />
        <transition name="approve" to="endreview">
            <script>
                <variable name="wf_approveCount" access="read,write" />
                <expression>
                    wf_approveCount = wf_approveCount +1;
                 </expression>
            </script>
        </transition>
    </task-node>

    <join name="endreview">
        <transition to="isapproved" />
    </join>

    <decision name="isapproved">
        <event type="node-enter">
           <script>
              <variable name="wf_reviewerCount" access="write"/>
              <variable name="wf_requiredPercent" access="write"/>
              <variable name="wf_actualPercent" access="write"/>
              <expression>
                  wf_requiredPercent = wf_requiredApprovePercent;
                  wf_reviewerCount = bpm_assignees.size();
                  wf_actualPercent = ((wf_approveCount * 100) / wf_reviewerCount);
              </expression>
           </script>
        </event>
        <transition name="reject" to="rejected" />
        <transition name="approve" to="approved">
            <condition>#{wf_actualPercent >= wf_requiredApprovePercent}</condition>
        </transition>
    </decision>
              
    <task-node name="rejected">
        <task name="wf:rejectedParallelTask" swimlane="initiator" />
       <transition to="end" /> 
    </task-node>

    <task-node name="approved">
        <task name="wf:approvedParallelTask" swimlane="initiator" />
        <transition to="end" />
    </task-node>

    <end-state name="end"/>

</process-definition>


Merci d'avance!
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

Une autre question me passe par la tête au passage….
Dans l'e-mail que j'écris aux personnes, serait-il possible de préciser dans le corps du texte le nom de la tâche que je leur ai donnée (par exemple "Tâche à faire"), le nom et prénom de la personne ayant initiée le workflow, le nom de l'espace dans lequel est situé le document ainsi que le lien direct vers le document?

Si oui, comment faire??

C'est la question du moment !  :mrgreen:
J'ai tenté d'éclairer un utilisateur à ce sujet sur le forum anglophone :

http://forums.alfresco.com/en/viewtopic.php?f=34&t=22962

bonne chance Smiley Happy
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Ah très bien, merci beaucoup, j'y jetterai un oeil attentif dessus demain! Smiley Very Happy
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Finalement, ce n'est pas évident du tout de pouvoir préciser ces diverses choses dans le corps du mail…:s
Je continue à étudier ça tout de même.

J'ai toujours un problème avec la notification à l'initiateur. L'e-mail est bien envoyé aux reviewers, mais lorsque chacun donne sa décision, l'e-mail n'est pas envoyé à l'initiateur. C'est tout de même étonnant, pourtant ça marche dans mon workflow review_processdefinition.xml. Je ne sais pas si c'est dû au nombre d'utilisateurs ou pas, mais ça me dérange pas mal. Mon bout de code est le même. J'ai ceci : 

        <transition name="reject" to="endreview">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
      mail.parameters.to = initiator.properties.email;
                mail.parameters.subject = "Workflow " + bpm_workflowDescription;
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "Workflow rejetté.";
                mail.execute(bpm_package);
                }
                </script>
                </action>
   </transition>

en lieu et place de :

<transition name="reject" to="endreview" />

J'ai même essayé de le placer au niveau du join qui suit, mais dans ce cas, je ne peux pas différencier le "approved" du "rejected". Et de toute façon, il ne m'envoie pas de mail.
Et quand je fais ça, c'est le drame. D'une, il ne m'envoie pas le mail, et de deux, Alfresco lance une erreur "interne".

Des idées? J'ai pensé à me créer mon propre workflow, mais comme je n'en ai pas eu besoin jusque là, je pensais pouvoir m'en passer…

Merci d'avance pour votre aide.
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

Avez-vous créé votre propre méthode MailActionExecuter (comme dans le topic anglophone) ?

Pourriez-vous donner la trace d'erreur interne d'alfresco (et préférablement le message dans alfresco.log) ?
vaporisator
Member II

Re: E-mail et notifications dans un workflow

Bonjour, je suis de près cette discussion car le résultat m'intéresse fortement … Une fois qu'une solution aura été trouvée, j'essaierai d'appliquer les différentes étapes, merci à vous en tous cas Smiley Wink