use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.
the class AbstractWorkflowRestApiTest method testTaskInstanceGet.
public void testTaskInstanceGet() throws Exception {
// Start workflow as USER1 and assign task to USER2.
personManager.setUser(USER1);
WorkflowDefinition adhocDef = workflowService.getDefinitionByName(getAdhocWorkflowDefinitionName());
Calendar dueDateCal = Calendar.getInstance();
dueDateCal.clear(Calendar.MILLISECOND);
Date dueDate = dueDateCal.getTime();
NodeRef assignee = personManager.get(USER2);
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
params.put(WorkflowModel.ASSOC_ASSIGNEE, assignee);
params.put(WorkflowModel.PROP_DUE_DATE, dueDate);
params.put(WorkflowModel.PROP_PRIORITY, 1);
params.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
WorkflowPath adhocPath = workflowService.startWorkflow(adhocDef.getId(), params);
String workflowId = adhocPath.getInstance().getId();
workflows.add(workflowId);
WorkflowTask startTask = workflowService.getTasksForWorkflowPath(adhocPath.getId()).get(0);
// Get the start-task
Response response = sendRequest(new GetRequest(URL_TASKS + "/" + startTask.getId()), Status.STATUS_OK);
String jsonStr = response.getContentAsString();
JSONObject json = new JSONObject(jsonStr);
JSONObject result = json.getJSONObject("data");
assertNotNull(result);
assertEquals(startTask.getId(), result.getString("id"));
assertEquals(URL_TASKS + "/" + startTask.getId(), result.getString("url"));
assertEquals(startTask.getName(), result.getString("name"));
assertEquals(startTask.getTitle(), result.getString("title"));
assertEquals(startTask.getDescription(), result.getString("description"));
assertEquals(startTask.getState().name(), result.getString("state"));
assertEquals("api/workflow-paths/" + adhocPath.getId(), result.getString("path"));
checkWorkflowTaskEditable(result);
checkWorkflowTaskOwner(result, USER1);
checkWorkflowTaskPropertiesPresent(result);
JSONObject properties = result.getJSONObject("properties");
assertEquals(1, properties.getInt("bpm_priority"));
String dueDateStr = ISO8601DateFormat.format(dueDate);
assertEquals(dueDateStr, properties.getString("bpm_dueDate"));
assertEquals(assignee.toString(), properties.getString("bpm_assignee"));
assertEquals(packageRef.toString(), properties.getString("bpm_package"));
checkWorkflowInstance(startTask.getPath().getInstance(), result.getJSONObject("workflowInstance"));
checkWorkflowTaskDefinition(startTask.getDefinition(), result.getJSONObject("definition"));
// Finish the start-task, and fetch it again
personManager.setUser(USER2);
workflowService.endTask(startTask.getId(), null);
startTask = workflowService.getTaskById(startTask.getId());
response = sendRequest(new GetRequest(URL_TASKS + "/" + startTask.getId()), Status.STATUS_OK);
jsonStr = response.getContentAsString();
json = new JSONObject(jsonStr);
result = json.getJSONObject("data");
assertNotNull(result);
assertEquals(startTask.getId(), result.getString("id"));
assertEquals(URL_TASKS + "/" + startTask.getId(), result.getString("url"));
assertEquals(startTask.getName(), result.getString("name"));
assertEquals(startTask.getTitle(), result.getString("title"));
assertEquals(startTask.getDescription(), result.getString("description"));
assertEquals(startTask.getState().name(), result.getString("state"));
assertEquals("api/workflow-paths/" + adhocPath.getId(), result.getString("path"));
checkWorkflowTaskReadOnly(result);
checkWorkflowTaskOwner(result, USER1);
checkWorkflowTaskPropertiesPresent(result);
checkWorkflowInstance(startTask.getPath().getInstance(), result.getJSONObject("workflowInstance"));
checkWorkflowTaskDefinition(startTask.getDefinition(), result.getJSONObject("definition"));
// Get the next active task
WorkflowTask firstTask = workflowService.getTasksForWorkflowPath(adhocPath.getId()).get(0);
response = sendRequest(new GetRequest(URL_TASKS + "/" + firstTask.getId()), 200);
jsonStr = response.getContentAsString();
json = new JSONObject(jsonStr);
result = json.getJSONObject("data");
assertNotNull(result);
assertEquals(firstTask.getId(), result.getString("id"));
assertEquals(URL_TASKS + "/" + firstTask.getId(), result.getString("url"));
assertEquals(firstTask.getName(), result.getString("name"));
assertEquals(firstTask.getTitle(), result.getString("title"));
assertEquals(firstTask.getDescription(), result.getString("description"));
// Task should be in progress
assertEquals(firstTask.getState().name(), result.getString("state"));
assertEquals(WorkflowTaskState.IN_PROGRESS.toString(), result.getString("state"));
assertEquals("api/workflow-paths/" + adhocPath.getId(), result.getString("path"));
checkWorkflowTaskEditable(result);
checkWorkflowTaskOwner(result, USER2);
checkWorkflowTaskPropertiesPresent(result);
checkWorkflowInstance(firstTask.getPath().getInstance(), result.getJSONObject("workflowInstance"));
checkWorkflowTaskDefinition(firstTask.getDefinition(), result.getJSONObject("definition"));
// Finish the task, and fetch it again
workflowService.endTask(firstTask.getId(), null);
firstTask = workflowService.getTaskById(firstTask.getId());
response = sendRequest(new GetRequest(URL_TASKS + "/" + firstTask.getId()), 200);
jsonStr = response.getContentAsString();
json = new JSONObject(jsonStr);
result = json.getJSONObject("data");
assertNotNull(result);
assertEquals(firstTask.getId(), result.getString("id"));
assertEquals(URL_TASKS + "/" + firstTask.getId(), result.getString("url"));
assertEquals(firstTask.getName(), result.getString("name"));
assertEquals(firstTask.getTitle(), result.getString("title"));
assertEquals(firstTask.getDescription(), result.getString("description"));
// The task should be completed
assertEquals(firstTask.getState().name(), result.getString("state"));
assertEquals(WorkflowTaskState.COMPLETED.toString(), result.getString("state"));
assertEquals("api/workflow-paths/" + adhocPath.getId(), result.getString("path"));
checkWorkflowTaskReadOnly(result);
checkWorkflowTaskOwner(result, USER2);
checkWorkflowTaskPropertiesPresent(result);
checkWorkflowInstance(firstTask.getPath().getInstance(), result.getJSONObject("workflowInstance"));
checkWorkflowTaskDefinition(firstTask.getDefinition(), result.getJSONObject("definition"));
}
use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.
the class AbstractWorkflowRestApiTest method testTaskInstancePutCompletedTask.
public void testTaskInstancePutCompletedTask() throws Exception {
// Start workflow as USER1 and assign to self
personManager.setUser(USER1);
WorkflowDefinition adhocDef = workflowService.getDefinitionByName(getAdhocWorkflowDefinitionName());
Map<QName, Serializable> params = new HashMap<QName, Serializable>();
params.put(WorkflowModel.ASSOC_ASSIGNEE, personManager.get(USER1));
params.put(WorkflowModel.PROP_DUE_DATE, new Date());
params.put(WorkflowModel.PROP_PRIORITY, 1);
params.put(WorkflowModel.ASSOC_PACKAGE, packageRef);
WorkflowPath adhocPath = workflowService.startWorkflow(adhocDef.getId(), params);
String WorkflowId = adhocPath.getInstance().getId();
workflows.add(WorkflowId);
WorkflowTask startTask = workflowService.getTasksForWorkflowPath(adhocPath.getId()).get(0);
// Finish the start-task
workflowService.endTask(startTask.getId(), null);
WorkflowTask firstTask = workflowService.getTasksForWorkflowPath(adhocPath.getId()).get(0);
Response getResponse = sendRequest(new GetRequest(URL_TASKS + "/" + firstTask.getId()), 200);
JSONObject jsonProperties = new JSONObject(getResponse.getContentAsString()).getJSONObject("data").getJSONObject("properties");
// Make a change
jsonProperties.put(qnameToString(WorkflowModel.PROP_DESCRIPTION), "Edited description");
// Update task. An error is expected, since the task is completed (and not editable)
sendRequest(new PutRequest(URL_TASKS + "/" + startTask.getId(), jsonProperties.toString(), "application/json"), Status.STATUS_UNAUTHORIZED);
}
use of org.alfresco.service.cmr.workflow.WorkflowPath in project alfresco-remote-api by Alfresco.
the class WorkflowModelBuilderTest method makeTask.
private WorkflowTask makeTask(Date date) {
String description = "Task Desc";
String id = "testId$1";
String name = "Task Name";
WorkflowTaskState state = WorkflowTaskState.IN_PROGRESS;
String title = "Task Title";
WorkflowPath path = makePath();
WorkflowTaskDefinition definition = makeTaskDefinition();
HashMap<QName, Serializable> properties = makeTaskProperties(date);
return new WorkflowTask(id, definition, name, title, description, state, path, properties);
}
Aggregations