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()); }
public FormRequest create( RequestDetails requestDetails, Process process, String taskId, FormRequest previousFormRequest) throws StatusCodeError { ProcessInstance instance = processInstanceService.findByTaskId(process, taskId); if (instance == null) { LOG.warn( "Forbidden: No instance found for the task id passed " + process.getProcessDefinitionKey() + " task: " + taskId); throw new ForbiddenError(Constants.ExceptionCodes.insufficient_permission); } Task task = taskService.read(instance, taskId); verifyCurrentUserIsAuthorized(process, task); ActionType actionType = ActionType.CREATE; return create(requestDetails, process, instance, task, actionType); }