...

IBM WebSphere Dashboard Framework V6.1 開発自習ガイド

by user

on
Category: Documents
12

views

Report

Comments

Transcript

IBM WebSphere Dashboard Framework V6.1 開発自習ガイド
IBM WebSphere Dashboard Framework V6.1
開発自習ガイド
作成・更新日 2008 年 8 月 18 日
日本アイ・ビー・エム システムズ・エンジニアリング株式会社
1/156
<目次>
1
はじめに.............................................................................................................................. 4
1.1
2
3
4
資料中の表記について ................................................................................................... 4
レッスンの前提 ................................................................................................................... 5
2.1
前提知識 ......................................................................................................................... 5
2.2
前提環境(想定環境) ................................................................................................... 6
レッスンの進め方 ............................................................................................................... 9
3.1
レッスンの一覧および概要 ............................................................................................ 9
3.2
各レッスンの関連 ........................................................................................................ 11
レッスン............................................................................................................................ 12
4.1
[レッスン 1]BULLET GRAPH とポートレット編集 .................................................. 12
4.1.1
設定内容 ............................................................................................................... 12
4.1.2
実行結果 ............................................................................................................... 20
4.2
[レッスン 2]STATUS PAGE ....................................................................................... 21
4.2.1
設定内容 ............................................................................................................... 21
4.2.2
実行結果 ............................................................................................................... 29
4.3
[レッスン 3]EXCEL と STATUS INDICATOR .............................................................. 30
4.3.1
設定内容 ............................................................................................................... 30
4.3.2
実行結果 ............................................................................................................... 38
4.4
[レッスン 4]EXCEL と WEB チャート...................................................................... 39
4.4.1
設定内容 ............................................................................................................... 39
4.4.2
実行結果 ............................................................................................................... 53
4.5
[レッスン 5]DATABASE へのアクセス...................................................................... 55
4.5.1
設定内容 ............................................................................................................... 55
4.5.2
実行結果 ............................................................................................................... 68
4.6
[レッスン 6]DATABASE と RECORD LIST AND DETAIL ............................................. 69
4.6.1
設定内容 ............................................................................................................... 69
4.6.2
実行結果 ............................................................................................................... 75
4.7
[レッスン 7]DATABASE と HIERARCHY DRILLDOWN ............................................... 76
4.7.1
設定内容 ............................................................................................................... 76
4.7.2
実行結果 ............................................................................................................... 96
4.8
[レッスン 8]DATABASE と SUMMARY AND DRILLDOWN ........................................... 98
2/156
4.8.1
設定内容 ............................................................................................................... 98
4.8.2
実行結果 ............................................................................................................. 112
4.9
[レッスン 9]単純な FILTER.................................................................................... 113
4.9.1
設定内容 ............................................................................................................. 113
4.9.2
実行結果 ............................................................................................................. 124
4.10
[レッスン 10]FILTER とデータ階層....................................................................... 126
4.10.1
設定内容 ............................................................................................................. 126
4.10.2
実行結果 ............................................................................................................. 139
4.11
[レッスン 11]FILTER と EXCEL 連携...................................................................... 141
4.11.1
設定内容 ............................................................................................................. 141
4.11.2
実行結果 ............................................................................................................. 155
3/156
1 はじめに
当資料は、IBM WebSphere Dashboard Framework V6.1.X(以下 Dashboard Framework)
を用いて WebSphere Portal V6.0.X で使用する Portlet を開発する際の作業のうち、
Dashboard Framework 独自のビルダーを用いた Portlet 開発について、レッスンを通じて
自習していただくための資料です。
この資料中のレッスンを通じて、Dashboard Framework 独自のビルダーの使い方について
容易に習得でき、実際の出力結果からどのような場合にビルダーを用いるべきか判断する
ことが可能になるように、資料は構成されています。
なお、最終的な成果物としては、Dashboard Framework を使ったポートレットが数点作成
されます。
資料中の表記について
1.1
※ 説明文中の画面キャプチャについては、一部実際の使用者の表示結果と異なる場合があ
ります。
※ 当資料は IBM WebSphere Portlet Factory の知識がある使用者を前提としているため、
すべての手順について記述があるわけではありません。場合に応じて使用者が手順を追
加してください。
※ 参考資料として以下の文献があります。当資料中に詳細な記述がない項目に関しては、
以下の資料を参考にしてください。
¾
IBM WebSphere Portal バージョン 6 Information Center
—
¾
http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp
IBM WebSphere Application Server 資料
—
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/co
m.ibm.websphere.base.doc/info/welcome_base.html
¾
IBM WebSphere Portlet Factory Information Center
—
http://publib.boulder.ibm.com/infocenter/wpfhelp/v6r0m2/topic/com.bowstr
eet.designer.doc/designer/welcome.html
¾
IBM WebSphere Dashboard Framework
—
http://publib.boulder.ibm.com/infocenter/wdfhelp/v6r0m0/index.jsp
4/156
2 レッスンの前提
前提知識
2.1
この資料中のレッスンを実施するに当たり以下の前提知識が必要となります。なお前提知
識については、
「知識があると望ましい」というレベルであり必須のものではありませんが、
レッスンを実施する際にある程度の知識が必要となります。
z
z
WebSphere Portal V6 に関する一般知識
¾
WebSphere Portal 構成についての概要
¾
WebSphere Portal 管理についての概要
z
ラベル/ページの作成/管理
・・・
※
—
Portlet(アプリケーション)の配置/管理
・・・
※
—
ユーザー/グループ管理
—
アクセス権限管理
WebSphere Application Server V6 に関する一般知識
¾
z
—
サーバー/アプリケーションの管理
—
サーバーの管理/設定
—
アプリケーションの管理/設定
—
データベースとの連携(データソースの設定)
Java に関する一般知識
¾
Java コーディングに関する知識
¾
アプリケーション/Servlet の仕組みについての知識
IBM WebSphere Portlet Factory に関しての一般知識
¾
IBM WebSphere Portlet Factory の操作
—
プロジェクト/モデル/プロファイルの作成/管理
・・・
※
—
オートデプロイに関する知識
・・・
※
※ この印のついているものについては、特に必要となります。
5/156
2.2
前提環境(想定環境)
IBM WebSphere Dashboard Framework は IBM WebSphere Portlet Factory の上で動作
します。そのため動作環境としては IBM WebSphere Portlet Factory の動作環境と同じに
なります。
IBM WebSphere Portlet Factory を用いて Portlet を開発する場合、構成のパターンとして
以下の4通りが考えられます。
z
1 台 の マ シ ン に IBM WebSphere Portal と IBM WebSphere Portlet
Factory/Dashboard Framework を導入して構成する
IBM WebSphere Dashboard Framework
IBM WebSphere Portlet Factory
IBM WebSphere Portal Server
IBM WebSphere Application Server
開発時のプレビュー
Portlet の自動デプロイ
ローカル環境
図 1 1台にすべて導入
6/156
z
2 台 の マ シ ン に IBM WebSphere Portal と IBM WebSphere Portlet
Factory/Dashboard Framework を別々に導入して構成する。
¾
Portlet の自動デプロイ先及び開発用サーバーとしてモートの IBM WebSphere
Portal を指定する。(図2※1)
¾
Portlet の自動デプロイ先にリモートの IBM WebSphere Portal を指定し、開発用
サ ー バ ー と し て は ロ ー カ ル の WebSphere Application Server Community
Edition(導入時に選択可能)を指定する(図2※2)
IBM WebSphere Portal Server
IBM WebSphere Application Server
IBM WebSphere Dashboard Framework
リモート環境
※1開発時のプレビュー
Portlet の自動デプロイ
IBM WebSphere Portlet Factory
ローカル環境
※2開発時のプレビュー
図 2 2台に別々に導入
z
自動デプロイを行わない
7/156
基 本 的 に 1 台 の マ シ ン に IBM WebSphere Portal/IBM WebSphere Portlet
Factory/Dashboard Framework を導入して構成して、自動デプロイ設定を行う方法が簡単
ですが、マシンリソースの関係でこの構成が取れない場合があります。その場合は IBM
WebSphere Portal と IBM WebSphere Portlet Factory/Dashboard Framework を別々のマ
シンに構成して開発を行います。
別々のマシンに構成する場合、1台のマシンで構成する場合に加えて、IBM WebSphere
Portlet Factory プロジェクト作成の際に多少の追加手順が必要となります。方法について
は以下のリンクを参照してください。
z
Deploying a project to a remote server
¾
http://publib.boulder.ibm.com/infocenter/wpfhelp/v6r0m2/topic/com.bowstreet.
designer.doc/designer/deploying_to_a_remote_server.htm
IBM WebSphere Application Server Community Edition の使用方法については、以下の
リンクを参照してください。
z
Quick start with WAS CE
¾
http://publib.boulder.ibm.com/infocenter/wpfhelp/v6r0m2/topic/com.bowstreet.
designer.doc/tutorials/TutorialBasics_Quick_Start_WASCE.htm
また IBM WebSphere Portlet Factory プロジェクト作成の手順については、以下のリンク
を参照してください。(前提知識のため、この資料には記述していません)
z
Tutorial – Creating a Web Application Project
¾
http://publib.boulder.ibm.com/infocenter/wpfhelp/v6r0m2/topic/com.bowstreet.
designer.doc/tutorials/TutorialBasics_Create_Project.htm
8/156
3 レッスンの進め方
この資料には合計で11のレッスンが含まれています。よってすべてのレッスンを終了す
ると11個の Portlet が作成されます。なお、すべてのレッスンを記述順に行う必要はあり
ませんが、レッスンによっては、前提となるレッスンもあります。その場合は前提のレッ
スンを終了した後、実施してください。
3.1
レッスンの一覧および概要
この資料に含まれるレッスンの一覧です。
表 1 レッスン一覧
レッスン名
タイトル
概要
使用する主な
Dashboard ビルダー
レッスン1
Bullet Graph と Portlet 編集モード
Dashboard Framework を
Bullet Graph
用いた簡単なサンプルで
(Portlet Adapter)
す。Portlet の編集モード
の使い方も学習します。
レッスン2
Status Page
外部からデータを取り込
Status Page
まずに Status 表示をさせ
ます。
レッスン3
Excel と Status Indicator
Excel からデータを取り込
Excel Import
み、データの値の応じた
Status Indicator
状 況 の 表 示 (Status
Indicator)を行います。
レッスン4
Excel と WebChart
Excel からデータを取り込
Excel Import
み、グラフ化して表示しま
Web Charts - Enhanced
す。
レッスン5
Database へのアクセス
以後のレッスンのための
-
Database アクセス用モジ
ュールを作成します。
レッスン6
Database と Record List Detail
Database レコードの一覧
Record List Detail
表示と詳細項目の表示を
行います。
レッスン7
Database と Hierarchy Drilldown
Database レコードの一覧
表示及びカテゴリごとの
の階層表示(Drilldown)を
行います。
9/156
Hierarchy Drilldown
レッスン8
Database と Summary and Drilldown
Database レコードの一覧
Summary and Drilldown
表示と、レコードから作成
したグラフの表示を行い
ます。
レッスン9
単純な Filter
2つのポートレット間で単
Query Filter
純な連携を行います。
Query Filter Form
Query Filter Observer
レッスン10
Filter とデータ階層
2つのポートレット間で連
Query Filter
携を行います。連携する
Query Filter Form
データを複数使用しま
Query Filter Observer
す。
レッスン11
Filter と Excel 連携
Excel から取り込んだデー
Excel Import
タをフィルタリングし、別
Query Filter
のポートレットへ表示しま
Query Filter Form
す。
Query Filter Observer
10/156
3.2
各レッスンの関連
各レッスン間の関連は以下のようになります。すべてのレッスンを順番に実施する必要は
ありませんが、前提となるレッスンが存在するものもあります。
下図にて実線が引かれているものは、順に学習することが必須です。点線のものは順に学
習する必要はありませんが、前提知識として学習しておくことが推奨されます。
Dashboard 基礎
レッスン1
Database 連携とグラフ表示
レッスン5
レッスン2
レッスン6
レッスン7
参考
レッスン3
レッスン8
レッスン4
フィルタリングと Portlet 連携
レッスン9
必須
レッスン10
図 3 各レッスン間の関連
11/156
レッスン11
4 レッスン
本章では、さまざまな Dashboard Framework 用ビルダーの使い方を理解するために演習
を実施します。
4.1
[レッスン 1]Bullet Graph とポートレット編集
Dashboard Framework が機能していることを確認する為に、Dashboard 用ビルダー単体
での動作確認をおこないます。
ここではポートレットの「共用設定の編集(edit_defaults)モード」で設定した値を、Bullet
Graph で使用します。設定する値はあらかじめプロファイル・セットで項目を用意してお
く必要があります(他のモードを利用する場合でも同様です)。
「共用設定の編集」用のページを新たに作成しません。ポートレットデータの保存先にプ
ロファイル・セットを利用すると、デフォルトで用意されているページを使用できる為で
す。
4.1.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_BulletGraphAndPortletEdit
追加する機能セット:
Dashboard Framework
モデル名: sample1(モデルタイプは空にする)
プロファイル・セット名: SampleProfileSet1
============================================================
<<SampleProfileSet1.pset>>
1.プロファイル・セットの作成
ポートレットで使用するプロファイルを作成します。以下のように設定します。
設定値
ファイル名
SampleProfileSet1.pset
プロジェクト
DF_BulletGraphAndPortletEdit
名前
SampleProfileSet1
説明
sample
複写するプロファイル・セットの選択
なし
12/156
2.プロファイル項目の作成
プロファイル・セットに以下の2プロファイル項目を設定します。
項目1
名前
current_value
プロンプト
現行値
UI タイプ
TextInput
幅
10
デフォルト値
400
実行時間
false
項目2
名前
target_value
プロンプト
目標値
UI タイプ
TextInput
幅
10
デフォルト値
900
実行時間
false
設定した画面は以下のようになります。
図 4 プロファイル設定エディター画面1
13/156
プロファイルの管理タブにて内容を確認すると、以下の図のようになります。
図 5 プロファイル設定エディター画面2
この設定により、作成するポートレットにてプロファイル(≒パラメータ)の設定が可能
になります。
14/156
<<sample1.model>>
3.sample1 モデルの作成
予め作成しておいた sample1 モデルを開き、ビルダーを追加していきます。
図 6
sample1 モデル
15/156
1.Page ビルダーの追加
Bullt Graph を表示する為のページを用意する必要があるので、Page ビルダーを追加しま
す。
設定値
名前
startPage
ページ・コンテンツ
(デフォルトのまま)
図 7 Page ビルダー設定画面
16/156
2.Bullet Graph ビルダーの追加
Bullet Graph を表示するためのビルダーを追加します。
設定値
bullet
名前
ページの場所
位置指定の方法
名前付きタグ上
ページ
startPage
タグ
namedTag
グラフ情報
タイトル
Bullet Graph のタイトル
グラフ・データ
状況開始値
0
色ソース
色ファミリー
状況ファミリー
キウイ・フルーツ
状況
状況名:状況 A
終了値:200
色:#ecefec
状況名:状況 B
終了値:500
色:#c7cec5
状況名:状況 C
終了値:1000
色:#a2ae9e
現行値
<プロファイル項目>
SampleProfileSet1:current_value
※プロファイル入力 -> プロファイル・セット名:
SampleProfileSet1
プロファイル項目名: curr
ent_value
目標値
<プロファイル項目>
SampleProfileSet1:target_value
※プロファイル入力 -> プロファイル・セット名:
SampleProfileSet1
et_value
グラフ・カスタマ
目盛りタイプ
数値
イズ
ラベル・フォーマ
###,##0 個
ット
拡張
main アクション
チェック
を生成
17/156
プロファイル項目名: targ
図 8
Bullet Graph 設定画面(その 1)
図 9
Bullet Graph 設定画面(その 2)
18/156
3.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet
ポートレットのタイトル
Bullet Graph とポートレット編集(※1)
ポートレットの短いタイトル
Bullet Graph とポートレット編集
デフォルト・ロケール
ja
プロファイル・セット
SampleProfileSet1: デフォルト編集で個々
のプロファイル値を表示(※2)
※1)ポータルサーバーにおいてポートレットの一覧表示を行った際に表示されるタイトルは、
「ポー
トレットのタイトル」の値となります。
※2)事前に、任意のビルダーでプロファイル・セットを利用していると、「プロファイル・セット」
の項目が表示されます。今回は、Bullet Graph ビルダーで利用しています。
図 10 Portlet Adapter ビルダー設定画面(一部)
19/156
4.1.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
ページに配置直後の表示モード
図 11 初期表示
編集モードでは、プロファイルとして設定した値が表示されていることが確認できます。
共用設定の編集(edit_defaults)モード
図 12 編集モード表示
値を変更すると、表示が変わることが確認できます。
パラメータ変更後の表示モード
図 13 変更後の表示
20/156
4.2
[レッスン 2]Status Page
Dashboard Framework が機能していることを確認する為に、Dashboard 用ビルダー単体
での動作確認をおこないます。外部から値を取り込まずに、値を直接指定して作成します。
もちろん、外部から取り込んだ値を設定することも可能です。
4.2.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_StatusPage
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: sample1(モデルタイプは空にする)
============================================================
<<sample1.model>>
sample1 モデルの編集
予め追加しておいた sample1 モデルにビルダーを追加します。
図 14 sample1 モデル
21/156
1.Status Page ビルダーを追加します。今回はオプションとして、「印刷機能」と「Excel
ファイルエクスポート機能」を有効にします。
設定値
status_page
名前
状況プロパ
望ましい傾向
上方向
ティー
状況オプション
状況 A, 上限/しきい値: 1000
状況 B, 上限/しきい値: 2000
状況 C, 上限/しきい値: 3000
現行値
2800
作成するペ
チャート・ページ
チェック
ージ
テーブル・ページ
チェック
main アクションを作成
はい
ページ・レ
ページ・レイアウト・モード
チャートとテーブルを別々のページに
イアウトお
ページ・ナビゲーション・タイ
タブ付きページ
よびナビゲ
プ
ーション
チャート・
チャート・スタイルの選択
カスタム・スタイルを指定
プロパティ
チャート・スタイル
/solutions/dashboard/chartstyles/Dial.x
ml
ー
チャートのタイトル
チャートのタイトル
値のフォーマット設定
###,##0 個
チャート凡例
凡例なし
チャート・フォーマット
PNG
テーブル・
目標の決定
別の値を使用
プロパティ
目標の値
3000
ア ク シ ョ
自動表示/非表示を有効にする
非チェック
ン・メニュ
ツールバー・ラベル
メニュー
ーのオプシ
Excel へのエクスポートを使用
チェック
ョン
可能にする
ー
Excel ツールチップ・テキスト
エクスポート
エクスポート・ファイル名
エクスポート.xls
ページの印刷を使用可能にする
チェック
印刷ツールチップ・テキスト
印刷
22/156
※ チ ャ ー ト の グ ラ フ を 半 円 に し た い 場 合 は 、「 チ ャ ー ト ・ ス タ イ ル 」 の 項 目 を
'/solutions/dashboard/chartstyles/DialChartStyle.xml'に変更します。
なおここではビルダーの使用方法を習得することが第一と考えているため、現行値や目標
値などを直接指定しています。一般的には外部(データベース、XML ファイル、EXCEL
ファイル等)から取得した値を設定します。
図 15 Status Page ビルダー設定画面(一部)
23/156
2.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet
ポートレットのタイトル
ステータスページ・ポートレット
ポートレットの短いタイトル
ステータスページ・ポートレット
デフォルト・ロケール
ja
図 16 Portlet Adapter ビルダー設定画面
24/156
3.チャート・スタイルファイルの変更
Web charts 系の画像はデフォルトでは日本語が扱えません。
「チャート・スタイル」で指定
した XML ファイルにおいて、日本語が扱えないフォントを使用する設定になっている為で
す。例えばチャート・スタイルが、/solutions/dashboard/chartstyles/Dial.xml の場合、'Arial
Unicode MS'という文字列を'MS UI Gothic'に置き換えることで日本語が正しく表示され
ます(上記のファイルの場合 6 箇所ある)。
変更例は以下の通りです。
【変更前】
<?xml version="1.0" encoding="UTF-8"?>
<dialChart dial="Full240" inside="#B3DBF6" hand="#F7E859" is3D="false" font="Arial Unico
de MS-11-bold"
foreground="#666666">
<axis scaleMin="0">
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
<titleStyle font="Arial Unicode MS-14-bold"/>
<groupStyle>
<format pattern="#,##0.###"/>
</groupStyle>
</axis>
<handStyle isInside="true" size="6" type="Bar" shadowOffset="0"/>
<knobStyle color="#999999" shadowOffset="0"/>
<dialStyle labelStyle="Inside " majorTickStyle="Rectangle" majorTickSize="2" mino
rTickSize="1" minorTicksPlacement="Outer"
dialSize="12" majorTickLength="6" minorTickLength="4" isAxisInside="true" f
illColor="#CCCCCC">
<outerBorder fillColor="#CCCCCC"/>
</dialStyle>
<dataLabels style="Pattern" background="null" font="Arial Unicode MS-13-bold" fo
reground="black" isMultiline="true">
<decoration foreColor="#333333"/>
<![CDATA[
$(value)
]]>
</dataLabels>
25/156
<legend equalCols="false" isVisible="false" font="Arial Unicode MS-10"/>
<elements drawOutline="false" drawShadow="true">
<series index="0">
<paint color="#CCFF99"/>
</series>
<series index="1">
<paint color="#FFCC99"/>
</series>
<series index="2">
<paint color="#FF99CC"/>
</series>
<![CDATA[
$(colLabel) ¥t
]]>
</elements>
<table cellSpacing="4" cellPadding="0"/>
<title placement="Left" font="Arial Unicode MS-12-bold">
<decoration style="None"/>
</title>
<popup background="#C8FFFFFF" foreground="#333333" font="Arial Unicode MS10"/>
<paint palette="Pastel" min="18"/>
</dialChart>
【変更後】
<?xml version="1.0" encoding="UTF-8"?>
<dialChart dial="Full240" inside="#B3DBF6" hand="#F7E859" is3D="false" font="MS UI Got
hic-11-bold"
foreground="#666666">
<axis scaleMin="0">
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
<titleStyle font="MS UI Gothic-14-bold"/>
<groupStyle>
<format pattern="#,##0.###"/>
26/156
</groupStyle>
</axis>
<handStyle isInside="true" size="6" type="Bar" shadowOffset="0"/>
<knobStyle color="#999999" shadowOffset="0"/>
<dialStyle labelStyle="Inside " majorTickStyle="Rectangle" majorTickSize="2" mino
rTickSize="1" minorTicksPlacement="Outer"
dialSize="12" majorTickLength="6" minorTickLength="4" isAxisInside="true" f
illColor="#CCCCCC">
<outerBorder fillColor="#CCCCCC"/>
</dialStyle>
<dataLabels style="Pattern" background="null" font="MS UI Gothic-13-bold" foreg
round="black" isMultiline="true">
<decoration foreColor="#333333"/>
<![CDATA[
$(value)
]]>
</dataLabels>
<legend equalCols="false" isVisible="false" font="MS UI Gothic-10"/>
<elements drawOutline="false" drawShadow="true">
<series index="0">
<paint color="#CCFF99"/>
</series>
<series index="1">
<paint color="#FFCC99"/>
</series>
<series index="2">
<paint color="#FF99CC"/>
</series>
<![CDATA[
$(colLabel) ¥t
]]>
</elements>
<table cellSpacing="4" cellPadding="0"/>
<title placement="Left" font="MS UI Gothic-12-bold">
<decoration style="None"/>
</title>
27/156
<popup background="#C8FFFFFF" foreground="#333333" font="MS UI Gothic-10"/
>
<paint palette="Pastel" min="18"/>
</dialChart>
28/156
4.2.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
図 17 チャート表示ページ
図 18 テーブル表示ページ
29/156
4.3
[レッスン 3]Excel と Status Indicator
Excel ファイルから取り込んだ値を Dashboard に表示します。さらにその値を基に Status
Indicator も表示します。外部から取り込んだ値を利用する場合は、モデルを 2 つ作成する
必要があります。
z
provider モデル: 外部から値を取り込むモデル
z
consumer モデル: provider モデルから値を受け取り、Dashboard に表示
「provider モデル内の Service Definition ビルダー」と「consumer モデル内の Service
Consumer ビルダー」が関連付けされることで、モデル間のアクセスが可能となっています。
Excel ファイル
provider モデル
consumer モデル
図:データの流れ
4.3.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_ExcelandStatusIndicator
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(モデルタイプは空にする)
モデル名: consumer(モデルタイプは空にする)
============================================================
<<<外部データの用意>>>
プロジェクト内の /WebContent 直下に Excel ファイル(売上げ集計.xls)をコピーしてお
きます。
30/156
<<<provider.model>>>
1.provider モデルへのビルダー追加
予め作成しておいた provider モデルへビルダーを追加していきます。
図 19 provider モデル
1.Service Definition ビルダーを追加します。
設定値
サービス名
provider1
サービスを公開
チェック
このビルダーを追加することにより、後述する consumer モデルからこの provider モデル
内のビルダーで定義されるメソッドを provider1/xxxxx という名前で利用することが出来
るようになります。
31/156
2.Excel Import ビルダーを追加します。
設定値
名前
getProductSalesSource
インポートするファイル
/売上げ集計.xls
スキーマを生成
Designer 再生成時
コンテンツ選択方法
自動
シート
集計
ヘッダー行あり
チェック
空の行を保持
非チェック
セルのフォーマット設定を保持
チェック
※Excel ファイルの中で「オートフィルタ」を使用していると、インポート時にシート名が
指定できません。つまりインポートに失敗します。また、シートの背景を指定した場合も
うまくいかない場合があります。
3.Service Operation ビルダーを追加します。
設定値
サービス
データ・サービス
provider1
操作プロ
操作名
getProductSales
パティー
呼び出すアクション
DataServices/getProductSalesSource/execute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
ここまでの設定で、Excel シートからデータを取り出す provider モデルの作成が終了しま
した。続いてこの provider モデルを呼び出し、データを表示させる consumer モデルの作
成に移ります。
32/156
<<<consumer.model>>>
2.consumer モデルへのビルダー追加
図 20 consumer モデル
1.Service Consumer ビルダーの追加。
設定値
名前
consumer1
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
この設定により、consumer モデル内部から provider モデルで設定された操作を利用する
ことが出来るようになります。
33/156
2.View & Form ビルダーの追加。
Excel シートのデータを表示するためのビルダーを追加します。View & Form ビルダーは
データの取得と表示を同時に行うビルダーです。
設定値
form1
名前
ビュー・ペ
ビュー・データ操作
DataServices/consumer1/getProductSales
ージ・オプ
ビュー・ページ HTML
/factory/pages/view_and_form_view.html
ション
HTML テンプレートファイル
/factory/html_templates/gridtable.html
ページ単位のデータ表示
チェック
ページあたりの行数
3
Main を生成
チェック
ページ送りボタンを追加する
チェック
拡張
3.「ビュー・ページ HTML」で指定したファイル(view_and_form_view.html)を開きます。
後で作成する Status Indicator の凡例ビルダーの配置場所を確保するために、HTML タグ
を追加します。(青字の箇所’area1’が追加分)
<html>
<HEAD>
</HEAD>
<body>
<span name="search_section" />
<form name="view_form" method="POST">
<div><span name="area1" /><div>
<table name="data" cellspacing="0" cellpadding="3" />
<span name="paging_buttons" /><br />
<span name="back_button" />
<span name="update_button" />
</form>
</body></html>
34/156
4.Status Indicator ビルダーの追加。
このビルダーを追加することによって、Excel シートからのデータに応じて Status を設定
することが可能になります。
設定値
名前
indicator1
フィールド
[form1_ViewPage]form1_ViewPage/ExcelContent/Row/今年度
標識のタイプ
イメージ標識
標識
イメージの場所
新規列とイメージを追加
オプ
新規列名
status
ショ
列の配置
最初の列
ン
状況オプション
状況:上昇
イメージ: /solutions/images/arrow_up_green.gif
状況: 同一
イメージ: /solutions/images/arrow_left_black.gif
状況: 下降
イメージ: /solutions/images/arrow_down_red.gif
標識
標識ロジック
値をしきい値と比較
ロジ
比較値
選択されたフィールド
ック
しきい値
状況: 上昇
比較: >
しきい値: 1000
状況: 同一
比較: =
しきい値: 1000
状況: 下降
比較: <
しきい値: 1000
図 21 Status Indicator ビルダー設定画面(一部)
35/156
5.Status Indicator の凡例ビルダーを追加します。
Status Indicator ビルダーを追加しただけでは、画面上に凡例(イメージ)は表示されない
ため、凡例を使うを設定するために Status Indicator の凡例ビルダーを追加します。
設定値
indicator_legend
名前
ページの場
位置指定の方法
名前付きタグ上
所
ページ
form1_ViewPage
タグ
area1
凡例タイトル
凡例:
基本 Status Indicator
indicator1
凡例内の状況オプション設定
状況オプション設定の変更
状況オプション設定
状況オプション:
説明テキスト:
表示/非表示:
上昇
上昇
表示
状況オプション:
説明テキスト:
表示/非表示:
同一
同一
表示
状況オプション:
説明テキスト:
表示/非表示:
下降
下降
表示
この設定により、値の状況に応じた凡例が表示されるようになります。
図 22 Status Indicator の凡例ビルダー設定画面(一部)
36/156
6.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet
ポートレットのタイトル
Status Indicator ポートレット
ポートレットの短いタイトル
Status Indicator ポートレット
デフォルト・ロケール
ja
ここまでの設定で、Excel シートからデータを取り込み、状況に応じてステータスをイメー
ジで表示するポートレットの作成が完了しました。
37/156
4.3.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
図 23 デフォルト表示画面
Excel シート中のデータが 3 行ずつ表示され、傾向(Status Indicator)が表示されること
がわかります。ページを遷移させると次のようになります。
図 24 次ページ表示
38/156
4.4
[レッスン 4]Excel と Web チャート
Excel ファイルから取り込んだ値を Dashboard に表示します。さらにその値を基に各グラ
フ(Web チャート)を表示します。外部から取り込んだ値を利用する場合は、モデルを 2 つ作
成する必要があります。
z
provider モデル: 外部から値を取り込むモデル
z
consumer モデル: provider モデルから値を受け取り、Dashboard に表示
「provider モデル内の Service Definition ビルダー」と「consumer モデル内の Service
Consumer ビルダー」が関連付けされることで、モデル間のアクセスが可能となっています。
Excel ファイル
provider モデル
consumer モデル
図:データの流れ
4.4.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_ExcelandWebCharts
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(モデルタイプは空にする)
モデル名: consumer(モデルタイプは空にする)
============================================================
<<<外部データの用意>>>
プロジェクト内の /WebContent 直下に Excel ファイル(売上げ集計.xls)をコピーしてお
きます。
39/156
<<<provider.model>>>
1.provider モデルへのビルダー追加
予め作成しておいた provider モデルへビルダーを追加していきます。
図 25 provider モデル
1.Service Definition ビルダーを追加します。
設定値
サービス名
provider1
サービスを公開
チェック
このビルダーを追加することにより、後述する consumer モデルからこの provider モデル
内のビルダーで定義されるメソッドを provider1/xxxxx という名前で利用することが出来
るようになります。
40/156
2.Excel Import ビルダーを追加します。
設定値
名前
getProductSalesSource
インポートするファイル
/売上げ集計.xls
スキーマを生成
Designer 再生成時
コンテンツ選択方法
自動
シート
集計
ヘッダー行あり
チェック
空の行を保持
非チェック
セルのフォーマット設定を保持
チェック
※Excel ファイルの中で「オートフィルタ」を使用していると、インポート時にシート名が
指定できません。つまりインポートに失敗します。また、シートの背景を指定した場合も
うまくいかない場合があります。
3.Service Operation ビルダーを追加します。
設定値
サービス
データ・サービス
provider1
操作プロ
操作名
getProductSales
パティー
呼び出すアクション
DataServices/getProductSalesSource/execute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
ここまでの設定で、Excel シートからデータを取り出す provider モデルの作成が終了しま
した。続いてこの provider モデルを呼び出し、データを表示させる consumer モデルの作
成に移ります。
41/156
<<<consumer.model>>>
2.consumer モデルへのビルダー追加
予め作成しておいた consumer モデルにグラフ表示のためのビルダーを追加します。
図 26 consumer モデル
1.Service Consumer ビルダーの追加
provider モデルに定義されている操作を、consumer モデルから実行するために、Service
consumer ビルダーを追加します。
設定値
名前
consumer1
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
42/156
2.Page ビルダーの追加
グラフを表示するためのページを作成する Page ビルダーを追加します。雛形の HTML は
全て削除して、新たに HTML を書き直します。
設定値
名前
startPage
ページ・コンテンツ
<html>
<body>
<h3>インポートした Excel ファイルを使ってテーブルやグラフを表
示</h3>
<div><span name="area_table" /></div>
<hr>
<div><span name="area_chart1" /></div>
<hr>
<div><span name="area_chart2" /></div>
<hr>
<div><span name="area_javascript" /></div>
</body>
</html>
3.Action List ビルダーの追加
今回はこの Action List を main 関数とします。名前は'main'である必要があります。
【アクションの内容】
(1)Excel ファイルから値を取得する処理を呼び出す
(2)先ほど作成した startPage ページを表示
設定値
main
名前
アクション
アクション・リスト1
DataServices/consumer1/getProductSales
アクション・リスト2
startPage
こ の ビ ル ダ ー で の 設 定 に よ り 、 Portlet が 実 行 さ れ た 場 合 、 ま ず
DataServices/consumer1/getProdictSales という操作が実行され、その後 startPage に遷
移することになります。
43/156
4.Data Page ビルダーの追加
Excel ファイルから取得した値をテーブルに表示するために Data Page ビルダーを追加し
ます。同様のビルダーに View & Form ビルダーがありますが、View & Form ビルダーは
ページまで作成するビルダーで、今回は利用せず、Data Page ビルダーを利用してデータ
を作り、Page ビルダーで作成したページに表示させる方法をとっています。
設定値
名前
dataPage1
変数
DataServices/consumer1/getProductSales/results
モデル内のページ
startPage
ページ・タイプ
HTML から推測
作成済みエ
データから UI を作成
チェック
レメントの
新規タグの場所
area_table
設定値
HTML テ ン プ レ ー
/factory/html_templates/gridtable.html
ト・ファイル
ラベルを生成
チェック
図 27 Data Page ビルダー設定画面
44/156
5.Web Charts - Enhanced ビルダーの追加
このビルダーにより、取得した値を基に棒グラフを表示する機能が追加されます。
設定値
chart1
名前
ページの場
位置指定の方法
名前付きタグ上
所
ページ
startPage
タグ
area_chart1
チャートス
チャート・タイプ
棒
タイルおよ
カスタム・スタイルを指
チェック
びデータ
定
スタイル・データ
/solutions/dashboard/chartstyles/BaseFrameCh
artStyle.xml
チャート・データ
${DataServices/consumer1/getProductSales/res
ults}
データ形式
データ・ソース・フォー
変更
マット
テーブル形式データ(Rowset/Row)
X 軸のタグ
商品名
列を組み込むまたは除外
すべての列を使用する
する
チャート・
チャートのタイトル
売上げ集計(棒グラフ)
プロパティ
イメージ・タイプ
PNG
ー
幅
600
高さ
400
チャートの 3D 表示
3D
チャート凡例を表示する
凡例を使用する
ポップアップ
MouseOver
なお、Web charts 系の画像はデフォルトでは日本語が扱えません。
「スタイル・データ」で指定した XML ファイルにおいて、日本語が扱えないフォントを使
用する設定になっている為です。例えばスタイル・データが、
/solutions/dashboard/chartstyles/BaseFrameChartStyle.xml
の場合、'Arial Unicode MS'という文字列を'MS UI Gothic'に置き換えることで日本語が正
しく表示されます(上記のファイルの場合 2 箇所ある)。変更例を載せておきます。
45/156
【変更前】
<!-Chart Style file accompanying ForcastByStageBase model.
-->
<frameChart font="Arial Unicode MS-11">
<frame yDepth="3" />
<xAxis>
<labelStyle orientation="Vertical" />
</xAxis>
<yAxis scaleMin="0">
<labelFormat style="Pattern" pattern="###,###" />
<parseFormat pattern="#,##0.###" />
</yAxis>
<legend placement="Right" />
<elements action="javascript:doChartClick('$(colLabel)', '$(rowLabel)', '$(colIndex)', '$(rowI
ndex)');" shapeSize="50" lineWidth="1" drawShadow="true" fixedWidth="1">
<morph morph="Grow" />
</elements>
<title font="Arial Unicode MS-12-bold">
<decoration style="None" />
</title>
<paint isVertical="true" min="47" max="83" />
</frameChart>
【変更後】
<!-Chart Style file accompanying ForcastByStageBase model.
-->
<frameChart font="MS UI Gothic-11">
<frame yDepth="3" />
<xAxis>
<labelStyle orientation="Vertical" />
46/156
</xAxis>
<yAxis scaleMin="0">
<labelFormat style="Pattern" pattern="###,###" />
<parseFormat pattern="#,##0.###" />
</yAxis>
<legend placement="Right" />
<elements action="javascript:doChartClick('$(colLabel)', '$(rowLabel)', '$(colIndex)', '$(rowI
ndex)');" shapeSize="50" lineWidth="1" drawShadow="true" fixedWidth="1">
<morph morph="Grow" />
</elements>
<title font="MS UI Gothic-12-bold">
<decoration style="None" />
</title>
<paint isVertical="true" min="47" max="83" />
</frameChart>
47/156
6.Client JavaScript ビルダーの追加
chart1 のスタイル・データ'/solutions/dashboard/chartstyles/BaseFrameChartStyle.xml'
において、棒グラフをクリックすると JavaScript 関数を呼び出すようになっています。
//一部抜粋
<elements action="javascript:doChartClick('$(colLabel)', '$(rowLabel)', '$(colIndex)', '$(rowI
ndex)');" shapeSize="50" lineWidth="1" drawShadow="true" fixedWidth="1">
<morph morph="Grow" />
</elements>
ただし、doChartClick という関数が定義されていないため、棒グラフをクリックした際、
JavaScript エラーが発生します。よって JavaScript 関数の doChartClick を定義する必要
があります。ここではブラウザのステータスバーに、選択した棒の名前を表示します。
設定値
名前
javascript1
場所のタイプ
明示的なページの場所
ページの場所
位置指定の方法
名前付きタグ上
ページ
startPage
タグ
area_javascript
スクリプト・ソース・タイプ
Builder 入力として明示的に指定
JavaScript
function doChartClick(var1, var2, var3, var4){
var moji = var2 + 'の' + var1;
window.status = moji;
}
48/156
7.Web Charts - Enhanced ビルダーの追加
このビルダーにより、取得した値を基に折れ線グラフを表示します。
設定値
chart2
名前
ページの
位置指定の方法
名前付きタグ上
場所
ページ
startPage
タグ
area_chart2
チャート
チャート・タイプ
折れ線
スタイル
カスタム・スタイ
チェック
およびデ
ルを指定
ータ
スタイル・データ
/solutions/dashboard/chartstyles/BaseLineChartStyle.
xml
チャート・データ
${DataServices/consumer1/getProductSales/results}
データ形
データ・ソース・
テーブル形式データ(Rowset/Row)
式変更
フォーマット
X 軸のタグ
商品名
列を組み込むまた
すべての列を使用する
は除外する
チ ャ ー
チャートのタイト
売上げ集計(折れ線グラフ)
ト・プロパ
ル
ティー
イメージ・タイプ
PNG
幅
600
高さ
400
チャートの 3D 表
3D
示
チャート凡例を表
凡例を使用する
示する
ポップアップ
MouseOver
棒グラフと同様に折れ線グラフ用のスタイル・データもデフォルトでは日本語が扱えませ
ん。例えばスタイル・データが、/solutions/dashboard/chartstyles/BaseLineChartStyle.xml
の場合、font 属性や<title>タグが存在しないので、追加する必要があります。変更例を載
せておきます。
49/156
【変更前】
<?xml version="1.0" encoding="UTF-8"?>
<frameChart autoAdjust="false" is3D="false">
<frame xDepth="3" yDepth="1" leftAxisPlacement="Back" isHStripVisible="true">
<background minColor="#FDFEF6"/>
</frame>
<xAxis>
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
</xAxis>
<yAxis scaleMin="0" scaleMax="2000">
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
<groupStyle>
<format pattern="#,##0.###"/>
</groupStyle>
</yAxis>
<legend placement="Right" valign="Bottom">
<decoration style="None"/>
</legend>
<elements place="Default" shape="Line" drawShadow="true">
<morph morph="Grow"/>
</elements>
</frameChart>
【変更後】
<?xml version="1.0" encoding="UTF-8"?>
<frameChart autoAdjust="false" is3D="false" font="MS UI Gothic-11">
<frame xDepth="3" yDepth="1" leftAxisPlacement="Back" isHStripVisible="true">
<background minColor="#FDFEF6"/>
</frame>
<xAxis>
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
50/156
</xAxis>
<yAxis scaleMin="0" scaleMax="2000">
<labelFormat pattern="#,##0.###"/>
<parseFormat pattern="#,##0.###"/>
<groupStyle>
<format pattern="#,##0.###"/>
</groupStyle>
</yAxis>
<legend placement="Right" valign="Bottom">
<decoration style="None"/>
</legend>
<elements place="Default" shape="Line" drawShadow="true">
<morph morph="Grow"/>
</elements>
<title font="MS UI Gothic-12-bold" />
</frameChart>
51/156
8.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet
ポートレットのタイトル
Web チャートポートレット
ポートレットの短いタイトル
Web チャートポートレット
デフォルト・ロケール
ja
ここまでの設定で Excel シートのデータから、表/棒グラフ/折れ線グラフを生成して表
示するポートレットが完成しました。
52/156
4.4.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
図 28 Web チャートポートレット表示(テーブル)
図 29 Web チャートポートレット表示(棒グラフ)
53/156
図 30 Web チャートポートレット表示(折れ線グラフ)
ここまでのレッスンで IBM WebSphere Portlet Factory/Dashboard Framework を用いて
・ステータスを表示するオブジェクト(Bullet Graph/ゲージチャート)を作成する。
・Excel シートからデータを取り出す。
・テーブルを作成する。
・グラフを表示する。
といったことを行えるようになりました。ここまでで基本的な機能としてはおおよそカバ
ーしています。次のレッスンからは、さらに細かい動作(例:データベース接続/ドリル
ダウンテーブル作成など)についてのレッスンとなります。
54/156
4.5
[レッスン 5]Database へのアクセス
このレッスンではデータベースのテーブルから取得したデータをページに表示します。
まずはデータベースアクセスの動作確認をするために単純なアプリケーションを作成しま
す。当レッスンで作成したプロジェクトを基に、
「Record List and Detail」、
「Summary and
Drilldown」、
「Hierarchy Drilldown」ビルダーを使ったレッスンも実施します。
外部から取り込んだ値を利用する場合は、モデルを 2 つ作成する必要があります。
z
provider モデル: 外部から値を取り込むモデル
z
consumer モデル: provider モデルから値を受け取り、Dashboard に表示
「provider モデル内の Service Definition ビルダー」と「consumer モデル内の Service
Consumer ビルダー」が関連付けされることで、モデル間のアクセスが可能となっています。
provider モデル
consumer モデル
データベース
図:データの流れ
4.5.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_DatabaseOperation
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(モデルタイプは空にする)
モデル名: consumer_base(モデルタイプは空にする)
============================================================
55/156
1..外部データの用意(データ・ソースの設定)
ここでは商品売上げを管理するサンプルを作成します。
あらかじめデータベース上にテーブルを作成し、WAS 側でデータ・ソースの設定を行って
おきます。(使用したデータベース製品: DB2 v9.1)なお、WebSphere Portal V6 導入時に
自動的に導入される Cloudscape での設定方法も後述します。
1.DB2 での設定
ここでは以下の通りに設定しました。
データベース: SAMPDB1
スキーマ: DB2ADMIN
テーブル: AMOUNT
JDBC 名: jdbc/SAMPDB1
テーブル AMOUNT の定義
列名
データ・タイプ
長さ
NULL 可
主キー
MAIN_CATEGORY
VARCHAR
80
×
○
SUB_CATEGORY
VARCHAR
80
×
○
PNAME
VARCHAR
80
×
○
UNITPRICE
INTEGER
-
×
×
QUANTITY
INTEGER
-
×
×
1. データベース/テーブルを作成します。DB2 コマンドを実行可能なディレクトリに移動し、
以下の SQL を実行します。
データベース SAMPDB1 にテーブル AMOUNT を作成する SQL
db2 connect to sampdb1 user db2admin using <password>
db2 CREATE TABLE AMOUNT ( MAIN_CATEGORY VARCHAR (80)
L , SUB_CATEGORY VARCHAR (80)
T NULL , UNITPRICE INTEGER
NOT NUL
NOT NULL , PNAME VARCHAR (80)
NOT NULL , QUANTITY INTEGER
ULL , PRIMARY KEY ( MAIN_CATEGORY, SUB_CATEGORY, PNAME)
db2 connect reset
56/156
NO
NOT N
)
2.テーブルにデータをインポートします。
テーブル AMOUNT にデータをインポート(25 レコード)
db2 connect to sampdb1 user db2admin using <password>
db2 "insert into AMOUNT values ('暖房器具','電気ストーブ','遠赤外線シーズヒーター',17800,2)"
db2 "insert into AMOUNT values ('暖房器具','電気ストーブ','遠赤外線メタルヒーター',7980,4)"
db2 "insert into AMOUNT values ('暖房器具','電気ストーブ','赤外線ヒーター',3980,3)"
db2 "insert into AMOUNT values ('暖房器具','石油ストーブ','業務用石油ストーブ',79800,1)"
db2 "insert into AMOUNT values ('暖房器具','石油ストーブ','におい吸収式石油ストーブ',8980,6)"
db2 "insert into AMOUNT values ('暖房器具','石油ストーブ','電動給油ポンプ',1880,2)"
db2 "insert into AMOUNT values ('暖房器具','ホットカーペット','ホットカーペット(1 畳相当)',4980,
2)"
db2 "insert into AMOUNT values ('暖房器具','ホットカーペット','ホットカーペット(3 畳相当)',8980,
1)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','ショルダー掃除機','サイクロン式掃除機',1280
0,10)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','ショルダー掃除機','紙パック式掃除機',11800,
3)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','ハンドクリーナー','充電式ウエット&ドライク
クリーナー',4170,5)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','ハンドクリーナー','パソコン用ミニクリーナー
',1280,2)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','掃除用品','掃除用モップ',340,5)"
db2 "insert into AMOUNT values ('掃除機・クリーナー','掃除用品','掃除用クロス',560,10)"
db2 "insert into AMOUNT values ('調理家電','電動ポット','マイコン沸騰ジャーポット(3.0L)',15800,
1)"
db2 "insert into AMOUNT values ('調理家電','電動ポット','マイコン沸騰ジャーポット(1.0L)',4280,4)
"
db2 "insert into AMOUNT values ('調理家電','カセットコンロ','カセットコンロ(小型)',2980,3)"
db2 "insert into AMOUNT values ('調理家電','カセットコンロ','カセットコンロ(大型)',5980,2)"
db2 "insert into AMOUNT values ('調理家電','ミキサー・ジューサー','ジュースミキサー',3980,3)"
db2 "insert into AMOUNT values ('調理家電','ミキサー・ジューサー','業務用ミキサー',32300,1)"
db2 "insert into AMOUNT values ('洗濯機','二槽式洗濯機','二槽式洗濯機(8kg)',60600,1)"
db2 "insert into AMOUNT values ('洗濯機','二槽式洗濯機','二槽式洗濯機(3.5kg)',18600,3)"
db2 "insert into AMOUNT values ('洗濯機','全自動洗濯機','全自動洗濯機(4.2kg)',23800,2)"
db2 "insert into AMOUNT values ('洗濯機','全自動洗濯機','全自動洗濯機(5.5kg)',39800,3)"
57/156
db2 "insert into AMOUNT values ('洗濯機','全自動洗濯機','簡易乾燥機能付き洗濯機(6kg)',52800,2)"
db2 connect reset
3. これでデータベースの準備は終了しました。後は WebSphere Application Server の管理
コンソールからデータ・ソースの設定を行うことにより、開発するポートレットからデー
タベースへのアクセスが可能になります。設定方法については、WebSphere Application
Server の InfoCenter を参照してください。
58/156
2.Cloudscape での設定:
ここでは以下の通りに設定しました。
データベース: SAMPDB1
テーブル: AMOUNT
JDBC 名: jdbc/SAMPDB1
テーブル AMOUNT の定義
列名
データ・タイプ
長さ
NULL 可
主キー
MAIN_CATEGORY
VARCHAR
80
×
○
SUB_CATEGORY
VARCHAR
80
×
○
PNAME
VARCHAR
80
×
○
UNITPRICE
INTEGER
-
×
×
QUANTITY
INTEGER
-
×
×
1. コマンドラインから Cloudscpae のツールである ij を起動します。ij を起動するには以
下のディレクトリに移動した後、ij.bat を実行します。
(注:ij を利用する場合、WebSphere
Portal/WebSphere Applicatoin Server を停止しておく必要があります)
<WAS インストールディレクトリ>¥cloudscape¥bin¥embedded
2. データベースを作成して接続します。作成するには以下のコマンドを ij から実行します。
ij> connect ‘SAMPLEDB1;create=true;’
3. テーブル AMOUNT を作成します。
データベース SAMPDB1 にテーブル AMOUNT を作成する SQL
ij>CREATE TABLE AMOUNT ( MAIN_CATEGORY VARCHAR (80)
SUB_CATEGORY VARCHAR (80)
NULL , UNITPRICE INTEGER
NOT NULL ,
NOT NULL , PNAME VARCHAR (80)
NOT NULL , QUANTITY INTEGER
L , PRIMARY KEY ( MAIN_CATEGORY, SUB_CATEGORY, PNAME)
59/156
NOT
NOT NUL
) ;
4. テーブル AMOUNT にデータをインポートします。
テーブル AMOUNT にデータをインポート(25 レコード)
ij> insert into AMOUNT values ('暖房器具','電気ストーブ','遠赤外線シーズヒーター',17800,2);
ij> insert into AMOUNT values ('暖房器具','電気ストーブ','遠赤外線メタルヒーター',7980,4);
ij> insert into AMOUNT values ('暖房器具','電気ストーブ','赤外線ヒーター',3980,3);
ij> insert into AMOUNT values ('暖房器具','石油ストーブ','業務用石油ストーブ',79800,1);
ij> insert into AMOUNT values ('暖房器具','石油ストーブ','におい吸収式石油ストーブ',8980,6);
ij> insert into AMOUNT values ('暖房器具','石油ストーブ','電動給油ポンプ',1880,2);
ij> insert into AMOUNT values ('暖房器具','ホットカーペット','ホットカーペット(1 畳相当)',4980,2);
ij> insert into AMOUNT values ('暖房器具','ホットカーペット','ホットカーペット(3 畳相当)',8980,1);
ij> insert into AMOUNT values ('掃除機・クリーナー','ショルダー掃除機','サイクロン式掃除機',12800,
10);
ij> insert into AMOUNT values ('掃除機・クリーナー','ショルダー掃除機','紙パック式掃除機',11800,3);
ij> insert into AMOUNT values ('掃除機・クリーナー','ハンドクリーナー','充電式ウエット&ドライク
クリーナー',4170,5);
ij> insert into AMOUNT values ('掃除機・クリーナー','ハンドクリーナー','パソコン用ミニクリーナー',
1280,2);
ij> insert into AMOUNT values ('掃除機・クリーナー','掃除用品','掃除用モップ',340,5);
ij> insert into AMOUNT values ('掃除機・クリーナー','掃除用品','掃除用クロス',560,10);
ij> insert into AMOUNT values ('調理家電','電動ポット','マイコン沸騰ジャーポット(3.0L)',15800,1);
ij> insert into AMOUNT values ('調理家電','電動ポット','マイコン沸騰ジャーポット(1.0L)',4280,4);
ij> insert into AMOUNT values ('調理家電','カセットコンロ','カセットコンロ(小型)',2980,3);
ij> insert into AMOUNT values ('調理家電','カセットコンロ','カセットコンロ(大型)',5980,2);
ij> insert into AMOUNT values ('調理家電','ミキサー・ジューサー','ジュースミキサー',3980,3);
ij> insert into AMOUNT values ('調理家電','ミキサー・ジューサー','業務用ミキサー',32300,1);
ij> insert into AMOUNT values ('洗濯機','二槽式洗濯機','二槽式洗濯機(8kg)',60600,1);
ij> insert into AMOUNT values ('洗濯機','二槽式洗濯機','二槽式洗濯機(3.5kg)',18600,3);
ij> insert into AMOUNT values ('洗濯機','全自動洗濯機','全自動洗濯機(4.2kg)',23800,2);
ij> insert into AMOUNT values ('洗濯機','全自動洗濯機','全自動洗濯機(5.5kg)',39800,3);
ij> insert into AMOUNT values ('洗濯機','全自動洗濯機','簡易乾燥機能付き洗濯機(6kg)',52800,2);
これで Cloudscape でのデータ設定は終了しました。後は WebSphere Appcation Server の
管理コンソールから、データ・ソースの設定を行うことで、データベースへのアクセスの
準備が出来たことになります。手順については、WebSphere Application Server の
InfoCenter 等をご確認ください。
60/156
<<provider.model>>
2.provider モデルへのビルダー追加
WAS 上でのデータ・ソースの設定が完了したので、続いてデータ・ソースから実際のデー
タを取り出す provider モデルにビルダーを追加していきます。予め作成しておいた
provider モデルを開きます。
図 31 provider モデル
61/156
1.Service Definition ビルダーの追加
設定値
サービス名
provider
サービスを公開
チェック
後ほど作成する consumer_base モデルからの操作を許可するために、provider というサー
ビス名でサービスを定義します。
図 32
Service Definition ビルダー設定画面
62/156
2.SQL Call ビルダーの追加
データ・ソースに接続し、データを取得するための SQL ステートメントを実行するための
SQL Call ビルダーを設定します。このビルダーは、接続先のデータ・ソースおよび SQL
ステートメントを設定することにより、他のモデルから DB への Query を実施することを
可能にします。
設定値
名前
getAllRecordsSource
SQL DataSource
jdbc/SAMPDB1
データベース・エ
SQL ステートメ
select
クスプローラー
ント
PNAME, UNITPRICE, QUANTITY
from
MAIN_CATEGORY, SUB_CATEGORY,
AMOUNT
ここで設定する SQL DataSource は前節で設定した WAS のデータ・ソース名となります。
図 33 SQL Call ビルダー設定画面
63/156
3.Service Operation ビルダーの追加
consumer_base モデルから SQL Call ビルダーで定義した操作を呼び出すための操作名等
の設定を行います。
設定値
サービス操
データ・サービス
provider
作プロパテ
操作名
getAllRecords
ィー
呼び出すアクション
DataServices/getAllRecordsSource/execute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
図 34
Service Operation ビルダー設定画面
ここまでの設定で、データベースに WAS のデータ・ソースを利用して接続し、テーブルの
データを取得するための provider モデルの作成が終了しました。このモデルはこのレッス
ンだけではなく、続くレッスンでも利用します。
64/156
<<consumer_base.model>>
3.consumer_base モデルへのビルダー追加
前節で作成した provider モデルが動作していることを確認するために、簡単なテーブル表
示用の Portlet を作成します。ここでは View & Form ビルダーでページを作成し、そのペ
ージに表を表示します。
図 35 consumer_base モデル
65/156
1.Service Consumer ビルダーの追加
前節で設定した provider モデルにアクセスするための設定を行います。
設定値
名前
consumer_base
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
図 36
Service Consumer ビルダー設定画面
66/156
2.View & Form ビルダーの追加
provider モデルの操作(getAllRecords)を使って取り出したデータを表示するためのテーブ
ル、およびテーブルを配置するページを作成するビルダーを追加します。このビルダーは
テーブルを作成するだけでなく、自動的にテーブルを配置するページまで作成します。
設定値
form1
名前
ビュー・ペ
ビュー・データ操作
DataServices/consumer_base/getAllRecords
ージ・オプ
ビュー・ページ HTML
/factory/pages/view_and_form_view.html
ション
HTML テンプレートファイル
/factory/html_templates/gridtable.html
ページ単位のデータ表示
チェック
ページあたりの行数
10
Main を生成
チェック
ページ送りボタンを追加する
チェック
拡張
図 37 View&Form ビルダー設定画面(一部)
67/156
3.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet
ポートレットのタイトル
DB 基本アクセスポートレット
ポートレットの短いタイトル
DB 基本アクセスポートレット
デフォルト・ロケール
ja
これで、データベースから WAS のデータ・ソースを利用してデータを取得し、ポートレッ
ト上にテーブルとして表示させるポートレットが完成しました。
4.5.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
図 38 DB 基本アクセスポートレット表示
以上でこのレッスンは終了です。続いてここで作成した provider を利用した Portelt を作
成するレッスンに進みます。
68/156
4.6
[レッスン 6]Database と Record List and Detail
このレッスンを行う前に「[レッスン 5]Database へのアクセス」を実行しておく必要が
あ り ま す 。「[ レ ッ ス ン 5 ] Database へ の ア ク セ ス 」 の 際 に 作 成 し た プ ロ ジ ェ ク ト
「DF_DatabaseOperation」の provider モデルを再利用する為です。
consumer モデルは新たに作成します。consumer モデルの中で Record List and Detail ビ
ルダーを作成します。Record List and Detail ビルダーは最初に一覧を表示します。一覧の
項目(ここでは商品名)をクリックすると、選択された項目の個別情報が表示されます。
データが階層になっている場合には適していません。データが階層になっていて、複数の
レベルのドリルダウン(詳細化)が必要な場合は、このビルダーの代わりに Hierarchy
Drilldown ビルダーを使います。Hierarchy Drilldown ビルダーについては後のレッスンで
利用します。
4.6.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_DatabaseOperation(作成済み)
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(作成済み)
モデル名: consumer_recordlist(モデルタイプは空にする)
============================================================
69/156
<<consumer_recordlist.model>>
1.consumer_recordlist モデルへのビルダー追加
予め作成しておいた consumer_recordlist モデルに、テーブルを表示するためのビルダーを
追加します。自動的に作成されるテーブルは一覧表示および詳細表示テーブルとなります。
図 39 consumer_recordlist モデル
1.Service Consumer ビルダーを追加します。
設定値
名前
consumer_recordlist
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
70/156
2.Record List and Detail ビルダーの追加
データ表示用テーブル/詳細表示用テーブルを追加するビルダーを設定します。
設定値
recordlist1
名前
作成するページ
レコード・リス
レコード・リスト・ページ
チェック
レコード・詳細ページ
チェック
main アクションを生成
はい
データをロードするアクション
DataServices/consumer_recordlist
/getAllRecords
ト・プロパティ
詳細リンク列
PNAME
ページのタイトル
レコードリスト
HTML テンプレート・ファイル
/solutions/dashboard/templates/gr
idtable.htm
表示スタイル
ページ単位のリスト
ページあたりの行数
10
範囲テキストフォーマット
{start} - {end} of {count}
レコード詳細プ
レコード詳細ソース
レコード・リスト内の選択行
ロパティー
ページのタイトル
詳細
図 40 Record List and Detail ビルダー設定画面(一部)
71/156
3.Data Column Modifier ビルダーの追加
一覧表示の際、テーブルの各項目(ラベル)を日本語として表示するために、Data Column
Modifier ビルダーを追加します。
設定値
名前
column_modifier_list
コンテナー・
[recordlist1RecordListPage]recordlist1DataPageForRecordListPage/Ro
フィールド
wSet/Row
列を管理
チェック
列1
列名: MAIN_CATEGORY
状況: 表示
列見出し: メインカテゴリ
列2
列名: SUB_CATEGORY
状況: 表示
列見出し: サブカテゴリ
列3
列名: PNAME
状況: 表示
列見出し: 商品名
列4
列名: UNITPRICE
状況: 非表示
列見出し: UNITPRICE
列5
列名: QUANTITY
状況: 非表示
列見出し: QUANTITY
列を表示する/しないの設定を下図のように行います。
図 41 Data Column Modifier 設定画面(一部)
72/156
4.Data Column Modifier ビルダーの追加(その2)
詳細表示の際、テーブルの各項目(ラベル)を日本語として表示するために、Data Column
Modifier ビルダーを追加します。
設定値
名前
column_modifier_detail
コンテナー・
[recordlist1RecordDetailPage]recordlist1DataPageForRecordDetailPag
フィールド
e/Row
列を管理
チェック
列1
列名: MAIN_CATEGORY
状況: 表示
列見出し: メインカテゴリ
列2
列名: SUB_CATEGORY
状況: 表示
列見出し: サブカテゴリ
列3
列名: PNAME
状況: 表示
列見出し: 商品名
列4
列名: UNITPRICE
状況: 表示
列見出し: 単価
列5
列名: QUANTITY
状況: 表示
列見出し: 販売数
列を表示する/しないの設定を下図のように行います。
図 42 Data Column Modifier 設定画面(一部)
73/156
5.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet2
ポートレットのタイトル
Record List and Detail ポートレット
ポートレットの短いタイトル
Record List and Detail ポートレット
デフォルト・ロケール
ja
これでデータベースからデータを取得して表示するポートレットが作成されました。
74/156
4.6.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
一覧表示
図 43 Record List and Detail ポートレット一覧表示
商品名列の商品のリンクを押すと以下の詳細画面に表示が切り替わります。
個別情報表示
図 44 Record List and Detail ポートレット詳細表示
75/156
4.7
[レッスン 7]Database と Hierarchy Drilldown
このレッスンを行う前に「[レッスン 5]Database へのアクセス」を実行しておく必要が
あ り ま す 。「[ レ ッ ス ン 5 ] Database へ の ア ク セ ス 」 の 際 に 作 成 し た プ ロ ジ ェ ク ト
「DF_DatabaseOperation」の provider モデルを再利用する為です。
consumer モデルは新たに作成します。consumer モデルの中で Hierarchy Drilldown ビル
ダーを作成します。データが階層になっていて、複数のレベルのドリルダウン(詳細化)
が必要な場合に適しています。例えば商品カタログのように、メインカテゴリ>サブカテゴ
リ>商品名とドリルダウンしたり、ロールアップ(上の階層に戻ったり)します。
このレッスンでは、データは 3 階層になっています。
メインカテゴリ > サブカテゴリ > 商品一覧
というようなドリルダウンを実現する為に、既存の provider モデルに SQL を 3 つ追加作
成します。
z
メインカテゴリ取得用 SQL
z
サブカテゴリ取得用 SQL
z
商品一覧用 SQL
4.7.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_DatabaseOperation(作成済み)
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(作成済み)
モデル名: consumer_hierarchy(モデルタイプは空にする)
============================================================
注)プロジェクトはレッスン5で使用したものをそのまま使いますが、後のレッスンでも
同じプロジェクトを利用するため、場合によっては一度プロジェクトをコピーして名前変
更をして利用する方法をとってください。
76/156
<<provider.model>>
1.provider モデルの拡張
レッスン5で作成した provider モデルを拡張します。
図 45 provider モデル(拡張済み)
上図において赤枠で囲まれた部分のビルダーを追加していきます。
77/156
1.SQL Call ビルダーの追加
メインカテゴリ取得用 SQL を作成する為に、SQL Call ビルダーを追加します。
設定値
名前
getMainCategorySource
SQL DataSource
jdbc/SAMPDB1
データベース・エ
SQL ステートメ
select MAIN_CATEGORY, sum(UNITPRICE *
クスプローラー
ント
QUANTITY) as
TOTAL from AMOUNT grou
p by MAIN_CATEGORY
図 46 SQL Call ビルダー設定画面(メインカテゴリ取得)
78/156
2.Service Operation ビルダーの追加
追加した SQL Call を実行する操作を追加します。
設定値
サービス操
データ・サービス
provider
作プロパテ
操作名
getMainCategory
ィー
呼び出すアクション
DataServices/getMainCategorySource/exe
cute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
図 47
Service Operation ビルダー設定画面(メインカテゴリ取得)
79/156
3.SQL Call ビルダーの追加
サブカテゴリ取得用 SQL を作成する為に、SQL Call ビルダーを追加します。
設定値
名前
getSubCategorySource
SQL DataSource
jdbc/SAMPDB1
データベー
SQL ステートメ
select SUB_CATEGORY, sum(UNITPRICE * QUAN
ス・エクス
ント
TITY) as TOTAL from AMOUNT
where
MAIN_C
プローラー
ATEGORY = ? group by
SUB_CATEGORY
パラメーター・バインディング
自動(XML 変数の作成)
パラメータ
位置
1
ー
方向
入力
JDBC 型キャスト
自動
値または設定
${Variables/getSubCategorySourceInputs/Parameter1
Value}
ここでは、SQL ステートメント中にパラメータ・マーカー’?’を設定し、そのマーカーに
${Variables/getSubCategorySourceInputs/Parameter1Value} という変数で示される値を
設定しています。
図 48 SQL Call ビルダー設定画面(サブカテゴリ取得)
80/156
4.Service Operation ビルダーの追加
追加した SQL Call を実行する操作を追加します。
設定値
サービス
データ・サービス
provider
操作プロ
操作名
getSubCategory
パティー
呼び出すアクション
DataServices/getSubCategorySource/execute
操作入力
入力構造処理
入力スキーマを指定
入力スキーマ
getSubCategorySourceInputs/getSubCategorySource
Inputs
入力フィールド・マ
自動
ッピング
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マ
自動
ッピング
図 49
Service Operation ビルダー設定画面(サブカテゴリ取得)
81/156
5.SQL Call ビルダーの追加
商品一覧用 SQL を作成する為に、SQL Call ビルダーを追加します。
設定値
名前
getItemsInCategorySource
SQL DataSource
jdbc/SAMPDB1
データベー
SQL ステートメ
select PNAME, UNITPRICE, QUANTITY, (UNITPR
ス・エクス
ント
ICE * QUANTITY) as TOTAL from
AMOUNT wh
ere MAIN_CATEGORY = ? AND SUB_CATEGORY
プローラー
= ?
パラメーター・バインディング
自動(XML 変数の作成)
パラメータ
位置
1
ー1
方向
入力
JDBC 型キャスト
自動
値または設定
${Variables/getItemsInCategorySourceInputs/Paramet
er1Value}
パラメータ
位置
2
ー2
方向
入力
JDBC 型キャスト
自動
値または設定
${Variables/getItemsInCategorySourceInputs/Paramet
er2Value}
ここではパラメータ・マーカーが2つ設定されていますので、パラメータとしては2つ設
定します。
82/156
図 50 SQL Call ビルダー設定画面(アイテム)
上図の青点線で囲まれた部分に、SQL ステートメントのパラメータ・マーカー部分に代入
する変数を設定します。
83/156
6.Service Operation ビルダーの追加
追加した SQL Call を実行する操作を追加します。
設定値
サービス
データ・サービス
provider
操作プロ
操作名
getItemsInCategory
パティー
呼び出すアクション
DataServices/getItemsInCategorySource/execute
操作入力
入力構造処理
入力スキーマを指定
入力スキーマ
getItemsInCategorySourceInputs/getItemsInCategor
ySourceInputs
入力フィールド・マ
自動
ッピン
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マ
自動
ッピング
図 51
Service Operation ビルダー設定画面(アイテム)
84/156
<<consumer_hierarchy.model>>
2.consumer_hierarchy モデルへのビルダー追加
provider モデルで取得したデータをドリルダウン形式で表示するモデルを作成します。
定義した操作の結果を表示する部分を作成することになります。
図 52 consumer_hierarchy モデル
1.Service Consumer ビルダーの追加
provider で定義した操作を利用するために Service Consumer ビルダーを追加します。
設定値
名前
consumer_hierarchy
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
85/156
2.Variable ビルダーの追加(その1)
ドリルダウン時に選択したメインカテゴリを記憶しておく為の変数をセットします。まず
はメインカテゴリを記憶しておく変数を定義します。
設定値
名前
varMain
タイプ
String
初期値
(空のままにしておきます)
図 53 Variable ビルダー設定画面
3.Variable ビルダーの追加
続いてサブカテゴリを記憶しておく為の変数を定義します。
設定値
名前
varSub
タイプ
String
初期値
(空のままにしておきます)
86/156
4.Hierarchy Drilldown ビルダーの追加
MainCategory > SubCategory > Product の 3 階層のページを作成する為に、Hierarchy
Drilldown ビルダーを追加します。まずページを3つ作成し、後ほど追加修正を行います。
設定値
名前
hierarchy1
main アクションを作成
はい
アクション
ページ
MainCategory
フロー(そ
インポートするページ
/solutions/dashboard/hierarchydrilldown.html
の1)
ロードするアクション
<とりあえず空白のまま。後で設定します>
ページ・データ
DataServices/consumer_hierarchy/getMainCat
egory/results
「ドリルダウン・リン
MAIN_CATEGORY
ク」フィールド
Breadcrumb のテキスト
メインカテゴリ
アクション
ページ
SubCategory
フロー(そ
インポートするページ
/solutions/dashboard/hierarchydrilldown.html
の2)
ロードするアクション
<とりあえず空白のまま。後で設定します>
ページ・データ
DataServices/consumer_hierarchy/getSubCate
gory/results
「ドリルダウン・リン
SUB_CATEGORY
ク」フィールド
Breadcrumb のテキスト
サブカテゴリ
アクション
ページ
Product
フロー(そ
インポートするページ
/solutions/dashboard/hierarchydrilldown.html
の3)
ロードするアクション
<とりあえず空白のまま。後で設定します>
ページ・データ
DataServices/consumer_hierarchy/getItemsInC
ategory/results
「ドリルダウン・リン
(空白のままにしておきます)
ク」フィールド
Breadcrumb のテキスト
商品一覧
※このビルダーのスクリーンショットは、後述する追加修正の説明時に載せてあります。
図 57/図 58/図 59 が該当しますので参照してください。
87/156
5.Action List ビルダーの追加(その1)
ページを表示する際のアクションを定義する為に、Action List ビルダーを追加します。
【アクションの内容】
(1)メインカテゴリ取得用 SQL を実行します。
設定値
actionGetMainCategory
名前
アクション
アクション・リスト
DataServices/consumer_hierarchy/getMainCategory
図 54 Action List ビルダー設定画面(メインカテゴリ用)
上図において青点線で囲まれた部分にアクションを定義します。
このアクションは、ポートレットを表示した際に最初に実行されるアクションです。
88/156
6.Action List ビルダーの追加(その2)
メインカテゴリをドリルダウン時のアクションを定義します。
【アクションの内容】
(1)選択したメインカテゴリを変数 varMain に代入します。
(2)サブカテゴリ取得用 SQL の入力引数に、変数 varMain の値を代入します。
(3)サブカテゴリ取得用 SQL を実行します。
設定値
actionGetSubCategory
名前
アクショ
ア ク シ ョ
Assignment!Variables/varMain=${Variables/hierarchy1_Mai
ン
ン・リスト1
nCategory_SelectedRowData/Row/MAIN_CATEGORY}
ア ク シ ョ
Assignment!DataServices/consumer_hierarchy/getSubCateg
ン・リスト2
ory/inputs/getSubCategorySourceInputs/Parameter1Value=
${Variables/varMain}
ア ク シ ョ
DataServices/consumer_hierarchy/getSubCategory
ン・リスト3
図 55 Action List ビルダー設定画面(サブカテゴリ用)
青点線枠内にアクションの設定をします。1つ目のアクションについては、赤枠内のボタ
ンを押し、Special>Assignment を選択した後、ソース/ターゲットを Variablers/varMain 、
${Variables/hierarchy1_MainCategory_SelectedRowData/Row/MAIN_CATEGORY } と
セットすることで設定します。2つ目についても同様の手段で行います。
89/156
7.Action List ビルダーの追加(その3)
サブカテゴリをドリルダウン時のアクションを定義します。
【アクションの内容】
(1)選択したサブカテゴリを変数 varSub に代入します。
(2)商品一覧用 SQL の入力引数に、変数 varMain の値を代入します。
(3)商品一覧用 SQL の入力引数に、変数 varSub の値を代入します。
(4)商品一覧用 SQL を実行します。
設定値
actionGetItem
名前
アクション
アクション・リ
Assignment!Variables/varSub=${Variables/hierarchy1_S
スト1
ubCategory_SelectedRowData/Row/SUB_CATEGORY}
アクション・リ
Assignment!DataServices/consumer_hierarchy/getItemsI
スト2
nCategory/inputs/getItemsInCategorySourceInputs/Para
meter1Value=${Variables/varMain}
アクション・リ
Assignment!DataServices/consumer_hierarchy/getItemsI
スト3
nCategory/inputs/getItemsInCategorySourceInputs/Para
meter2Value=${Variables/varSub}
アクション・リ
DataServices/consumer_hierarchy/getItemsInCategory
スト4
図 56 Action List ビルダー設定画面(商品一覧用)
90/156
8.Hierarchy Drilldown ビルダー(hierarchy1)への設定追加
「ロードするアクション」に先ほど作成した Action List をそれぞれ割り当てます。
追加設定値
ページ:MainCateg
ロードするアクション
(Methods)actionGetMainCategory
ロードするアクション
(Methods)actionGetSubCategory
ロードするアクション
(Methods)actionGetItems
ory
ページ:SubCategor
y
ページ:Product
実際の設定画面は以下のようになります。
図 57 Hierarchy Drilldown ビルダー設定画面1
上図は MainCategory ページの設定画面です。青点線枠内がページに関連する設定項目で
す。
91/156
図 58 Hierarchy Drilldown ビルダー設定画面 2
図 59 Hierarchy Drilldown ビルダー設定画面 3
92/156
9.Data Field Modifier ビルダーの追加
TOTAL(合計金額)と UNITPRICE(単価)の書式を変更(3 桁ごとにカンマを表示)す
る為に、Data Field Modifier ビルダーを追加します。
設定値
名前
field_modifier
フィールド・セレクター・ツール
名前で選択
フィー
変更するフィールドの
[MainCategory]MainCategory/RowSet/Row/TOTAL
ルド
リスト
[SubCategory]SubCategory/RowSet/Row/TOTAL
[Product]Product/RowSet/Row/TOTAL
[Product]Product/RowSet/Row/UNITPRICE
フォー
フォーマッター・クラス
ndardFormatter
マット
設定
com.bowstreet.builders.webapp.pageautomation.Sta
フォーマット式
NumberFormat(FormatString)
図 60 Data Field Modifoer ビルダー設定画面(一部)
93/156
10.Data Hierarchy Modifier ビルダーの追加
テーブルの各項目(ラベル)を日本語として表示するために、Data Hierarchy Modifier ビ
ルダーを追加します。
設定値
名前
hierarchy_modifier
フィールド・セレクター・ツ
名前で選択
ール
フィール
変更されるグル
[MainCategory]MainCategory/RowSet/Row
ド
ープのリスト
[SubCategory]SubCategory/RowSet/Row
[Product]Product/RowSet/Row
名前: MAIN_CATEGORY
状況: 表示
ラベル: メインカテゴリ
名前: SUB_CATEGORY
状況: 表示
ラベル: サブカテゴリ
名前: PNAME
状況: 表示
ラベル: 商品名
名前: UNITPRICE
状況: 表示
ラベル: 単価
名前: QUANTITY
状況: 表示
ラベル: 販売数
名前: TOTAL
状況: 表示
ラベル: 売上げ
図 61 Data Hierarchy Modifier ビルダー設定画面(一部)
ラベルに関する設定を上図の点線枠内に表示する順番に設定します(ドラッグ&ドロップ
で変更できます)。
94/156
11. Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet3
ポートレットのタイトル
Hierarchy Drilldown ポートレット
ポートレットの短いタイトル
Hierarchy Drilldown ポートレット
デフォルト・ロケール
ja
95/156
4.7.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます
図 62 Hierarchy Drilldown ポートレット(初期表示)
メインカテゴリ列のリンクをクリックすると、一段階ドリルダウンします。
図 63 Hierarchy Drilldown ポートレット(サブカテゴリ表示)
96/156
さらにサブカテゴリ列のリンクをクリックするともう一段階ドリルダウンして、商品一覧
のテーブルが表示されます。
図 64 Hierarchy Drilldown ポートレット(商品一覧表示)
このようにメインカテゴリ->サブカテゴリ->さらに下のカテゴリのような構造をしている
データを表示する際に、Hierarchy Drilldown ポートレットは適しています。また表の上部
にある Beardcrumb(パンくず)のリンクをクリックすると、いつでもそのレベルの表示が
できます。
97/156
4.8
[レッスン 8]Database と Summary and Drilldown
このレッスンを行う前に「[レッスン 5]Database へのアクセス」を実行しておく必要が
あ り ま す 。「[ レ ッ ス ン 5 ] Database へ の ア ク セ ス 」 の 際 に 作 成 し た プ ロ ジ ェ ク ト
「DF_DatabaseOperation」の provider モデルを再利用する為です。
consumer モデルは新たに作成します。consumer モデルの中で Summary and Drilldown
ビルダーを作成します。このビルダーは Record List and Detail ビルダーと Web チャート
ビルダーが組み合わさった機能を持っています。
4.8.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_DatabaseOperation(作成済み)
追加する機能セット:
Dashboard Framework
GreenPoint Web Chart Builder
Excel 拡張機能
モデル名: provider(作成済み)
モデル名: consumer_summary(モデルタイプは空にする)
============================================================
98/156
<<provider.model>>
1.provider モデルの拡張
メインカテゴリ取得用 SQL を作成する為に、SQL Call ビルダーを追加します。尚、この
レッスンを行う前に「[レッスン 7]Database と Hierarchy Drilldownn」を実行していた
場合、既に作成されている筈なので、新たに作成する必要はありません。このセクション
はスキップして 2.consumer_summry モデルの作成のセクションに進んでください。
図 65 provider モデル(拡張済み)
上図において赤枠で囲まれた部分のビルダーを追加していきます。
99/156
SQL Call ビルダーの追加
メインカテゴリ取得用 SQL を作成する為に、SQL Call ビルダーを追加します。
設定値
名前
getMainCategorySource
SQL DataSource
jdbc/SAMPDB1
データベース・エ
SQL ステートメ
select MAIN_CATEGORY, sum(UNITPRICE *
クスプローラー
ント
QUANTITY) as
TOTAL from AMOUNT grou
p by MAIN_CATEGORY
図 66 SQL Call ビルダー設定画面(メインカテゴリ取得)
100/156
2.Service Operation ビルダーの追加
追加した SQL Call を実行する操作を追加します。
設定値
サービス操
データ・サービス
provider
作プロパテ
操作名
getMainCategory
ィー
呼び出すアクション
DataServices/getMainCategorySource/exe
cute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
図 67
Service Operation ビルダー設定画面(メインカテゴリ取得)
101/156
3.SQL Call ビルダーの追加
サブカテゴリ取得用 SQL を作成する為に、SQL Call ビルダーを追加します。
設定値
名前
getSubCategorySource
SQL DataSource
jdbc/SAMPDB1
データベー
SQL ステートメ
select SUB_CATEGORY, sum(UNITPRICE * QUAN
ス・エクス
ント
TITY) as TOTAL from AMOUNT
where
MAIN_C
プローラー
ATEGORY = ? group by
SUB_CATEGORY
パラメーター・バインディング
自動(XML 変数の作成)
パラメータ
位置
1
ー
方向
入力
JDBC 型キャスト
自動
値または設定
${Variables/getSubCategorySourceInputs/Parameter1
Value}
ここでは、SQL ステートメント中にパラメータ・マーカー’?’を設定し、そのマーカーに
${Variables/getSubCategorySourceInputs/Parameter1Value} という変数で示される値を
設定しています。
図 68 SQL Call ビルダー設定画面(サブカテゴリ取得)
102/156
4.Service Operation ビルダーの追加
追加した SQL Call を実行する操作を追加します。
設定値
サービス
データ・サービス
provider
操作プロ
操作名
getSubCategory
パティー
呼び出すアクション
DataServices/getSubCategorySource/execute
操作入力
入力構造処理
入力スキーマを指定
入力スキーマ
getSubCategorySourceInputs/getSubCategorySource
Inputs
入力フィールド・マ
自動
ッピング
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マ
自動
ッピング
図 69
Service Operation ビルダー設定画面(サブカテゴリ取得)
以上で provider モデルへのビルダー追加は終了しました。次のセクションへ進んでくださ
い。
103/156
<<consumer_summary.model>>
2.consumer_summry モデルへのビルダー追加
予め作成しておいた consumer_summry モデルに、サマリーテーブルおよびチャートを追
加するためのビルダーを設定していきます。
図 70 consumer_summry モデル
1.Service Consumer ビルダーの追加
provider モデルで定義した操作を consumer_summry モデル内から利用するために、
Service Consumer ビルダーを追加します。
設定値
名前
consumer_summry
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
104/156
2.Summary and Drilldown ビルダーの追加
provider から取得したデータを、テーブルおよびチャートに表示させるためのビルダーを
追加します。このビルダーはテーブル/チャートとともに表示するページも作成します。
設定値
名前
summary1
初期化アクション
DataServices/consumer_summary/get
MainCategory
DataServices/consumer_summary/get
要約データ
MainCategory/results
要約ページのタイトル
メインカテゴリ
作成する要
要約チャート/テーブル・ページ
チャートとテーブルの両方
約ページ
main アクションを作成
はい
ページ・レ
ページ・レイアウト・モード
チャートとテーブルを別々のページに
イアウトお
ページ・ナビゲーション・タイプ
タブ付きページ
要約チャー
カスタム・スタイルを指定
チェック
ト・プロパ
チャート・スタイル
/solutions/dashboard/chartstyles/Base
よびナビゲ
ーション
HorizontalBarChart.xml
ティー
X 軸の列
MAIN_CATGORY
列の選択
すべての列を使用
値のフォーマット設定
###,##0 円
チャート凡例
凡例なし
チャートの 3D 表示
3D
チャート・フォーマット
PNG
チャートの幅
600
チャートの高さ
400
ここまでの作業で Summry のチャート表示部分についての設定は終了しています。表ノブ
部はまだ作成せず、後に追加修正を行います。
※このビルダーのスクリーンショットは、後述する追加修正の説明時に載せてあります。
105/156
3.Action List ビルダーの追加
テーブル表示用データを取得するために、Action List ビルダーを追加します。
【アクションの内容】
(1)サブカテゴリ取得用 SQL の入力引数に、選択したメインカテゴリを代入します。
(2)サブカテゴリ取得用 SQL を実行します。
設定値
actionGetSubCategory
名前
アクショ
アクショ
Assignment!DataServices/consumer_summary/getSubCategory/
ン
ン・リス
inputs/getSubCategorySourceInputs/Parameter1Value=${Varia
ト1
bles/summary1_SelectedRowData/Row/MAIN_CATEGORY}
アクショ
DataServices/consumer_summary/getSubCategory
ン・リス
ト2
図 71 Action List ビルダー設定画面
上図青点線枠内にアクションを設定します。
106/156
4.Summary and Drilldown ビルダー(summary1)の拡張
前節で追加したアクションを、テーブルを呼び出す際に使用するよう設定します。
追加設定値
要約テーブ
リンクの列
MAIN_CATEGORY
ル・プロパ
HTML テンプレート・ファイル
/solutions/dashboard/templates/gridtabl
e.htm
ティー
ドリルダウ
ドリルダウン・タイプ
アクションを呼び出してデータを表示
ン・プロパ
呼び出すアクション
(Methods)actionGetSubCategory
ティー
ドリルダウン・データ
DataServices/consumer_summary/getS
ubCategory/results
ページのタイトル
サブカテゴリ
アクション
自動表示/非表示を有効にする
非チェック
メニューの
ラベル
メニュー
オプション
Excel へのエクスポートを使用
チェック
可能に設定
Excel テキスト
Excel
エクスポート・ファイル名
エクスポート.xls
ページの印刷を使用可能に設定
チェック
印刷テキスト
印刷
以下に実際の設定画面のスクリーンショットを添付します。
図 72 Summary and Drilldown ビルダー設定画面(基本設定)
107/156
図 73
Summary and Drilldown ビルダー設定画面(ページレイアウト)
図 74
Summary and Drilldown ビルダー設定画面(要約チャート)
108/156
図 75
Summary and Drilldown ビルダー設定画面(ドリルダウン)
これで基本的な設定が終わり、ポートレット上にサマリーチャートとドリルダウン表が表
示されるようになります。尚、Web charts 系の画像はデフォルトでは日本語が扱えません。
「チャート・スタイル」で指定した XML ファイルにおいて、日本語が扱えないフォントを
使用する設定になっている為です。例えばチャート・スタイルが、
/solutions/dashboard/chartstyles/BaseHorizontalBarChart.xml の場合、'Arial Unicode
MS'という文字列を'MS UI Gothic'に置き換えることで日本語が正しく表示されます(上記
のファイルの場合 2 箇所ある)。変更例を載せておきます。
【変更前】
<frameChart font="Arial Unicode MS-11">
<frame yDepth="3" />
<yAxis scaleMin="0">
<labelFormat style="Pattern" pattern="###,###" />
<parseFormat pattern="#,##0.###" />
<labelStyle orientation="Horizontal" />
</yAxis>
<xAxis>
<labelFormat pattern="#,##0.###" />
<parseFormat pattern="#,##0.###" />
<labelStyle orientation="Horizontal" />
109/156
</xAxis>
<legend placement="top" />
<elements
shape="Column"
shapeSize="50"
lineWidth="1"
drawShadow="true"
lineWidth="1"
drawShadow="true"
fixedWidth="1">
<morph morph="Grow" stage="Cols" />
</elements>
<title font="Arial Unicode MS-12">
<decoration style="None" />
</title>
<paint isVertical="true" min="47" max="83" />
</frameChart>
【変更後】
<frameChart font="MS UI Gothic-11">
<frame yDepth="3" />
<yAxis scaleMin="0">
<labelFormat style="Pattern" pattern="###,###" />
<parseFormat pattern="#,##0.###" />
<labelStyle orientation="Horizontal" />
</yAxis>
<xAxis>
<labelFormat pattern="#,##0.###" />
<parseFormat pattern="#,##0.###" />
<labelStyle orientation="Horizontal" />
</xAxis>
<legend placement="top" />
<elements
shape="Column"
shapeSize="50"
fixedWidth="1">
<morph morph="Grow" stage="Cols" />
</elements>
<title font="MS UI Gothic-12">
<decoration style="None" />
</title>
<paint isVertical="true" min="47" max="83" />
</frameChart>
110/156
5.Data Column Modifier ビルダーの追加(メインカテゴリ用)
メインカテゴリを表示の際、テーブルの各項目(ラベル)を日本語として表示するために、
Data Column Modifier ビルダーを追加します。
設定値
名前
column_modifier_main
コンテナー・フィールド
[summary1Table]summary1_table/RowSet/Row
列を管理
チェック
列名: MAIN_CATEGORY
状況:表示
列見出し:メインカテゴリ
列名:TOTAL
状況:表示
列見出し:売上げ合計
6.Data Column Modifier ビルダーの追加(サブカテゴリ用)
サブカテゴリを表示の際、テーブルの各項目(ラベル)を日本語として表示するために、
Data Column Modifier ビルダーを追加します。
設定値
名前
column_modifier_sub
コンテナー・フィールド
[summary1DetailTable]summary1DetailsDataPage/Ro
wSet/Row
列を管理
チェック
列名: SUB_CATEGORY
状況:表示
列見出し:メインカテゴリ
列名:TOTAL
状況:表示
列見出し:売上げ合計
7.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet4
ポートレットのタイトル
Summary and Drilldown ポートレット
ポートレットの短いタイトル
Summary and Drilldown ポートレット
デフォルト・ロケール
ja
ここまでの設定でデータベースから WAS のデータ・ソースを用いてデータを取得し、サマ
リーチャートとドリルダウンテーブルを表示するポートレットの作成が終了しました。
111/156
4.8.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。
図 76 Summary and Drilldown ポートレット表示(サマリチャート)
図 77 Summry and Drilldown ポートレット表示(ドリルダウンテーブル)
112/156
4.9
[レッスン 9]単純な Filter
Filter は、同一ページに配置してあるポートレット間のデータ通信を行います。よってモデ
ルを 2 つ作成する必要があります。
z
sender モデル: 指定されたアクションにより値を送信
z
receiver モデル: sender モデルから値を受け取り、Dashboard に表示
このレッスンでは単純に文字列を送受信します。
「sender モデル内の Query Filter Form ビルダー」が「Query Filter ビルダー」の値を送
信し、「receiver モデル内の Query Filter Observer ビルダー」が受信します。受信後、任
意のアクションを実行できます。
sender モデル
receiver モデル
図:データの流れ
4.9.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_FilterSimple
追加する機能セット:
Dashboard Framework
モデル名: sender(モデルタイプは空にする)
モデル名: receiver(モデルタイプは空にする)
============================================================
113/156
<<sender.model>>
1.sender モデルへのビルダー追加
メッセージを送る元となるポートレットを作成するためにビルダーを追加します。
図 78 sender モデル
114/156
1.Lookup Table ビルダーの追加
ドロップダウン・リストの項目を登録する為に、Lookup Table ビルダーを追加します。
設定値
名前
lookup1
データ・ソース
新規 XML データ
新規 XML データ
<Items>
<Item><Label>北海道</Label><Value>北海道は少
ないです。</Value></Item>
<Item><Label>東京都</Label><Value>東京都は非
常に多いです。</Value></Item>
<Item><Label>広島県</Label><Value>広島県は多
いです。</Value></Item>
<Item><Label>鹿児島県</Label><Value>鹿児島県
は少ないです。</Value></Item>
</Items>
変数タイプ
値タグおよびラベル・タグ
値タグ
Value
ラベル・タグ
Label
追加データ定義
データの入手元
Builder 入力
ブランクの選択
チェック
項目を追加
図 79 Look Table ビルダー設定画面(一部)
115/156
2.Query Filter Form ビルダーの追加
ポートレット上に Filter のフォームを設定するビルダーを追加します。このビルダーはペ
ージも自動的に作成します。
設定名
名前
form1
ページのタイトル
スギ花粉情報
セッション・キー名
sessionKey1
フォーム・
フォーム名
queryFilterForm
サブミット
サブミットの動作
自動
ページ・プ
基本 HTML ページ
/solutions/dashboard/queryFilterForm.htm
ロパティー
レイアウト・メカニズム
データ・ページ・テンプレートを使用
データ・ページ・テンプレー
/solutions/dashboard/templates/verticalsear
ト
ch_labelabove.htm
main アクションを生成
チェック
の動作
拡張
図 80 Query Filter Form ビルダー設定画面(一部)
116/156
3.Query Filter ビルダーの追加
実際に送信されるメッセージを選択するための照会フィルターを定義します。
設定名
名前
filter1
フィルター・フォーム
form1
フィルターのタイプ
ルックアップ・テーブル
使用されるルックアップ・テーブル
lookup1
デフォルト値
(空白のまま)
UI コントロール・タイプ
ドロップダウン・リスト(選択)
図 81 Query Filter 設定画面
117/156
4.Text ビルダーの追加
Query Filter Form を作成すると、ページ<Query Filter Form 名>FilterForm に、<Query
Filter Form 名>label タグが生成されます。その部分にドロップダウン・リストのタイトル
を表示する為に、Text ビルダーを追加します。
設定値
label1
名前
ページの場所
ページ
form1FilterForm
タグ
FILTER1label
テキスト
エリアを選択してください。
※以下のような警告が表示されますが無視して下さい。
「この BuilderCall は別の BuilderCall の結果を上書きします。
(これは意図的な可能
性があり、その場合、警告は無視できます。)」
5.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet1
ポートレットのタイトル
FilterSimpleSender ポートレット
ポートレットの短いタイトル
FilterSimpleSender ポートレット
デフォルトのロケール
ja
ここまでの設定で、メッセージを送信するポートレットの作成が終了しました。続いてメ
ッセージを受信するポートレットの作成に移ります。
118/156
<<receiver.model>>
2.receiver モデルへのビルダーの追加
ここでは、送信されたメッセージを受信して表示するポートレットを作成します。メッセ
ージ受信はポートレット間連携(Click-to-Action,Property Broker)を用いたものではなく、
セッションに保持されたデータを介して行います。
図 82 receiver モデル
119/156
1.Page ビルダーの追加
受信したメッセージを表示するページを作成します。雛形の HTML は全て削除して、新た
に HTML を書き直します。
設定値
名前
startPage
ページ・コンテンツ(HTML)
<html>
<body>
<h3>スギ花粉情報</h3>
<div><span name="area_message"/></div>
</body>
</html>
2.Action List ビルダーの追加
最初に表示するページを呼び出す為に、Action List ビルダーを追加します。
設定値
main
名前
アクション
アクション・リスト
startPage
図 83 Action List ビルダー設定画面
120/156
3.Method ビルダーの追加(デバッグメッセージ出力用)
メッセージ受信時に、System ログにデバッグメッセージを出力させるために Method ビル
ダーを追加します。メソッド中に Java のコードを埋め込みます。
設定値
名前
debugMethod
戻りの型
void
メソッド本体
{
System.out.println(“メッセージを受信しました!!”);
}
図 84 Method ビルダー設定画面
121/156
4.Query Filter Observer ビルダーの追加
sender モデルで作成したポートレットから送信されたメッセージを受信する為に、Query
Filter Observer ビルダーを追加します。
設定値
名前
observer1
照会フィルター・モデル
sender
フィルターごと
フィルター
FILTER1_FILTER
のアクション
変更時に呼び出すアクション
debugMethod
図 85 Query Filter Observer ビルダー設定画面
122/156
5.Text ビルダーの追加
受信したメッセージが格納されている変数の書式は以下の通りです。
${Variables/<Query Filter Observer 名>FilterData/FILTERS/<照会フィルター名>_FIL
TER/<照会フィルター名>}
メッセージが格納されている変数値を表示する為に、Text ビルダーを追加します。
設定値
text1
名前
ページ
ページ
startPage
の場所
タグ
area_message
テキスト
${Variables/observer1FilterData/FILTERS/FILTER1_FILTER/FILT
ER1}
6.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet2
ポートレットのタイトル
FilterSimpleReceiver ポートレット
ポートレットの短いタイトル
FilterSimpleReceiver ポートレット
デフォルトのロケール
ja
ここまでの設定により、メッセージを受信するポートレットの作成が終了しました。この
ポートレットはメッセージを受信した際、System ログに「メッセージを受信しました!!」
と出力します。また、画面上には送られてきたメッセージが表示されます。
123/156
4.9.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。このレッスンでは2つのポートレットを作成しましたので、その2つを同じページ
上に配置します。デフォルトでは以下のように表示されます。
図 86 FilterSimpleSender/Receiver ポートレット表示(初期表示)
FilterSimpleSender ポートレットで値を選択すると FilterReveiver ポートレットにメッセ
ージが表示されます。
選択
メッセージ表示
図 87 FilterSimpleSender/Receiver ポートレット表示(メッセージ送信1)
124/156
FilterSimpleSender ポ ー ト レ ッ ト で 選 択 す る 値 を 変 更 す る と 、 異 な る メ ッ セ ー ジ が
FilterSimpleReceiver ポートレットに表示されます。
選択
メッセージ表示
図 88 FilterSimpleSender/Receiver ポートレット表示(メッセージ送信2)
このレッスンでは基本的なメッセージ送受信(送信側の選択により、フィルタリングされ
たメッセージを送信して、受信)について説明しました。続いてより複雑な連携にを行う
ポートレットの作成に進みます。
125/156
4.10
[レッスン 10]Filter とデータ階層
Filter は、同一ページに配置してあるポートレット間のデータ通信を行います。よってモデ
ルを 2 つ作成する必要があります。
z
sender モデル: 指定されたアクションにより値を送信
z
receiver モデル: sender モデルから値を受け取り、Dashboard に表示
このレッスンでは、sender モデルから複数のメッセージを送信します。データが階層にな
っていて、複数のレベルのドリルダウン(詳細化)が必要な場合に適しています。しかし、
実際のデータ階層を扱ったサンプルは「[レッスン 7]Database と Hierarchy Drilldown」
の際に行っているので、ここでは階層になっていないサンプルデータを用います(Filter
の使い方を主眼に置いている為)。
「sender モデル内の Query Filter Form ビルダー」が「Query Filter ビルダー」の値を送
信し、「receiver モデル内の Query Filter Observer ビルダー」が受信します。受信後、任
意のアクションを実行できます。
sender モデル
receiver モデル
図:データの流れ
4.10.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_FilterAndHierarchy
追加する機能セット:
Dashboard Framework
モデル名: sender(モデルタイプは空にする)
モデル名: receiver(モデルタイプは空にする)
============================================================
126/156
<<sender.model>>
1.sender モデルへのビルダー追加
メッセージを送信する元となる sender モデルにビルダーを追加します。
図 89 sender モデル
127/156
1.Lookup Table ビルダーの追加(その1)
ドロップダウン・リストの項目を登録する為に、Lookup Table ビルダーを追加します。こ
のレッスンでは3つのメッセージを送信します。はじめに1番目のメッセージのリストを
作成するビルダーを設定します。
設定値
名前
lookup1
データ・ソース
新規 XML データ
新規 XML データ
<Items>
<Item><Label>北海道</Label><Value>北海道にお
ける</Value></Item>
<Item><Label>東京都</Label><Value>東京都にお
ける</Value></Item>
<Item><Label>広島県</Label><Value>広島県にお
ける</Value></Item>
<Item><Label>鹿児島県</Label><Value>鹿児島県
における</Value></Item>
</Items>
変数タイプ
値タグおよびラベル・タグ
値タグ
Value
ラベル・タグ
Label
追加デー
データの入手元
Builder 入力
タ定義
ブランクの選択項目を追加
非チェック
図 90 Lookup Table ビルダー設定(その1)
128/156
2.Lookup Table ビルダーの追加(その2)
同様に2番目のメッセージのリストを作成するビルダーを設定します。
設定値
名前
lookup2
データ・ソース
新規 XML データ
新規 XML データ
<Items>
<Item><Label>今日の天気</Label><Value>今日の
天気は</Value></Item>
<Item><Label>明日の天気</Label><Value>明日の
天気は</Value></Item>
<Item><Label>明後日の天気</Label><Value>明後
日の天気は</Value></Item>
</Items>
変数タイプ
値タグおよびラベル・タグ
値タグ
Value
ラベル・タグ
Label
追加デー
データの入手元
Builder 入力
タ定義
ブランクの選択項目を追加
非チェック
図 91 Lookup Table ビルダー設定(その2)
129/156
3.Lookup Table ビルダーの追加(その3)
同様に3番目のメッセージのリストを作成するビルダーを設定します。
名前
lookup3
データ・ソース
新規 XML データ
新規 XML データ
<Items>
<Item><Label>晴れ</Label><Value>晴れです。</
Value></Item>
<Item><Label>曇り</Label><Value>曇りです。</
Value></Item>
<Item><Label>雨</Label><Value>雨です。</Value
></Item>
<Item><Label>雪</Label><Value>雪です。</Value
></Item>
</Items>
変数タイプ
値タグおよびラベル・タグ
値タグ
Value
ラベル・タグ
Label
追加デー
データの入手元
Builder 入力
タ定義
ブランクの選択項目を追加
非チェック
図 92 Lookup Table ビルダー設定(その3)
130/156
4.Query Filter Form ビルダーの追加
フィルタリングされたメッセージを送信するフォームおよびページを作成するビルダーを
追加します。
設定値
名前
form1
ページのタイトル
メッセージ選択画面
セッション・キー名
sessionKey1
フォーム・サブ
フォーム名
queryFilterForm
ミットの動作
サブミットの動作
自動
ページ・プロパ
基本 HTML ページ
/solutions/dashboard/queryFilterForm.htm
ティー
レイアウト・メカニズム
データ・ページ・テンプレートを使用
データ・ページ・テンプ
/solutions/dashboard/templates/verticalsear
レート
ch_labelabove.htm
main アクションを作成
チェック
拡張
図 93 Query Filter Form ビルダー設定画面(一部)
131/156
5.Query Filter ビルダーの追加
送信するメッセージを選択してフィルタリングするビルダーを追加します。メッセージは
3つ(3レベル)あるので3通りの設定をします。
設定値
名前
filter1
フィルター・フォーム
form1
フィルターのタイプ
データ階層
階層レベ
レベル
page1
ル1
リスト・オプションのデータ
Variables/lookup1XmlData/Items
値タグ
Value
ラベル・タグ
Label
すべてのオプションのラベル
選択してください
階層レベ
レベル
page2
ル2
リスト・オプションのデータ
Variables/lookup2XmlData/Items
値タグ
Value
ラベル・タグ
Label
すべてのオプションのラベル
選択してください
階層レベ
レベル
page3
ル3
リスト・オプションのデータ
Variables/lookup3XmlData/Items
値タグ
Value
ラベル・タグ
Label
すべてのオプションのラベル
選択してください
次のページ以降に、実際の設定画面の一部について記載します。どのような形で設定する
のか参照してください。
132/156
page1 の設定画面は以下のようになります。赤枠内に特に注意して入力してください。
図 94 照会フィルタービルダー設定画面(page1)
続いて page2 の設定画面です。
図 95 照会フィルタービルダー設定画面(page2)
133/156
最後に page3 の設定画面です。
図 96 照会フィルタービルダー設定画面(page3)
134/156
6.Text ビルダーの追加(その1)
Query Filter Form を作成すると、ページ<Query Filter Form 名>FilterForm に、<Query
Filter Form 名>label タグが生成されます。その部分にドロップダウン・リストのタイトル
を表示する為に、Text ビルダーを追加します。
設定値
label1
名前
ページの場所
ページ
form1FilterForm
タグ
PAGE1label
テキスト
地域
7.Text ビルダーの追加(その2)
設定値
label2
名前
ページの場所
ページ
form1FilterForm
タグ
PAGE2label
テキスト
タイプ
8.Text ビルダーの追加(その3)
設定値
label3
名前
ページの場所
ページ
form1FilterForm
タグ
PAGE3label
テキスト
結果
9.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet1
ポートレットのタイトル
FilterAndHierarchy Sender ポートレット
ポートレットの短いタイトル
FilterAndHierarchy Sender ポートレット
デフォルト・ロケール
ja
以上でメッセージを送信するポートレットの作成は終了しました。
135/156
<<receiver.model>>
2.receiver モデルへのビルダー追加
送信されたメッセージを受信するために reveiver モデルにビルダーを追加します。
図 97 receiver モデル
136/156
1.Page ビルダーの追加
受信したページを表示するために Page ビルダーを追加します。雛形の HTML は全て削除
して、新たに HTML を書き直します。
設定値
startPage
名前
ページ・コンテンツ(HTML) <html>
<body>
受信したメッセージ
<div><h3><span name="area1" /><span name="area2"
/><span name="area3" /></h3></div>
</body>
</html>
2.Action List ビルダーの追加
最初に表示するページを呼び出す為に、Action List ビルダーを追加します。
設定値
main
名前
アクション
アクション・リスト
startPage
3.Query Filter Obverver ビルダーの追加
メッセージを受信する為に、Query Filter Observer ビルダーを追加します。
設定値
名前
obverver1
照会フィルター・モデル
sender
フィルターごと
フィルター
FILTER1
のアクション
変更時に呼び出すアクション
(空白のまま)
137/156
4.Text ビルダーの追加(その1)
受信したメッセージが格納されている変数の書式は以下の通りです。
${Variables/<Query Filter Observer 名>FilterData/FILTERS/<照会フィルター名>/<レベ
ル名>}
1 つ目のメッセージをページ上に表示する為にビルダーを追加します。
設定値
text1
名前
ページの
ページ
startPage
場所
タグ
area1
${Variables/observer1FilterData/FILTERS/FILTER1/PAGE1}
テキスト
5.Text ビルダーの追加(その2)
2 つ目のメッセージをページ上に表示する為にビルダーを追加します。
設定値
text2
名前
ページの
ページ
startPage
場所
タグ
area2
${Variables/observer1FilterData/FILTERS/FILTER1/PAGE2}
テキスト
6.Text ビルダーの追加(その3)
3 つ目のメッセージをページ上に表示する為にビルダーを追加します。
設定値
text3
名前
ページの
ページ
startPage
場所
タグ
area3
テキスト
${Variables/observer1FilterData/FILTERS/FILTER1/PAGE3}
7.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet2
ポートレットのタイトル
FilterAndHierarchy Receiver ポートレット
ポートレットの短いタイトル
FilterAndHierarchy Receiver ポートレット
デフォルト・ロケール
ja
138/156
4.10.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。このレッスンでは2つのポートレットを作成しましたので、その2つを同じページ
上に配置します。デフォルトでは以下のように表示されます。
図 98 FilterAndHierarchySender/Receiver ポートレット表示(初期表示)
フィルターを順に選択していくと、メッセージが変化していきます。まず地域を選択しま
す。
図 99 地域選択後の表示
139/156
次にタイプを選択します。
図 100 タイプ選択後の表示
最後に結果を選択します。
図 101 結果選択後の表示
このように段階的にフィルターを選択するとそれに応じてメッセージが表示されます。
140/156
4.11
[レッスン 11]Filter と Excel 連携
Excel のデータを表示します。ただし、全てのレコードを表示する訳ではなく、Filter によ
って指定されたカテゴリのレコードのみ表示します。このレッスンではモデルを 3 つ作成
する必要があります。
z
provider モデル: Excel からデータを読み込み
z
sender モデル: カテゴリを選択し、値を送信
z
receiver モデル: sender モデルから値を受け取り、検索を実行。対象の行だけ抽出して
Dashboard に表示
Excel ファイルからデータを全て読み取り、対象の行だけ抽出する検索機能は(Method ビル
ダーを使って)Java プログラミングで実装します。
Excel ファイル
provider モデル
sender モデル
receiver モデル
図:データの流れ
4.11.1 設定内容
============================================================
Portlet Factory プロジェクト名: DF_FilterAndCollaborationExcel
追加する機能セット:
Dashboard Framework
Excel 拡張機能
モデル名: provider(モデルタイプは空にする)
モデル名: sender(モデルタイプは空にする)
モデル名: receiver(モデルタイプは空にする)
============================================================
<<<外部データの用意>>>
プロジェクト内の /WebContent 直下に Excel ファイル(商品売上げ.xls)をコピーしてお
きます。
141/156
<<<provider.model>>>
1.provider モデルへのビルダー追加
Excel シートからデータを取り込むための provider モデルを作成します。このモデルでは
通常デフォルトで提供されるデータ取得機能に加えて、独自のデータ取得機能を Java コー
ドにて実装します。
図 102 provider モデル
142/156
1.Service Definition ビルダーの追加
設定値
サービス名
provider1
サービスを公開
チェック
2.Excel Import ビルダーの追加
Excel シートを読み込むためのビルダーを追加します。このビルダーでは読み込みとともに
すべてのデータを取得するメソッドも自動的に設定されます。
設定値
名前
getAllRecordsSource
インポートするファイル
/商品売上げ.xls
スキーマを生成
Designer 再生成時
コンテンツ選択方法
自動
シート
売上げ
ヘッダー行あり
チェック
空の行を保持
非チェック
セルのフォーマット設定を保持
チェック
3.Service Operation ビルダーの追加
すべてのデータを取得するメソッドを公開するためにビルダーを追加します。
設定値
サービス
データ・サービス
provider1
操作プロ
操作名
getAllRecords
パティー
呼び出すアクション
DataServices/getAllRecordsSource/execute
操作入力
入力構造処理
入力なし
操作結果
結果構造処理
呼び出されたアクションからの構造を使用
結果フィールド・マッピング
自動
143/156
4.Method ビルダーの追加
Excel ファイルからデータを全て読み取り、対象の行だけ抽出する検索機能を実装する為、
Method ビルダーを追加します。なおこのロジックは汎用的に作成してあるので、他の
Factory サンプルにも適用できます。
・引数の役割
(1)searchKey: 検索したい列の名前
(2)searchValue: 検索文字列
(3)serviceOperationName: Excel の全データを取得する Service Operation 操作名
設定値
名前
getSearchRecordsMethod
引数
名前:searchKey
データ型:String
名前:searchValue
データ型:String
名前:serviceOperationName
データ型:String
戻りの型
IXml
XML タイプ
型なし XML
メソッド本体
{
//Excel ファイルからデータを全て読み取る
IXml allRecords = webAppAccess.getVariables().getXml(serviceOperation
Name + "Results");
if(allRecords == null){
//<Service Operation 操作名>Execute を実行する。
//値は <Service Operation 操作名>Results に格納される。
webAppAccess.callMethod(serviceOperationName + "Execute");
allRecords = webAppAccess.getVariables().getXml(serviceOperationN
ame + "Results");}
//指定した列の文字列が検索文字列と一致した行だけ出力対象とする
IXml outputRecords = XmlUtil.create("ExcelContent");
IXml row = allRecords.getFirstChildElement();
while(row != null) {
String w_value = row.getText(searchKey);
if(searchValue.equals(w_value)){
outputRecords.addChildElement(row.cloneElement());
}
row = row.getNextSiblingElement();
144/156
}
return outputRecords;
}
5.Service Operation ビルダーの追加
前節で実装した機能を公開するために Service Operation ビルダーを追加します。
設定値
サービス
データ・サービス
provider1
操作プロ
操作名
getSearchRecords
パティー
呼び出すアクション
getSearchRecordsMethod
操作入力
入力構造処理
呼び出されたアクションからの構造を使用
入力フィールド・マッピング
自動
結果構造処理
結果スキーマを指定
結果スキーマ
getAllRecordsSource_Schema/ExcelContent
結果フィールド・マッピング
自動
操作出力
これで provider モデルの設定は終了しました。ここまでの設定で Excel シートからデータ
を取り込み、全レコードを返す操作および指定されたレコードを返す操作が追加され、別
のモデルから利用することが可能になりました。
145/156
<<sender.model>>
2.sender モデルへのビルダー追加
予め作成しておいた sender モデルに、フィルタリングされたメッセージを送信するための
機能を追加します。このモデルは実際に provider モデルからデータを取得はせず、メッセ
ージを送信するのみです。
図 103 sender モデル
146/156
1.Lookup Table ビルダーの追加
ドロップダウン・リストの項目を登録する為に、Lookup Table ビルダーを追加します。
設定値
名前
lookup1
データ・ソース
新規 XML データ
新規 XML データ
<Items>
<Item><Label>暖房器具</Label><Value>暖房
器具</Value></Item>
<Item><Label>掃除機・クリーナー</Label><Va
lue>掃除機・クリーナー</Value></Item>
<Item><Label>調理家電</Label><Value>調理
家電</Value></Item>
<Item><Label>洗濯機</Label><Value>洗濯機<
/Value></Item>
</Items>
変数タイプ
値タグおよびラベル・タグ
値タグ
Value
ラベル・タグ
Label
追加のデータ
データの入手元
Builder 入力
定義
ブランクの選択項目を追加
非チェック
図 104 Lookup Table ビルダー設定画面
147/156
2.Query Filter Form ビルダーの追加
フィルタリングされたメッセージを送信するフォームおよびページを作成するビルダーを
追加します。
設定値
名前
form1
ページのタイトル
メッセージ選択画面
セッション・キー名
sessionKey1
フォーム・サブ
フォーム名
queryFilterForm
ミットの動作
サブミットの動作
自動
ページ・プロパ
基本 HTML ページ
/solutions/dashboard/queryFilterForm.htm
ティー
レイアウト・メカニズム
データ・ページ・テンプレートを使用
データ・ページ・テンプ
/solutions/dashboard/templates/verticalsear
レート
ch_labelabove.htm
main アクションを作成
チェック
拡張
3.Query Filter ビルダーの追加
送信するメッセージを選択してフィルタリングするビルダーを追加します。
設定値
名前
filter1
フィルター・フォーム
form1
フィルターのタイプ
ルックアップ・テーブル
使用されるルックアップ・テーブル
lookup1
デフォルト値
暖房器具
UI コントロール・タイプ
ドロップダウン・リスト(選択)
148/156
4.Text ビルダーの追加
Query Filter Form を作成すると、ページ<Query Filter Form 名>FilterForm に、<Query
Filter Form 名>label タグが生成されます。その部分にドロップダウン・リストのタイトル
を表示する為に、Text ビルダーを追加します。
設定値
label1
名前
ページの場所
ページ
form1FilterForm
タグ
FILTER1label
テキスト
メインカテゴリ
5.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet1
ポートレットのタイトル
Filter と CollaborationExcelSender ポートレット
ポートレットの短いタイトル
Filter と CollaborationExcelSender ポートレット
デフォルト・ロケール
ja
これでフィルタリングされたメッセージを送信する sender モデル(ポートレット)の作成
は終了しました。続いてメッセージを受信して、その値の基づきデータを検索して表示す
る receiver モデルの設定に進みます。
149/156
<<receiver.model>>
3.receiver モデルへのビルダーの追加
このモデルで作成されるポートレットの役割としては、
1)sender モデルで作成されたポートレットからメッセージを受け取る
2)受け取ったメッセージを検索キーとして provider モデルからデータを取得する
の2つがあります。
図 105 receiver モデル
150/156
1.Service Consumer ビルダーの追加
provider モデルの操作を利用するために Service Consumer ビルダーを追加します。この
ビルダーは後のセクションで追加設定を行います。
設定値
名前
consumer1
プロバイダー・モデル
provider
すべてのプロバイダー操作を追加
チェック
2.Summary and Drilldown ビルダーの追加
テーブルを表示するために Summary and Drilldown ビルダーを追加します。
設定値
名前
summary1
初期化アクション
DataServices/consumer1/getSearchRecords
要約データ
DataServices/consumer1/getSearchRecords/results
要約ページのタイトル
(空白のまま)
作成する
要約チャート/テー
テーブルのみ
要約ペー
ブル・ページ
ジ
main アクションを
はい
作成
3.Query Filter Observer ビルダーの追加
設定値
名前
observer1
照会フィルター・モデル
sender
フィルターごと
フィルター
FILTER1_FILTER
のアクション
変更時に呼び出すアクション
summary1CallInitializationAction
151/156
4.Service Consumer ビルダー(consumer1)の拡張
受信したメッセージが格納されている変数の書式は以下の通りです。
${Variables/<Query Filter Observer 名>FilterData/FILTERS/<照会フィルター名>_FIL
TER/<照会フィルター名>}
もう一度 Service Consumer ビルダー(consumer1)を開きます。「オーバーライドされる入
力」に、受信したメッセージを割り当てます。
・操作 getSearchRecords に渡す引数
(1)searchKey: 検索したい列の名前
(2)searchValue: 検索文字列
(3)serviceOperationName: Excel の全データを取得する Service Operation 操作名
追加設定値
入力をオーバーライド
チェック
オーバーラ
入力名:arguments
操作:getSearchRecords
イドされる
入力値:(空白のまま)
入力
入力名:arguments.searchKey
入力値:メインカテゴリ
入力名:arguments.searchValue
入力値:${Variables/observer1FilterData/FIL
TERS/FILTER1_FILTER/FILTER1}
入力名:arguments.serviceOperationName
入力値:getAllRecords
入力名:(空白のまま)
操作:getAllRecords
入力値:(空白のまま
実際の設定画面は以下のようになります。
152/156
まず getSearchRecords の設定部分です。
図 106 consumer1 拡張設定(その1)
続いて getAllRecords の設定部分です。
図 107 consumer2 拡張設定(その2)
153/156
5.Portlet Adapter ビルダーの追加
WAR ファイルを作成するために、Portlet Adapter ビルダーを追加します。
設定値
名前
samplePortlet2
ポートレットのタイトル
Filter と CollaborationExcelReceiver ポートレット
ポートレットの短いタイトル
Filter と CollaborationExcelReceiver ポートレット
デフォルト・ロケール
ja
ここまでの設定で、フィルタリングされたメッセージを基に Excel シートからデータを検
索し、表示するポートレットが作成されました。
154/156
4.11.2 実行結果
作成したポートレットを WebSphere Portal のページ上に配置すると次のように表示され
ます。このレッスンでは2つのポートレットを作成しましたので、その2つを同じページ
上に配置します。デフォルトでは以下のように表示されます。
図 108 Filter と CollaborationExcelSender/Receiver ポートレット(初期表示)
図 109 メインカテゴリ変更後の表示
155/156
最終ページです。
156/156
Fly UP