ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Application Development Framework Swingアプリケーションの開発
12c (12.1.2)
E48100-01
  目次へ移動
目次

前
 
次
 

6 ADF Swingパネルでのグラフの表示

この章では、ADF Swingパネルで、データバインドされたグラフを作成する方法について説明します。グラフ・コンポーネントによって、様々なグラフでデータを表示できます。

この章の構成は、次のとおりです。

6.1 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 Swing oracle.jbo.uicli.juiパッケージには、データバインドされたグラフ・コンポーネントに関連する次のクラスが含まれています。

表6-1は、グラフで強調するデータの様々な性質とそれに対応するグラフ・タイプを示しています。

表6-1 グラフのタイプ

データの特徴 グラフ・タイプ

一定期間または同時点における複数アイテムの差分

どの店舗のどの製品が売上が最も多いか?

集合棒グラフまたは3D棒グラフ

時間の経過に伴う傾向

当社の市場シェアは拡大しているか、または縮小しているか?

単純折れ線グラフまたは積上げ面グラフ

一定期間にわたる周期傾向

この製品の売上げは、過去3年にわたって常に3月がピークだったか。

レーダー・グラフ

データの変化率

市場シェアはどのくらいの速さで拡大しているか?

単純折れ線グラフまたは積上げ面グラフ

割合または割合の変化

各製品ラインからの収益額はいくらか。人気商品は昨年の同じ時期と同じ収益(%)を生んでいるか。

円、またはパーセント棒、パーセント折れ線、パーセント面

全体と部分の関係

どの製品の売上げが総売上高に最も関係しているか。どの製品の売上が総売上高の傾向に一致しているか。傾向とは異なる製品はどれか。

円、パーセント棒または折れ線、または積上げ棒、折れ線、または面

全体と部分の関係、および各部分の詳細

売り上げに占める割合が最も高い製品ラインはどれか。その製品ラインの中で、どの地域の売上が最も多いか。

補助棒付き円

各部分の全体に対する変化

会社全体で最大の収益を達成している製品は、各地区でも最大の収益を達成しているか。

複数円、または積上げ棒、折れ線または面

2つの変数間の関係

マーケティングへの投資で売上が増えるか?

散布図または極

3つの変数間の関係

マーケティングにさらに費用を費やせば、売上および利益も比例して増えるか。

バブル

システム内の障害発生箇所

障害の発生率が最も高いのはどこか?

パレート


6.2 ADF Swingパネルに対してグラフを作成する方法

「データ・コントロール」パネルからADF Swingパネルに挿入するグラフ・コンポーネントに対してADFグラフ・バインディングを設定できます。

グラフ・コンポーネントの作成時に行う選択内容について理解するには、グラフ・コンポーネントが次の操作を行うのに十分なデータをADFビジネス・コンポーネント・データ・ソースから取得する方法について理解する必要があります。

データ・バインディングは、選択するデータ・モデル・コンポーネント(たとえば、ADFビジネス・コンポーネント・ビュー・オブジェクトの属性)によってグラフ・エディタで決定されます。グラフ・エディタでは特定のグラフ・タイプのデータ・オブジェクトおよび属性を簡単に選択できますが、明確に選択するにはデータ・モデルをよく理解している必要があります。通常、グラフ・タイプを選択すると、そのグラフ・タイプのマーカーを描画するのに必要なデータ・ポイント値ごとに1つの属性がグラフ・エディタに表示されます。グループ・タイプのグラフを選択する場合、グラフ・エディタでは、マスター・データ・コレクションを適切なディテール・データ・コレクションにリンクするためのアクセッサも選択するよう求められます。

たとえば、グラフ・エディタで複数の株式の高値/安値/終値(HLC)株価グラフ・タイプを描画する場合、次を選択する必要があります。

一方、グラフ・エディタで毎月の高値を示す単一棒グラフとして単一株式を描画する場合、次を選択する必要があります。

グラフ・コンポーネントがビジネス・サービス・データ・モデルのデータを解釈する方法を理解するために役に立ちます。通常、データ・モデル・プロジェクトのデータ・モデルの要件は、次によって決まります。

たとえば、例6-1に示すデータによる棒グラフなどの単一グラフが必要だと仮定します。

例6-1 棒グラフ・データ

ENAME   SAL   Comm
KING    1000  200
CLARK   2000  100
MILLER  1500  50

この表の各行はグラフのシリーズに対応しており、各列はグループに対応しています。

一部のタイプのグラフ(棒グラフなど)では、マーカーごとに1つの値が必要です。これは、他のグラフ・タイプ(HLC株価グラフなど)とは対照的です。このタイプの場合、マーカーごとに3つの値(高値、安値および終値)が必要です。グラフに複数のデータ値が必要な場合、例6-2に示すように、データベース表でそれらを別々の行に格納すると効率的です。

例6-2 複数データ値の格納

Date         High  Low  Close
10 Jun 03    11    10    11
11 Jun 03    11     7     9
12 Jun 03    10     9     9.5

グラフ・コンポーネントは、データが単一表に格納されるタイプのグラフをサポートしています。グラフに複数の値が必要な場合、グラフのデータはマスター/ディテール関連としてモデル化する必要があります。各ディテール・データは、マスター値に対応する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. ユーザー・インタフェース・プロジェクトで、データ・パネルまたはフォームに対してJavaビジュアル・エディタを開きます。

    詳細は、第3.3項「ADF SwingパネルへのUIコンポーネントの挿入方法」を参照してください。

  2. 「データ・コントロール」パネルで、グラフ・コンポーネントにバインドするコレクションを、開いているフォームまたはパネルにドラッグします。

  3. 子の追加ポップアップ・リストから、「Graph」を選択します。

  4. Javaビジュアル・エディタで、「バインディング」タブをクリックし、リストからグラフ・コンポーネント・バインディングを選択し、「編集」をクリックします。

  5. グラフ・エディタで、ビュー選択、シリーズ属性およびデータ属性など、グラフに表示する具体的なデータを選択します。

6.3 グラフ・コンポーネント作成時の処理内容

グラフ・コンポーネントを作成すると、JDeveloperによってグラフ・プロパティおよび関連するデータ・バインディング情報を記述したファイルが生成されます。JDeveloperによって、表6-2に示すファイルが生成され、更新されます。

表6-2 データバインドされたグラフ・コンポーネントに対して生成されるファイル

ファイル 説明

<オブジェクト>.java

グラフ・プロパティをプログラムで設定および取得可能にするグラフ・コンポーネントのJava実装。

BIGraphDef.xml

グラフ・プロパティ定義ファイル。

<Webページ名>PageDef.xml

グラフの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>

6.4 グラフ・コンポーネントをカスタマイズする方法

データバインドされたグラフ・コンポーネントを作成した後は、いつでも、グラフ・エディタのデザインタイム機能を使用してグラフ・プロパティを変更できます。グラフ・エディタには、実際のデータではなく疑似データを使用してデータバインド・グラフが視覚的に表示されます。たとえば、場合によっては、異なるグラフ・タイプまたはグラフ・スタイルを使用してグラフを表示する必要があります。

既存のグラフ・コンポーネントを編集するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、ユーザー・インタフェース・プロジェクトを開き、ビュー・パッケージのBIGraphDefx.xmlを右クリックし、「開く」を選択します。

  2. グラフ・エディタで、エディタのツールバーから「グラフ・タイプ」または「グラフのフォーマット」のいずれかを選択します。

  3. 「グラフ・タイプ」を選択した場合、別のグラフ・タイプを選択してデータを表示するか、グラフの外観またはスタイルを変更できます。

  4. 該当するタブをクリックし、それに関連する設定を表示します。

  5. 「グラフのフォーマット」を選択した場合、グラフのタイトル、判例、描画エリア、およびX軸とY軸の設定を変更できます。

  6. 該当するタブをクリックし、それに関連する設定を表示します。

  7. 「構造」ウィンドウで要素を選択し、ダブルクリックして、「プロパティ 」ウィンドウにそのプロパティ設定を表示することで、グラフのプロパティを編集することもできます。


注意:

データが十分でないことに関するエラー・メッセージが表示された場合、指定したデータ・モデルにグラフのレンダリングに必要なデータ列が十分に含まれていないため、別のグラフ・タイプを選択します。たとえば、折れ線グラフの場合、複数のデータ列が必要になります。使用可能なグラフ・タイプの説明は、第6.1項「グラフ・タイプ」を参照してください。


6.5 グラフ・データを変更する方法

ADF Swingパネルのグラフを作成した後は、いつでも、グラフ内の他のデータを表示することを決定できます。グラフ・バインディングのカスタマイズ・エディタで、グラフに対して別のデータ・ソースを選択できます。ただし、データ・ソースが別のデータ・モデルに属している場合は、第6.2項「ADF Swingパネルに対してグラフを作成する方法」の説明のように、新しいデータバインドされたグラフを作成する必要があります。

グラフ・データを変更するには、次のようにします。

  1. 「アプリケーション」ウィンドウで、Javaビジュアル・エディタで開いているグラフ・コンポーネントが含まれているフォームで、「バインディング」タブを選択します。

  2. 「バインディングと実行可能ファイル」ページで、グラフ・バインディングを選択し、「編集」をクリックします。

  3. グループ・エディタで、ドロップダウン・リストから別のイテレータを選択します。