基本検索要求パラメータ、またはJSON構造を使用する代わりに、JavaScript APIを呼び出してクエリを実行することができます。この節では、APIを使用する際の簡単なテクニック、およびAPIの参考ドキュメントについて説明します。
検索APIは、JUICEと言う名前のユーザアプリケーションコンポーネントに組み込まれたajaxフレームワークを使用します。JUICE(JavaScript UI Controls and Extensions)は、dojoライブラリに準拠しており、このライブラリを使用します。JUICEは、ユーザアプリケーションで使用されるdojoリリースに結合されます。
そのため、IDMユーザアプリケーションWARファイル内のカスタムページでJUICEを使用するには、dojo.js(JUICEではない)へのスクリプト参照が必要です。dojo.jsへの参照を追加したら、dojoにJUICEのダウンロードを指示するJavaScript行を追加できます。
JavaScript APIを使用する前に、dojoモジュールを利用できるようにするための設定作業を行う必要があります。
HTMLヘッダにdojo.js用のスクリプトタグを追加します。dojo.jsへの参照は、次のようにヘッダ内(本文ではない)になければなりません。
<html> <head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JavaScript Search</title> <script type="text/javascript"> if(typeof dojo=="undefined"){ var djConfig={isDebug: false, baseScriptUri: "/IDMProv/javascript/dojo/"}; var buf="<script type='text\/javascript' "; buf+="src='/IDMProv/UIQuery?js=dojo\/dojo.js'><\/script>"; document.writeln(buf); } </script> </head>
JUICEをブラウザのメモリに読み込むには、このJavaScriptステートメントを追加します。
<script type="text/javascript"> //This line must precede any code using JUICE. dojo.require("JUICE.*"); </script>
エンティティ検索を含むJUICE.IDMサービスを活用するために、このJavaScriptステートメントも追加されます。
<script type="text/javascript"> //This line must precede any code using JUICE.IDM services. dojo.require("JUICE.IDM.*"); </script>
クエリを作成するには、JUICE.IDM.Entities.Searchオブジェクトでcreate()メソッドを呼び出し、クエリに与える名前を渡す必要があります。 create()メソッドは静的メソッドです。起動方法を次に示します。
var newQuery = JUICE.IDM.Entities.Search.create("My New Search");
クエリオブジェクトを作成したら、このオブジェクトでメソッドを呼び出し、クエリの基本設定を定義したり、条件グループや条件行を定義することができます。JavaScript APIを使って作成するクエリ構造は、JSON表記モデルに従っています。クエリオブジェクトを作成したら、それをQUERY要求パラメータに追加します。
次のJavaScriptの例は、JavaScript APIを使ったクエリの作成方法を表しています。
function buildQuery3() { var newQuery = JUICE.IDM.Entities.Search.create("My New Search"); newQuery.setFrom("user"); var selAttrs = ["FirstName","LastName"]; newQuery.setSelects(selAttrs); var newCondGrp1 = newQuery.addConditionGroup(); var newCondRow1_1 = newCondGrp1.addConditionRow(); newCondRow1_1.setRowAttr("FirstName"); newCondRow1_1.setRowRop("contains"); newCondRow1_1.setRowVal("C"); openSearchResults("QUERY=" + newQuery); }
この節では、JavaScript APIを使ったディレクトリ抽象化層内のエンティティの検索方法に関する参考資料を取り上げています。
JUICE.IDM.Entities.Searchオブジェクトの静的メソッドを次の表に示します。
表 B-5 JUICE.IDM.Entities.Searchの静的メソッド
Queryオブジェクトのメソッドを次の表に示します。
表 B-6 Queryオブジェクトのメソッド
CondGroupオブジェクトのメソッドを次の表に示します。
表 B-7 CondGroupオブジェクトのメソッド
CondRowオブジェクトのメソッドを次の表に示します。