code: public void _doBuild(StaplerRequest req, StaplerResponse rsp, @QueryParameter TimeDuration delay) throws IOException, ServletException {
          if (delay==null)
              delay=new TimeDuration(TimeUnit.MILLISECONDS.convert(getJob().getQuietPeriod(), TimeUnit.SECONDS));
  
  
          List<ParameterValue> values = new ArrayList<>();
          
          JSONObject formData = req.getSubmittedForm();
          JSONArray a = JSONArray.fromObject(formData.get("parameter"));
  
          for (Object o : a) {
              JSONObject jo = (JSONObject) o;
              String name = jo.getString("name");
  
              ParameterDefinition d = getParameterDefinition(name);
              if(d==null)
                  throw new IllegalArgumentException("No such parameter definition: " + name);
              ParameterValue parameterValue = d.createValue(req, jo);
              if (parameterValue != null) {
                  values.add(parameterValue);
              } else {
                  throw new IllegalArgumentException("Cannot retrieve the parameter value: " + name);
              }
          }
  
      	WaitingItem item = Jenkins.getInstance().getQueue().schedule(
                  getJob(), delay.getTimeInSeconds(), new ParametersAction(values), new CauseAction(new Cause.UserIdCause()));
          if (item!=null) {
              String url = formData.optString("redirectTo");
              if (url==null || !Util.isSafeToRedirectTo(url))   // avoid open redirect
                  url = req.getContextPath()+'/'+item.getUrl();
              rsp.sendRedirect(formData.optInt("statusCode",SC_CREATED), url);
          } else
              // send the user back to the job top page.
              rsp.sendRedirect(".");
      }
docs: Interprets the form submission and schedules a build for a parameterized job.
  
  <p>
  This method is supposed to be invoked from {@link ParameterizedJobMixIn#doBuild(StaplerRequest, StaplerResponse, TimeDuration)}.