From 90fbffbb58e34e8e2f87f1a20a55b7117ad31eb7 Mon Sep 17 00:00:00 2001 From: N Smith Date: Tue, 3 Aug 2010 11:41:28 +0000 Subject: [PATCH] Updated the Workflow Rest API classes to use the getter methods on various Workflow DTOs instead of accessing the public fields. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21565 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/scripts/workflow/TaskInstancePut.java | 4 +- .../workflow/WorkflowModelBuilder.java | 122 +++++---- .../workflow/WorkflowModelBuilderTest.java | 235 ++++++++++-------- .../scripts/workflow/WorkflowRestApiTest.java | 4 +- 4 files changed, 208 insertions(+), 157 deletions(-) diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/TaskInstancePut.java b/source/java/org/alfresco/repo/web/scripts/workflow/TaskInstancePut.java index c430d8c4cd..dae8564a10 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/TaskInstancePut.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/TaskInstancePut.java @@ -65,7 +65,7 @@ public class TaskInstancePut extends AbstractWorkflowWebscript String currentUser = authenticationService.getCurrentUserName(); - Serializable owner = workflowTask.properties.get(ContentModel.PROP_OWNER); + Serializable owner = workflowTask.getProperties().get(ContentModel.PROP_OWNER); Serializable initiator = getWorkflowInitiator(workflowTask); @@ -150,7 +150,7 @@ public class TaskInstancePut extends AbstractWorkflowWebscript } else { - value = (Serializable) DefaultTypeConverter.INSTANCE.convert(NodeRef.class, jsonValue.toString().replaceAll("\\\\", "")); + value = DefaultTypeConverter.INSTANCE.convert(NodeRef.class, jsonValue.toString().replaceAll("\\\\", "")); } } } diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilder.java b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilder.java index e666ae4812..097518db6e 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilder.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilder.java @@ -20,6 +20,7 @@ package org.alfresco.repo.web.scripts.workflow; import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -139,17 +140,17 @@ public class WorkflowModelBuilder public Map buildSimple(WorkflowTask task, Collection propertyFilters) { HashMap model = new HashMap(); - model.put(TASK_ID, task.id); + model.put(TASK_ID, task.getId()); model.put(TASK_URL, getUrl(task)); - model.put(TASK_NAME, task.name); - model.put(TASK_TITLE, task.title); - model.put(TASK_DESCRIPTION, task.description); - model.put(TASK_STATE, task.state.name()); - model.put(TASK_TYPE_DEFINITION_TITLE, task.definition.metadata.getTitle()); + model.put(TASK_NAME, task.getName()); + model.put(TASK_TITLE, task.getTitle()); + model.put(TASK_DESCRIPTION, task.getDescription()); + model.put(TASK_STATE, task.getState().name()); + model.put(TASK_TYPE_DEFINITION_TITLE, task.getDefinition().getMetadata().getTitle()); - model.put(TASK_IS_POOLED, isPooled(task.properties)); - Serializable owner = task.properties.get(ContentModel.PROP_OWNER); - model.put(TASK_OWNER, getPersonModel((String) owner)); + model.put(TASK_IS_POOLED, isPooled(task.getProperties())); + Serializable owner = task.getProperties().get(ContentModel.PROP_OWNER); + model.put(TASK_OWNER, getPersonModel( owner)); model.put(TASK_PROPERTIES, buildProperties(task, propertyFilters)); return model; @@ -164,7 +165,7 @@ public class WorkflowModelBuilder { Map model = buildSimple(workflowTask, null); - model.put(TASK_PATH, getUrl(workflowTask, workflowTask.path)); + model.put(TASK_PATH, getUrl(workflowTask.getPath())); // workflow instance part model.put(TASK_WORKFLOW_INSTANCE, buildWorkflowInstance(workflowTask.path.instance)); @@ -185,11 +186,11 @@ public class WorkflowModelBuilder { HashMap model = new HashMap(); - model.put(WORKFLOW_DEFINITION_ID, workflowDefinition.id); + model.put(WORKFLOW_DEFINITION_ID, workflowDefinition.getId()); model.put(WORKFLOW_DEFINITION_URL, getUrl(workflowDefinition)); - model.put(WORKFLOW_DEFINITION_NAME, workflowDefinition.name); - model.put(WORKFLOW_DEFINITION_TITLE, workflowDefinition.title); - model.put(WORKFLOW_DEFINITION_DESCRIPTION, workflowDefinition.description); + model.put(WORKFLOW_DEFINITION_NAME, workflowDefinition.getName()); + model.put(WORKFLOW_DEFINITION_TITLE, workflowDefinition.getTitle()); + model.put(WORKFLOW_DEFINITION_DESCRIPTION, workflowDefinition.getDescription()); return model; } @@ -202,12 +203,13 @@ public class WorkflowModelBuilder private Map buildProperties(WorkflowTask task, Collection propertyFilters) { - Map properties = task.properties; + Map properties = task.getProperties(); Collection keys; if (propertyFilters == null || propertyFilters.size() == 0) { - Map propDefs = task.definition.metadata.getProperties(); - Map assocDefs = task.definition.metadata.getAssociations(); + TypeDefinition taskType = task.getDefinition().getMetadata(); + Map propDefs = taskType.getProperties(); + Map assocDefs = taskType.getAssociations(); Set propKeys = properties.keySet(); keys = new HashSet(propDefs.size() + assocDefs.size() + propKeys.size()); keys.addAll(propDefs.keySet()); @@ -357,55 +359,71 @@ public class WorkflowModelBuilder { Map model = new HashMap(); - model.put(WORKFLOW_NODE_NAME, workflowNode.name); - model.put(WORKFLOW_NODE_TITLE, workflowNode.title); - model.put(WORKFLOW_NODE_DESCRIPTION, workflowNode.description); - model.put(WORKFLOW_NODE_IS_TASK_NODE, workflowNode.isTaskNode); + model.put(WORKFLOW_NODE_NAME, workflowNode.getName()); + model.put(WORKFLOW_NODE_TITLE, workflowNode.getTitle()); + model.put(WORKFLOW_NODE_DESCRIPTION, workflowNode.getDescription()); + model.put(WORKFLOW_NODE_IS_TASK_NODE, workflowNode.isTaskNode()); - List> results = new ArrayList>(); - - Object hiddenTransitions = workflowTask.properties.get(WorkflowModel.PROP_HIDDEN_TRANSITIONS); - - for (WorkflowTransition workflowTransition : workflowNode.transitions) + List> transitions = new ArrayList>(); + List hiddenTransitions = getHiddenTransitions(workflowTask.getProperties()); + for (WorkflowTransition workflowTransition : workflowNode.getTransitions()) { - Map transitionMap = new HashMap(); - - transitionMap.put(WORKFLOW_NODE_TRANSITION_ID, workflowTransition.id); - transitionMap.put(WORKFLOW_NODE_TRANSITION_TITLE, workflowTransition.title); - transitionMap.put(WORKFLOW_NODE_TRANSITION_DESCRIPTION, workflowTransition.description); - transitionMap.put(WORKFLOW_NODE_TRANSITION_IS_DEFAULT, workflowTransition.isDefault); - transitionMap.put(WORKFLOW_NODE_TRANSITION_IS_HIDDEN, (hiddenTransitions == null ? false : hiddenTransitions.toString().contains(workflowTransition.id))); - - results.add(transitionMap); + Map transitionModel = build(workflowTransition, hiddenTransitions); + transitions.add(transitionModel); } - - model.put(WORKFLOW_NODE_TRANSITIONS, results); - + model.put(WORKFLOW_NODE_TRANSITIONS, transitions); return model; } - // private String getURl(WorkflowPath path) - // { - // StringBuilder builder = new StringBuilder("api/workflow-instances/"); - // builder.append(path.instance.id); - // builder.append("/paths/"); - // builder.append(path.id); - // return builder.toString(); - // } + /** + * @param properties + * @return + */ + private List getHiddenTransitions(Map properties) + { + Serializable hiddenSer = properties.get(WorkflowModel.PROP_HIDDEN_TRANSITIONS); + if(hiddenSer instanceof List) + return (List) hiddenSer; + else if(hiddenSer instanceof String) + { + String hiddenStr = (String) hiddenSer; + return Arrays.asList(hiddenStr.split(",")); + } + return null; + } + + public Map build(WorkflowTransition workflowTransition, List hiddenTransitions) + { + Map model = new HashMap(); + String id = workflowTransition.getId(); + model.put(WORKFLOW_NODE_TRANSITION_ID, id); + model.put(WORKFLOW_NODE_TRANSITION_TITLE, workflowTransition.getTitle()); + model.put(WORKFLOW_NODE_TRANSITION_DESCRIPTION, workflowTransition.getDescription()); + model.put(WORKFLOW_NODE_TRANSITION_IS_DEFAULT, workflowTransition.isDefault); + model.put(WORKFLOW_NODE_TRANSITION_IS_HIDDEN, isHiddenTransition(id, hiddenTransitions)); + return model; + } + + private boolean isHiddenTransition(String transitionId, List hiddenTransitions) + { + if(hiddenTransitions == null) + return false; + return hiddenTransitions.contains(transitionId); + } private String getUrl(WorkflowTask task) { - return "api/task-instances/" + task.id; + return "api/task-instances/" + task.getId(); } private String getUrl(WorkflowDefinition workflowDefinition) { - return "api/workflow-definitions/" + workflowDefinition.id; + return "api/workflow-definitions/" + workflowDefinition.getId(); } private String getUrl(WorkflowTaskDefinition workflowTaskDefinition) { - return "api/task-definitions/" + workflowTaskDefinition.id; + return "api/task-definitions/" + workflowTaskDefinition.getId(); } private String getUrl(TypeDefinition typeDefinition) @@ -413,14 +431,14 @@ public class WorkflowModelBuilder return "api/classes/" + typeDefinition.getName().toPrefixString().replace(PREFIX_SEPARATOR, "_"); } - private String getUrl(WorkflowTask task, WorkflowPath path) + private String getUrl(WorkflowPath path) { - return getUrl(task) + "/paths/" + path.id; + return "api/workflow-paths/" + path.getId(); } private String getUrl(WorkflowInstance workflowInstance) { - return "api/workflow-instances/" + workflowInstance.id; + return "api/workflow-instances/" + workflowInstance.getId(); } } diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilderTest.java b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilderTest.java index 36d33d64da..acc8f8b4dc 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilderTest.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowModelBuilderTest.java @@ -52,8 +52,8 @@ import org.alfresco.service.namespace.QName; import org.alfresco.util.ISO8601DateFormat; /** + * @since 3.4 * @author Nick Smith - * */ public class WorkflowModelBuilderTest extends TestCase { @@ -71,38 +71,19 @@ public class WorkflowModelBuilderTest extends TestCase @SuppressWarnings("unchecked") public void testBuildWorkflowTask() throws Exception { - WorkflowTask task = new WorkflowTask(); - task.definition = new WorkflowTaskDefinition(); - task.definition.metadata = mock(TypeDefinition.class); - when(task.definition.metadata.getTitle()).thenReturn("Type Title"); - task.description = "Task Desc"; - task.id = "testId$1"; - task.name = "Task Name"; - task.state = WorkflowTaskState.IN_PROGRESS; - task.title = "Task Title"; - task.properties = new HashMap(); - task.properties.put(ContentModel.PROP_OWNER, userName); - - QName testInt = QName.createQName(URI, "int"); - task.properties.put(testInt, 5); - QName testBoolean = QName.createQName(URI, "boolean"); - task.properties.put(testBoolean, false); - QName testString = QName.createQName(URI, "string"); - task.properties.put(testString, "foo bar"); - QName testDate = QName.createQName(URI, "date"); Date date = new Date(); - task.properties.put(testDate, date); + WorkflowTask task = makeTask(date); Map model = builder.buildSimple(task, null); Object id = model.get(WorkflowModelBuilder.TASK_ID); assertEquals(task.id, id); Object url = model.get(WorkflowModelBuilder.TASK_URL); - assertEquals("api/task-instances/" + task.id, url); - assertEquals(task.name, model.get(WorkflowModelBuilder.TASK_NAME)); - assertEquals(task.title, model.get(WorkflowModelBuilder.TASK_TITLE)); - assertEquals(task.description, model.get(WorkflowModelBuilder.TASK_DESCRIPTION)); - assertEquals(task.state.name(), model.get(WorkflowModelBuilder.TASK_STATE)); - assertEquals(task.definition.metadata.getTitle(), model.get(WorkflowModelBuilder.TASK_TYPE_DEFINITION_TITLE)); + assertEquals("api/task-instances/" + task.getId(), url); + assertEquals(task.getName(), model.get(WorkflowModelBuilder.TASK_NAME)); + assertEquals(task.getTitle(), model.get(WorkflowModelBuilder.TASK_TITLE)); + assertEquals(task.getDescription(), model.get(WorkflowModelBuilder.TASK_DESCRIPTION)); + assertEquals(task.getState().name(), model.get(WorkflowModelBuilder.TASK_STATE)); + assertEquals(task.getDefinition().getMetadata().getTitle(), model.get(WorkflowModelBuilder.TASK_TYPE_DEFINITION_TITLE)); assertEquals(false, model.get(WorkflowModelBuilder.TASK_IS_POOLED)); Map owner = (Map) model.get(WorkflowModelBuilder.TASK_OWNER); @@ -111,20 +92,20 @@ public class WorkflowModelBuilderTest extends TestCase assertEquals(lastName, owner.get(WorkflowModelBuilder.PERSON_LAST_NAME)); Map props = (Map) model.get(WorkflowModelBuilder.TASK_PROPERTIES); - assertEquals(task.properties.size(), props.size()); + assertEquals(task.getProperties().size(), props.size()); assertEquals(5, props.get("test_int")); assertEquals(false, props.get("test_boolean")); assertEquals("foo bar", props.get("test_string")); String dateStr = (String) props.get("test_date"); assertEquals(date, ISO8601DateFormat.parse(dateStr)); - task.properties.put(WorkflowModel.ASSOC_POOLED_ACTORS, new ArrayList(0)); + task.getProperties().put(WorkflowModel.ASSOC_POOLED_ACTORS, new ArrayList(0)); model = builder.buildSimple(task, null); assertEquals(false, model.get(WorkflowModelBuilder.TASK_IS_POOLED)); ArrayList actors = new ArrayList(1); actors.add(person); - task.properties.put(WorkflowModel.ASSOC_POOLED_ACTORS, actors); + task.getProperties().put(WorkflowModel.ASSOC_POOLED_ACTORS, actors); model = builder.buildSimple(task, null); assertEquals(true, model.get(WorkflowModelBuilder.TASK_IS_POOLED)); @@ -143,56 +124,19 @@ public class WorkflowModelBuilderTest extends TestCase @SuppressWarnings("unchecked") public void testBuildWorkflowTaskDetailed() throws Exception { - WorkflowTask workflowTask = new WorkflowTask(); - workflowTask.id = "testId$1"; - workflowTask.name = "Task Name"; - workflowTask.title = "Task Title"; - workflowTask.description = "The Description"; - workflowTask.state = WorkflowTaskState.IN_PROGRESS; - - workflowTask.path = new WorkflowPath(); - workflowTask.path.id = "pathId$1"; - workflowTask.path.instance = new WorkflowInstance(); - workflowTask.path.instance.id = ""; - workflowTask.path.instance.active = true; - workflowTask.path.instance.startDate = new Date(); - workflowTask.path.instance.definition = new WorkflowDefinition( - "The Id", "The Name", "1", "The Title", "The Description", null); - - workflowTask.definition = new WorkflowTaskDefinition(); - workflowTask.definition.id = "The Definition Id"; - workflowTask.definition.metadata = mock(TypeDefinition.class); - when(workflowTask.definition.metadata.getName()).thenReturn(QName.createQName("The Type Name")); - when(workflowTask.definition.metadata.getTitle()).thenReturn("The Type Title"); - when(workflowTask.definition.metadata.getDescription()).thenReturn("The Type Description"); - - WorkflowNode workflowNode = new WorkflowNode(); - workflowNode.name = "The Node Name"; - workflowNode.title = "The Node Title"; - workflowNode.description = "The Node Description"; - workflowNode.isTaskNode = true; - WorkflowTransition workflowTransition = new WorkflowTransition(); - workflowTransition.id = "The Transition Id"; - workflowTransition.title = "The Transition Title"; - workflowTransition.description = "The Transition Description"; - workflowTransition.isDefault = true; - workflowNode.transitions = new WorkflowTransition[] { workflowTransition }; - workflowTask.definition.node = workflowNode; - - workflowTask.properties = new HashMap(); - workflowTask.properties.put(ContentModel.PROP_OWNER, userName); - + Date date = new Date(); + WorkflowTask workflowTask = makeTask(date); + Map model = builder.buildDetailed(workflowTask); Object id = model.get(WorkflowModelBuilder.TASK_ID); - assertEquals(workflowTask.id, id); + assertEquals(workflowTask.getId(), id); Object url = model.get(WorkflowModelBuilder.TASK_URL); assertEquals("api/task-instances/" + workflowTask.id, url); - assertEquals(workflowTask.name, model.get(WorkflowModelBuilder.TASK_NAME)); - assertEquals(workflowTask.title, model.get(WorkflowModelBuilder.TASK_TITLE)); - assertEquals(workflowTask.description, model.get(WorkflowModelBuilder.TASK_DESCRIPTION)); - assertEquals(workflowTask.state.name(), model.get(WorkflowModelBuilder.TASK_STATE)); - assertEquals(workflowTask.definition.metadata.getTitle(), model.get(WorkflowModelBuilder.TASK_TYPE_DEFINITION_TITLE)); + assertEquals(workflowTask.getName(), model.get(WorkflowModelBuilder.TASK_NAME)); + assertEquals(workflowTask.getTitle(), model.get(WorkflowModelBuilder.TASK_TITLE)); + assertEquals(workflowTask.getDescription(), model.get(WorkflowModelBuilder.TASK_DESCRIPTION)); + assertEquals(workflowTask.getState().name(), model.get(WorkflowModelBuilder.TASK_STATE)); assertEquals(false, model.get(WorkflowModelBuilder.TASK_IS_POOLED)); Map owner = (Map) model.get(WorkflowModelBuilder.TASK_OWNER); @@ -201,43 +145,49 @@ public class WorkflowModelBuilderTest extends TestCase assertEquals(lastName, owner.get(WorkflowModelBuilder.PERSON_LAST_NAME)); Map props = (Map) model.get(WorkflowModelBuilder.TASK_PROPERTIES); - assertEquals(workflowTask.properties.size(), props.size()); + assertEquals(workflowTask.getProperties().size(), props.size()); Map workflowInstance = (Map) model.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE); - assertEquals(workflowTask.path.instance.id, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_ID)); - assertEquals(workflowTask.path.instance.definition.name, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_NAME)); - assertEquals(workflowTask.path.instance.definition.title, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_TITLE)); - assertEquals(workflowTask.path.instance.definition.description, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_DESCRIPTION)); - assertEquals(workflowTask.path.instance.active, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_IS_ACTIVE)); - assertEquals(ISO8601DateFormat.format(workflowTask.path.instance.startDate), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_START_DATE)); + WorkflowInstance instance = workflowTask.getPath().getInstance(); + assertEquals(instance.getId(), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_ID)); + assertEquals(instance.isActive(), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_IS_ACTIVE)); + String startDateStr = ISO8601DateFormat.format(instance.getStartDate()); + assertEquals(startDateStr, workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_START_DATE)); - Map definition = (Map) model.get(WorkflowModelBuilder.TASK_DEFINITION); + WorkflowDefinition workflowDef = instance.getDefinition(); + assertEquals(workflowDef.getName(), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_NAME)); + assertEquals(workflowDef.getTitle(), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_TITLE)); + assertEquals(workflowDef.getDescription(), workflowInstance.get(WorkflowModelBuilder.TASK_WORKFLOW_INSTANCE_DESCRIPTION)); + + Map actualDefinition = (Map) model.get(WorkflowModelBuilder.TASK_DEFINITION); + WorkflowTaskDefinition taskDef = workflowTask.getDefinition(); + assertEquals(taskDef.getId(), actualDefinition.get(WorkflowModelBuilder.TASK_DEFINITION_ID)); - assertEquals(workflowTask.definition.id, definition.get(WorkflowModelBuilder.TASK_DEFINITION_ID)); + Map actualType = (Map) actualDefinition.get(WorkflowModelBuilder.TASK_DEFINITION_TYPE); + TypeDefinition taskType = taskDef.getMetadata(); + assertEquals(taskType.getName(), actualType.get(WorkflowModelBuilder.TYPE_DEFINITION_NAME)); + assertEquals(taskType.getTitle(), actualType.get(WorkflowModelBuilder.TYPE_DEFINITION_TITLE)); + assertEquals(taskType.getDescription(), actualType.get(WorkflowModelBuilder.TYPE_DEFINITION_DESCRIPTION)); - Map type = (Map) definition.get(WorkflowModelBuilder.TASK_DEFINITION_TYPE); + Map actualNode = (Map) actualDefinition.get(WorkflowModelBuilder.TASK_DEFINITION_NODE); + WorkflowNode taskNode = taskDef.getNode(); + assertEquals(taskNode.getName(), actualNode.get(WorkflowModelBuilder.WORKFLOW_NODE_NAME)); + assertEquals(taskNode.getTitle(), actualNode.get(WorkflowModelBuilder.WORKFLOW_NODE_TITLE)); + assertEquals(taskNode.getDescription(), actualNode.get(WorkflowModelBuilder.WORKFLOW_NODE_DESCRIPTION)); + assertEquals(taskNode.isTaskNode(), actualNode.get(WorkflowModelBuilder.WORKFLOW_NODE_IS_TASK_NODE)); - assertEquals(workflowTask.definition.metadata.getName(), type.get(WorkflowModelBuilder.TYPE_DEFINITION_NAME)); - assertEquals(workflowTask.definition.metadata.getTitle(), type.get(WorkflowModelBuilder.TYPE_DEFINITION_TITLE)); - assertEquals(workflowTask.definition.metadata.getDescription(), type.get(WorkflowModelBuilder.TYPE_DEFINITION_DESCRIPTION)); - - Map node = (Map) definition.get(WorkflowModelBuilder.TASK_DEFINITION_NODE); - - assertEquals(workflowTask.definition.node.name, node.get(WorkflowModelBuilder.WORKFLOW_NODE_NAME)); - assertEquals(workflowTask.definition.node.title, node.get(WorkflowModelBuilder.WORKFLOW_NODE_TITLE)); - assertEquals(workflowTask.definition.node.description, node.get(WorkflowModelBuilder.WORKFLOW_NODE_DESCRIPTION)); - assertEquals(workflowTask.definition.node.isTaskNode, node.get(WorkflowModelBuilder.WORKFLOW_NODE_IS_TASK_NODE)); - - List> transitions = (List>) node.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITIONS); + List> transitions = (List>) actualNode.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITIONS); + WorkflowTransition[] taskTransitions = taskNode.getTransitions(); int i = 0; for (Map transition : transitions) { - assertEquals(workflowTask.definition.node.transitions[i].id, transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_ID)); - assertEquals(workflowTask.definition.node.transitions[i].title, transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_TITLE)); - assertEquals(workflowTask.definition.node.transitions[i].description, transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_DESCRIPTION)); - assertEquals(workflowTask.definition.node.transitions[i].isDefault, transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_IS_DEFAULT)); + WorkflowTransition workflowTransition = taskTransitions[i]; + assertEquals(workflowTransition.getId(), transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_ID)); + assertEquals(workflowTransition.getTitle(), transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_TITLE)); + assertEquals(workflowTransition.getDescription(), transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_DESCRIPTION)); + assertEquals(workflowTransition.isDefault(), transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_IS_DEFAULT)); assertEquals(false, transition.get(WorkflowModelBuilder.WORKFLOW_NODE_TRANSITION_IS_HIDDEN)); i++; } @@ -256,6 +206,89 @@ public class WorkflowModelBuilderTest extends TestCase assertEquals(workflowDefinition.description, model.get(WorkflowModelBuilder.WORKFLOW_DEFINITION_DESCRIPTION)); } + private WorkflowNode makeNode() + { + WorkflowNode node = new WorkflowNode(); + node.name = "The Node Name"; + node.title = "The Node Title"; + node.description = "The Node Description"; + node.isTaskNode = true; + + WorkflowTransition workflowTransition = makeTransition(); + node.transitions = new WorkflowTransition[] { workflowTransition }; + return node; + } + + private WorkflowTransition makeTransition() + { + WorkflowTransition workflowTransition = new WorkflowTransition(); + workflowTransition.id = "The Transition Id"; + workflowTransition.title = "The Transition Title"; + workflowTransition.description = "The Transition Description"; + workflowTransition.isDefault = true; + return workflowTransition; + } + + private WorkflowTaskDefinition makeTaskDefinition() + { + WorkflowTaskDefinition definition = new WorkflowTaskDefinition(); + definition.id = "The Definition Id"; + definition.metadata = makeTypeDefinition(); + definition.node = makeNode(); + return definition; + } + + private TypeDefinition makeTypeDefinition() + { + TypeDefinition typeDef = mock(TypeDefinition.class); + when(typeDef.getName()).thenReturn(QName.createQName("The Type Name")); + when(typeDef.getTitle()).thenReturn("The Type Title"); + when(typeDef.getDescription()).thenReturn("The Type Description"); + return typeDef; + } + + private WorkflowPath makePath() + { + WorkflowPath path = new WorkflowPath(); + path.id = "pathId$1"; + path.instance = new WorkflowInstance(); + path.instance.id = ""; + path.instance.active = true; + path.instance.startDate = new Date(); + path.instance.definition = new WorkflowDefinition( + "The Id", "The Name", "1", "The Title", "The Description", null); + return path; + } + + private WorkflowTask makeTask(Date date) + { + WorkflowTask task = new WorkflowTask(); + task.description = "Task Desc"; + task.id = "testId$1"; + task.name = "Task Name"; + task.state = WorkflowTaskState.IN_PROGRESS; + task.title = "Task Title"; + task.path = makePath(); + task.definition = makeTaskDefinition(); + task.properties = makeTaskProperties(date); + return task; + } + + private HashMap makeTaskProperties(Date date) + { + HashMap properties = new HashMap(); + properties.put(ContentModel.PROP_OWNER, userName); + QName testInt = QName.createQName(URI, "int"); + properties.put(testInt, 5); + QName testBoolean = QName.createQName(URI, "boolean"); + properties.put(testBoolean, false); + QName testString = QName.createQName(URI, "string"); + properties.put(testString, "foo bar"); + QName testDate = QName.createQName(URI, "date"); + properties.put(testDate, date); + return properties; + } + @Override protected void setUp() throws Exception { diff --git a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java index 038c959e74..394643ed1e 100644 --- a/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java +++ b/source/java/org/alfresco/repo/web/scripts/workflow/WorkflowRestApiTest.java @@ -125,7 +125,7 @@ public class WorkflowRestApiTest extends BaseWebScriptTest assertEquals(personManager.getFirstName(USER2), owner.getString("firstName")); assertEquals(personManager.getLastName(USER2), owner.getString("lastName")); - JSONObject properties = result.getJSONObject("properties"); +// JSONObject properties = result.getJSONObject("properties"); //TODO Add more tests to check property filtering and pooled actors. } @@ -157,7 +157,7 @@ public class WorkflowRestApiTest extends BaseWebScriptTest assertEquals(startTask.title, result.getString("title")); assertEquals(startTask.description, result.getString("description")); assertEquals(startTask.state.name(), result.getString("state")); - assertEquals(URL_TASKS + "/" + startTask.id + "/paths/" + adhocPath.id, result.getString("path")); + assertEquals( "api/workflow-paths/" + adhocPath.getId(), result.getString("path")); assertEquals(false, result.getBoolean("isPooled")); JSONObject owner = result.getJSONObject("owner");