/**
   * Checks if the schedule item is available to start working on it. Returns true if all the
   * schedule item parents are done.
   */
  public boolean canProcess() {
    if (this.isStatusPending()) {
      Boolean anyParentNotFinished = false;
      for (ScheduleItem parent : this.getParents()) {
        if (parent == null) {
          throw new BIGSException("parent for schedule item " + this.getRowkey() + " not found");
        }
        if (!parent.isStatusDone()) {
          anyParentNotFinished = true;
          break;
        }
      }

      return !anyParentNotFinished;
    }
    return false;
  }