/**
  * @param serverURL Bonita server host URL
  *     <p>Examples: http://localhost:8080 or http://localhost or https://localhost:8081 *
  * @param processDefinitionId
  * @param formMode app or form
  * @param processAPI
  * @return URL to access to a process initialization form
  * @throws ProcessDefinitionNotFoundException
  */
 public static String getStartProcessCaseURL(
     String serverURL, long processDefinitionId, FormMode formMode, ProcessAPI processAPI)
     throws ProcessDefinitionNotFoundException {
   StringBuffer buffer = new StringBuffer(serverURL);
   buffer.append(APPLICATION_URL);
   buffer.append("?ui=form&form=");
   buffer.append(getProcessFormName(processDefinitionId, processAPI));
   buffer.append("$entry&mode=");
   buffer.append(formMode.toString());
   buffer.append("&process=");
   buffer.append(processDefinitionId);
   return buffer.toString();
 }
  /**
   * @param serverURL Bonita server host URL
   *     <p>Examples: http://localhost:8080 or http://localhost or https://localhost:8081 *
   * @param activityInstanceId
   * @param formMode app or form
   * @param processAPI
   * @return URL to access to a human task form
   * @throws ProcessDefinitionNotFoundException
   * @throws ActivityInstanceNotFoundException
   */
  public static String getHumanTaskURL(
      String serverURL, long activityInstanceId, FormMode formMode, ProcessAPI processAPI)
      throws ActivityInstanceNotFoundException, ProcessDefinitionNotFoundException {
    StringBuffer buffer = new StringBuffer(serverURL);
    buffer.append(APPLICATION_URL);
    buffer.append("?ui=form#form=");
    buffer.append(getHumanTaskFormName(activityInstanceId, processAPI));
    buffer.append("$entry&mode=");
    buffer.append(formMode.toString());
    buffer.append("&task=");
    buffer.append(activityInstanceId);
    buffer.append("&assignTask=true");

    return buffer.toString();
  }
 /**
  * @param serverURL Bonita server host URL
  *     <p>Examples: http://localhost:8080 or http://localhost or https://localhost:8081 *
  * @param processInstanceId * @param formMode app or form
  * @param processAPI
  * @return URL to access to a process case overview form
  * @throws ProcessDefinitionNotFoundException
  */
 public static String getOverviewCaseURL(
     String serverURL, long processInstanceId, FormMode formMode, ProcessAPI processAPI)
     throws ProcessDefinitionNotFoundException, ProcessInstanceNotFoundException {
   ProcessInstance processInstance = processAPI.getProcessInstance(processInstanceId);
   String formName = getProcessFormName(processInstance.getProcessDefinitionId(), processAPI);
   StringBuffer buffer = new StringBuffer(serverURL);
   buffer.append(APPLICATION_URL);
   buffer.append("?ui=form");
   buffer.append("#form=");
   buffer.append(formName);
   buffer.append("$recap&mode=");
   buffer.append(formMode.toString());
   buffer.append("&instance=");
   buffer.append(processInstanceId);
   buffer.append("&recap=true");
   return buffer.toString();
 }