E-mail et notifications dans un workflow

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

E-mail et notifications dans un workflow

Bonjour à tous!

Je suis encore bloqué sur l'envoi des e-mails :s.
A vrai dire, je souhaiterais, à travers le workflow avancé "Review&Approve", notifier les points suivants :
- quand un document uploadé par un utilisateur A1 est soumis à un "Review&Approve" à un utilisateur A2, je voudrais que A2 reçoive un e-mail l'en avertissant
- quand A2 approuve ou refuse le document, un e-mail est envoyé à A1 (celui qui est à la source du workflow)

Ceci pourrait être très pratique dans le cadre d'un projet.
Je me demande donc comment intégrer une telle fonctionnalité dans Alfresco. J'ai déjà posé quelques questions à ce propos sur le forum anglophone, mais c'est resté très vague…
Dans un premier temps, j'ai crû comprendre qu'il fallait que je m'intéresse de près au fichier xml "review_processdefinition.xml". Je l'ai modifié comme suit pour pouvoir lancer un e-mail si le document est rejetté :

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <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="approve" to="approved" />    –>
      
<!– Ma modif  –>
        <transition name="approve" to="approved" >
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
           <script>
                 var mail = actions.create("mail");
                 mail.parameters.to = initiator.properties.email;
                 mail.parameters.subject = "Petite tâche à faire!" + bpm_workflowDescription;
                 mail.parameters.from = bpm_assignee.properties.email;
                 mail.parameters.text = "C'est refusé!";
                 mail.execute(bpm_package);
           </script>
         </action>
      </transition>      
      

<!–  Ma modif   –>      
      
      
        <transition name="reject" to="rejected" />
    </task-node>


Problème : en lançant Alfresco, il a un souci et lance des ERROR et exceptions java. Résultat : Alfresco ne démarre pas…

Puis on m'a dit de m'intéresser aux business rules dans Alfresco, je creuse encore pour savoir ce que c'est…

Quelqu'un a-t-il déjà eu à faire de genre de choses ou quelque chose qui s'en approche? J'avoue être un peu perdu dans tout ça, donc si une âme charitable ne pourrait ce serait-ce que m'aiguiller un peu, je lui en serai reconnaissant.

Un grand merci d'avance!

Pascal
19 Replies
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Personne n'a d'idée(s) sur ce problème?
J'ai maintenant le livre "Alfresco Developer Guide", mais cela ne m'éclaire pas plus que ça…Les exemples qu'il implémente sont assez complexes, et je n'ai pas trouvé de choses vraiment équivalentes à ce que je veux faire.
Je veux simplement modifier le workflow "Review & Approve" pour qu'il envoie un e-mail à une personne déterminée. Je pensais au départ qu'il suffisait de modifier le fichier review_processdefinition.xml, ce que j'avais fait. J'avais pensé à ça parce que j'avais vu que dans le fichier adhoc_processdefinition.xml, un script était présent pour faire l'envoi des e-mails. Mais je me suis trompé puisqu'en l'implémentant, aucun e-mail ne marche (et Alfresco démarre bien…).

Est-ce que je suis vraiment obligé de passer par la construction de mon propre workflow (ce qui serait assez long et fastidieux pour moi, je dois l'avouer :s)?

Merci d'avance pour votre éventuelle aide!
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

Je pensais au départ qu'il suffisait de modifier le fichier review_processdefinition.xml, ce que j'avais fait. J'avais pensé à ça parce que j'avais vu que dans le fichier adhoc_processdefinition.xml, un script était présent pour faire l'envoi des e-mails. Mais je me suis trompé puisqu'en l'implémentant, aucun e-mail ne marche (et Alfresco démarre bien…).

Je pense que votre modification du workflow n'a pas été prise en compte.
Regardez dans le fichier "bootstrap-context.xml" dans tomcat/webapps/alfresco/WEB-INF/classes/alfresco :


<props>
                    <prop key="engineId">jbpm</prop>
                    <prop key="location">alfresco/workflow/review_processdefinition.xml</prop>
                    <prop key="mimetype">text/xml</prop>
                    <prop key="redeploy">false</prop>
                </props>

si le paramètre redeploy est a "false" (valeur par défaut), votre modification n'a pas été chargée.
Passez ce paramètre à "true", et réessayez !
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Merci Rodel pour cette information, je ne savais pas qu'il fallait procéder ainsi.

Quoi qu'il en soit, j'ai mis ce paramètre à true, et j'obtiens une erreur me disant :

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

    * Une erreur système s'est produite pendant l'opération : 10030003 Failed to signal transition 'reject' from workflow task 'jbpm$32'

Dans le log d'Alfresco, il y a un grand nombre d'exceptions qui se sont lancées :

13:37:21,124 ERROR [org.alfresco.web.ui.common.Utils] Une erreur système s'est produite pendant l'opération : 10030003 Failed to signal transition 'reject' from workflow task 'jbpm$32'
org.alfresco.service.cmr.workflow.WorkflowException: 10030003 Failed to signal transition 'reject' from workflow task 'jbpm$32'
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1742)
   at org.alfresco.repo.workflow.WorkflowServiceImpl.endTask(WorkflowServiceImpl.java:544)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:147)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy43.endTask(Unknown Source)
   at org.alfresco.web.bean.workflow.ManageTaskDialog.transition(ManageTaskDialog.java:431)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
   at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
   at javax.faces.component.UICommand.broadcast(UICommand.java:109)
   at javax.faces.component.UIViewRoot._broadcastForPhase(UIViewRoot.java:97)
   at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:171)
   at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
   at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
   at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
   at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.web.app.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:110)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory$1.invoke(ChainingSubsystemProxyFactory.java:122)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy195.doFilter(Unknown Source)
   at org.alfresco.repo.web.filter.beans.BeanProxyFilter.doFilter(BeanProxyFilter.java:88)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.alfresco.repo.web.filter.beans.NullFilter.doFilter(NullFilter.java:74)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.alfresco.repo.management.subsystems.ChainingSubsystemProxyFactory$1.invoke(ChainingSubsystemProxyFactory.java:122)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy195.doFilter(Unknown Source)
   at org.alfresco.repo.web.filter.beans.BeanProxyFilter.doFilter(BeanProxyFilter.java:88)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
   at java.lang.Thread.run(Thread.java:619)
Caused by: org.jbpm.graph.def.DelegationException: 10030002 Failed to execute supplied script: 10030001 ReferenceError: "wf_notifyMe" n'est pas défini (AlfrescoJS#1)
   at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:388)
   at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:379)
   at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:301)
   at org.jbpm.graph.def.GraphElement.executeActions(GraphElement.java:241)
   at org.jbpm.graph.def.GraphElement.fireAndPropagateEvent(GraphElement.java:213)
   at org.jbpm.graph.def.GraphElement.fireEvent(GraphElement.java:196)
   at org.jbpm.graph.def.Transition.take(Transition.java:152)
   at org.jbpm.graph.def.Node.leave(Node.java:479)
   at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:213)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
   at org.jbpm.graph.node.TaskNode$$EnhancerByCGLIB$$489ae7f3.leave(<generated>)
   at org.jbpm.graph.exe.Token.signal(Token.java:223)
   at org.jbpm.graph.exe.Token.signal(Token.java:188)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.invoke(CGLIBLazyInitializer.java:157)
   at org.jbpm.graph.exe.Token$$EnhancerByCGLIB$$bae3983d.signal(<generated>)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:495)
   at org.alfresco.repo.workflow.jbpm.WorkflowTaskInstance.end(WorkflowTaskInstance.java:141)
   at org.jbpm.taskmgmt.exe.TaskInstance.end(TaskInstance.java:436)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine$26.doInJbpm(JBPMEngine.java:1727)
   at org.springmodules.workflow.jbpm31.JbpmTemplate$1.doInHibernate(JbpmTemplate.java:87)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
   at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:338)
   at org.springmodules.workflow.jbpm31.JbpmTemplate.execute(JbpmTemplate.java:80)
   at org.alfresco.repo.workflow.jbpm.JBPMEngine.endTask(JBPMEngine.java:1695)
   … 68 more
Caused by: org.alfresco.scripts.ScriptException: 10030002 Failed to execute supplied script: 10030001 ReferenceError: "wf_notifyMe" n'est pas défini (AlfrescoJS#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:254)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:314)
   at org.alfresco.repo.processor.ScriptServiceImpl.executeScriptString(ScriptServiceImpl.java:292)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:304)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
   at org.alfresco.repo.security.permissions.impl.AlwaysProceedMethodInterceptor.invoke(AlwaysProceedMethodInterceptor.java:40)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.alfresco.repo.security.permissions.impl.ExceptionTranslatorMethodInterceptor.invoke(ExceptionTranslatorMethodInterceptor.java:49)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.alfresco.repo.audit.AuditMethodInterceptor.invoke(AuditMethodInterceptor.java:147)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
   at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
   at $Proxy199.executeScriptString(Unknown Source)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.executeScript(AlfrescoJavaScript.java:178)
   at org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript.execute(AlfrescoJavaScript.java:132)
   at org.jbpm.graph.def.Action.execute(Action.java:129)
   at org.jbpm.graph.def.GraphElement.executeAction(GraphElement.java:284)
   … 97 more
Caused by: org.alfresco.error.AlfrescoRuntimeException: 10030001 ReferenceError: "wf_notifyMe" n'est pas défini (AlfrescoJS#1)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:473)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeString(RhinoScriptProcessor.java:250)
   … 120 more
Caused by: org.mozilla.javascript.EcmaError: ReferenceError: "wf_notifyMe" n'est pas défini (AlfrescoJS#1)
   at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3350)
   at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3340)
   at org.mozilla.javascript.ScriptRuntime.notFoundError(ScriptRuntime.java:3413)
   at org.mozilla.javascript.ScriptRuntime.name(ScriptRuntime.java:1612)
   at org.mozilla.javascript.gen.c1._c0(AlfrescoJS:1)
   at org.mozilla.javascript.gen.c1.call(AlfrescoJS)
   at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:393)
   at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2834)
   at org.mozilla.javascript.gen.c1.call(AlfrescoJS)
   at org.mozilla.javascript.gen.c1.exec(AlfrescoJS)
   at org.alfresco.repo.jscript.RhinoScriptProcessor.executeScriptImpl(RhinoScriptProcessor.java:457)
   … 121 more

De ce que je peux comprendre, c'est que JBoss n'aime pas ces modifications. De plus, dans ces logs, il dit que "wf_notifyMe" n'est pas défini. Je ne saisis pas pourquoi il parle de ça. Contrairement au code présent dans adhoc_processdefinition.xml, je n'ai pas inclus le bout de code if (wf_notifyMe) dans le script. Mon code ressemble à ça en passant :

        <transition name="approve" to="approved" />
<!–      <transition name="reject" to="rejected" />–>
        <transition name="reject" to="rejected">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = "me@me.fr";
                mail.parameters.subject = "Workflow has been rejected";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "some text, in case template is not found";
                mail.execute(bpm_package);
                }
                </script>
                </action>
          </transition>

Du coup, je commence à être totalement perdu :-s…
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

Avez vous changé le workflow model correspondant a ce workflow ?

pourriez-vous également donner ici l'ensemble du contenu du processDefinition.xml ?
merci
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Merci pour la réponse rapide!

Avez vous changé le workflow model correspondant a ce workflow ?
Sans vouloir paraître trop "bête", comment fait-on cela? Jusqu'à présent, toutes les modifications que j'ai faites ont consisté à éditer des fichiers xml en réunissant des informations trouvées ici et là…Désolé pour mon ignorance. Une autre question : que dois-je changer exactement dans le modèle du workflow?

En ce qui concerne le contenu de review_processdefinition.xml, le voilà :

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

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

    <swimlane name="initiator" />

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

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{bpm_assignee}</actor>
        </assignment>   
    </swimlane>

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <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="approve" to="approved" />
<!–      <transition name="reject" to="rejected" />–>
        <transition name="reject" to="rejected">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = "me@me.fr";
                mail.parameters.subject = "Workflow has been rejected";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "some text, in case template is not found";
                mail.execute(bpm_package);
                }
                </script>
                </action>
          </transition>      
    </task-node>

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

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

    <end-state name="end" />

</process-definition>

Je n'ai pas changé grand chose mis à part l'inclusion du script.

Si vous pourriez m'aiguiller un petit peu, ça me permettrait de bien avancer déjà.
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

Comment déclenchez-vous ce workflow ?
Ce qui m'etonne, c'est bien l'erreur sur la propriété wf_notifyMe, alors que ce n'est pas une propriété présente dans le workflow "Review Task".
elle fait partie du workflow "adhoc", comme décrit dans le fichier workflowModel.xml.
Il y a une configuration qui se "mélange" quelque part dans votre environnement.

Enfin, pour bien comprendre comment son gérés les workflows dans Alfresco, je vous conseille de lire d'abord l'article "WorkflowAdministration" dans le wiki, pour découvrir ce qu'est un "model" Smiley Happy
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Erreur de ma part  :mrgreen: !!! J'ai dû mal relancer Alfresco, puisqu'en le redémarrant, ça a marché  :mrgreen: !
Le code ressemble à ça :

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

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

    <swimlane name="initiator" />

    <start-state name="start">
        <task name="wf:submitReviewTask" swimlane="initiator" />
        <transition name="" to="review">
                     <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = bpm_assignee.properties.email;
                mail.parameters.subject = "Workflow has been created for you man!";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "some text, in case template is not found";
                mail.execute(bpm_package);
                }
                </script>
                </action>
          </transition>   
    </start-state>

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{bpm_assignee}</actor>
        </assignment>   
    </swimlane>

    <task-node name="review">
        <task name="wf:reviewTask" swimlane="reviewer">
            <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="approve" to="approved">
             <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = initiator.properties.email;
                mail.parameters.subject = "Workflow has been approved";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "some text, in case template is not found";
                mail.execute(bpm_package);
                }
                </script>
                </action>
          </transition>   
<!–      <transition name="reject" to="rejected" />–>
        <transition name="reject" to="rejected">
               <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                {
                var mail = actions.create("mail");
            mail.parameters.to = initiator.properties.email;
                mail.parameters.subject = "Workflow has been rejected";
                mail.parameters.from = "alfresco@alfresco.com";
                mail.parameters.text = "some text, in case template is not found";
                mail.execute(bpm_package);
                }
                </script>
                </action>
          </transition>      
    </task-node>

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

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

    <end-state name="end" />

</process-definition>

Toutefois, j'ai une autre requête, si ce n'est pas trop demandé. Je souhaiterai assigner le workflow "Review & Approve" à plusieurs personnes. J'ai vu, dans le fameux article "WorkflowAdministration" qu'ils parlent de bpm:assignees (avec un s à la fin!) ce qui signifie qu'il est a priori possible de lancer le workflow à plusieurs personnes. Est-ce que c'est possible ou pas par hasard?
jayjayecl
Active Member II

Re: E-mail et notifications dans un workflow

oui, c'est possible.
En effet, il s'agit de l'assignation avec bpm_assignees
pascalh_3059
Member II

Re: E-mail et notifications dans un workflow

Ok merci beaucoup pour votre aide!
Et sans vouloir trop en demander, où est-ce que je dois modifier ça?
J'ai essayé de le faire dans le fichier workflowModel.xml comme suit :

      <type name="wf:submitReviewTask">
         <parent>bpm:startTask</parent>
         <mandatory-aspects>
            <aspect>bpm:assignees</aspect>
         </mandatory-aspects>
      </type>
et dans review_processdefinition.xml :

    <swimlane name="reviewer">
        <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
            <actor>#{bpm_assignees}</actor>
        </assignment>   
    </swimlane>
mais ça a pour effet de m'enlever les champs de recherche et de sélection des utilisateurs (par conséquent, je ne peux plus sélectionner d'utilisateurs, ce qui est assez embêtant en soi  Smiley Very Happy)…