cancel
Showing results for 
Search instead for 
Did you mean: 

adhoc_processdefinition.xml to send email on task creation.

madtechsupport
Champ in-the-making
Champ in-the-making
Dear All,

I need some help modifying adhoc_processdefinition.xml so that it will send an email to the person who the task has been assigned to at task creation time.

I understand that I will need to insert the below code block into the relevant section of adhoc_processdefinition.xml, but doing that successfully has so far evaded me.  Please help!

<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
       <script>
             var mail = actions.create("mail");
             mail.parameters.to = bpm_assignee.properties.email;
             mail.parameters.subject = "New Adhoc Task " + bpm_workflowDescription;
             mail.parameters.from = initiator.properties.email;
             mail.parameters.text = "You have been assigned a new task.";
             mail.execute(bpm_package);
       </script>
</action>

Below is my adhoc_processdefinition.xml in its original form from my Alfresco Community Edition 3.4.b (Windows) installation.  If someone could point me to where in this file I need to insert the code block I would be most thankful.

<?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"/>
      <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>
              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);
              }
           </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>

Regards,


Warren.
6 REPLIES 6

mthomas
Champ in-the-making
Champ in-the-making
Did you ever get this to work?  I too am beginning to try to configure my 3.4b installation to send Workflow email notifications.  I must say that there are not a lot of tutorials on this one.  I'm curious as to your progress on this.

barbara
Champ in-the-making
Champ in-the-making
You should insert action into task-create or task-assign event.


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

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

<event type="task-assign">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
       <script>
             var mail = actions.create("mail");
             mail.parameters.to = bpm_assignee.properties.email;
             mail.parameters.subject = "New Adhoc Task " + bpm_workflowDescription;
             mail.parameters.from = initiator.properties.email;
             mail.parameters.text = "You have been assigned a new task.";
             mail.execute(bpm_package);
       </script>
      </action>
</event>


I am using Java class which extends JBPMSpringActionHandler and it works just fine.

<event type="task-assign">
         <action class="…SomeAction" name="SendMail"></action>
</event>

mthomas
Champ in-the-making
Champ in-the-making
I got this to work in adhoc_processdefinition but I can't seem to make it work when I use the same code in parallelreview_processdefinition.
Here is the code.  I put the send email script in "task assign"  Even if I put it in transition "startreview" I get an error.  Can someone look at it and tell me why it will not work?
<?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">
   
   </transition>
     </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" />
    </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>
<event type="task-assign">
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
   <runas>admin</runas>
           <script>
                 var mail = actions.create("mail");
                 mail.parameters.to = bpm_assignee.properties.email;
                 mail.parameters.subject = "You have been assigned this task " + bpm_workflowDescription;
                 mail.parameters.from = initiator.properties.email;
       mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/Notify Email Templates/Workflow_notify_user_email.ftl");
       mail.execute(bpm_package);
           </script>
         </action>
   </event>
        </task>
   
        <transition name="approve" to="endreview">
            <script>
                <variable name="wf_approveCount" access="read,write" />
                <expression>
                    wf_approveCount = wf_approveCount +1;
                 </expression>
            </script>
        </transition>
        <transition name="reject" to="endreview" />
    </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>

mitpatoliya
Star Collaborator
Star Collaborator
Actually i see two potential problem in your code
1) that event task-assign whole tag you need to put out of "task" tag means just after <task-node> tags opening and before <task> tags declaration.

2)Also try after removing the template. I mean try to send the mail without attaching any template.

Hope this might help. Smiley Happy

mthomas
Champ in-the-making
Champ in-the-making
Thanks for your help.  Got it to work, then fiddled with it, with the template and finally got the whole thing to trigger at the right time.
Here is the final:
<?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"/>
      <transition name="" to="adhoc">
   <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
   <runas>admin</runas>
           <script>
                 var mail = actions.create("mail");
                 mail.parameters.to = bpm_assignee.properties.email;
                 mail.parameters.subject = "You have been assigned this task " + bpm_workflowDescription;
                 mail.parameters.from = initiator.properties.email;
       mail.parameters.template = companyhome.childByNamePath("Data Dictionary/Email Templates/Notify Email Templates/Workflow_notify_user_email.ftl");
       mail.execute(bpm_package);
           </script>
         </action>

      </transition>

   </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>
              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 = "The task has been completed";
                 mail.execute(bpm_package);
              }
           </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>

marianamlopes
Champ in-the-making
Champ in-the-making
Hi!
I followed your tips, but I think I'm doing something wrong, because for me, that's not working 😞
I don't get any errors, but the email isn't sent, too. Can you please, help me?
I have the following code, in my process definition:
<task name="apwd:submitReviewTask" swimlane="initiator" />
                <transition name="" to="Submit">
                <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
                <script>
                     var mail = actions.create("mail");
                     <!–mail.parameters.to = director.properties.email;–>
                     mail.parameters.to = director.properties.email;
                     mail.parameters.subject = "Aprovacao passwords " + bpm_workflowDescription;
                     mail.parameters.from = initiator.properties.email;
                     mail.parameters.text = "It's done";
                     mail.execute(bpm_package);
                 </script>
                 </action>
</transition>
Thanks in advance, Mariana