Service Registry に格納されているクエリーを呼び出すことができます。Service Registry には、数多くの事前定義済みのクエリーが AdhocQuery オブジェクトとしてすでに格納されています。これらのクエリーを検索するには、AdhocQuery 型のオブジェクトを検索します。これらのクエリーの大部分は、Web コンソールで呼び出します。Web コンソールを使用して、これらのクエリーを呼び出す方法については、『Service Registry 3.1 ユーザーズガイド (2006Q4)』の第 2 章「レジストリの検索」を参照してください。
JAXR を使用してストアドクエリーを呼び出すには、次の項目を事前に把握している必要があります。
クエリーの一意の識別子。この識別子の指定に使用できる定数は、「ストアドクエリーに対する定数」に記載されています。
クエリーに指定するパラメータ。もっとも単純なクエリー (GetCallersUser および FindAllMyObjects) には、パラメータがありません。クエリーで使用されるパラメータを決定するもっとも簡単な方法は、Web コンソールを使用してオブジェクトを検索してから、クエリーで実行される SQL 文などの詳細を検討することです。
たとえば、「基本クエリー」という名前のストアドクエリーを呼び出して、オブジェクト型で 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 に格納されている組織がすべて返されます。