package org.activiti.rest.api.process;
import java.util.List;
import java.util.Map;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.test.Deployment;
import org.activiti.rest.BaseRestTestCase;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.node.ObjectNode;
import org.restlet.representation.Representation;
import org.restlet.resource.ClientResource;
public class StartProcessInstanceResourceTest extends BaseRestTestCase {
@Deployment
public void testStartInstance() throws Exception {
ClientResource client = getAuthenticatedClient("process-instance");
ObjectNode requestNode = objectMapper.createObjectNode();
requestNode.put("processDefinitionKey", "simpleProcess");
Representation response = client.post(requestNode);
JsonNode responseNode = objectMapper.readTree(response.getStream());
assertNotNull(responseNode);
String processInstanceId = responseNode.get("processInstanceId").asText();
assertNotNull(processInstanceId);
List<ProcessInstance> instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(1, instanceList.size());
assertEquals(processInstanceId, instanceList.get(0).getProcessInstanceId());
Task task = taskService.createTaskQuery().taskAssignee("kermit").singleResult();
assertNotNull(task);
assertEquals("WaitTask", task.getName());
taskService.complete(task.getId());
instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(0, instanceList.size());
}
@Deployment
public void testStartInstanceWithVariables() throws Exception {
ClientResource client = getAuthenticatedClient("process-instance");
ObjectNode requestNode = objectMapper.createObjectNode();
requestNode.put("processDefinitionKey", "simpleProcess");
requestNode.put("var1", "test");
requestNode.put("var2", 1);
Representation response = client.post(requestNode);
JsonNode responseNode = objectMapper.readTree(response.getStream());
assertNotNull(responseNode);
String processInstanceId = responseNode.get("processInstanceId").asText();
assertNotNull(processInstanceId);
List<ProcessInstance> instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(1, instanceList.size());
assertEquals(processInstanceId, instanceList.get(0).getProcessInstanceId());
Map<String, Object> variableMap = runtimeService.getVariables(processInstanceId);
assertTrue(variableMap.containsKey("var1"));
assertEquals("test", variableMap.get("var1"));
assertTrue(variableMap.containsKey("var2"));
assertEquals(1, variableMap.get("var2"));
Task task = taskService.createTaskQuery().taskAssignee("kermit").singleResult();
assertNotNull(task);
assertEquals("WaitTask", task.getName());
taskService.complete(task.getId());
instanceList = runtimeService.createProcessInstanceQuery().list();
assertEquals(0, instanceList.size());
}
}