Suchvorgang mit sortierten Suchergebnissen ausführen

Verwenden Sie die Methode "search(DataObject)" und das Datenobjekt "SortControl", um die Reihenfolge der Elemente anzugeben, die im Verlauf eines Suchvorgangs zurückgegeben werden.

Informationen zu diesem Vorgang

Die Suchfunktion von Virtual Member Manager gibt eine Reihe von Entitäten zurück, die mit dem Suchausdruck übereinstimmen. Verwenden Sie die Funktion "SortControl", um anzugeben, ob die Ergebnisse in aufsteigender oder in absteigender Reihenfolge zurückgegeben werden. In diesem Beispiel wird der Sortierschlüssel "cn" von "SortControl" angegeben. Die Sortierreihenfolge wird auf "absteigend" festgelegt (die Standardeinstellung ist "aufsteigend"). Das Locale wird auf Englisch ("en") festgelegt. Die Suchergebnisse werden nach dem Attribut "cn" einer Person sortiert.
Anmerkung: Der Sortierschlüssel "cn" ist in der Merkmalsliste von "SearchControl" enthalten. Dies ist für einen Suchvorgang mit sortierten Suchergebnissen erforderlich. Sortierschlüssel müssen in den Rückgabeattributen für die Suchoperation enthalten sein.
Wenn Sie bei einem Suchvorgang die Funktion für die sortierten Suchergebnisse verwenden möchten, nehmen Sie den folgenden Mustercode in Ihren Anwendungscode auf, und ersetzen Sie die kursiv gedruckten Variablen durch die tatsächlichen Werte, die Sie für diesen Suchvorgang verwenden möchten:
DataObject root = SDOHelper.createRootDataObject();
		
		DataObject searchCtrl = root.createDataObject(DO_CONTROLS, WIM_NS_URI, "SearchControl");
		searchCtrl.getList(PROP_PROPERTIES).add("uid");
	searchCtrl.getList(PROP_PROPERTIES).add("sn");  
		searchCtrl.getList(PROP_PROPERTIES).add("cn");
		searchCtrl.setString(PROP_SEARCH_EXPRESSION, "//entities[@xsi:type='PersonAccount' and
                       uid='SalesPerson*']");
		searchCtrl.getList(PROP_SEARCH_BASES).add(uNames.get("sales"));
		
		DataObject sortCtrl = root.createDataObject(DO_CONTROLS, WIM_NS_URI, DO_SORT_CONTROL);
		sortCtrl.setString(PROP_SORT_LOCALE, "en-US");
		DataObject sortKey = sortCtrl.createDataObject(DO_SORT_KEYS, WIM_NS_URI, DO_SORT_KEY_TYPE);
		sortKey.setString(PROP_PROPERTY_NAME,"cn");
		sortKey.setBoolean(PROP_ASCENDING_ORDER, false);
		
		DataObject returnDO = service.search(root);

Beispiele für Eingabe- und Ausgabedatengraphen

Für das dargestellte Beispiel sieht der Eingabedatengraph wie folgt aus:
<?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="//entities[@xsi:type='PersonAccount' and uid='SalesPerson*']">
      <wim:properties>uid</wim:properties>
      <wim:properties>sn</wim:properties>
      <wim:properties>cn</wim:properties>
      <wim:searchBases>o=Sales,cn=users,dc=yourco,dc=com</wim:searchBases>
    </wim:controls>
    <wim:controls xsi:type="wim:SortControl">
      <wim:sortKeys>
        <wim:propertyName>cn</wim:propertyName>
        <wim:ascendingOrder>false</wim:ascendingOrder>
      </wim:sortKeys>
      <wim:locale>en-US</wim:locale>
    </wim:controls>
  </wim:Root>
</sdo:datagraph>
Ein Musterausgabedatengraph für dieses Beispiel sieht wie folgt aus:
<?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=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:cn>Sales Person4</wim:cn>
      <wim:sn>SalesPerson4Sn</wim:sn>
    </wim:entities>
    <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:cn>Sales Person3</wim:cn>
      <wim:sn>SalesPerson3Sn</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:cn>Sales Person2</wim:cn>
      <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:cn>Sales Person1</wim:cn>
      <wim:sn>SalesPerson1Sn</wim:sn>
    </wim:entities>
  </wim:Root>
</sdo:datagraph>

Lesen Sie hierzu auch die Informationen im Thema Mustercode für die Ausführung eines Suchvorgangs mit seitenweise abgerufenen und sortierten Suchergebnissen.



Rechtliche Hinweise | Feedback