Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発 12c (12.1.3) E59440-01 |
|
![]() 前 |
![]() 次 |
この章では、ADF Swingパネルで、データバインドされたグラフを作成する方法について説明します。グラフ・コンポーネントによって、様々なグラフでデータを表示できます。
この章には、次のセクションがあります。
JDeveloperを使用して、Oracle ADFでサポートされている任意のビジネス・サービスのデータソースとバインド可能なグラフ・コンポーネントを作成できます。サポートされているビジネス・サービスには、ADFビジネス・コンポーネント、Enterprise JavaBeans (EJB)、Toplink、WebサービスおよびカスタムJavaBeansがあります。
注意: グラフを使用するには、第6.2項「ADF Swingパネルに対してグラフを作成する方法」の説明のように、ビジネス・サービスで、グラフ・コンポーネントによって想定されている形式のデータを提供できることが必要です。 |
JDeveloperの「データ・コントロール」パネルを使用して、ADFビジネス・コンポーネント・ビュー・オブジェクトなどのデータ・モデル・コンポーネントをパネルにドラッグできます。ADFのデータバインドされたグラフ・コンポーネントを作成した後は、いつでも、JDeveloperのデザインタイム機能を使用してグラフ・プロパティを変更できます。
JDeveloperは、Oracle Business Intelligence Beans (BI Beans)テクノロジのシームレスな統合を介した、データバインドされたグラフの作成もサポートしています。グラフ・テクノロジを使用するためにBI BeansJDeveloperアドイン・コンポーネントをインストールする必要はありませんが、使用可能なドキュメントを表示するためにこのアドインをインストールすることもできます。
グラフ・コンポーネントには次のような機能や特性があります。
カスタム・アプリケーションとの統合が簡単
グラフ・コンポーネントは再使用可能であるため、ADF Webアプリケーション(現在はJSPページのみ)およびADF Swingアプリケーションなどカスタム・アプリケーションにそれを追加できます。
構築と管理が簡単
「データ・コントロール」パネルを使用して、ADFビジネス・コンポーネント・ビュー・オブジェクトなどのデータ・モデル・コンポーネントをフォームにドラッグできます。グラフ・プロパティおよびデータ・バインディングは「プロパティ」ウィンドウで公開されるため、開発者はこれらの設定を簡単に変更できます。
Javaを介したプログラムによるアクセス
BI Beansグラフ・コンポーネントのpublicメソッドをコールすることにより、グラフ・コンポーネントを変更できます。
異なるデータ・ソースのサポート
ADFビジネス・コンポーネント、Enterprise JavaBeans、Toplink、Webサービス、カスタムJava Beans
単一グラフおよびマスター/ディテール・グラフの生成
ダウンロードが小サイズ
デプロイ時の効率的なパフォーマンス
ADF Swing oracle.jbo.uicli.jui
パッケージには、データバインドされたグラフ・コンポーネントに関連する次のクラスが含まれています。
JUGraphBinding
JUSingleTableGraphBinding
JUMasterDetailGraphBinding
表6-1は、グラフで強調するデータの様々な性質とそれに対応するグラフ・タイプを示しています。
表6-1 グラフのタイプ
データの特徴 | 例 | グラフ・タイプ |
---|---|---|
一定期間または同時点における複数アイテムの差分 |
どの店舗のどの製品が売上が最も多いか? |
集合棒グラフまたは3D棒グラフ |
時間の経過に伴う傾向 |
当社の市場シェアは拡大しているか、または縮小しているか? |
単純折れ線グラフまたは積上げ面グラフ |
一定期間にわたる周期傾向 |
この製品の売上げは、過去3年にわたって常に3月がピークだったか。 |
レーダー・グラフ |
データの変化率 |
市場シェアはどのくらいの速さで拡大しているか? |
単純折れ線グラフまたは積上げ面グラフ |
割合または割合の変化 |
各製品ラインからの収益額はいくらか。人気商品は昨年の同じ時期と同じ収益(%)を生んでいるか。 |
円、またはパーセント棒、パーセント折れ線、パーセント面 |
全体と部分の関係 |
どの製品の売上げが総売上高に最も関係しているか。どの製品の売上が総売上高の傾向に一致しているか。傾向とは異なる製品はどれか。 |
円、パーセント棒または折れ線、または積上げ棒、折れ線、または面 |
全体と部分の関係、および各部分の詳細 |
売り上げに占める割合が最も高い製品ラインはどれか。その製品ラインの中で、どの地域の売上が最も多いか。 |
補助棒付き円 |
各部分の全体に対する変化 |
会社全体で最大の収益を達成している製品は、各地区でも最大の収益を達成しているか。 |
複数円、または積上げ棒、折れ線または面 |
2つの変数間の関係 |
マーケティングへの投資で売上が増えるか? |
散布図または極 |
3つの変数間の関係 |
マーケティングにさらに費用を費やせば、売上および利益も比例して増えるか。 |
バブル |
システム内の障害発生箇所 |
障害の発生率が最も高いのはどこか? |
パレート |
「データ・コントロール」パネルからADF Swingパネルに挿入するグラフ・コンポーネントに対してADFグラフ・バインディングを設定できます。
グラフ・コンポーネントの作成時に行う選択内容について理解するには、グラフ・コンポーネントが次の操作を行うのに十分なデータをADFビジネス・コンポーネント・データ・ソースから取得する方法について理解する必要があります。
各グラフ・マーカーの描画(最大3つのデータ・ポイントを使用)
各グラフ・グループのラベル付け(月名など)
単一シリーズまたは複数シリーズ・タイプのグラフの描画
各グラフのラベル付け
データ・バインディングは、選択するデータ・モデル・コンポーネント(たとえば、ADFビジネス・コンポーネント・ビュー・オブジェクトの属性)によってグラフ・エディタで決定されます。グラフ・エディタでは特定のグラフ・タイプのデータ・オブジェクトおよび属性を簡単に選択できますが、明確に選択するにはデータ・モデルをよく理解している必要があります。通常、グラフ・タイプを選択すると、そのグラフ・タイプのマーカーを描画するのに必要なデータ・ポイント値ごとに1つの属性がグラフ・エディタに表示されます。グループ・タイプのグラフを選択する場合、グラフ・エディタでは、マスター・データ・コレクションを適切なディテール・データ・コレクションにリンクするためのアクセッサも選択するよう求められます。
たとえば、グラフ・エディタで複数の株式の高値/安値/終値(HLC)株価グラフ・タイプを描画する場合、次を選択する必要があります。
株式タイプごとに1つの行があるマスター・データ・コレクション
株式のデータごとに対応する行があるディテール・データ・コレクション
株式グラフごとにラベルを指定するマスター・データ・コレクションの属性
マーカー・データ値ごとに1つのディテール・データ・コレクションの属性(この場合は高値、安値および終値)
一方、グラフ・エディタで毎月の高値を示す単一棒グラフとして単一株式を描画する場合、次を選択する必要があります。
制約のないデータ・コレクション(マスター/ディテール関連がないデータ・コレクション)
月ごとにラベルを指定する1つの属性
マーカー・データ値の1つの属性(この場合は高値のみ)
グラフ・コンポーネントがビジネス・サービス・データ・モデルのデータを解釈する方法を理解するために役に立ちます。通常、データ・モデル・プロジェクトのデータ・モデルの要件は、次によって決まります。
選択したグラフ・タイプで各グラフ・マーカーを決定するために必要なデータ・ポイント値は1つ、2つまたは3つのいずれか
シリーズ・タイプ(単一表)とグループ・タイプ(マスター/ディテール)のいずれのグラフを描画するか
たとえば、例6-1に示すデータによる棒グラフなどの単一グラフが必要だと仮定します。
この表の各行はグラフのシリーズに対応しており、各列はグループに対応しています。
一部のタイプのグラフ(棒グラフなど)では、マーカーごとに1つの値が必要です。これは、他のグラフ・タイプ(HLC株価グラフなど)とは対照的です。このタイプの場合、マーカーごとに3つの値(高値、安値および終値)が必要です。グラフに複数のデータ値が必要な場合、例6-2に示すように、データベース表でそれらを別々の行に格納すると効率的です。
グラフ・コンポーネントは、データが単一表に格納されるタイプのグラフをサポートしています。グラフに複数の値が必要な場合、グラフのデータはマスター/ディテール関連としてモデル化する必要があります。各ディテール・データは、マスター値に対応する1シリーズのデータを示します。前述の株式グラフの例では、データ・モデルは例6-3のようになります。
例6-3 データ・モデル
Master table stock_ticker_table -------------------------------- ticker symbol Oracle Corporation ORCL XYZ Corporation XYZ Detail table stock_price_table ----------------------------------- ticker Date High Low Close ORCL 10 Jun 03 23 22 23 ORCL 11 Jun 03 24 23 23 ORCL 12 Jun 03 25 24 24 XYZ? 10 Jun 03 10 9 9 XYZ 11 Jun 03 10 9 9 XYZ 12 Jun 03 10 8 9
単一表のグラフの場合、データ・モデルは単純で、必要なのは次のもののみです。
スタンドアロンのデータ・コレクション(行ごとに1つのグラフ・マーカーを描画します)
グラフに表示されるグループのラベルを指定する1つの属性
グラフのデータ・ポイントごとに1つの属性(各グラフ・マーカーを描画するのに必要なすべての属性)
より複雑なグループ・タイプのグラフの場合、データ・モデルはマスター/ディテール関係に基づいており、次のものが含まれている必要があります。
マスター・データ・コレクション(行ごとに1つのシリーズを指定するがデータは含まれません)
シリーズごとにラベルを指定する1つのマスター・データ・コレクション属性
シリーズごとに1つのディテール・データ・コレクション(特定のシリーズについて行ごとに1つのグラフ・マーカーを描画します)
グラフに表示されるグループのラベルを指定する1つのディテール・データ・コレクション属性
グラフのデータ・ポイントごとに1つのディテール・データ・コレクション属性(各グラフ・マーカーを描画するのに必要なすべての属性)
データバインドされたグラフを作成する手順は次のとおりです。
ユーザー・インタフェース・プロジェクトで、データ・パネルまたはフォームに対してJavaビジュアル・エディタを開きます。
詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。
「データ・コントロール」パネルで、グラフ・コンポーネントにバインドするコレクションを、開いているフォームまたはパネルにドラッグします。
子の追加ポップアップ・リストから、「Graph」を選択します。
Javaビジュアル・エディタで、「バインディング」タブをクリックし、リストからグラフ・コンポーネント・バインディングを選択し、「編集」をクリックします。
グラフ・エディタで、ビュー選択、シリーズ属性およびデータ属性など、グラフに表示する具体的なデータを選択します。
グラフ・コンポーネントを作成すると、JDeveloperによってグラフ・プロパティおよび関連するデータ・バインディング情報を記述したファイルが生成されます。JDeveloperによって、表6-2に示すファイルが生成され、更新されます。
表6-2 データバインドされたグラフ・コンポーネントに対して生成されるファイル
ファイル | 説明 |
---|---|
|
グラフ・プロパティをプログラムで設定および取得可能にするグラフ・コンポーネントのJava実装。 |
|
グラフ・プロパティ定義ファイル。 |
|
グラフのADFデータ・バインディング情報が含まれているADFバインディング定義ファイル。 |
ファイルは、プロジェクトに追加されていて、「アプリケーション」ウィンドウからアクセスできます。それらは、アプリケーションを基準とした/src/client
ディレクトリに配置されます。
例6-4は、ビジネス・サービスの「ADF Swing」パネルおよびADFビジネス・コンポーネントで構成されるアプリケーションのグラフ・コンポーネントのサンプルPageDef.xml
ファイルを示しています。
例6-4 グラフ・コンポーネントのサンプルPageDef.xmlファイル
<?xml version='1.0' encoding='ISO-8859-1' ?> <DCContainer id="untitled1PageDef" xmlns="http://xmlns.oracle.com/adfm" Package="view" > <Contents > <DCIterator id="model_AppModuleDataControl_EmployeesView1Iter" Binds="model_AppModuleDataControl.EmployeesView1" > </DCIterator> <DCControl id="EmployeesView1" DefClass="oracle.jbo.uicli.graph.JUSingleTableGraphDef" SubType="DCGraph" ControlClass="oracle.dss.graph.Graph" IterBinding="model_AppModuleDataControl_EmployeesView1Iter" SeriesType="SINGLE_SERIES" SeriesLabel="EmployeeId" GraphPropertiesFileName="view.BIGraphDef1" > <Contents > <AttrNames> <Item Value="EmployeeId" /> <Item Value="Salary" /> <Item Value="CommissionPct" /> <Item Value="ManagerId" /> <Item Value="DepartmentId" /> </AttrNames> <ColumnLabels> <Item Value="EmployeeId" /> <Item Value="Salary" /> <Item Value="CommissionPct" /> <Item Value="ManagerId" /> <Item Value="DepartmentId" /> </ColumnLabels> </Contents> </DCControl> </Contents> </DCContainer>
例6-5は、ビジネス・サービスの「ADF Swing」パネルおよびADFビジネス・コンポーネントで構成されるアプリケーションのグラフ・コンポーネントのサンプルDataBindings.xml
ファイルを示しています。
例6-5 グラフ・コンポーネントのサンプルDataBindings.xmlファイル
<?xml version='1.0' encoding='ISO-8859-1' ?> <JboProject id="DataBindings" xmlns="http://xmlns.oracle.com/adfm" SeparateXMLFiles="false" Package="" ClientType="Generic" > <Contents > <DataControl id="model_AppModuleDataControl" SupportsFindMode="true" SupportsTransactions="true" Package="model" Configuration="AppModuleLocal" FactoryClass="oracle.adf.model.bc4j.DataControlFactoryImpl" > </DataControl> <Containee id="untitled1PageDef" ObjectType="BindingContainerReference" FullName="view.untitled1PageDef" > </Containee> </Contents> </JboProject>
データバインドされたグラフ・コンポーネントを作成した後は、いつでも、グラフ・エディタのデザインタイム機能を使用してグラフ・プロパティを変更できます。グラフ・エディタには、実際のデータではなく疑似データを使用してデータバインド・グラフが視覚的に表示されます。たとえば、場合によっては、異なるグラフ・タイプまたはグラフ・スタイルを使用してグラフを表示する必要があります。
既存のグラフ・コンポーネントを編集するには、次のようにします。
「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを開き、ビュー・パッケージのBIGraphDefx.xmlを右クリックし、「開く」を選択します。
グラフ・エディタで、エディタのツールバーから「グラフ・タイプ」または「グラフのフォーマット」のいずれかを選択します。
「グラフ・タイプ」を選択した場合、別のグラフ・タイプを選択してデータを表示するか、グラフの外観またはスタイルを変更できます。
該当するタブをクリックし、それに関連する設定を表示します。
「グラフのフォーマット」を選択した場合、グラフのタイトル、判例、描画エリア、およびX軸とY軸の設定を変更できます。
該当するタブをクリックし、それに関連する設定を表示します。
「構造」ウィンドウで要素を選択し、ダブルクリックして、「プロパティ 」ウィンドウにそのプロパティ設定を表示することで、グラフのプロパティを編集することもできます。
注意: データが十分でないことに関するエラー・メッセージが表示された場合、指定したデータ・モデルにグラフのレンダリングに必要なデータ列が十分に含まれていないため、別のグラフ・タイプを選択します。たとえば、折れ線グラフの場合、複数のデータ列が必要になります。使用可能なグラフ・タイプの説明は、第6.1項「グラフ・タイプ」を参照してください。 |
ADF Swingパネルのグラフを作成した後は、いつでも、グラフ内の他のデータを表示することを決定できます。グラフ・バインディングのカスタマイズ・エディタで、グラフに対して別のデータ・ソースを選択できます。ただし、データ・ソースが別のデータ・モデルに属している場合は、第6.2項「ADF Swingパネルに対してグラフを作成する方法」の説明のように、新しいデータバインドされたグラフを作成する必要があります。
グラフ・データを変更するには、次のようにします。
「アプリケーション」ウィンドウで、Javaビジュアル・エディタで開いているグラフ・コンポーネントが含まれているフォームで、「バインディング」タブを選択します。
「バインディングと実行可能ファイル」ページで、グラフ・バインディングを選択し、「編集」をクリックします。
グループ・エディタで、ドロップダウン・リストから別のイテレータを選択します。