Search in sources :

Example 16 with WorkflowPath

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"));
}
Also used : Serializable(java.io.Serializable) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) Calendar(java.util.Calendar) WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask) Date(java.util.Date) Response(org.springframework.extensions.webscripts.TestWebScriptServer.Response) NodeRef(org.alfresco.service.cmr.repository.NodeRef) JSONObject(org.json.JSONObject) GetRequest(org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest)

Example 17 with WorkflowPath

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);
}
Also used : Serializable(java.io.Serializable) HashMap(java.util.HashMap) QName(org.alfresco.service.namespace.QName) WorkflowDefinition(org.alfresco.service.cmr.workflow.WorkflowDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) PutRequest(org.springframework.extensions.webscripts.TestWebScriptServer.PutRequest) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask) Date(java.util.Date) Response(org.springframework.extensions.webscripts.TestWebScriptServer.Response) JSONObject(org.json.JSONObject) GetRequest(org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest)

Example 18 with WorkflowPath

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);
}
Also used : Serializable(java.io.Serializable) QName(org.alfresco.service.namespace.QName) WorkflowTaskDefinition(org.alfresco.service.cmr.workflow.WorkflowTaskDefinition) WorkflowPath(org.alfresco.service.cmr.workflow.WorkflowPath) WorkflowTaskState(org.alfresco.service.cmr.workflow.WorkflowTaskState) WorkflowTask(org.alfresco.service.cmr.workflow.WorkflowTask)

Aggregations

WorkflowPath (org.alfresco.service.cmr.workflow.WorkflowPath)18 Serializable (java.io.Serializable)17 QName (org.alfresco.service.namespace.QName)17 WorkflowDefinition (org.alfresco.service.cmr.workflow.WorkflowDefinition)16 Date (java.util.Date)15 HashMap (java.util.HashMap)15 WorkflowTask (org.alfresco.service.cmr.workflow.WorkflowTask)15 GetRequest (org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest)12 JSONObject (org.json.JSONObject)11 Response (org.springframework.extensions.webscripts.TestWebScriptServer.Response)11 JSONArray (org.json.JSONArray)8 Calendar (java.util.Calendar)6 WorkflowInstance (org.alfresco.service.cmr.workflow.WorkflowInstance)5 DeleteRequest (org.springframework.extensions.webscripts.TestWebScriptServer.DeleteRequest)3 PutRequest (org.springframework.extensions.webscripts.TestWebScriptServer.PutRequest)3 NodeRef (org.alfresco.service.cmr.repository.NodeRef)2 WorkflowTaskDefinition (org.alfresco.service.cmr.workflow.WorkflowTaskDefinition)1 WorkflowTaskState (org.alfresco.service.cmr.workflow.WorkflowTaskState)1 MapNode (org.alfresco.web.bean.repository.MapNode)1 Node (org.alfresco.web.bean.repository.Node)1