Service Registry 3 2005Q4 開発者ガイド

名前によるオブジェクトの検索

オブジェクトを名前で検索するには、通常、検索修飾子と名前パターンの組み合わせを使用します。検索修飾子はソートとパターンマッチングに作用します。名前パターンには検索する文字列を指定します。BusinessQueryManagerImpl.findObjects メソッドは、2 番目の引数として FindQualifier オブジェクトのコレクション、3 番目の引数として名前パターンのコレクションを取ります。メソッドシグニチャーは次のとおりです。

public BulkResponse findObjects(java.lang.String objectType,
        java.util.Collection findQualifiers,
        java.util.Collection namePatterns,
        java.util.Collection classifications,
        java.util.Collection specifications,
        java.util.Collection externalIdentifiers,
        java.util.Collection externalLinks)
    throws JAXRException

最初の引数にはオブジェクト型を指定しますが、通常は、LifeCycleManager インタフェースで定義されている一連の文字列定数の 1 つを指定します。

名前パターンにはワイルドカードを使用できます。パーセント記号 (%) を用いると、指定した検索文字列をオブジェクト名の先頭、中間、または末尾で検索するよう指定できます。次に例を示します。

1 文字分に相当するワイルドカードとして、下線 (_) も使用できます。たとえば、検索文字列 _us_ は、Aus1Bus3 などのオブジェクト名に一致します。

次のコードは、指定された文字列 searchString で始まる名前を持つすべての組織を Service Registry から検索し、見つかった組織名をアルファベット順にソートします。

// Define find qualifiers and name patterns
Collection findQualifiers = new ArrayList();
findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC);
Collection namePatterns = new ArrayList();
namePatterns.add(searchString + "%");

// Find organizations with name that starts with searchString
BulkResponse response =
     bqm.findObjects("Organization", findQualifiers,
         namePatterns, null, null, null, null);
Collection orgs = response.getCollection();

FindQualifier.CASE_SENSITIVE_MATCH を指定しない限り、findObjects メソッドでは大文字と小文字が区別されません。上記のコードにおいて、最初の引数は "Organization" または "organization" のどちらでもよく、名前パターンは名前に一致します。大文字と小文字は区別されません。

次のコードは、文字列 searchString が名前に含まれているすべてのレジストリオブジェクトを検索し、アルファベット順にソートします。この検索では大文字と小文字を区別します。

Collection findQualifiers = new ArrayList();
findQualifiers.add(FindQualifier.CASE_SENSITIVE_MATCH);
findQualifiers.add(FindQualifier.SORT_BY_NAME_ASC);
Collection namePatterns = new ArrayList();
namePatterns.add("%" + searchString + "%");

// Find objects with name that contains searchString
BulkResponse response =
     bqm.findObjects("RegistryObject", findQualifiers,
         namePatterns, null, null, null, null);
Collection orgs = response.getCollection();

パーセント記号は任意の数の文字に一致します。1 文字に一致させるには、下線 (_) を使用します。たとえば、"Arg1" と "Org2" の両方に一致させるには、_rg_ という名前パターンを指定します。

名前によるオブジェクトの検索: 例

名前によってオブジェクトを検索する例については、<INSTALL>/registry/samples/search-name/src ディレクトリにある JAXRSearchByName.java を参照してください。

ProcedureJAXRSearchByName サンプルを実行するには

手順
  1. <INSTALL>/registry/samples/search-name ディレクトリに移動します。

  2. 次のコマンドを入力して string 値を指定します。


    asant run -Dname=string
    

    このプログラムは、大文字と小文字を区別せずに、指定された文字列が名前に含まれているすべてのオブジェクトを検索します。また、オブジェクトの分類、外部識別子、外部リンク、スロット、および監査証跡を表示します。