RM-631 (The records management team can create a rule to request information about an undeclared record)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@48906 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2013-04-05 20:10:59 +00:00
parent 72678ddef3
commit 900ac2fb54
2 changed files with 63 additions and 6 deletions

View File

@@ -24,10 +24,16 @@ import java.util.Map;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.delegate.TaskListener; 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.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel; 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.ActivitiScriptNode;
import org.alfresco.repo.workflow.activiti.ActivitiScriptNodeList; 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; import org.alfresco.util.ParameterCheck;
/** /**
@@ -50,9 +56,7 @@ public class RequestInfoAssignmentHandler implements TaskListener
ParameterCheck.mandatory("delegateTask", delegateTask); ParameterCheck.mandatory("delegateTask", delegateTask);
// Set the workflow description for the task // Set the workflow description for the task
// FIXME: I18N!!! delegateTask.setVariable("bpm_workflowDescription", getWorkflowDescription(delegateTask));
// FIXME: Record name!!!
delegateTask.setVariable("bpm_workflowDescription", "Information requested for record '" + "test.doc" + "'");
// Get the list of user(s) and/or group(s) // Get the list of user(s) and/or group(s)
ActivitiScriptNodeList usersAndGroups = (ActivitiScriptNodeList) delegateTask.getVariable("rmwf_mixedAssignees"); ActivitiScriptNodeList usersAndGroups = (ActivitiScriptNodeList) delegateTask.getVariable("rmwf_mixedAssignees");
@@ -110,4 +114,43 @@ public class RequestInfoAssignmentHandler implements TaskListener
delegateTask.addCandidateGroups(candidateGroups); 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");
}
} }

View File

@@ -29,6 +29,8 @@ import org.alfresco.repo.workflow.activiti.ActivitiConstants;
import org.alfresco.repo.workflow.activiti.ActivitiScriptNode; import org.alfresco.repo.workflow.activiti.ActivitiScriptNode;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.notification.NotificationContext; 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; import org.alfresco.util.ParameterCheck;
/** /**
@@ -50,9 +52,7 @@ public class RequestInfoNotifier implements TaskListener
ParameterCheck.mandatory("delegateTask", delegateTask); ParameterCheck.mandatory("delegateTask", delegateTask);
// Set the workflow description for the task // Set the workflow description for the task
// FIXME: I18N!!! delegateTask.setVariable("bpm_workflowDescription", getWorkflowDescription(delegateTask));
// FIXME: Record name!!!
delegateTask.setVariable("bpm_workflowDescription", "Information provided for record '" + "test.doc" + "'");
// Assign the task to the initiator // Assign the task to the initiator
String initiator = getInitiator(delegateTask); String initiator = getInitiator(delegateTask);
@@ -92,6 +92,20 @@ public class RequestInfoNotifier implements TaskListener
return userName; 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? //FIXME: Is there a better way to call services?
/** /**