Added getTaskDefinitions to WorkflowService - required for delete model validation

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6693 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2007-09-06 17:10:39 +00:00
parent 018f8eb9c0
commit ab85be5821
5 changed files with 90 additions and 0 deletions

View File

@@ -35,6 +35,7 @@ import org.alfresco.service.cmr.workflow.WorkflowDeployment;
import org.alfresco.service.cmr.workflow.WorkflowInstance; import org.alfresco.service.cmr.workflow.WorkflowInstance;
import org.alfresco.service.cmr.workflow.WorkflowPath; import org.alfresco.service.cmr.workflow.WorkflowPath;
import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition;
import org.alfresco.service.cmr.workflow.WorkflowTimer; import org.alfresco.service.cmr.workflow.WorkflowTimer;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
@@ -131,6 +132,15 @@ public interface WorkflowComponent
@Auditable(parameters = {"workflowDefinitionId"}) @Auditable(parameters = {"workflowDefinitionId"})
public byte[] getDefinitionImage(String workflowDefinitionId); public byte[] getDefinitionImage(String workflowDefinitionId);
/**
* Gets the Task Definitions for the given Workflow Definition
*
* @param workflowDefinitionId the workflow definition id
* @return the deployed task definitions (or null if not found)
*/
@Auditable(parameters = {"workflowDefinitionId"})
public List<WorkflowTaskDefinition> getTaskDefinitions(final String workflowDefinitionId);
// //
// Workflow Instance Support // Workflow Instance Support

View File

@@ -42,6 +42,7 @@ import org.alfresco.service.cmr.workflow.WorkflowInstance;
import org.alfresco.service.cmr.workflow.WorkflowPath; import org.alfresco.service.cmr.workflow.WorkflowPath;
import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowService;
import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition;
import org.alfresco.service.cmr.workflow.WorkflowTaskQuery; import org.alfresco.service.cmr.workflow.WorkflowTaskQuery;
import org.alfresco.service.cmr.workflow.WorkflowTaskState; import org.alfresco.service.cmr.workflow.WorkflowTaskState;
import org.alfresco.service.cmr.workflow.WorkflowTimer; import org.alfresco.service.cmr.workflow.WorkflowTimer;
@@ -220,6 +221,16 @@ public class WorkflowServiceImpl implements WorkflowService
return definitionImage; return definitionImage;
} }
/* (non-Javadoc)
* @see org.alfresco.service.cmr.workflow.WorkflowService#getAllTaskDefinitions(java.lang.String)
*/
public List<WorkflowTaskDefinition> getTaskDefinitions(final String workflowDefinitionId)
{
String engineId = BPMEngineRegistry.getEngineId(workflowDefinitionId);
WorkflowComponent component = getWorkflowComponent(engineId);
return component.getTaskDefinitions(workflowDefinitionId);
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.alfresco.service.cmr.workflow.WorkflowService#startWorkflow(java.lang.String, java.util.Map) * @see org.alfresco.service.cmr.workflow.WorkflowService#startWorkflow(java.lang.String, java.util.Map)
*/ */

View File

@@ -41,6 +41,7 @@ import org.alfresco.service.cmr.workflow.WorkflowInstance;
import org.alfresco.service.cmr.workflow.WorkflowPath; import org.alfresco.service.cmr.workflow.WorkflowPath;
import org.alfresco.service.cmr.workflow.WorkflowService; import org.alfresco.service.cmr.workflow.WorkflowService;
import org.alfresco.service.cmr.workflow.WorkflowTask; import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition;
import org.alfresco.service.cmr.workflow.WorkflowTaskQuery; import org.alfresco.service.cmr.workflow.WorkflowTaskQuery;
import org.alfresco.service.cmr.workflow.WorkflowTaskState; import org.alfresco.service.cmr.workflow.WorkflowTaskState;
import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceService;
@@ -160,4 +161,17 @@ public class WorkflowServiceImplTest extends BaseSpringTest
assertEquals(0, completedInstances.size()); assertEquals(0, completedInstances.size());
} }
public void testGetWorkflowTaskDefinitions()
{
List<WorkflowDefinition> workflowDefs = workflowService.getDefinitions();
assertNotNull(workflowDefs);
assertTrue(workflowDefs.size() > 0);
for (WorkflowDefinition workflowDef : workflowDefs)
{
List<WorkflowTaskDefinition> workflowTaskDefs = workflowService.getTaskDefinitions(workflowDef.getId());
assertNotNull(workflowTaskDefs);
assertTrue(workflowTaskDefs.size() > 0);
}
}
} }

View File

@@ -106,6 +106,7 @@ import org.jbpm.job.Timer;
import org.jbpm.jpdl.par.ProcessArchive; import org.jbpm.jpdl.par.ProcessArchive;
import org.jbpm.jpdl.xml.Problem; import org.jbpm.jpdl.xml.Problem;
import org.jbpm.taskmgmt.def.Task; import org.jbpm.taskmgmt.def.Task;
import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
import org.jbpm.taskmgmt.exe.PooledActor; import org.jbpm.taskmgmt.exe.PooledActor;
import org.jbpm.taskmgmt.exe.TaskInstance; import org.jbpm.taskmgmt.exe.TaskInstance;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@@ -560,6 +561,51 @@ public class JBPMEngine extends BPMEngine
} }
} }
/* (non-Javadoc)
* @see org.alfresco.repo.workflow.WorkflowComponent#getAllTaskDefinitions(java.lang.String)
*/
@SuppressWarnings("unchecked")
public List<WorkflowTaskDefinition> getTaskDefinitions(final String workflowDefinitionId)
{
try
{
return (List<WorkflowTaskDefinition>)jbpmTemplate.execute(new JbpmCallback()
{
public Object doInJbpm(JbpmContext context)
{
// retrieve process
GraphSession graphSession = context.getGraphSession();
ProcessDefinition processDefinition = getProcessDefinition(graphSession, workflowDefinitionId);
if (processDefinition == null)
{
return null;
}
else
{
String processName = processDefinition.getName();
if (tenantService.isEnabled())
{
tenantService.checkDomain(processName); // throws exception if domain mismatch
}
TaskMgmtDefinition taskMgmtDef = processDefinition.getTaskMgmtDefinition();
List<WorkflowTaskDefinition> workflowTaskDefs = new ArrayList<WorkflowTaskDefinition>();
for (Object task : taskMgmtDef.getTasks().values())
{
workflowTaskDefs.add(createWorkflowTaskDefinition((Task)task));
}
return (workflowTaskDefs.size() == 0) ? null : workflowTaskDefs;
}
}
});
}
catch(JbpmException e)
{
throw new WorkflowException("Failed to retrieve workflow task definitions for workflow definition '" + workflowDefinitionId + "'", e);
}
}
/** /**
* Gets a jBPM process definition * Gets a jBPM process definition
* *

View File

@@ -148,6 +148,15 @@ public interface WorkflowService
@Auditable(parameters = {"workflowDefinitionId"}) @Auditable(parameters = {"workflowDefinitionId"})
public byte[] getDefinitionImage(String workflowDefinitionId); public byte[] getDefinitionImage(String workflowDefinitionId);
/**
* Gets the Task Definitions for the given Workflow Definition
*
* @param workflowDefinitionId the workflow definition id
* @return the deployed task definitions (or null if not found)
*/
@Auditable(parameters = {"workflowDefinitionId"})
public List<WorkflowTaskDefinition> getTaskDefinitions(final String workflowDefinitionId);
// //
// Workflow Instance Management // Workflow Instance Management