docs: def from_config(cls, config_dict: dict, schema_path: str = None):
          """Create an SBI object from the specified configuration dict.
  
          NOTE(BM) This should really be done as a single atomic db transaction.
  
          Args:
              config_dict(dict): SBI configuration dictionary
              schema_path(str, optional): Path to the SBI config schema.
  
          """
          # Validate the SBI config schema
          if schema_path is None:
              schema_path = join(dirname(__file__), 'schema',
                                 'configure_sbi.json')
          with open(schema_path, 'r') as file:
              schema = json.loads(file.read())
              validate(config_dict, schema)
  
          # Add SBI status field
          config_dict['status'] = 'created'
  
          # Set the subarray field to None if not defined.
          if 'subarray_id' not in config_dict:
              config_dict['subarray_id'] = 'None'
  
          # Add created, and updated timestamps.
          timestamp = datetime.datetime.utcnow().isoformat()
          config_dict['created'] = timestamp
          config_dict['updated'] = timestamp
  
          # Split out the processing block data array
          pb_list = copy.deepcopy(config_dict['processing_blocks'])
  
          # Remove processing blocks from the SBI configuration.
          config_dict.pop('processing_blocks', None)
  
          # Add list of PB ids to the SBI configuration
          config_dict['processing_block_ids'] = []
          for pb in pb_list:
              config_dict['processing_block_ids'].append(pb['id'])
  
          # Add the SBI data object to the database.
          key = SchedulingObject.get_key(SBI_KEY, config_dict['id'])
          DB.save_dict(key, config_dict, hierarchical=False)
          # DB.set_hash_values(key, config_dict)
  
          # Add the SBI id to the list of active SBIs
          key = '{}:active'.format(SBI_KEY)
          DB.append_to_list(key, config_dict['id'])
  
          # Publish notification to subscribers
          sbi = SchedulingObject(SBI_KEY, config_dict['id'])
          sbi.set_status('created')
  
          for pb in pb_list:
              pb['sbi_id'] = config_dict['id']
              cls._add_pb(pb)
  
          return cls(config_dict['id'])