diff --git a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java index 07517a4da4..f9c0edded3 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowComponent.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowComponent.java @@ -247,6 +247,15 @@ public interface WorkflowComponent * @return the list of active timers */ public List getTimers(String workflowId); + + /** + * Gets a graphical view of the workflow instance + * + * @param workflowInstanceId the workflow instance id + * @return image view of the workflow instance as an InputStream or null if a diagram is not available + * @since 4.0 + */ + public InputStream getWorkflowImage(String workflowInstanceId); } diff --git a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java index 96dc6e0272..8bddd66148 100644 --- a/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java +++ b/source/java/org/alfresco/repo/workflow/WorkflowServiceImpl.java @@ -553,6 +553,19 @@ public class WorkflowServiceImpl implements WorkflowService return component.getStartTask(workflowInstanceId); } + /* + * (non-Javadoc) + * @see + * org.alfresco.service.cmr.workflow.WorkflowService#getWorkflowImage( + * java.lang.String) + */ + public InputStream getWorkflowImage(String workflowInstanceId) + { + String engineId = BPMEngineRegistry.getEngineId(workflowInstanceId); + WorkflowComponent component = getWorkflowComponent(engineId); + return component.getWorkflowImage(workflowInstanceId); + } + /* * (non-Javadoc) * @see diff --git a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java index 056fce192f..561696a4a4 100644 --- a/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java +++ b/source/java/org/alfresco/repo/workflow/activiti/ActivitiWorkflowEngine.java @@ -1000,6 +1000,16 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine throw new WorkflowException(msg, ae); } } + + /** + * {@inheritDoc} + */ + @Override + public InputStream getWorkflowImage(String workflowInstanceId) + { + // TODO: Link this up with the underlying Activiti instance diagram API + return null; + } /** * Converts the given list of {@link ProcessDefinition}s to a list of {@link WorkflowDefinition}s diff --git a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java index 4f62d68ecf..e47d5a1f95 100644 --- a/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java +++ b/source/java/org/alfresco/repo/workflow/jbpm/JBPMEngine.java @@ -1288,6 +1288,17 @@ public class JBPMEngine extends AlfrescoBpmEngine implements WorkflowEngine } } + /* + * (non-Javadoc) + * + * @see org.alfresco.repo.workflow.WorkflowComponent#getWorkflowImage(java.lang.String) + */ + public InputStream getWorkflowImage(final String workflowInstanceId) + { + // we don't support workflow instance diagrams in JBPM so return null + return null; + } + // // Task Management ... // diff --git a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java index 58bc445a30..f5e072bd77 100644 --- a/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java +++ b/source/java/org/alfresco/service/cmr/workflow/WorkflowService.java @@ -308,6 +308,15 @@ public interface WorkflowService @Auditable(parameters = {"pathId"}) public WorkflowTask getStartTask(String workflowInstanceId); + /** + * Gets a graphical view of the workflow instance + * + * @param workflowInstanceId the workflow instance id + * @return image view of the workflow instance as an InputStream or null if a diagram is not available + * @since 4.0 + */ + @Auditable(parameters = {"workflowInstanceId"}) + public InputStream getWorkflowImage(String workflowInstanceId); // // Workflow Timer Management