提交 b319ef50 编写于 作者: T tijsrademakers

Finished form service REST API unit tests

上级 a0e581da
......@@ -409,6 +409,7 @@ public class RestResponseFactory {
result.setActivityId(processInstance.getActivityId());
result.setBusinessKey(processInstance.getBusinessKey());
result.setId(processInstance.getId());
result.setProcessDefinitionId(processInstance.getProcessDefinitionId());
result.setProcessDefinitionUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_DEFINITION, processInstance.getProcessDefinitionId()));
result.setSuspended(processInstance.isSuspended());
result.setUrl(securedResource.createFullResourceUrl(RestUrls.URL_PROCESS_INSTANCE, processInstance.getId()));
......
......@@ -19,8 +19,10 @@ import java.util.Map;
import org.activiti.engine.ActivitiIllegalArgumentException;
import org.activiti.engine.ActivitiObjectNotFoundException;
import org.activiti.engine.form.FormData;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.rest.api.ActivitiUtil;
import org.activiti.rest.api.SecuredResource;
import org.activiti.rest.api.runtime.process.ProcessInstanceResponse;
import org.activiti.rest.application.ActivitiRestServicesApplication;
import org.restlet.data.Form;
import org.restlet.data.Status;
......@@ -70,9 +72,9 @@ public class FormDataResource extends SecuredResource {
}
@Post
public void submitForm(SubmitFormRequest submitRequest) {
public ProcessInstanceResponse submitForm(SubmitFormRequest submitRequest) {
if (!authenticate()) {
return;
return null;
}
if (submitRequest == null) {
......@@ -93,12 +95,16 @@ public class FormDataResource extends SecuredResource {
if (submitRequest.getTaskId() != null) {
ActivitiUtil.getFormService().submitTaskFormData(submitRequest.getTaskId(), propertyMap);
return null;
} else {
ProcessInstance processInstance = null;
if (submitRequest.getBusinessKey() != null) {
ActivitiUtil.getFormService().submitStartFormData(submitRequest.getProcessDefinitionId(), submitRequest.getBusinessKey(), propertyMap);
processInstance = ActivitiUtil.getFormService().submitStartFormData(submitRequest.getProcessDefinitionId(), submitRequest.getBusinessKey(), propertyMap);
} else {
ActivitiUtil.getFormService().submitStartFormData(submitRequest.getProcessDefinitionId(), propertyMap);
processInstance = ActivitiUtil.getFormService().submitStartFormData(submitRequest.getProcessDefinitionId(), propertyMap);
}
return getApplication(ActivitiRestServicesApplication.class).getRestResponseFactory()
.createProcessInstanceResponse(this, processInstance);
}
}
}
......@@ -21,6 +21,7 @@ public class ProcessInstanceResponse {
protected String url;
protected String businessKey;
protected boolean suspended;
protected String processDefinitionId;
protected String processDefinitionUrl;
protected String activityId;
......@@ -56,6 +57,14 @@ public class ProcessInstanceResponse {
this.suspended = suspended;
}
public String getProcessDefinitionId() {
return processDefinitionId;
}
public void setProcessDefinitionId(String processDefinitionId) {
this.processDefinitionId = processDefinitionId;
}
public String getProcessDefinitionUrl() {
return processDefinitionUrl;
}
......
......@@ -203,7 +203,8 @@ public class FormDataResourceTest extends BaseRestTestCase {
variableMap.put("address", address);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variableMap);
String processInstanceId = processInstance.getId();
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
String processDefinitionId = processInstance.getProcessDefinitionId();
Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
ClientResource client = getAuthenticatedClient(RestUrls.createRelativeResourceUrl(RestUrls.URL_FORM_DATA));
ObjectNode requestNode = objectMapper.createObjectNode();
......@@ -240,5 +241,54 @@ public class FormDataResourceTest extends BaseRestTestCase {
assertEquals("123", historyMap.get("room").getValue());
assertEquals(processInstanceId, historyMap.get("room").getProcessInstanceId());
processInstance = runtimeService.startProcessInstanceByKey("oneTaskProcess", variableMap);
processInstanceId = processInstance.getId();
task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
requestNode.put("taskId", task.getId());
propNode = objectMapper.createObjectNode();
propNode.put("id", "direction");
propNode.put("value", "nowhere");
propertyArray.add(propNode);
try {
client.post(requestNode);
} catch(Exception e) {
// expected
assertEquals(Status.CLIENT_ERROR_BAD_REQUEST, client.getResponse().getStatus());
}
propNode.put("value", "up");
client.post(requestNode);
assertEquals(Status.SUCCESS_OK, client.getResponse().getStatus());
task = taskService.createTaskQuery().processInstanceId(processInstanceId).singleResult();
assertNull(task);
processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
assertNull(processInstance);
variables = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();
historyMap.clear();
for (HistoricVariableInstance historicVariableInstance : variables) {
historyMap.put(historicVariableInstance.getVariableName(), historicVariableInstance);
}
assertEquals("123", historyMap.get("room").getValue());
assertEquals(processInstanceId, historyMap.get("room").getProcessInstanceId());
assertEquals("up", historyMap.get("direction").getValue());
requestNode = objectMapper.createObjectNode();
requestNode.put("processDefinitionId", processDefinitionId);
propertyArray = objectMapper.createArrayNode();
requestNode.put("properties", propertyArray);
propNode = objectMapper.createObjectNode();
propNode.put("id", "number");
propNode.put("value", 123);
propertyArray.add(propNode);
Representation response = client.post(requestNode);
assertEquals(Status.SUCCESS_OK, client.getResponse().getStatus());
JsonNode responseNode = objectMapper.readTree(response.getStream());
assertNotNull(responseNode.get("id").asText());
assertEquals(processDefinitionId, responseNode.get("processDefinitionId").asText());
task = taskService.createTaskQuery().processInstanceId(responseNode.get("id").asText()).singleResult();
assertNotNull(task);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册