Mail non envoyé dans workflow

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

Mail non envoyé dans workflow

Bonjour,

J'utilise la version 3.0 d'Alfresco. J'essaie de modifier le process definition du workflow d'exemple "Group Review & Approve".
Je souhaite envoyer un mail lors de la décision de l'approbateur. Pour cela j'ai modifié les tâches "rejected" et "approved" afin d'envoyer un mail.
Mon problème est que je ne reçois aucun mail et aucune erreur. J'ai essayé de voir ce qu'il ce passait avec logger.log mais je n'obtiens rien dans le fichier alfresco.log, pourtant j'ai configuré log4j.properties en mettant

log4j.logger.org.alfresco.repo.jscript=debug

j'ai mis plusieurs logger.log et mail dans le workflow mais rien ne se passe. Pourtant je vais jusqu'au bout du workflow correctement.
Quant j'essaie de voir ce qu'il se passe dans un autre workflow pour tester, le AdhocTask, tout fonctionne bien sauf le logger.

Voici le process definition du workflow parallelgroupreview que j'essaie de faire fonctionner pour l'envoie de mail.
Pouvez-vous m'aider à résoudre mon prolbème, s'il vous plaît, car je suis à cours d'idée.

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

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

    <swimlane name="initiator"/>

    <start-state name="start">
        <task name="wf:submitGroupReviewTask" swimlane="initiator" />
        <transition name="" to="startreview">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
                var mail = actions.create("mail");
                mail.parameters.to = initiator.properties.email;
                mail.parameters.subject = "Debut workflow";
                mail.parameters.from = "it@xxx.fr";
                mail.parameters.text = "GO TU VA MARCHER";
                mail.execute(bpm_package);
            </script>
         </action>
      </transition>
    </start-state>

    <node name="startreview">
        <action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
            <foreach>#{people.getMembers(bpm_groupAssignee)}</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" />
    </node>

    <task-node name="review">
        <task name="wf:reviewTask">
            <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
               <actor>#{reviewer}</actor>
            </assignment>
        </task>
        <transition name="reject" to="endreview">
        </transition>
        <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">
           <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
              <script>
                 <variable name="wf_reviewerCount" access="write"/>
                 <expression>people.getMembers(bpm_groupAssignee).length;</expression>
              </script>
           </action>
           <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
              <script>
                 <variable name="wf_requiredPercent" access="write"/>
                 <expression>wf_requiredPercent = wf_requiredApprovePercent;</expression>
              </script>
           </action>
           <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
              <script>
                 <variable name="wf_actualPercent" access="write"/>
                 <expression>wf_actualPercent = ((wf_approveCount * 100) / people.getMembers(bpm_groupAssignee).length);</expression>
              </script>
           </action>
        </event>
        <transition name="reject" to="rejected"></transition>
        <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">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
                logger.log("Email " + initiator.properties.email);
                var mail = actions.create("mail");
                mail.parameters.to = initiator.properties.email;
                mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription;
                mail.parameters.from = "it@xxxxxx.fr";
                mail.parameters.text = "Document rejected";
                mail.execute(bpm_package);
            </script>
         </action>
      </transition>
    </task-node>

    <task-node name="approved">
        <task name="wf:approvedParallelTask" swimlane="initiator"/>
        <transition to="end">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                    logger.log("Email " + initiator.properties.email);
                   var mail = actions.create("mail");
                   mail.parameters.to = initiator.properties.email;
                   mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription;
                   mail.parameters.from = "it@xxx.fr";
                   mail.parameters.text = "Document approved";
                   mail.execute(bpm_package);
               </script>
            </action>
      </transition>
    </task-node>

    <end-state name="end"/>

   <event type="process-end">
      <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
         <script>
            logger.log("End of process.");
             var mail = actions.create("mail");
             mail.parameters.to = initiator.properties.email;
             mail.parameters.subject = "FIN du workflow";
             mail.parameters.from = "it@xxx.fr";
             mail.parameters.text = "FIN !!!!!!!!!";
             mail.execute(bpm_package);
         </script>
      </action>
   </event>

   
</process-definition>
6 Replies
koossery
Member II

Re: Mail non envoyé dans workflow

Bonjour

j'ai analysé le process def du workflow avec un collègue et nous ne voyons pas d'anomalie à 1ère vue…
maintenant si le mail n'est pas envoyé, faudrait peut-être vérifié la configuration smtp dans le fichier de properties repository.properties  dans la partie
# Email configuration
nokolyo
Member II

Re: Mail non envoyé dans workflow

Je ne pense pas que le problème vienne de là car avec le AdhocTask le mail est bien envoyé donc la configuration doit être bonne car nous utilisons un serveur externe à la machine Alfresco.
nokolyo
Member II

Re: Mail non envoyé dans workflow

Je viens de faire un autre test avec le process definition du "AdhocTask" pour ajouter un envoie de mail au début du workflow mais là c'est pareil il ne tient pas compte de la modification mais pourtant envoie bien le deuxième mail lors de la revue de la tâche.

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

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

   <swimlane name="initiator"/>

   <start-state name="start">
      <task name="wf:submitAdhocTask" swimlane="initiator">
         <event type="node-enter">
            <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
               <script>
                  logger.log("Debut du workflow AdhocTask");
                   var mail = actions.create("mail");
                   mail.parameters.to = "xxxxx@xxxx.fr";
                   mail.parameters.subject = "FIN du workflow";
                   mail.parameters.from = "it@xxxx.fr";
                   mail.parameters.text = "FIN !!!!!!!!!";
                   mail.execute(bpm_package);
               </script>
            </action>
         </event>
      </task>
      <transition name="" to="adhoc"/>
   </start-state>

   <swimlane name="assignee">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{bpm_assignee}</actor>
      </assignment>
   </swimlane>
  
   <task-node name="adhoc">
      <task name="wf:adhocTask" swimlane="assignee">
         <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="" to="completed">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
           <script>
              logger.log("passe2");
              if (wf_notifyMe)
              {
                 var mail = actions.create("mail");
                 mail.parameters.to = initiator.properties.email;
                 mail.parameters.subject = "Adhoc Task " + bpm_workflowDescription;
                 mail.parameters.from = bpm_assignee.properties.email;
                 mail.parameters.text = "It's done";
                 mail.execute(bpm_package);
              }
           logger.debug("After mail ****************************************");
           </script>
         </action>
      </transition>
   </task-node>
  
   <task-node name="completed">
      <task name="wf:completedAdhocTask" swimlane="initiator"/>
      <transition name="" to="end"/>
   </task-node>
     
   <end-state name="end"/>

 
</process-definition>

Faut-il modifier autre chose que le fichier de process definition pour ajouter des actions javascript (ex : envoie de mail, déplacement de document) dans le workflow ?
Dans mon cas il s'agit du fichier parallelreview_group_processdefinition.xml
nokolyo
Member II

Re: Mail non envoyé dans workflow

Quelqu'un aurait-il une idée, j'ai beau chercher mais je ne voie rien.
cleseach
Active Member II

Re: Mail non envoyé dans workflow

Bonjour,

Pour votre premier cas, avez-vous vérifié que l'e-mail de l'initiateur du workflow est correct ?

Pour votre second cas, votre problème vient du fait que vous essayez de détecter l'évènement "node-enter" sur un élément "task"… qui n'est pas un noeud Smiley Happy
Pour une tâche, vous disposez des évènements suivants : "task-assign", "task-create", "task-start" et "task-end".
Attention également à l'utilisation de "node-enter" sur le "start-state" : cet évènement n'est pas disponible dans cet état. En revanche, vous pouvez utiliser "node-leave".

Cordialement,
Charles Le Seac'h
nokolyo
Member II

Re: Mail non envoyé dans workflow

Merci de votre réponse.

J'avais laissé un peu de côté le problème car j'avais un autre projet à terminer.
Je vais essayer avec vos informations.