diff --git a/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoAssignmentHandler.java b/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoAssignmentHandler.java index e707859a0c..d402d08c26 100644 --- a/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoAssignmentHandler.java +++ b/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoAssignmentHandler.java @@ -24,10 +24,16 @@ import java.util.Map; import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.TaskListener; +import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl; +import org.activiti.engine.impl.context.Context; import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.model.ContentModel; +import org.alfresco.repo.workflow.activiti.ActivitiConstants; import org.alfresco.repo.workflow.activiti.ActivitiScriptNode; import org.alfresco.repo.workflow.activiti.ActivitiScriptNodeList; +import org.alfresco.service.ServiceRegistry; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.util.ParameterCheck; /** @@ -50,9 +56,7 @@ public class RequestInfoAssignmentHandler implements TaskListener ParameterCheck.mandatory("delegateTask", delegateTask); // Set the workflow description for the task - // FIXME: I18N!!! - // FIXME: Record name!!! - delegateTask.setVariable("bpm_workflowDescription", "Information requested for record '" + "test.doc" + "'"); + delegateTask.setVariable("bpm_workflowDescription", getWorkflowDescription(delegateTask)); // Get the list of user(s) and/or group(s) ActivitiScriptNodeList usersAndGroups = (ActivitiScriptNodeList) delegateTask.getVariable("rmwf_mixedAssignees"); @@ -110,4 +114,43 @@ public class RequestInfoAssignmentHandler implements TaskListener delegateTask.addCandidateGroups(candidateGroups); } } + + private String getWorkflowDescription(DelegateTask delegateTask) + { + // FIXME: I18N!!! + return "Information requested for record '" + getRecordName(delegateTask) + "'"; + } + + private String getRecordName(DelegateTask delegateTask) + { + ActivitiScriptNode scriptNode = (ActivitiScriptNode) delegateTask.getVariable("bpm_package"); + NodeService nodeService = getServiceRegistry().getNodeService(); + NodeRef docRef= nodeService.getChildAssocs(scriptNode.getNodeRef()).get(0).getChildRef(); + return (String) nodeService.getProperty(docRef, ContentModel.PROP_NAME); + } + + //FIXME: Is there a better way to call services? + + /** + * Helper method for getting the service registry in order to call services + * + * @return Returns the service registry + */ + private ServiceRegistry getServiceRegistry() + { + ProcessEngineConfigurationImpl config = Context.getProcessEngineConfiguration(); + if (config != null) + { + // Fetch the registry that is injected in the activiti spring-configuration + ServiceRegistry registry = (ServiceRegistry) config.getBeans().get(ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY); + if (registry == null) + { + throw new RuntimeException( + "Service-registry not present in ProcessEngineConfiguration beans, expected ServiceRegistry with key" + + ActivitiConstants.SERVICE_REGISTRY_BEAN_KEY); + } + return registry; + } + throw new IllegalStateException("No ProcessEngineCOnfiguration found in active context"); + } } diff --git a/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoNotifier.java b/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoNotifier.java index 3a20323b79..eb3335916b 100644 --- a/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoNotifier.java +++ b/rm-server/source/java/org/alfresco/workflow/requestInfo/RequestInfoNotifier.java @@ -29,6 +29,8 @@ import org.alfresco.repo.workflow.activiti.ActivitiConstants; import org.alfresco.repo.workflow.activiti.ActivitiScriptNode; import org.alfresco.service.ServiceRegistry; import org.alfresco.service.cmr.notification.NotificationContext; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.util.ParameterCheck; /** @@ -50,9 +52,7 @@ public class RequestInfoNotifier implements TaskListener ParameterCheck.mandatory("delegateTask", delegateTask); // Set the workflow description for the task - // FIXME: I18N!!! - // FIXME: Record name!!! - delegateTask.setVariable("bpm_workflowDescription", "Information provided for record '" + "test.doc" + "'"); + delegateTask.setVariable("bpm_workflowDescription", getWorkflowDescription(delegateTask)); // Assign the task to the initiator String initiator = getInitiator(delegateTask); @@ -92,6 +92,20 @@ public class RequestInfoNotifier implements TaskListener return userName; } + private String getWorkflowDescription(DelegateTask delegateTask) + { + // FIXME: I18N!!! + return "Information provided for record '" + getRecordName(delegateTask) + "'"; + } + + private String getRecordName(DelegateTask delegateTask) + { + ActivitiScriptNode scriptNode = (ActivitiScriptNode) delegateTask.getVariable("bpm_package"); + NodeService nodeService = getServiceRegistry().getNodeService(); + NodeRef docRef= nodeService.getChildAssocs(scriptNode.getNodeRef()).get(0).getChildRef(); + return (String) nodeService.getProperty(docRef, ContentModel.PROP_NAME); + } + //FIXME: Is there a better way to call services? /**