use of 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());
}
use of 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);
}
}
}
use of 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);
}
}
}
use of 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);
}
}
}
use of com.fasterxml.jackson.databind.node.ArrayNode in project Activiti by Activiti.
the class DynamicBpmnServiceImpl method changeUserTaskCandidateGroup.
public void changeUserTaskCandidateGroup(String id, String candidateGroup, boolean overwriteOtherChangedEntries, ObjectNode infoNode) {
ArrayNode valuesNode = null;
if (overwriteOtherChangedEntries) {
valuesNode = processEngineConfiguration.getObjectMapper().createArrayNode();
} else {
if (doesElementPropertyExist(id, USER_TASK_CANDIDATE_GROUPS, infoNode)) {
valuesNode = (ArrayNode) infoNode.get(BPMN_NODE).get(id).get(USER_TASK_CANDIDATE_GROUPS);
}
if (valuesNode == null || valuesNode.isNull()) {
valuesNode = processEngineConfiguration.getObjectMapper().createArrayNode();
}
}
valuesNode.add(candidateGroup);
setElementProperty(id, USER_TASK_CANDIDATE_GROUPS, valuesNode, infoNode);
}
Aggregations