class OperationsApiServiceImpl implements OperationsApiService {

    @Override
    public ResponseEntity<Operation> startOperation(HttpServletRequest request, String spaceGuid, Operation operation) {
        String user = getAuthenticatedUser(request);
        String processDefinitionKey = operationsHelper.getProcessDefinitionKey(operation);
        Set<ParameterMetadata> predefinedParameters = operationMetadataMapper.getOperationMetadata(operation.getProcessType())
                                                                             .getParameters();
        operation = addServiceParameters(operation, spaceGuid, user);
        operation = addParameterValues(operation, predefinedParameters);
        ensureRequiredParametersSet(operation, predefinedParameters);
        ProcessInstance processInstance = flowableFacade.startProcess(processDefinitionKey, operation.getParameters());
        AuditLoggingProvider.getFacade()
                            .logConfigCreate(operation);
        return ResponseEntity.accepted()
                             .header("Location", getLocationHeader(processInstance.getProcessInstanceId(), spaceGuid))
                             .build();
    }

}