code: def load(self):
          
          file_name_valid = False
          rule_type_valid = False
          # Look for a locally-defined rule
          for rule_dir in self.rule_dirs:
              file_path = os.path.join(rule_dir, self.file_name) if rule_dir else self.file_name
              if os.path.isfile(file_path):
                  self.file_path = file_path
                  file_name_valid = True
                  break
          # Look for a built-in rule
          if not file_name_valid:
              for rule_type in self.rule_types:
                  if self.file_name.startswith(rule_type):
                      self.file_path = os.path.join(self.rules_data_path, self.file_name)
                      rule_type_valid = True
                      file_name_valid = True
                      break
              if not rule_type_valid:
                  for rule_type in self.rule_types:
                      self.file_path = os.path.join(self.rules_data_path, rule_type, self.file_name)
                      if os.path.isfile(self.file_path):
                          file_name_valid = True
                          break
              else:
                  if os.path.isfile(self.file_path):
                      file_name_valid = True
          if not file_name_valid:
              printError('Error: could not find %s' % self.file_name)
          else:
              try:
                  with open(self.file_path, 'rt') as f:
                      self.string_definition = f.read()
                      self.load_from_string_definition()
              except Exception as e:
                  printException(e)
                  printError('Failed to load rule defined in %s' % file_path)
docs: Load the definition of the rule, searching in the specified rule dirs first, then in the built-in definitions
  
          :return:                        None