Exécution d'une recherche

La méthode search(DataObject) permet de renvoyer un ensemble d'entités qui répondent à l'expression de recherche.

Pourquoi et quand exécuter cette tâche

La fonction de recherche de virtual member manager retourne un ensemble d'entités qui répondent à l'expression de recherche. Les contrôles liés à la recherche sont SearchControl, PageControl, SortControl, PageResponseControl et SortResponseControl. SearchControl DataObject permet de transmettre l'expression de recherche et de renvoyer la liste des propriétés dans le service de virtual member manager. Ce code exemple montre comment obtenir les propriétés uid et sn de toutes les entités de personne. Dans cet exemple, les fonctions de recherche paginée et triée ne sont pas utilisées.
Remarque : Dans cet exemple, les fonctions de recherche paginée et triée ne sont pas utilisées.
Pour obtenir les propriétés uid et sn de toutes les entités de personne, ajoutez le code exemple suivant à votre code d'application, puis remplacez les variables par les valeurs réelles à utiliser pour cette recherche :
DataObject root = SDOHelper.createRootDataObject();
	DataObject searchCtrl = SDOHelper.createControlDataObject(root, null, DO_SEARCH_CONTROL);
	searchCtrl.getList(PROP_PROPERTIES).add("uid");
searchCtrl.getList(PROP_PROPERTIES).add("sn");  
	searchCtrl.getList(PROP_SEARCH_BASES).add("o=Sales,cn=users,dc=yourco,dc=com");
	searchCtrl.setString(PROP_SEARCH_EXPRESSION, "@xsi:type='PersonAccount' and uid='*'");
		
	root = service.search(root);
Remarque :
  1. Si une propriété s'applique uniquement à un référentiel particulier et que vous souhaitez inclure cette propriété dans une expression de recherche, vous devez indiquer la base de recherche dans le contrôle de recherche pour exécuter la recherche uniquement dans ce référentiel. Par exemple, propInDB s'applique uniquement à un référentiel de base de données. Si vous souhaitez effectuer une recherche sur propInDB='abc', vous devez indiquer la base de recherche pour ce référentiel de base de données.
  2. Si la valeur de recherche actuelle contient un caractère tel l'astérisque (*) qui peut également être utilisé comme un caractère générique, par exemple "hobby=abc*de", le caractère doit être interrompu à l'aide d'une barre oblique inversée ( \ ), "hobby=abc\*de".

Modèles de graphiques de données d'entrée et de sortie

Pour cet exemple particulier, le graphique de données d'entrée est le suivant :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:sdo="commonj.sdo" 
               xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:controls xsi:type="wim:SearchControl" 
         expression="@xsi:type='PersonAccount' and uid='*'">
      <wim:properties>uid</wim:properties>
      <wim:properties>sn</wim:properties>
      <wim:searchBases>o=Sales,cn=users,dc=yourco,dc=com</wim:searchBases>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>
Voici un exemple de graphique de données de sortie pour cet exemple :
<?xml version="1.0" encoding="UTF-8"?>
<sdo:datagraph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:sdo="commonj.sdo" 
               xmlns:wim="http://www.ibm.com/websphere/wim">
  <wim:Root>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson3,ou=US,o=Sales,cn=users,dc=yourco,dc=com"
                      repositoryId="LDAP1" 
                      uniqueId="13ae346f-1e4c-40cd-8896-1c7f0b2b3079" 
                      uniqueName="uid=SalesPerson3,ou=US,o=Sales,cn=users,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson3</wim:uid>
      <wim:sn>SalesPerson3Sn</wim:sn>
    </wim:entities>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson4,ou=US,o=Sales,cn=users,dc=yourco,dc=com"
                      repositoryId="LDAP1" 
                      uniqueId="a2d1be42-212e-44f0-8396-0bfc2d7d346d" 
                      uniqueName="uid=SalesPerson4,ou=US,o=Sales,cn=users,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson4</wim:uid>
      <wim:sn>SalesPerson4Sn</wim:sn>
    </wim:entities>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson2,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"
                      repositoryId="LDAP1" 
                      uniqueId="a3f9e8a1-117a-4252-840f-6d0cb079a7fb" 
                      uniqueName="uid=SalesPerson2,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson2</wim:uid>
      <wim:sn>SalesPerson2Sn</wim:sn>
    </wim:entities>
    <wim:entities xsi:type="wim:PersonAccount">
      <wim:identifier externalName="uid=SalesPerson1,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"
                      repositoryId="LDAP1" 
                      uniqueId="e7db8c0e-d2b3-43fe-be14-1475125606f4" 
                      uniqueName="uid=SalesPerson1,ou=CA,o=Sales,cn=users,dc=yourco,dc=com"/>
      <wim:uid>SalesPerson1</wim:uid>
      <wim:sn>SalesPerson1Sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Consultez également les rubriques Exemple de code pour effectuer une recherche paginée avec les résultats triés et Exemple de code pour la recherche à l'aide de bases de recherche.



Conditions d'utilisation | Commentaires