mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Implementing workflow instance image in ActivitiWorkflowEngine (+tests) and updated activiti admin-ui fixing popup-bug
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28333 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -101,6 +101,7 @@ public class AbstractActivitiComponentTest
|
||||
protected static final String TEST_ADHOC_KEY = "testAdhoc";
|
||||
protected static final String TEST_JOB_KEY = "testAdhoc";
|
||||
protected static final String TEST_JOB_DEF = "activiti/testJob.bpmn20.xml";
|
||||
protected static final String TEST_DIAGRAM_DEF = "activiti/testDiagram.bpmn20.xml";
|
||||
|
||||
protected static final String XML = MimetypeMap.MIMETYPE_XML;
|
||||
|
||||
@@ -179,6 +180,11 @@ public class AbstractActivitiComponentTest
|
||||
return deployDefinition(TEST_JOB_DEF);
|
||||
}
|
||||
|
||||
protected WorkflowDefinition deployTestDiagramDefinition()
|
||||
{
|
||||
return deployDefinition(TEST_DIAGRAM_DEF);
|
||||
}
|
||||
|
||||
protected WorkflowDefinition deployDefinition(String resource)
|
||||
{
|
||||
InputStream input = getInputStream(resource);
|
||||
|
@@ -45,5 +45,7 @@ public interface ActivitiConstants
|
||||
|
||||
public static final String SERVICE_REGISTRY_BEAN_KEY = "services";
|
||||
|
||||
public static final String PROCESS_INSTANCE_IMAGE_FORMAT = "png";
|
||||
|
||||
|
||||
}
|
||||
|
@@ -680,6 +680,25 @@ public class ActivitiWorkflowComponentTest extends AbstractActivitiComponentTest
|
||||
assertEquals(0, timers.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetWorkflowImage() {
|
||||
WorkflowDefinition definitionWithoutImage = deployTestAdhocDefinition();
|
||||
WorkflowDefinition definitionWithImage = deployTestDiagramDefinition();
|
||||
|
||||
// Start process-instance that shouldn't have an image
|
||||
ProcessInstance processInstance = runtime.startProcessInstanceById(BPMEngineRegistry.getLocalId(definitionWithoutImage.getId()));
|
||||
String worklfowId = BPMEngineRegistry.createGlobalId(ActivitiConstants.ENGINE_ID, processInstance.getId());
|
||||
|
||||
assertNull(workflowEngine.getWorkflowImage(worklfowId));
|
||||
|
||||
// Start process-instance that SHOULD have an image
|
||||
ProcessInstance processInstanceWithImage = runtime.startProcessInstanceById(BPMEngineRegistry.getLocalId(definitionWithImage.getId()));
|
||||
String worklfowWithImageId = BPMEngineRegistry.createGlobalId(ActivitiConstants.ENGINE_ID, processInstanceWithImage.getId());
|
||||
|
||||
assertNotNull(workflowEngine.getWorkflowImage(worklfowWithImageId));
|
||||
}
|
||||
|
||||
|
||||
private void putVariable(Map<String, Object> variables, QName varName, Object value)
|
||||
{
|
||||
String variableName = mapQNameToName(varName);
|
||||
|
@@ -48,9 +48,12 @@ import org.activiti.engine.history.HistoricTaskInstanceQuery;
|
||||
import org.activiti.engine.impl.RepositoryServiceImpl;
|
||||
import org.activiti.engine.impl.bpmn.behavior.UserTaskActivityBehavior;
|
||||
import org.activiti.engine.impl.bpmn.deployer.BpmnDeployer;
|
||||
import org.activiti.engine.impl.bpmn.diagram.ProcessDiagramGenerator;
|
||||
import org.activiti.engine.impl.form.DefaultTaskFormHandler;
|
||||
import org.activiti.engine.impl.form.TaskFormHandler;
|
||||
import org.activiti.engine.impl.identity.Authentication;
|
||||
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
|
||||
import org.activiti.engine.impl.persistence.entity.ProcessDefinitionEntity;
|
||||
import org.activiti.engine.impl.persistence.entity.TimerEntity;
|
||||
import org.activiti.engine.impl.pvm.PvmActivity;
|
||||
import org.activiti.engine.impl.pvm.PvmTransition;
|
||||
@@ -986,8 +989,7 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||
ProcessDefinition procDef = repoService.createProcessDefinitionQuery()
|
||||
.processDefinitionId(procDefId)
|
||||
.singleResult();
|
||||
if(procDef == null)
|
||||
{
|
||||
if(procDef == null) {
|
||||
String msg = messageService.getMessage(ERR_UNDEPLOY_WORKFLOW_UNEXISTING, workflowDefinitionId);
|
||||
throw new WorkflowException(msg);
|
||||
}
|
||||
@@ -1007,7 +1009,27 @@ public class ActivitiWorkflowEngine extends BPMEngine implements WorkflowEngine
|
||||
@Override
|
||||
public InputStream getWorkflowImage(String workflowInstanceId)
|
||||
{
|
||||
// TODO: Link this up with the underlying Activiti instance diagram API
|
||||
String processInstanceId = createLocalId(workflowInstanceId);
|
||||
ExecutionEntity pi = (ExecutionEntity) runtimeService.createProcessInstanceQuery()
|
||||
.processInstanceId(processInstanceId).singleResult();
|
||||
|
||||
// If the process is finished, there is no diagram available
|
||||
if (pi != null)
|
||||
{
|
||||
// Fetch the process-definition. Not using query API, since the
|
||||
// returned
|
||||
// processdefinition isn't initialized with all activities
|
||||
ProcessDefinitionEntity processDefinition = (ProcessDefinitionEntity) ((RepositoryServiceImpl) repoService)
|
||||
.getDeployedProcessDefinition(pi.getProcessDefinitionId());
|
||||
|
||||
if (processDefinition != null && processDefinition.isGraphicalNotationDefined())
|
||||
{
|
||||
return ProcessDiagramGenerator
|
||||
.generateDiagram(processDefinition,
|
||||
ActivitiConstants.PROCESS_INSTANCE_IMAGE_FORMAT,
|
||||
runtimeService.getActiveActivityIds(processInstanceId));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user