5.6.4 スマートナビゲーションの設定方法

スマートナビゲーションの設定方法について説明します。スマートナビゲーションを使用するための設定手順を次に示します。

  1. 連携するデータの型を定義する
    連携先サイトに送信するデータのデータ型を定義します。製品出荷時には数種類のデータ型が定義されていますが,追加する場合は「(1) 連携するデータの型定義」を参照してください。
  2. 連携するデータの埋め込み定義ファイルを作成する
    連携先サイトに送信するデータをコンテンツに埋め込むための定義ファイルを作成します。作成方法は「(2) 連携するデータの埋め込み定義」を参照してください。
  3. ポートレットフィルタを定義する
    データ埋め込み定義をポートレットに対応付けます。定義方法は「(3) ポートレットフィルタの定義」を参照してください。
  4. WebAPIの定義ファイルを作成する
    連携先サイトにデータを送信する方法を定義します。定義方法は「(4) WebAPI定義」を参照してください。
<この項の構成>
(1) 連携するデータの型定義
(2) 連携するデータの埋め込み定義
(3) ポートレットフィルタの定義
(4) WebAPI定義

(1) 連携するデータの型定義

スマートナビゲーションでは連携するサイトに送信するデータの型を定義します。製品出荷時にはいくつかのデータ型が定義されています。このデータ型以外のデータ型を定義する場合は,データ型定義ファイルに追加します。データ型定義ファイルは以下のファイルです。

{設定ファイル格納ディレクトリ}¥data_put_definition.xml

(a) データ型定義ファイルで使用するタグ一覧

タグの一覧を次の表に示します。

表5-26 データ型定義ファイルのタグ一覧

タグ名タグの出現回数属性の出現回数説明
<definitions>1回データ型定義ファイルのルートタグです。

<data>0回以上1回データ型の定義です。
属性typeにデータ型名を指定します。データ型名には半角英数字で64文字まで使用することができます。※1

<formatter>0または1回抽出したデータを正規化する場合に使用するフォーマッタの定義です。フォーマッタには以下を定義することができます。
  • java.text.SimpleDateFormat
  • java.text.MessageFormat
  • java.text.DecimalFormat
  • java.text.ChoiceFormat
また,上記以外にもユーザ編集クラスを指定することができます。ユーザ編集クラスの作成方法については,「5.6.5 ユーザ編集クラスの作成方法」を参照してください。
<parse>0回以上抽出したデータを解析するための正規表現を指定します。指定した正規表現に一致した場合に,フォーマッタを呼び出します。複数の正規表現を記述した場合は,定義した順にデータを解析します。指定した正規表現に一致しない場合は,フォーマッタの呼び出しを行いません。データ解析を行わずにフォーマッタを呼び出す場合は定義しないでください。
<format>0または1回解析したデータを変換する文字列を指定します。指定する文字列の形式についてはフォーマッタの仕様を参照してください。
</data>0回以上終了タグです。
</definitions>1回終了タグです。
(凡例)
-:該当しません。
注※1 hptlから始まるデータ型名はuCosminexus Portal Frameworkの予約語のため使用することはできません。

(b) サンプルのデータ型定義ファイル

サンプルのデータ型埋め込み定義ファイルを次に示します。サンプルでは,date1,date2,tel,time,string,place,およびnameの7種類のデータ型を定義しています。

サンプルのデータ型定義ファイル

<?xml version="1.0" encoding="UTF-8"?>
<definitions>
 <data type="date1">
  <formatter>java.text.SimpleDateFormat</formatter>
  <parse>yyyy/MM/dd</parse>
  <format>yyyy-MM-dd</format>
 </data>
 <data type="date2">
  <formatter>java.text.SimpleDateFormat</formatter>
  <parse>yyyy/MM/dd</parse>
  <format>yyyyMMdd</format>
 </data>
 <data type="tel">
 </data>
 <data type="time">
 <formatter>java.text.SimpleDateFormat</formatter>
 <parse>HHmmss</parse>
 <format>HH:mm:ss</format>
 </data>
 <data type="string">
 </data>
 <data type="place">
 </data>
 <data type="name">
 </data>
</definitions>

(2) 連携するデータの埋め込み定義

ポートレット上のコンテンツから,連携するサイトに送信するデータの抽出ルールを定義するデータ埋め込み定義ファイルを作成します。定義ファイルの格納場所およびファイル名は任意ですが,{設定ファイル格納ディレクトリ}に作成することを推奨します。また,データ埋め込み定義ファイルは「(3) ポートレットフィルタの定義」で説明するポートレットフィルタ定義ファイルの<filter>要素ごとに作成することができ,<param-value>要素に作成した定義ファイルのパスを指定します。

(a) データ埋め込み定義ファイルで使用するタグ一覧

タグの一覧を次の表に示します。

表5-27 データ埋め込み定義ファイルのタグ一覧

タグ名タグの出現回数属性の出現回数説明
<dataPut>1回データ埋め込み定義ファイルのルートタグです。

<trigger>0または1回1回トリガーイベントについての定義です。
属性eventでトリガーイベントの種類を指定できます。
  • RCLICK:右クリックをイベントのトリガーとします。
  • 省略した場合は,RCLICKが適用されます。
<dataPutRange>0回以上データ埋め込みのついての定義です。

<url>0回以上データ埋め込みを実施するURLパターンを指定します。複数定義した場合は,いずれかのパターンと一致した場合にデータ埋め込みを実施します。URLパターンが適用されるのは以下のポートレットの場合です。
  • 日立APIポートレット
  • Fileポートレット
<dataRange>0回以上0または1回データ埋め込みの実施範囲についての定義です。
属性start※2にデータ埋め込み実施範囲の開始位置をキーワードで指定します。属性startで指定したキーワード以降がデータ埋め込み実施範囲になります。省略した場合は,コンテンツの先頭がデータ埋め込み実施範囲の開始位置になります。
属性end※2にデータ埋め込み実施範囲の終了位置をキーワードで指定します。属性endで指定したキーワードまでがデータ埋め込み実施範囲になります。省略した場合は,コンテンツの最後がデータ埋め込み実施範囲の終了位置になります。

<triggerRange>0回以上0または1回トリガーイベント検知範囲についての定義です。※1
属性start※2にトリガーイベント検知範囲の開始位置をキーワードで指定します。属性startで指定したキーワード以降がトリガーイベント検知範囲になります。省略した場合は,データ埋め込み実施範囲の先頭がトリガーイベント検知範囲の開始位置になります。
属性end※2にトリガーイベント検知範囲の終了位置をキーワードで指定します。属性endで指定したキーワードまでがトリガーイベント検知範囲になります。省略した場合は,データ埋め込み実施範囲の最後がトリガーイベント検知範囲の終了位置になります。

<ruleWithTrigger>0回以上0または1回トリガーイベント検知範囲を指定する場合のデータ抽出ルール定義。
属性typeに抽出したデータのデータ型を指定します。この属性は必ず指定してください。
属性regexに抽出するデータの正規表現を指定します。
属性start※2に抽出するデータの開始位置をキーワードで指定します。省略した場合は,トリガーイベント検知範囲の先頭が開始位置となります。属性regexが指定されている場合は,この属性は使用されません。
属性end※2に抽出するデータの終了位置をキーワードで指定します。省略した場合は,トリガーイベント検知範囲の最後が終了位置となります。属性regexが指定されている場合は,この属性は使用されません。
<ruleNoTrigger>0回以上0または1回トリガーイベント検知範囲を指定しない場合のデータ抽出ルール定義です。※1
属性typeに抽出したデータのデータ型を指定します。この属性は必ず指定してください。
属性regexに抽出するデータの正規表現を指定します。
属性start※2に抽出するデータの開始位置をキーワードで指定します。省略した場合は,データ埋め込み実施範囲の先頭が開始位置となります。属性regexが指定されている場合は,この属性は使用されません。
属性end※2に抽出するデータの終了位置をキーワードで指定します。省略した場合は,データ埋め込み実施範囲の最後が終了位置となります。属性regexが指定されている場合は,この属性は使用されません。
</dataPutRange>0回以上終了タグです。
</dataPut>1回終了タグです。
(凡例)
-:該当しません。
注※1 <triggerRange>タグと<ruleNoTrigger>タグはどちらか片方のみ定義することができます。両方定義した場合は,<triggerRange>タグの定義が有効になります。
注※2 属性startおよび属性endを指定する場合は2文字以上設定してください。

(b) サンプルのデータ埋め込み定義ファイル

サンプルのデータ埋め込み定義ファイルを次に示します。サンプルでは次の二つのデータ埋め込み実施範囲を定義しています。

サンプルのデータ埋め込み定義ファイル

<?xml version="1.0" encoding="UTF-8"?>
<dataPut>
 <trigger event="RCLICK"/>
 <dataPutRange>
   <dataRange start="&lt;!--start1--&gt;" end="&lt;!--end1--&gt;">
     <triggerRange start="&lt;!--trigger--&gt;" end="&lt;!--trigger--&gt;">
       <ruleWithTrigger type="place" start="&lt;!--data--&gt;" end="&lt;!--data--&gt;">
       </ruleWithTrigger>
     </triggerRange>
   </dataRange>
   <dataRange start="&lt;!--start2--&gt;" end="&lt;!--end2--&gt;">
     <ruleNoTrigger type="date1" regex="[0-9]{1,4}/[0-9]{1,4}/[0-9]{1,4}">
     </ruleNoTrigger>
   </dataRange>
 </dataPutRange>
</dataPut>

(3) ポートレットフィルタの定義

データ埋め込み定義を適用するポートレットを設定し,フィルタ機能を有効にします。定義ファイルは,以下のファイルです。

{設定ファイル格納ディレクトリ}¥portlet_filter.xml

(a) ポートレットフィルタ定義ファイルで使用するタグ一覧

タグの一覧を次の表に示します。

表5-28 ポートレットフィルタ定義ファイルのタグ一覧

タグ名タグの出現回数属性の出現回数説明
<portlet-filter>1回ポートレットフィルタ定義ファイルのルートタグです。

<filter>0回以上ポートレットフィルタ定義情報の親タグです。

<filter-name>1回ポートレットフィルタ名を指定します。
<filter-class>1回ポートレットフィルタの実装クラスを指定します。スマートナビゲーション機能では以下のクラス名を指定してください。
jp.co.hitachi.soft.portal.portlet.filter.DataPutFilter
<init-param>0回以上ポートレットフィルタのパラメタ(フィルタ固有の情報)についての定義です。

<param-name>0回以上パラメタのプロパティ名を指定します。
スマートナビゲーション機能では以下のプロパティ名を定義することができます。
  • conf_file
    データ埋め込み定義ファイルのパスを指定するプロパティです。
  • reload
    データ埋め込み定義ファイルを読み直すか指定するプロパティです。
<param-value>0回以上パラメタのプロパティ値を指定します。
<param-name>に指定したプロパティ名に対応する値を指定します。
プロパティ値は,ポートレットフィルタ単位で決められます。ただし,「hptl」で始まる値は予約語のため指定できません。スマートナビゲーション機能では以下のプロパティ値を指定することができます。
  • conf_file
    データ埋め込み定義ファイルのパスを指定します。
  • reload
    データ埋め込み定義ファイルを読み直すか指定します。ポータル画面表示ごとに定義ファイルを読み直す場合はtrueを指定します。通常運用時はfalseを指定してください。
</init-param>0回以上終了タグです。
</filter>0回以上終了タグです。
<filter-mapping>0回以上ポートレットフィルタ定義情報の親タグです。

<filter-name>1回以上フィルタ名を指定します。複数指定することで,ポートレットに対して複数のフィルタを適用することができます。
<portlet-name>1回フィルタを適用するポートレット名を指定します。標準APIポートレットの場合は,ポートレットGUIDを指定します。
</filter-mapping>0回以上終了タグです。
</portlet-app>1回終了タグです。
(凡例)
-:該当しません。

(b) サンプルのポートレットフィルタ定義ファイル

サンプルのポートレットフィルタ定義ファイルを次に示します。サンプルでは,Sample1ポートレットにフィルタを定義しています。

サンプルのポートレットフィルタ定義ファイル

<?xml version="1.0" encoding="UTF-8"?>
<portlet-filter>
 <filter>
   <filter-name>SampleFilter</filter-name>
   <filter-class>jp.co.hitachi.soft.portal.portlet.filter.DataPutFilter</filter-class>
   <init-param>
     <param-name>conf_file</param-name>
     <param-value>C:/Program Files/Hitachi/CosmiPortal/conf/data_mount.xml</param-value>
   </init-param>
   <init-param>
     <param-name>reload</param-name>
     <param-value>false</param-value>
   </init-param>
 </filter>

 <filter-mapping>
   <filter-name>SampleFilter</filter-name>
   <portlet-name>Sample1</portlet-name>
 </filter-mapping>

</portlet-filter>

(4) WebAPI定義

連携するサイトにアクセスするためのシナリオを定義します。定義ファイルは以下のファイルです。

{設定ファイル格納ディレクトリ}¥webapi.xml

(a) WebAPI定義ファイルで使用するタグ一覧

タグの一覧を次の表に示します。

表5-29 WebAPI定義ファイルのタグ一覧

タグ名タグの出現回数属性の出現回数説明
<webapis>1回WebAPI定義ファイルのルートタグです。

<setting_menu_titles>1回0または1回スマートナビゲーションの入力情報設定メニューの表示名の定義です。
属性iconにメニューに表示するアイコンを指定することができます。アイコンは,{PROJECT_HOME}からのパスを記述してください。

<setting_menu_title>1回以上1回メニューに表示する文字列を指定します。
属性langに設定メニューの表示文字列の言語を指定します。
属性valueに属性langで指定した言語の表示名を指定します。スマートナビゲーションメニューに表示されるため文字数の多い表示名を指定するとメニュー幅が広がるため注意してください。
</setting_menu_titles>1回終了タグです。
<webapi>1回以上1回WebAPI定義のタグ。メニュー単位に作成します。
属性idにWebAPIのIDを指定します。IDは半角英数字64文字以内でWebAPI定義ファイル内で一意な値を指定してください。※1

<titles>1回0または1回メニューに表示するタイトルの定義です。
属性iconにメニューに表示するアイコンを指定することができます。アイコンは,{PROJECT_HOME}からのパスを記述してください。指定したパスにアイコンが存在しない場合は,メニューが正しく表示されなくなる場合があります。

<title>1回以上1回メニューに表示する言語別タイトルを指定します。
属性langにメニュータイトルの言語を指定します。
属性valueに属性langで指定した言語のタイトルを指定します。スマートナビゲーションメニューに表示されるため文字数の多いタイトルを指定するとメニュー幅が広がるため注意してください。
</titles>1回終了タグです。
<user_permission>0または1回1回メニューの表示制御を行うクラスの定義です。属性classNameに呼び出すクラス名を指定してください。
メニューの表示制御を行うクラスの作成方法については,「5.6.5 ユーザ編集クラスの作成方法」を参照してください。
<webapi_parameters>1回シナリオ実行時に使用するデータ格納変数定義のルートタグです。

<webapi_parameter>1回以上1回シナリオ実行時に使用するデータ格納変数の定義です。
属性nameに変数名を指定してください。変数名には,半角英数字および'_'(アンダーバー)を使用することができます。※1
属性data_typeには変数に格納するデータ型を指定します。
</webapi_parameters>1回終了タグです。
<uoc_parameters>0または1回シナリオ実行時に呼び出すクラス定義のルートタグです。

<uoc_parameter>1回以上シナリオ実行時に呼び出すユーザ編集クラスを指定します。
属性nameに呼び出したユーザ編集クラスの返却値を格納するデータ格納変数の変数名を指定してください。変数名には,半角英数字および'_'(アンダーバー)を使用することができます。※1
属性classNameに呼び出すユーザ編集クラスのクラス名を指定してください。
属性methodNameに呼び出すユーザ編集クラスのメソッド名を指定してください。
属性argDataNamesにメソッドに渡す引数指定します。複数指定する場合は,コンマ(,)区切りで指定してください。データ格納変数,予約変数および文字列を指定することができます。データ格納変数は<webapi_parameter>タグで定義してください。
</uoc_parameters>0または1回終了タグです。
<scenario>1回シナリオ定義のルートタグです。

<new_window/>0または1回0または1回メニューを選択した時に新しいウィンドウを開く場合に定義するタグです。
属性nameには新しく開くウィンドウのウィンドウ名を指定します。省略した場合は,"_blank"が指定された時と同じ動作をします。
属性optionには新しく開くウィンドウのスタイルを指定します。
<request>1回以上,20回以下0または1回送信するリクエストの定義です。
属性encodeに送信するリクエストをURLエンコードする際の文字コードを指定します。以下のエンコードを指定することができます。
  • UTF-8
  • Shift-JIS
  • EUC-JP
  • JIS
省略した場合および上記以外が指定された場合はUTF-8が適用されます。

<uri>1回1回リクエストを送信するURLの定義です。
属性base_pathにURLの先頭部分またはすべての部分を指定します。子要素のpathが指定されている場合は,本属性の末尾にpathで指定した文字列が付加されます。

<path>0回以上1回リクエストを送信するURLに付加する文字列を指定します。
属性segmentにURLの末尾に付加する文字列を指定します。
このタグを複数定義した場合は,定義した順にURLに付加します。
</uri> 終了タグです。
<method>0または1回1回送信するリクエストのメソッドを指定します。
属性typeにメソッドを指定します。以下のメソッドが指定できます。
  • GET
  • POST
タグを省略した場合および上記以外の文字列が指定された場合はGETが適用されます。
<request_parameters>0または1回送信するリクエストのパラメタ定義です。

<user_input_titles>0または1回パラメタ入力画面に表示するタイトルの定義です。

<user_input_title>1回以上1回パラメタ入力画面に表示する言語別タイトルを指定します。
属性langにタイトルの言語を指定します。
属性valueに属性langで指定した言語のタイトルを指定します。
</user_input_titles>0または1回終了タグです。
<user_input_parameters>0または1回ユーザが入力するリクエストパラメタの定義です。

<user_input_parameter>1回以上0または1回ユーザが入力するリクエストパラメタを指定します。
属性titleに入力項目名を指定します。
属性nameにリクエストパラメタ名を指定します。※1
属性valueに入力項目のデフォルト値を設定します。
属性typeに入力項目のタイプを指定します。以下のタイプを指定することができます。
  • text
  • password
省略した場合および上記以外の文字列が指定された場合はtextを適用します。
</user_input_parameters>0または1回終了タグです。
<ordinary_parameters>0または1回送信するリクエストパラメタの定義です。

<ordinary_parameter>1回以上1回送信するリクエストパラメタの定義です。
属性nameにリクエストパラメタ名を指定します。※1
属性valueにパラメタ値を指定します。データ格納変数および文字列を指定することができます。データ格納変数は<webapi_parameter>タグで定義してください。
</ordinary_parameters>0または1回終了タグです。
<response_checks>0または1回レスポンスチェックの定義です。
送信したリクエストに対するレスポンスのチェックを行う場合に定義します。

<response_check>1回以上1回レスポンスチェックの定義です。
属性ng_key_wordにレスポンスに含まれていたらエラーとするキーワードを指定します。意図しないキーワードをエラーとしないため,2文字以上の文字列を指定してください。
属性error_messageにレスポンスにエラーとするキーワードが含まれている場合にエラー画面に表示するメッセージを指定します。
</response_checks>0または1回終了タグです。
</request>1回以上,20回以下終了タグです。
</scenario>1回終了タグです。
</webapi>1回以上終了タグです。
<webapis>1回終了タグです。
(凡例)
-:該当しません。
注※1 hptlから始まるID,変数およびリクエストパラメタ名はuCosminexus Portal Frameworkの予約語のため使用することはできません。

(b) サンプルのWebAPI定義ファイル

サンプルのWebAPI定義ファイルを次に示します。サンプルでは,旅費を清算するメニューの定義をしています。

サンプルのWebAPI定義ファイル

<?xml version="1.0" encoding="UTF-8"?>
<webapis>
 <setting_menu_titles icon="images/ico_setting.gif">
   <setting_menu_title lang="ja" value="設定情報変更" />
 </setting_menu_titles>
 <webapi id="ryohiohi01">
   <titles>
     <title lang="ja" value="旅費を精算する" />
   </titles>
   <webapi_parameters>
     <webapi_parameter name="s" data_type="place" />
     <webapi_parameter name="d" data_type="date1" />
   </webapi_parameters>
   <scenario>
     <new_window />
     <request encode="UTF-8">
       <uri base_path="http://ryohi.co.jp/" >
         <path segment="ryohi" />
       </uri>
       <method type="POST" />
       <request_parameters>
         <ordinary_parameters>
           <ordinary_parameter name="date" value="$d" />
           <ordinary_parameter name="to" value="$s" />
           <ordinary_parameter name="ln" value="ja" />
         </ordinary_parameters>
       </request_parameters>
     </request>
   </scenario>
 </webapi>
</webapis>