Realización de una búsqueda

Utilice el método search(DataObject) para devolver un conjunto de entidades que coincidan con la expresión de búsqueda.

Acerca de esta tarea

La función de búsqueda de virtual member manager devuelve un conjunto de entidades que coinciden con la expresión de búsqueda. Los controles relacionados con la búsqueda son SearchControl, PageControl, SortControl, PageResponseControl y SortResponseControl. Utilice SearchControl DataObject para transferir la expresión de búsqueda y devolver una lista de propiedades al servicio de virtual member manager. El código de ejemplo siguiente muestra cómo obtener las propiedades uid y sn de todas las entidades de persona. En este ejemplo, las funciones de búsqueda paginada y clasificada no se utilizan.
Nota: En este ejemplo, las funciones de búsqueda y clasificada no se utilizan.
Para obtener las propiedades uid y sn de todas las entidades de persona, añada el código de ejemplo siguiente al código de aplicación y sustituya las variables por los valores reales que desea utilizar para esta búsqueda:
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);
Nota:
  1. Si una propiedad sólo es aplicable a un depósito en concreto y desea incluir esta propiedad en una expresión de búsqueda, debe especificar la base de búsqueda en el control de búsqueda para realizar la búsqueda sólo en este depósito. Por ejemplo, propInDB sólo es aplicable a un depósito de base de datos. Si quisiera buscar en propInDB='abc', debe especificar la base de búsqueda para el depósito de base de datos.
  2. Si el valor de búsqueda real contiene un carácter como un asterisco ( * ) que también pueda utilizarse como comodín, por ejemplo "hobby=abc*de", el carácter debe ir precedido de una barra inclinada invertida ( \ ), "hobby=abc\*de".

Gráficos de ejemplo de datos de entrada y salida

Para este ejemplo concreto, el gráfico de datos de entrada es:
<?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>
Un gráfico de datos de salida de ejemplo es el siguiente:
<?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>

Consulte también los temas Código de ejemplo para realizar una búsqueda paginada con resultados clasificados y Código de ejemplo para buscar utilizando bases de búsqueda.



Condiciones de uso | Comentarios