Service Registry 3.1 開発ガイド

ストアドクエリーの使用

Service Registry に格納されているクエリーを呼び出すことができます。Service Registry には、数多くの事前定義済みのクエリーが AdhocQuery オブジェクトとしてすでに格納されています。これらのクエリーを検索するには、AdhocQuery 型のオブジェクトを検索します。これらのクエリーの大部分は、Web コンソールで呼び出します。Web コンソールを使用して、これらのクエリーを呼び出す方法については、『Service Registry 3.1 ユーザーズガイド (2006Q4)』の第 2 章「レジストリの検索」を参照してください。

JAXR を使用してストアドクエリーを呼び出すには、次の項目を事前に把握している必要があります。

たとえば、「基本クエリー」という名前のストアドクエリーを呼び出して、オブジェクト型で Service Registry のすべての組織を検索するとします。Web コンソールでこのクエリーを見ると、$objectTypePath という名前のパラメータが取得されていることが確認できます。つまり、オブジェクト型の Concept を直接指定する代わりに、分類スキーマノードをパス構造として指定します。次のコードでは、最初にクエリー識別子の定数を取り出して、次にオブジェクト型パスを指定します。実際のオブジェクト型パスの String 値は、/urn:oasis:names:tc:ebxml-regrep:classificationScheme:ObjectType/RegistryObject/Organization です。

String queryId = 
    CanonicalConstants.CANONICAL_QUERY_BasicQuery;
String objectType = 
    CanonicalConstants.CANONICAL_CLASSIFICATION_SCHEME_ID_ObjectType;
String objectTypePath = 
    "/" + objectType + "/RegistryObject/Organization";

クエリー識別子およびパラメータの値を指定したあとに、HashMap を作成してこれらの値を渡します。CANONICAL_SLOT_QUERY_ID 定数を使用してパラメータ名を指定し 、最初に HashMap のパラメータ、最後にクエリー識別子を指定します。次に、DeclarativeQueryManager.createQuery メソッドの実装固有のフォームを呼び出して、クエリーを作成します。最後に、DeclarativeQueryManager.executeQuery メソッドの実装固有のフォームを呼び出して、パラメータを指定したクエリーを実行します。

Map parameters = new HashMap();
parameters.put("$objectTypePath", objectTypePath);
parameters.put(CanonicalConstants.CANONICAL_SLOT_QUERY_ID, queryId);
Query query = dqm.createQuery(Query.QUERY_TYPE_SQL);

BulkResponse br = dqm.executeQuery(query, parameters);

createQuery メソッドおよび executeQuery メソッドの実装固有のフォームの署名は、次のとおりです。

public Query createQuery(int queryType)
    throws InvalidRequestException, JAXRException

public BulkResponse executeQuery(Query query, java.util.Map queryParams)
    throws JAXRException

ストアドクエリーの使用: 例

ストアドクエリーの使用例についてはINSTALL/registry-samples/query-stored/src ディレクトリにある JAXRQueryStored.java を参照してください。この例では、Service Registry に格納されている組織がすべて返されます。

ProcedureJAXRQueryStored の例を実行するには

  1. INSTALL/registry-samples/query-stored ディレクトリに移動します。

  2. 次のコマンドを入力します。


    Ant-base/ant run