Search in sources :

Example 26 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project Activiti by Activiti.

the class TaskResourceTest method testCompleteTask.

/**
   * Test completing a single task.
   * POST runtime/tasks/{taskId}
   */
@Deployment
public void testCompleteTask() throws Exception {
    try {
        Task task = taskService.newTask();
        taskService.saveTask(task);
        String taskId = task.getId();
        ObjectNode requestNode = objectMapper.createObjectNode();
        requestNode.put("action", "complete");
        HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK, task.getId()));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeRequest(httpPost, HttpStatus.SC_OK));
        // Task shouldn't exist anymore
        task = taskService.createTaskQuery().taskId(taskId).singleResult();
        assertNull(task);
        // Test completing with variables
        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess");
        task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
        taskId = task.getId();
        requestNode = objectMapper.createObjectNode();
        ArrayNode variablesNode = objectMapper.createArrayNode();
        requestNode.put("action", "complete");
        requestNode.put("variables", variablesNode);
        ObjectNode var1 = objectMapper.createObjectNode();
        variablesNode.add(var1);
        var1.put("name", "var1");
        var1.put("value", "First value");
        ObjectNode var2 = objectMapper.createObjectNode();
        variablesNode.add(var2);
        var2.put("name", "var2");
        var2.put("value", "Second value");
        httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK, taskId));
        httpPost.setEntity(new StringEntity(requestNode.toString()));
        closeResponse(executeRequest(httpPost, HttpStatus.SC_OK));
        task = taskService.createTaskQuery().taskId(taskId).singleResult();
        assertNull(task);
        if (processEngineConfiguration.getHistoryLevel().isAtLeast(HistoryLevel.AUDIT)) {
            HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();
            assertNotNull(historicTaskInstance);
            List<HistoricVariableInstance> updates = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).list();
            assertNotNull(updates);
            assertEquals(2, updates.size());
            boolean foundFirst = false;
            boolean foundSecond = false;
            for (HistoricVariableInstance var : updates) {
                if (var.getVariableName().equals("var1")) {
                    assertEquals("First value", var.getValue());
                    foundFirst = true;
                } else if (var.getVariableName().equals("var2")) {
                    assertEquals("Second value", var.getValue());
                    foundSecond = true;
                }
            }
            assertTrue(foundFirst);
            assertTrue(foundSecond);
        }
    } finally {
        // Clean adhoc-tasks even if test fails
        List<Task> tasks = taskService.createTaskQuery().list();
        for (Task task : tasks) {
            taskService.deleteTask(task.getId(), true);
        }
        // Clean historic tasks with no runtime-counterpart
        List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery().list();
        for (HistoricTaskInstance task : historicTasks) {
            historyService.deleteHistoricTaskInstance(task.getId());
        }
    }
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) Task(org.activiti.engine.task.Task) HistoricTaskInstance(org.activiti.engine.history.HistoricTaskInstance) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) StringEntity(org.apache.http.entity.StringEntity) ProcessInstance(org.activiti.engine.runtime.ProcessInstance) HistoricVariableInstance(org.activiti.engine.history.HistoricVariableInstance) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) Deployment(org.activiti.engine.test.Deployment)

Example 27 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project Activiti by Activiti.

the class TaskResourceTest method testReclaimTask.

@Deployment
public void testReclaimTask() throws Exception {
    // Start process instance
    runtimeService.startProcessInstanceByKey("reclaimTest");
    // Get task id
    String url = RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK_COLLECTION);
    CloseableHttpResponse response = executeRequest(new HttpGet(SERVER_URL_PREFIX + url), HttpStatus.SC_OK);
    JsonNode dataNode = objectMapper.readTree(response.getEntity().getContent()).get("data");
    closeResponse(response);
    String taskId = ((ArrayNode) dataNode).get(0).get("id").asText();
    assertNotNull(taskId);
    // Claim
    assertEquals(0L, taskService.createTaskQuery().taskAssignee("kermit").count());
    ObjectNode requestNode = objectMapper.createObjectNode();
    requestNode.put("action", "claim");
    requestNode.put("assignee", "kermit");
    HttpPost httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK, taskId));
    httpPost.setEntity(new StringEntity(requestNode.toString()));
    closeResponse(executeRequest(httpPost, HttpStatus.SC_OK));
    assertEquals(1L, taskService.createTaskQuery().taskAssignee("kermit").count());
    // Unclaim
    requestNode = objectMapper.createObjectNode();
    requestNode.put("action", "claim");
    httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK, taskId));
    httpPost.setEntity(new StringEntity(requestNode.toString()));
    closeResponse(executeRequest(httpPost, HttpStatus.SC_OK));
    assertEquals(0L, taskService.createTaskQuery().taskAssignee("kermit").count());
    // Claim again
    requestNode = objectMapper.createObjectNode();
    requestNode.put("action", "claim");
    requestNode.put("assignee", "kermit");
    httpPost = new HttpPost(SERVER_URL_PREFIX + RestUrls.createRelativeResourceUrl(RestUrls.URL_TASK, taskId));
    httpPost.setEntity(new StringEntity(requestNode.toString()));
    closeResponse(executeRequest(httpPost, HttpStatus.SC_OK));
    assertEquals(1L, taskService.createTaskQuery().taskAssignee("kermit").count());
}
Also used : HttpPost(org.apache.http.client.methods.HttpPost) StringEntity(org.apache.http.entity.StringEntity) ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) HttpGet(org.apache.http.client.methods.HttpGet) CloseableHttpResponse(org.apache.http.client.methods.CloseableHttpResponse) JsonNode(com.fasterxml.jackson.databind.JsonNode) ArrayNode(com.fasterxml.jackson.databind.node.ArrayNode) Deployment(org.activiti.engine.test.Deployment)

Example 28 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode in project Activiti by Activiti.

the class TaskVariablesCollectionResourceTest method testCreateSingleTaskVariableDefaultTypes.

/**
   * Test creating a single task variable, testing default types when omitted. 
   * POST runtime/tasks/{taskId}/variables
   */
public void testCreateSingleTaskVariableDefaultTypes() throws Exception {
    try {
        Task task = taskService.newTask();
        taskService.saveTask(task);
        // String type detection
        ArrayNode requestNode = objectMapper.createArrayNode();
        ObjectNode varNode = requestNode.addObject();
        varNode.put("name", "stringVar");
        varNode.put("value", "String value");
        varNode.put("scope", "local");
        HttpPost 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_CREATED));
        assertEquals("String value", taskService.getVariable(task.getId(), "stringVar"));
        // Integer type detection
        varNode.put("name", "integerVar");
        varNode.put("value", 123);
        varNode.put("scope", "local");
        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_CREATED));
        assertEquals(123, taskService.getVariable(task.getId(), "integerVar"));
        // Double type detection
        varNode.put("name", "doubleVar");
        varNode.put("value", 123.456);
        varNode.put("scope", "local");
        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_CREATED));
        assertEquals(123.456, taskService.getVariable(task.getId(), "doubleVar"));
        // Boolean type detection
        varNode.put("name", "booleanVar");
        varNode.put("value", Boolean.TRUE);
        varNode.put("scope", "local");
        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_CREATED));
        assertEquals(Boolean.TRUE, taskService.getVariable(task.getId(), "booleanVar"));
    } 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)

Example 29 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode 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 30 with ArrayNode

use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.node.ArrayNode 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)

Aggregations

ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)979 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)542 JsonNode (com.fasterxml.jackson.databind.JsonNode)402 Test (org.junit.Test)140 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)125 ArrayList (java.util.ArrayList)110 IOException (java.io.IOException)93 Map (java.util.Map)74 HashMap (java.util.HashMap)68 List (java.util.List)50 TextNode (com.fasterxml.jackson.databind.node.TextNode)38 Test (org.testng.annotations.Test)35 DefaultSerializerProvider (com.fasterxml.jackson.databind.ser.DefaultSerializerProvider)30 HashSet (java.util.HashSet)30 JsonNodeFactory (com.fasterxml.jackson.databind.node.JsonNodeFactory)25 Deployment (org.activiti.engine.test.Deployment)23 File (java.io.File)22 InputStream (java.io.InputStream)20 Iterator (java.util.Iterator)20 StringEntity (org.apache.http.entity.StringEntity)20