検索の実行

検索式と一致する一連のエンティティーを返すには、search(DataObject) メソッドを使用します。

このタスクについて

Virtual member manager の検索機能は、検索式と一致する一連のエンティティーを返します。検索に関連したコントロールは、 SearchControl、PageControl、SortControl、PageResponseControl、および SortResponseControl です。 検索式を渡して、Virtual member manager サービスにプロパティー・リストを返すには、SearchControl DataObject を使用します。この例のコードは、すべての個人エンティティーの uid および sn プロパティーを取得する方法を示しています。この 例では、ページおよびソート検索機能は使用されません。
注: この例では、ページおよび ソート検索機能は使用されません。
すべての個人エンティティーの uid および sn プロパティーを取得するには、次のサンプル・コードをアプリケーション・コードに追加して、 変数 をこの検索に使用したい実際の値と置き換えます。
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);
注:
  1. プロパティーを適用できるのが特定のリポジトリーのみで、そのプロパティーを検索式に組み込みたい場合には、検索制御で searchbase を指定してそのリポジトリーのみで検索を実行する必要があります。例えば、propInDB を適用できるのはデータベース・リポジトリー のみです。propInDB='abc' で検索したい場合には、そのデータベース・リポジトリーの searchbase を指定してください。
  2. 実際の検索値にワイルドカードとしても使用できるアスタリスク (*) などの文字が入っている場合 (例えば、"hobby=abc*de") には、円記号 (¥) を使用してその文字をエスケープする ("hobby=abc¥*de") 必要があります。

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

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

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



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