/**
   * Initialise the object.
   *
   * @param user The user this consumer should run as.
   * @param definition The definition this consumer will consume.
   * @throws EAccessDenied
   * @throws ECompileFailed
   * @throws EInvalidData
   */
  protected void Init(User user, Definition definition, boolean isHistoric)
      throws EInvalidData, ECompileFailed, EAccessDenied {
    // Set the user
    _user = user;

    // Set the definition
    _definition = definition;

    // If we have a definition, compile it to ensure it's valid for use
    if (_definition != null) {
      if (_definition.getHash().isEmpty()) {
        _definition.compile();
      }
    }

    // Set whether this is a historic consumer
    _is_historic = isHistoric;
  }