public FormRequest create( RequestDetails requestDetails, Process process, ProcessInstance processInstance, Task task, ActionType actionType, FormValidation validation) throws StatusCodeError { Activity activity = activity(process, processInstance, task); // Don't allow anyone to issue a create request for a task that's not open if (actionType == ActionType.CREATE && task != null && task.getTaskStatus() != null && !task.getTaskStatus().equals(Constants.TaskStatuses.OPEN)) actionType = ActionType.VIEW; FormRequest.Builder formRequestBuilder = new FormRequest.Builder() .processDefinitionKey(process.getProcessDefinitionKey()) .instance(processInstance) .task(task) .activity(activity) .action(actionType); if (requestDetails != null) { String contentType = requestDetails.getContentType() != null ? requestDetails.getContentType().toString() : null; formRequestBuilder .remoteAddr(requestDetails.getRemoteAddr()) .remoteHost(requestDetails.getRemoteHost()) .remotePort(requestDetails.getRemotePort()) .remoteUser(requestDetails.getRemoteUser()) .actAsUser(requestDetails.getActAsUser()) .certificateIssuer(requestDetails.getCertificateIssuer()) .certificateSubject(requestDetails.getCertificateSubject()) .contentType(contentType) .referrer(requestDetails.getReferrer()) .userAgent(requestDetails.getUserAgent()); List<MediaType> acceptableMediaTypes = requestDetails.getAcceptableMediaTypes(); if (acceptableMediaTypes != null) { for (MediaType acceptableMediaType : acceptableMediaTypes) { formRequestBuilder.acceptableMediaType(acceptableMediaType.toString()); } } } if (validation != null) { formRequestBuilder.messages(validation.getResults()); } return requestRepository.save(formRequestBuilder.build()); }