Search in sources :

Example 66 with Task

use of org.activiti.engine.task.Task in project Activiti by Activiti.

the class TaskVariablesCollectionResourceTest method testCreateSingleTaskVariableEdgeCases.

/**
   * Test creating a single task variable, testing edge case exceptions. 
   * POST runtime/tasks/{taskId}/variables
   */
public void testCreateSingleTaskVariableEdgeCases() throws Exception {
    try {
        // Test adding variable to unexisting task
        ArrayNode requestNode = objectMapper.createArrayNode();
        ObjectNode variableNode = requestNode.addObject();
        variableNode.put("name", "existingVariable");
        variableNode.put("value", "simple string value");
        variableNode.put("scope", "local");
        variableNode.put("type", "string");
        HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, "unexisting"));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_NOT_FOUND));
        // Test trying to create already existing variable
        Task task = taskService.newTask();
        taskService.saveTask(task);
        taskService.setVariable(task.getId(), "existingVariable", "Value 1");
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_CONFLICT));
        // Test same thing but using PUT (create or update)
        HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPut.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPut, HttpStatus.SC_CREATED));
        // Test setting global variable on standalone task
        variableNode.put("name", "myVariable");
        variableNode.put("value", "simple string value");
        variableNode.put("scope", "global");
        variableNode.put("type", "string");
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_BAD_REQUEST));
        // Test creating nameless variable
        variableNode.removeAll();
        variableNode.put("value", "simple string value");
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_BAD_REQUEST));
        // Test passing in empty array
        requestNode.removeAll();
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_BAD_REQUEST));
        // Test passing in object instead of array
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(objectMapper.createObjectNode().toString()));
        closeResponse(executeBinaryRequest(httpPost, HttpStatus.SC_BAD_REQUEST));
    } finally {
        // Clean adhoc-tasks even if test fails
        List<Task> tasks = taskService.createTaskQuery().list();
        for (Task task : tasks) {
            taskService.deleteTask(task.getId(), true);
        }
    }
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) StringEntity(org.apache.http.entity.StringEntity) Task(org.activiti.engine.task.Task) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) HttpPut(org.apache.http.client.methods.HttpPut)

Example 67 with Task

use of org.activiti.engine.task.Task in project Activiti by Activiti.

the class TaskVariablesCollectionResourceTest method testCreateMultipleTaskVariables.

/**
   * Test creating a multipe task variable in a single call.
   * POST runtime/tasks/{taskId}/variables
   */
public void testCreateMultipleTaskVariables() throws Exception {
    try {
        Task task = taskService.newTask();
        taskService.saveTask(task);
        ArrayNode requestNode = objectMapper.createArrayNode();
        // String variable
        ObjectNode stringVarNode = requestNode.addObject();
        stringVarNode.put("name", "stringVariable");
        stringVarNode.put("value", "simple string value");
        stringVarNode.put("scope", "local");
        stringVarNode.put("type", "string");
        // Integer
        ObjectNode integerVarNode = requestNode.addObject();
        integerVarNode.put("name", "integerVariable");
        integerVarNode.put("value", 1234);
        integerVarNode.put("scope", "local");
        integerVarNode.put("type", "integer");
        // Short
        ObjectNode shortVarNode = requestNode.addObject();
        shortVarNode.put("name", "shortVariable");
        shortVarNode.put("value", 123);
        shortVarNode.put("scope", "local");
        shortVarNode.put("type", "short");
        // Long
        ObjectNode longVarNode = requestNode.addObject();
        longVarNode.put("name", "longVariable");
        longVarNode.put("value", 4567890L);
        longVarNode.put("scope", "local");
        longVarNode.put("type", "long");
        // Double
        ObjectNode doubleVarNode = requestNode.addObject();
        doubleVarNode.put("name", "doubleVariable");
        doubleVarNode.put("value", 123.456);
        doubleVarNode.put("scope", "local");
        doubleVarNode.put("type", "double");
        // Boolean
        ObjectNode booleanVarNode = requestNode.addObject();
        booleanVarNode.put("name", "booleanVariable");
        booleanVarNode.put("value", Boolean.TRUE);
        booleanVarNode.put("scope", "local");
        booleanVarNode.put("type", "boolean");
        // Date
        Calendar varCal = Calendar.getInstance();
        String isoString = getISODateString(varCal.getTime());
        ObjectNode dateVarNode = requestNode.addObject();
        dateVarNode.put("name", "dateVariable");
        dateVarNode.put("value", isoString);
        dateVarNode.put("scope", "local");
        dateVarNode.put("type", "date");
        // Create local variables with a single request
        HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        CloseableHttpResponse response = executeBinaryRequest(httpPost, HttpStatus.SC_CREATED);
        JsonNode responseNode = objectMapper.readTree(response.getEntity().getContent());
        closeResponse(response);
        assertNotNull(responseNode);
        assertTrue(responseNode.isArray());
        assertEquals(7, responseNode.size());
        // Check if engine has correct variables set
        Map<String, Object> taskVariables = taskService.getVariablesLocal(task.getId());
        assertEquals(7, taskVariables.size());
        assertEquals("simple string value", taskVariables.get("stringVariable"));
        assertEquals(1234, taskVariables.get("integerVariable"));
        assertEquals((short) 123, taskVariables.get("shortVariable"));
        assertEquals(4567890L, taskVariables.get("longVariable"));
        assertEquals(123.456, taskVariables.get("doubleVariable"));
        assertEquals(Boolean.TRUE, taskVariables.get("booleanVariable"));
        assertEquals(dateFormat.parse(isoString), taskVariables.get("dateVariable"));
        // repeat the process with additional variables, testing PUT of a mixed set of variables
        // where some exist and others do not
        requestNode = objectMapper.createArrayNode();
        // new String variable
        ObjectNode stringVarNode2 = requestNode.addObject();
        stringVarNode2.put("name", "new stringVariable");
        stringVarNode2.put("value", "simple string value 2");
        stringVarNode2.put("scope", "local");
        stringVarNode2.put("type", "string");
        // changed Integer variable
        ObjectNode integerVarNode2 = requestNode.addObject();
        integerVarNode2.put("name", "integerVariable");
        integerVarNode2.put("value", 4321);
        integerVarNode2.put("scope", "local");
        integerVarNode2.put("type", "integer");
        // Create or update local variables with a single request
        HttpPut httpPut = new HttpPut(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_VARIABLES_COLLECTION, task.getId()));
        httpPut.setEntity(new StringEntity(requestNode.toString()));
        response = executeBinaryRequest(httpPut, HttpStatus.SC_CREATED);
        responseNode = objectMapper.readTree(response.getEntity().getContent());
        closeResponse(response);
        assertNotNull(responseNode);
        assertTrue(responseNode.isArray());
        assertEquals(2, responseNode.size());
        // Check if engine has correct variables set
        taskVariables = taskService.getVariablesLocal(task.getId());
        assertEquals(8, taskVariables.size());
        assertEquals("simple string value", taskVariables.get("stringVariable"));
        assertEquals("simple string value 2", taskVariables.get("new stringVariable"));
        assertEquals(4321, taskVariables.get("integerVariable"));
        assertEquals((short) 123, taskVariables.get("shortVariable"));
        assertEquals(4567890L, taskVariables.get("longVariable"));
        assertEquals(123.456, taskVariables.get("doubleVariable"));
        assertEquals(Boolean.TRUE, taskVariables.get("booleanVariable"));
        assertEquals(dateFormat.parse(isoString), taskVariables.get("dateVariable"));
    } finally {
        // Clean adhoc-tasks even if test fails
        List<Task> tasks = taskService.createTaskQuery().list();
        for (Task task : tasks) {
            taskService.deleteTask(task.getId(), true);
        }
    }
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) Task(org.activiti.engine.task.Task) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) Calendar(java.util.Calendar) JsonNode(com.fasterxml.jackson.databind.JsonNode) HttpPut(org.apache.http.client.methods.HttpPut) StringEntity(org.apache.http.entity.StringEntity) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode)

Example 68 with Task

use of org.activiti.engine.task.Task in project Activiti by Activiti.

the class SecureScriptingTest method testTaskListener.

@Test
public void testTaskListener() {
    deployProcessDefinition("test-secure-script-task-listener.bpmn20.xml");
    runtimeService.startProcessInstanceByKey("secureScripting");
    Task task = taskService.createTaskQuery().singleResult();
    Assert.assertNotNull(task);
    // Completing the task should fail cause the script is not secure
    try {
        taskService.complete(task.getId());
        // Expecting exception
        Assert.fail();
    } catch (Exception e) {
        e.printStackTrace();
    }
    task = taskService.createTaskQuery().singleResult();
    Assert.assertNotNull(task);
}
Also used : Task(org.activiti.engine.task.Task) Test(org.junit.Test)

Example 69 with Task

use of org.activiti.engine.task.Task in project Activiti by Activiti.

the class SecureScriptingTest method testExecution.

@Test
public void testExecution() {
    addWhiteListedClass("org.activiti.engine.impl.persistence.entity.ExecutionEntity");
    deployProcessDefinition("test-secure-script-execution.bpmn20.xml");
    String processInstanceId = runtimeService.startProcessInstanceByKey("secureScripting").getId();
    Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
    Assert.assertNotNull(task);
    taskService.complete(task.getId());
    removeWhiteListedClass("org.activiti.engine.impl.persistence.entity.ExecutionEntity");
}
Also used : Task(org.activiti.engine.task.Task) Test(org.junit.Test)

Example 70 with Task

use of org.activiti.engine.task.Task in project Activiti by Activiti.

the class TaskFormsTest method testTaskFormUnavailable.

@Deployment
public void testTaskFormUnavailable() {
    String procDefId = repositoryService.createProcessDefinitionQuery().singleResult().getId();
    assertNull(formService.getRenderedStartForm(procDefId));
    runtimeService.startProcessInstanceByKey("noStartOrTaskForm");
    Task task = taskService.createTaskQuery().singleResult();
    assertNull(formService.getRenderedTaskForm(task.getId()));
}
Also used : Task(org.activiti.engine.task.Task) Deployment(org.activiti.engine.test.Deployment)

Aggregations

Task (org.activiti.engine.task.Task)955 Deployment (org.activiti.engine.test.Deployment)548 ProcessInstance (org.activiti.engine.runtime.ProcessInstance)502 HashMap (java.util.HashMap)197 Test (org.junit.Test)123 HistoricProcessInstance (org.activiti.engine.history.HistoricProcessInstance)109 ArrayList (java.util.ArrayList)74 Date (java.util.Date)65 Execution (org.activiti.engine.runtime.Execution)59 DelegateTask (org.activiti.engine.delegate.DelegateTask)54 TaskQuery (org.activiti.engine.task.TaskQuery)54 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)51 Job (org.activiti.engine.runtime.Job)49 Calendar (java.util.Calendar)44 HistoricTaskInstance (org.activiti.engine.history.HistoricTaskInstance)44 RequestContext (org.alfresco.rest.api.tests.client.RequestContext)44 JsonNode (com.fasterxml.jackson.databind.JsonNode)41 CloseableHttpResponse (org.apache.http.client.methods.CloseableHttpResponse)41 JSONObject (org.json.simple.JSONObject)40 TasksClient (org.alfresco.rest.workflow.api.tests.WorkflowApiClient.TasksClient)38