diff --git a/config/alfresco/activiti-context.xml b/config/alfresco/activiti-context.xml index c0f5295fed..5d76e23b9a 100644 --- a/config/alfresco/activiti-context.xml +++ b/config/alfresco/activiti-context.xml @@ -66,6 +66,7 @@ + @@ -225,6 +226,11 @@ class="org.alfresco.repo.workflow.activiti.tasklistener.TaskCreateListener" depends-on="activitiWorkflowManager"> + + + diff --git a/source/java/org/alfresco/repo/workflow/activiti/AlfrescoUserTaskBpmnParseHandler.java b/source/java/org/alfresco/repo/workflow/activiti/AlfrescoUserTaskBpmnParseHandler.java index f96dfdf8a2..5b4e62c616 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/AlfrescoUserTaskBpmnParseHandler.java +++ b/source/java/org/alfresco/repo/workflow/activiti/AlfrescoUserTaskBpmnParseHandler.java @@ -38,6 +38,7 @@ public class AlfrescoUserTaskBpmnParseHandler extends AbstractBpmnParseHandler getHandledType() { @@ -72,6 +73,10 @@ public class AlfrescoUserTaskBpmnParseHandler extends AbstractBpmnParseHandler getOrCreateListenerList(String eventName, UserTaskActivityBehavior userTask) { List taskEventListeners = userTask.getTaskDefinition().getTaskListeners().get(eventName); if (taskEventListeners == null) { taskEventListeners = new ArrayList(); userTask.getTaskDefinition().getTaskListeners().put(eventName, taskEventListeners); } - taskEventListeners.add(0, taskListener); + return taskEventListeners; } } \ No newline at end of file diff --git a/source/java/org/alfresco/repo/workflow/activiti/tasklistener/TaskCreateListener.java b/source/java/org/alfresco/repo/workflow/activiti/tasklistener/TaskCreateListener.java index cb198563be..280662f36f 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/tasklistener/TaskCreateListener.java +++ b/source/java/org/alfresco/repo/workflow/activiti/tasklistener/TaskCreateListener.java @@ -19,25 +19,18 @@ package org.alfresco.repo.workflow.activiti.tasklistener; -import java.util.ArrayList; -import java.util.List; - import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; import org.activiti.engine.form.FormData; import org.activiti.engine.impl.form.TaskFormHandler; -import org.activiti.engine.impl.persistence.entity.ExecutionEntity; -import org.activiti.engine.impl.persistence.entity.IdentityLinkEntity; import org.activiti.engine.impl.persistence.entity.TaskEntity; import org.activiti.engine.task.IdentityLinkType; import org.alfresco.model.ContentModel; import org.alfresco.repo.workflow.WorkflowConstants; -import org.alfresco.repo.workflow.WorkflowNotificationUtils; import org.alfresco.repo.workflow.activiti.ActivitiConstants; import org.alfresco.repo.workflow.activiti.ActivitiScriptNode; import org.alfresco.repo.workflow.activiti.properties.ActivitiPropertyConverter; import org.alfresco.service.cmr.dictionary.TypeDefinition; -import org.alfresco.service.cmr.repository.NodeRef; /** * Tasklistener that is notified when a task is created. This will set all @@ -51,15 +44,6 @@ public class TaskCreateListener implements TaskListener private static final long serialVersionUID = 1L; private ActivitiPropertyConverter propertyConverter; - private WorkflowNotificationUtils workflowNotificationUtils; - - /** - * @param services the service registry - */ - public void setWorkflowNotification(WorkflowNotificationUtils service) - { - this.workflowNotificationUtils = service; - } @Override public void notify(DelegateTask task) @@ -82,73 +66,6 @@ public class TaskCreateListener implements TaskListener if(initiatorNode != null) { task.addUserIdentityLink((String) initiatorNode.getProperties().get(ContentModel.PROP_USERNAME.toPrefixString()), IdentityLinkType.STARTER); } - - // Determine whether we need to send the workflow notification or not - ExecutionEntity executionEntity = ((ExecutionEntity)task.getExecution()).getProcessInstance(); - Boolean value = (Boolean)executionEntity.getVariable(WorkflowNotificationUtils.PROP_SEND_EMAIL_NOTIFICATIONS); - if (Boolean.TRUE.equals(value) == true) - { - // Get the workflow package node - NodeRef workflowPackage = null; - ActivitiScriptNode scriptNode = (ActivitiScriptNode)executionEntity.getVariable(WorkflowNotificationUtils.PROP_PACKAGE); - if (scriptNode != null) - { - workflowPackage = scriptNode.getNodeRef(); - } - - // Determine whether the task is pooled or not - String[] authorities = null; - boolean isPooled = false; - if (task.getAssignee() == null) - { - // Task is pooled - isPooled = true; - - // Get the pool of user/groups for this task - List identities = ((TaskEntity)task).getIdentityLinks(); - List temp = new ArrayList(identities.size()); - for (IdentityLinkEntity item : identities) - { - String group = item.getGroupId(); - if (group != null) - { - temp.add(group); - } - String user = item.getUserId(); - if (user != null) - { - temp.add(user); - } - } - authorities = temp.toArray(new String[temp.size()]); - } - else - { - // Get the assigned user or group - authorities = new String[]{task.getAssignee()}; - } - - String title; - if (task.getName() != null) - { - title = task.getName(); - } - else - { - title = taskFormKey.replace(":", "_"); - } - - // Send email notification - workflowNotificationUtils.sendWorkflowAssignedNotificationEMail( - ActivitiConstants.ENGINE_ID + "$" + task.getId(), - title, - task.getDescription(), - task.getDueDate(), - Integer.valueOf(task.getPriority()), - workflowPackage, - authorities, - isPooled); - } } private String getFormKey(DelegateTask task)