code: public static void checkEventCriteria(final AttributeImpl attribute) throws DevFailed {
          // Check if value is not numerical (always true for State and String)
          if (attribute.isState() || attribute.isString()) {
              return;
          }
          // Else check criteria
          final EventProperties props = attribute.getProperties().getEventProp();
          if (props.arch_event.period.equals(Constants.NOT_SPECIFIED)
                  && props.arch_event.abs_change.equals(Constants.NOT_SPECIFIED)
                  && props.arch_event.rel_change.equals(Constants.NOT_SPECIFIED)) {
              throw DevFailedUtils.newDevFailed(ExceptionMessages.EVENT_CRITERIA_NOT_SET,
                      "Archive event properties (archive_abs_change or "
                              + "archive_rel_change or archive_period) for attribute " + attribute.getName()
                              + " are not set");
          }
      }
docs: Check if event criteria are set for specified attribute
  
  @param attribute the specified attribute
  @throws DevFailed if no event criteria is set for specified attribute.