Interface Mapper.getObjectList

/** 
 * Populates the list with all entity objects for the 
 * Search Service given any one of the entity objects used. 
 * @param searchServiceId. the search service identifier 
 * @param obj. The entity object from which all other are 
 *   retrieved
 * @return the list of all entity objects for the this search
 *   service given a specified object parameter. 
 */  
List getObjectList(final SearchServiceKey serviceId, 
  final Object obj) throws AppException, 
    InformationalException;

Comme indiqué précédemment, il est possible que les données d'un service de recherche soient rassemblées à partir de différentes entités. Il est également possible que ces entités soient liées par des relations de clé étrangère complexes (par exemple, un enregistrement d'adresse peut être lié à un enregistrement de personne par une ID addressID, liée par une ID concernRoleAddressID qui est à son tour liée par une ID concernRoleID).

Les choses se compliquent lorsqu'une de ces entités est mise à jour par l'application. Lorsque cela se produit, Generic Search Server doit être en mesure de déterminer les entités affectées, les recherches impliquées et la relation avec les autres entités comprises dans chaque service de recherche.

Finalement, un ou plusieurs documents dans un ou plusieurs index de services de recherche doivent être mis à jour, et les informations contenues dans ces documents peuvent être rassemblées à partir d'une série d'entités, et pas seulement à partir de celle qui vient d'être modifiée. Toutefois, étant donné que les services de recherche disposent d'un seul associateur, chaque implémentation d'associateur nécessite uniquement de se préoccuper des informations d'assemblage pour son propre service de recherche.

La méthode d'interface getObjectList gère ce problème. Pour un enregistrement d'entité unique mis à jour, getObjectList assemble tous les autres enregistrements DTLS d'entité qui sont nécessaires pour mettre à jour le document correspondant dans l'index du service de recherche actuel. La méthode getObjectList doit être codée de telle sorte que les entités impliquées dans le service de recherche peuvent être utilisées comme point de départ de ce processus. getObjectList est responsable de :

La méthode mapper.getobjectList () est appelée par les processus suivants :

Remarquez que, pour "initial Database Extraction", la méthode d'interface getObjectList est appelée pour chaque élément extrait de ReadmultiOperation : généralement ce sera l'entité de niveau supérieur dans ce cas (par exemple, pour une extraction de recherche de personne, tous les enregistrements de personne sont lus avec readmulti, getObjectList est ensuite appelé pour que chacun récupère toutes les autres informations nécessaires à la création d'une méthode SearchServiceRow).

Si cette méthode est appelée pour une entrée qui ne concerne pas ce service de recherche, alors l'implémentation doit simplement renvoyer une liste vide.