mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-14 17:58:59 +00:00
Merged BRANCHES/DEV/BELARUS/HEAD_2010_07_28 to HEAD:
21459: ALF-3897 (F79) REST API to get a specific task instance git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@21463 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -38,6 +38,7 @@ import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.datatype.DefaultTypeConverter;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowNode;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||
@@ -46,6 +47,7 @@ import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
||||
import org.alfresco.service.namespace.NamespaceException;
|
||||
import org.alfresco.service.namespace.NamespaceService;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.springframework.extensions.surf.util.ISO8601DateFormat;
|
||||
|
||||
/**
|
||||
* @author Nick Smith
|
||||
@@ -75,6 +77,23 @@ public class WorkflowModelBuilder
|
||||
public static final String TASK_DEFINITION_TYPE = "type";
|
||||
public static final String TASK_DEFINITION_NODE = "node";
|
||||
|
||||
public static final String TASK_WORKFLOW_INSTANCE = "workflowInstance";
|
||||
|
||||
public static final String TASK_WORKFLOW_INSTANCE_ID = "id";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_URL = "url";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_NAME = "name";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_TITLE = "title";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_DESCRIPTION = "description";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_IS_ACTIVE = "isActive";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_START_DATE = "startDate";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_END_DATE = "endDate";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_INITIATOR = "initiator";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_DEFINITION_URL = "definitionUrl";
|
||||
|
||||
public static final String TASK_WORKFLOW_INSTANCE_INITIATOR_USERNAME = "userName";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_INITIATOR_FIRSTNAME = "firstName";
|
||||
public static final String TASK_WORKFLOW_INSTANCE_INITIATOR_LASTNAME = "lastName";
|
||||
|
||||
public static final String TYPE_DEFINITION_NAME = "name";
|
||||
public static final String TYPE_DEFINITION_TITLE = "title";
|
||||
public static final String TYPE_DEFINITION_DESCRIPTION = "description";
|
||||
@@ -147,6 +166,9 @@ public class WorkflowModelBuilder
|
||||
|
||||
model.put(TASK_PATH, getUrl(workflowTask, workflowTask.path));
|
||||
|
||||
// workflow instance part
|
||||
model.put(TASK_WORKFLOW_INSTANCE, buildWorkflowInstance(workflowTask.path.instance));
|
||||
|
||||
// definition part
|
||||
model.put(TASK_DEFINITION, buildTaskDefinition(workflowTask.definition, workflowTask));
|
||||
|
||||
@@ -265,6 +287,48 @@ public class WorkflowModelBuilder
|
||||
return model;
|
||||
}
|
||||
|
||||
private Map<String, Object> buildWorkflowInstance(WorkflowInstance workflowInstance)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
|
||||
model.put(TASK_WORKFLOW_INSTANCE_ID, workflowInstance.id);
|
||||
model.put(TASK_WORKFLOW_INSTANCE_URL, getUrl(workflowInstance));
|
||||
model.put(TASK_WORKFLOW_INSTANCE_NAME, workflowInstance.definition.name);
|
||||
model.put(TASK_WORKFLOW_INSTANCE_TITLE, workflowInstance.definition.title);
|
||||
model.put(TASK_WORKFLOW_INSTANCE_DESCRIPTION, workflowInstance.definition.description);
|
||||
model.put(TASK_WORKFLOW_INSTANCE_IS_ACTIVE, workflowInstance.active);
|
||||
|
||||
if (workflowInstance.startDate == null)
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_START_DATE, workflowInstance.startDate);
|
||||
}
|
||||
else
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_START_DATE, ISO8601DateFormat.format(workflowInstance.startDate));
|
||||
}
|
||||
|
||||
if (workflowInstance.endDate == null)
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_END_DATE, workflowInstance.endDate);
|
||||
}
|
||||
else
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_END_DATE, ISO8601DateFormat.format(workflowInstance.endDate));
|
||||
}
|
||||
|
||||
if (workflowInstance.initiator == null)
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_INITIATOR, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
model.put(TASK_WORKFLOW_INSTANCE_INITIATOR, getPersonModel(nodeService.getProperty(workflowInstance.initiator, ContentModel.PROP_USERNAME)));
|
||||
}
|
||||
model.put(TASK_WORKFLOW_INSTANCE_DEFINITION_URL, getUrl(workflowInstance.definition));
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
private Map<String, Object> buildTaskDefinition(WorkflowTaskDefinition workflowTaskDefinition, WorkflowTask workflowTask)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
@@ -354,4 +418,9 @@ public class WorkflowModelBuilder
|
||||
return getUrl(task) + "/paths/" + path.id;
|
||||
}
|
||||
|
||||
private String getUrl(WorkflowInstance workflowInstance)
|
||||
{
|
||||
return "api/workflow-instances/" + workflowInstance.id;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -39,6 +39,7 @@ import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowNode;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowTask;
|
||||
@@ -151,6 +152,12 @@ public class WorkflowModelBuilderTest extends TestCase
|
||||
|
||||
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";
|
||||
@@ -196,6 +203,15 @@ public class WorkflowModelBuilderTest extends TestCase
|
||||
Map<String, Object> props = (Map<String, Object>) model.get(WorkflowModelBuilder.TASK_PROPERTIES);
|
||||
assertEquals(workflowTask.properties.size(), props.size());
|
||||
|
||||
Map<String, Object> workflowInstance = (Map<String, Object>) 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));
|
||||
|
||||
Map<String, Object> definition = (Map<String, Object>) model.get(WorkflowModelBuilder.TASK_DEFINITION);
|
||||
|
||||
assertEquals(workflowTask.definition.id, definition.get(WorkflowModelBuilder.TASK_DEFINITION_ID));
|
||||
|
@@ -33,6 +33,7 @@ import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.security.MutableAuthenticationService;
|
||||
import org.alfresco.service.cmr.security.PersonService;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowInstance;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowNode;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowPath;
|
||||
import org.alfresco.service.cmr.workflow.WorkflowService;
|
||||
@@ -167,7 +168,26 @@ public class WorkflowRestApiTest extends BaseWebScriptTest
|
||||
JSONObject properties = result.getJSONObject("properties");
|
||||
|
||||
assertNotNull(properties);
|
||||
|
||||
JSONObject instance = result.getJSONObject("workflowInstance");
|
||||
WorkflowInstance startInstance = startTask.path.instance;
|
||||
|
||||
assertNotNull(instance);
|
||||
|
||||
assertEquals(startInstance.id, instance.getString("id"));
|
||||
assertTrue(instance.has("url"));
|
||||
assertEquals(startInstance.definition.name, instance.getString("name"));
|
||||
assertEquals(startInstance.definition.title, instance.getString("title"));
|
||||
assertEquals(startInstance.definition.description, instance.getString("description"));
|
||||
assertEquals(startInstance.active, instance.getBoolean("isActive"));
|
||||
assertTrue(instance.has("startDate"));
|
||||
|
||||
JSONObject initiator = instance.getJSONObject("initiator");
|
||||
|
||||
assertEquals(USER1, initiator.getString("userName"));
|
||||
assertEquals(personManager.getFirstName(USER1), initiator.getString("firstName"));
|
||||
assertEquals(personManager.getLastName(USER1), initiator.getString("lastName"));
|
||||
|
||||
JSONObject definition = result.getJSONObject("definition");
|
||||
WorkflowTaskDefinition startDefinitiont = startTask.definition;
|
||||
|
||||
|
Reference in New Issue
Block a user