B.2 JavaScript APIを使った新規クエリの作成

基本検索要求パラメータ、または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モジュールを利用できるようにするための設定作業を行う必要があります。

  1. 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>
    
  2. JUICEをブラウザのメモリに読み込むには、このJavaScriptステートメントを追加します。

    <script type="text/javascript">
      //This line must precede any code using JUICE.
      dojo.require("JUICE.*");
    </script>
    
  3. エンティティ検索を含む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);
}

B.2.1 JavaScript API

この節では、JavaScript APIを使ったディレクトリ抽象化層内のエンティティの検索方法に関する参考資料を取り上げています。

JUICE.IDM.Entities.Searchオブジェクトの静的メソッドを次の表に示します。

表 B-5 JUICE.IDM.Entities.Searchの静的メソッド

方法

説明

<Query> create(searchName)

searchNameの名前で新しいクエリを作成します。

<void> load(uuid)

ユーザが保存した指定したuuidの検索をロードします。

<Query> get(uuid)

ユーザが保存した指定したuuidの検索をクエリとして返します。

<String[]> getNames()

ログインしたユーザが保存したすべての検索の名前を返します。

<String> getUUID(searchName)

searchNameの名前を持つ保存済み検索のuuidを返します。

Queryオブジェクトのメソッドを次の表に示します。

表 B-6 Queryオブジェクトのメソッド

方法

説明

<void> setKey(searchName)

searchNameを設定します。

<void> setFrom(defKey)

エンティティ定義から設定します。

<void> setSelects(attrKey[])

選択項目を設定します(オプション、SearchListPortletを使用する場合)。

<void> setSearchScope(scp)

検索スコープを設定します(オプション)。

<void> setSearchRoot(rt)

検索ルートを設定します(オプション)。

<void> setMaxPage(int)

ページ当たりの最大行数を設定します(オプション)。

<void> setMaxResults(int)

合計最大行数を設定します(オプション)。

<void> setOrderBy(attrKey)

ソートを設定します(オプション)。

<void> setPointer(int)

ページ番号付けのオフセットを設定します(オプション)。

<void> setGroupLop(lop)

グループ間論理演算子を設定します。

<String> getKey()

searchNameを取得します。

<String> getFrom()

エンティティ定義から取得します。

<String> getSelects()

選択項目を取得します。

<String> getSearchScope()

検索スコープを取得します。

<String> getSearchRoot()

検索ルートを取得します。

<int> getMaxPage()

ページ当たりの最大行数を取得します。

<int> getMaxResults()

合計最大行数を取得します。

<String> getOrderBy()

ソートを取得します。

<int> getPointer()

ページ番号付けのオフセットを取得します。

<String> getGroupLop()

グループ間論理演算子を取得します。

<int> nbConditionGroups

条件グループ数を返します。

<CondGroup> addConditionGroup

クエリに追加された新しい条件グループ(CondGroup)を作成し、返します。

<void> removeConditonGroup(i)

iの条件グループを削除します。

<CondGroup> getConditonGroup(i)

iの条件グループを返します。

CondGroupオブジェクトのメソッドを次の表に示します。

表 B-7 CondGroupオブジェクトのメソッド

方法

説明

<void> setRowLop(lop)

グループ内論理演算子を設定します。

<String> getRowLop()

グループ内論理演算子を取得します。

<int> nbConditionRows()

条件行数を返します。

<CondRow> addConditionRow()

条件グループに追加された新しい条件行を作成し、返します。

<void> removeConditionRow(i)

iの条件行を削除します。

<CondRow> getConditionRow(i)

iの条件行を返します。

CondRowオブジェクトのメソッドを次の表に示します。

表 B-8 CondRowオブジェクトのメソッド

方法

説明

<void> setRowAttr(attrKey)

属性を設定します。

<void> setRowRop(rop)

関係演算子を設定します。

<void> setRowVal(val)

検索値を設定します。

<String> getRowAttr()

属性を取得します。

<String> getRowRop()

関係演算子を取得します。

<String> getRowVal()

検索値を取得します。