はじめに
今回は、SAP Business Oneデータモデルを利用して、メニュー連動型のダッシュボードページを作成してみようと思います。会社一覧から特定の会社を選択すると、選択された会社に関するデータでダッシュボードページが更新されるようにします。
ページの構成
このページは複数のSharperlightオブジェクトの入れ子で構成されています。その内訳は;
- 2つのメニュレポート(パブリッシュドレポート)
- 1つのダッシュボードページ
- 4つの通常レポート(パブリッシュドレポート)
2つのメニュレポート(パブリッシュドレポート)
上図の赤枠と濃い赤枠で表した部分です。
Menu Horizontal (親)
一番外殻のメニューレポート(赤枠)です。これが親レポートとなります。上部に表示されるメニューと梱包する子レポートで構成されます。
子レポートとして、次に説明するメニューレポート(濃い赤枠)を内包しています。
Menu Panel (子)
上記親レポートの子供になります。左側に表示されるツリーメニューと梱包する子(孫)レポートで構成されます。
子(孫)レポートとして、次に説明するダッシュボードページを内包しています。
1つのダッシュボードページ (孫)
Sharperlightで設計するダッシュボードページ(青枠)です。4つのパネルを持つダッシュボードページとして作成されており、各パネルはそれぞれ独自のパブリッシュドレポートを表示するように設計されています。
4つの通常レポート(パブリッシュドレポート)(ひ孫)
上記ダッシュボードページの4つのパネル(緑枠)にひとつずつ割り当てられています。上部2つは表形式、そして下部2つはグラフ形式となっています。
連動の仕組み
会社名ツリーメニューをクリックした場合、孫とひ孫レポートが連動する仕組みを見ていきます。
ここではCompany というワードがキーとなります。
では早速みていきましょう。
ツリーメニューレポート、つまり上記のMenu Panel (子) です。ここが連動の起点となります。
ここでは会社名一覧が、このレポートに定義されたクエリによりツリー形式で表示されています。
会社名が出力アイテムとして設定されています。
さらに拡張表現でジャンプ先URLが定義されています。ジャンプ先、つまり子レポートであるダッシュボードページのURLです。会社名がパラメータとして渡されています。&fltCompany= の部分。
クエリ結果は、このようになります。
ここで大事なのは、ツリーメニューで選択された会社名が、子レポートがもつ &fltCompany=という名のフィルターに送られていくということです。fltはフィルターを表す接頭辞です。
次に、選択された会社名を受け取る子レポート達を見ていきます。
ツリーメニューレポートの子であるダッシュボードページは、&fltCompany=というパラメータで選択された会社名を受け取ります。
しかし、このダッシュボードページは、4つのレポートをひとまとめにするためのコンテナなので、さらにその子である4つのレポートにその会社名が渡されます。
各レポートには、それぞれクエリが定義されており、その抽出結果が表形式やグラフ形式で表示されるということです。
そのレポート群の親であるダッシュボードページが受け取った会社名は、各レポートクエリの同名のフィルターに渡されます。
つまり、各クエリのフィルター部にCompanyという名のフィルターが定義されており、ツリーメニューで選択された会社名は、ダッシュボードページを経由して、そのクエリのフィルターに渡されます。
つまり送り側と受け側が同じ名でリンクしているといった状態ですね。
これが連動の仕組みです。
あとがき
この記事では会社名でしたが、年月やその他のキーとなる値で、ダッシュボードページ上の全ての表やグラフを同時に更新することができます。この機能を使って、KPIスタイルのダッシュボードを楽しんでデザインしてください。