mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
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:
@@ -35,6 +35,7 @@ import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
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.namespace.QName;
|
||||
|
||||
@@ -131,6 +132,15 @@ public interface WorkflowComponent
|
||||
@Auditable(parameters = {"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
|
||||
|
@@ -42,6 +42,7 @@ import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
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.WorkflowTaskState;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTimer;
|
||||
@@ -220,6 +221,16 @@ public class WorkflowServiceImpl implements WorkflowService
|
||||
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)
|
||||
* @see org.alfresco.service.cmr.workflow.WorkflowService#startWorkflow(java.lang.String, java.util.Map)
|
||||
*/
|
||||
|
@@ -41,6 +41,7 @@ import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
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.WorkflowTaskState;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
@@ -160,4 +161,17 @@ public class WorkflowServiceImplTest extends BaseSpringTest
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -106,6 +106,7 @@ import org.jbpm.job.Timer;
|
||||
import org.jbpm.jpdl.par.ProcessArchive;
|
||||
import org.jbpm.jpdl.xml.Problem;
|
||||
import org.jbpm.taskmgmt.def.Task;
|
||||
import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
|
||||
import org.jbpm.taskmgmt.exe.PooledActor;
|
||||
import org.jbpm.taskmgmt.exe.TaskInstance;
|
||||
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
|
||||
*
|
||||
|
@@ -148,6 +148,15 @@ public interface WorkflowService
|
||||
@Auditable(parameters = {"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
|
||||
|
Reference in New Issue
Block a user