diff --git a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java index 4f133d2dd3..e147c6c498 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java @@ -55,6 +55,17 @@ public interface WorkflowComponent * @return workflow deployment descriptor */ public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype); + + /** + * Deploy a Workflow Definition + * + * @param workflowDefinition the content object containing the definition + * @param mimetype (optional) the mime type of the workflow definition + * @param name (optional) a name to represent the deployment + * @return workflow deployment descriptor + * @since 4.0 + */ + public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype, String name); /** * Is the specified Workflow Definition already deployed? diff --git a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java index 5161254cd1..1d1303154e 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowDeployer.java @@ -280,7 +280,8 @@ public class WorkflowDeployer extends AbstractLifecycleBean } else { - WorkflowDeployment deployment = workflowService.deployDefinition(engineId, workflowResource.getInputStream(), mimetype); + WorkflowDeployment deployment = workflowService.deployDefinition(engineId, workflowResource.getInputStream(), + mimetype, workflowResource.getFilename()); logDeployment(location, deployment); } } diff --git a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java index d6255ba88b..f4b05f4871 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java @@ -165,9 +165,20 @@ public class WorkflowServiceImpl implements WorkflowService * .lang.String, java.io.InputStream, java.lang.String) */ public WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype) + { + return deployDefinition(engineId, workflowDefinition, mimetype, null); + } + + /* + * (non-Javadoc) + * @see + * org.alfresco.service.cmr.workflow.WorkflowService#deployDefinition(java + * .lang.String, java.io.InputStream, java.lang.String, java.lang.String) + */ + public WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name) { WorkflowComponent component = getWorkflowComponent(engineId); - WorkflowDeployment deployment = component.deployDefinition(workflowDefinition, mimetype); + WorkflowDeployment deployment = component.deployDefinition(workflowDefinition, mimetype, name); if (logger.isDebugEnabled() && deployment.getProblems().length > 0) { diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 514d56a26d..1404f1091a 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -293,23 +293,33 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine @Override public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype) { - try - { - String resourceName = GUID.generate() + BpmnDeployer.BPMN_RESOURCE_SUFFIX; - Deployment deployment = repoService.createDeployment() - .addInputStream(resourceName, workflowDefinition) - .deploy(); - - // No problems can be added to the WorkflowDeployment, warnings are - // not exposed - return typeConverter.convert(deployment); - } - catch(ActivitiException ae) - { - String msg = messageService.getMessage(ERR_DEPLOY_WORKFLOW); - throw new WorkflowException(msg, ae); - } + return deployDefinition(workflowDefinition, mimetype, null); } + + /** + * {@inheritDoc} + */ + @Override + public WorkflowDeployment deployDefinition(InputStream workflowDefinition, String mimetype, String name) + { + try + { + String resourceName = GUID.generate() + BpmnDeployer.BPMN_RESOURCE_SUFFIX; + Deployment deployment = repoService.createDeployment() + .addInputStream(resourceName, workflowDefinition) + .name(name) + .deploy(); + + // No problems can be added to the WorkflowDeployment, warnings are + // not exposed + return typeConverter.convert(deployment); + } + catch(ActivitiException ae) + { + String msg = messageService.getMessage(ERR_DEPLOY_WORKFLOW); + throw new WorkflowException(msg, ae); + } + } /** * {@inheritDoc} diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index 2d7642257c..6a271b9526 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -284,13 +284,17 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine // /* - * (non-Javadoc) - * - * @see - * org.alfresco.repo.workflow.WorkflowDefinitionComponent#deployDefinition - * (java.io.InputStream) + * @see org.alfresco.repo.workflow.WorkflowComponent#deployDefinition(java.io.InputStream, java.lang.String) */ public WorkflowDeployment deployDefinition(final InputStream workflowDefinition, final String mimetype) + { + return deployDefinition(workflowDefinition, mimetype, null); + } + + /* + * @see org.alfresco.repo.workflow.WorkflowComponent#deployDefinition(java.io.InputStream, java.lang.String, java.lang.String) + */ + public WorkflowDeployment deployDefinition(final InputStream workflowDefinition, final String mimetype, final String name) { try { diff --git a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java index 49b7335a51..e032423783 100644 --- a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java +++ b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java @@ -55,6 +55,21 @@ public interface WorkflowService recordable = {true, false, true}) public WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype); + /** + * Deploy a Workflow Definition to the Alfresco Repository + * + * @param engineId the bpm engine id + * @param workflowDefinition the workflow definition + * @param mimetype the mimetype of the workflow definition + * @param name a name representing the deployment + * @return workflow deployment descriptor + * @since 4.0 + */ + @Auditable( + parameters = {"engineId", "workflowDefinition", "mimetype", "name"}, + recordable = {true, false, true, true}) + public WorkflowDeployment deployDefinition(String engineId, InputStream workflowDefinition, String mimetype, String name); + /** * Deploy a Workflow Definition to the Alfresco Repository *