ソート検索の実行

検索中に返される項目の順序を指定するには、search(DataObject) メソッドおよび SortControl DataObject を使用します。

このタスクについて

Virtual member manager の検索機能は、検索式と一致する一連のエンティティーを返します。 結果が昇順で返されるかそれとも降順で返されるかを指定するには、SortControl 関数を使用します。この例では、ソート・キー cn は SortControl から渡されます。ソート順は、降順に設定されます (デフォルトの設定は昇順です)。ロケールは英語 en に設定され ます。検索結果は個人の cn 属性でソートされます。
注: ソート・キー cn は、SearchControl のプロパティー・リストに組み込まれます。 ソート検索ではこれは必須です。ソート・キーは、検索操作の return 属性の一部でなければなりません。
検索でソート検索機能を使用するには、次のサンプル・コードをアプリケーション・コードに追加して、 変数 をこの検索に使用したい実際の値と置き換えます。
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);

入出力データ・グラフのサンプル

この例では、入力データ・グラフは次のようになります。
<?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>
この例のサンプル出力データ・グラフは 次のようになります。
<?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>

ページ検索を実行して検索をソートするためのサンプル・コード」トピックも参照してください。



利用条件 | フィードバック