ヘッダーをスキップ

Oracle Fusion Middleware Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド
リリース11g (11.1.1)
部品番号 B63038-01
目次へ移動
目次
前のページへ移動
次のページへ移動

Flashテンプレートの作成

この章では、次のトピックについて説明します。

概要

BI PublisherではFlashテンプレートがサポートされており、Adobe Flexテンプレートを開発してBI Publisherのレポートに適用し、対話型のFlash出力ドキュメントを生成することができます。

注意: Adobe Flexは、対話型のクロス・プラットフォーム・アプリケーションを構築するためのオープンソース・テクノロジです。FlexアプリケーションはAdobe Flash Playerを使用して配信できます。詳細は、FlexのWebサイト(http://www.flex.org)を参照してください。

BI PublisherをFlexと統合することにより、Flexテンプレートを作成してからデスクトップでテストし、BI PublisherサーバーにデプロイしてFlash出力を生成することができます。ユーザーは、レポートをBI Publisherユーザー・インタフェースから実行したり、レポート利用者に配信するようにスケジュールできます。

この章では、BI Publisherのフラットなデータソース(つまり、XMLデータに階層構造がないもの)でFlexテンプレートを設定する方法について説明します。また、テーブルやチャートなどの単純なオブジェクトを含める方法についても説明します。対話処理、複数のコンポーネント間における接続性、およびより複雑なトピックの詳細は、Adobe社のFlexのドキュメントを参照してください。

Flashテンプレートを作成して表示するための前提条件

次に、Flashテンプレートを作成して表示するための前提条件を示します。

PDF出力を表示するために必要な構成設定

Adobe Reader (9.3)の最新バージョンでは、セキュリティ設定が強化されており、 Flashなどのマルチメディア・コンテンツはデフォルトで無効化されています。この変更のため、埋込みFlashオブジェクトが含まれているPDFレポート出力にアクセスするときは、「Some features are disabled to avoid potential security risks」などのエラー・メッセージが表示される可能性があります。

PDF出力内のFlashコンテンツを有効化するには、次の手順に従ってFlash構成設定を変更します。

  1. Adobe Acrobatの「Edit」メニューで「Preferences」をクリックします。

  2. Preferences」ダイアログで、「Categories」リストの「Multimedia Trust (legacy)」をクリックします。

  3. 「Display Permissions for: Other Documents」を選択します。

  4. 「Permissions for Adobe Flash Player is set to Prompt」を選択します。

  5. 「Change permission for selected multimedia player to」を「Always」に設定し、下にある3つのチェック・ボックスをすべて選択して「OK」をクリックします。

Flashテンプレートの作成

この項では、Flashテンプレートの作成方法について説明します。この項の内容は次のとおりです。

データソースの追加

データソースを追加する手順は次のとおりです。

  1. 次のように、サンプル・データ・ファイルをレポート・データ・モデルから生成します。

    Data Model Editorで、「Get XML Output」ツールバー・ボタンを選択します。Report Viewerから返す行数を選択し、「Run」をクリックします。「Actions」ツールバー・リストで「Export XML」を選択し、結果をXMLファイルとしてローカル・ディレクトリに保存します。

    この例では次のデータに基づいています。

    <ROWSET>
    <ROW>
    <NAME>Neena Kochhar</NAME>
    <FIRST_NAME>Neena</FIRST_NAME>
    <LAST_NAME>Kochhar</LAST_NAME>
    <SALARY>17000</SALARY>
    <ANNUAL_SALARY>204000</ANNUAL_SALARY>
    <FED_WITHHELD>57120</FED_WITHHELD>
    <JOB_TITLE>Administration Vice President</JOB_TITLE>
    <DEPARTMENT_NAME>Executive</DEPARTMENT_NAME>
    <MANAGER>Steven King</MANAGER>
    </ROW>
    <ROW>
    ...
    </ROWSET>

    このデータは、次の単純な問合せをベースにしたレポートから生成されます。

    select
            e.first_name || ' ' || e.last_name name,
            e.first_name,
            e.last_name,
            e.salary,
            e.salary*12 ANNUAL_SALARY,
            e.salary*12*0.28 FED_WITHHELD,
            j.job_title,
            d.department_name,
            m.first_name || ' ' || m.last_name manager
    from employees e,
          employees m,
          departments d,
          jobs j
    where e.department_id = d.department_id
      and j.job_id = e.job_id
      and e.manager_id = m.employee_id
  2. Flex IDEを起動して新しいFlexプロジェクトを作成し、「Basic」をデータ・アクセス方法として選択します(次に例を示します)。

    この図についてはドキュメントのテキストで説明しています

    次のダイアログで、例に示すようにプロジェクト名を入力します。ここで使用する名前は、作成するテンプレート・ファイルの名前に割り当てられます。

    この図についてはドキュメントのテキストで説明しています

    Finish」をクリックします。

    IDEによりFlexテンプレート定義ファイルが作成されます。これはXML形式のMXMLファイルです。次に例を示します。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    </mx:Application>

    これで、手動で更新したりVisual Builderを使用して更新することができます。

  3. レポート・データ・モデルからダウンロードしたXMLを接続します。

    データを接続するには、FlexでサポートされているXMLデータ・サービスを使用してサンプル・データをMXMLファイルに埋め込みます。

    接続されたデータを含むサンプルMXMLファイルを示します。ファイル・コンポーネントの詳細は、次の項を参照してください。

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
     <mx:Script>
       <![CDATA[
          [Bindable]
          public var dataXML:XML = 
    <ROWSET>
    <ROW>
    <NAME>Neena Kochhar</NAME>
    <FIRST_NAME>Neena</FIRST_NAME>
    <LAST_NAME>Kochhar</LAST_NAME>
    <SALARY>17000</SALARY>
    <ANNUAL_SALARY>204000</ANNUAL_SALARY>
    <FED_WITHHELD>57120</FED_WITHHELD>
    <JOB_TITLE>Administration Vice President</JOB_TITLE>
    <DEPARTMENT_NAME>Executive</DEPARTMENT_NAME>
    <MANAGER>Steven King</MANAGER>
    </ROW>
    <ROW>
    ...
    </ROWSET>;
            ]]>
     </mx:Script>
    </mx:Application>

    XMLの部分はダウンロードしたデータのようになります。その他の部分に関する説明を次に示します。

    実行時にBI Publisherサーバーでは、ランタイム・データがレポートから生成されてFlexテンプレートに注入され、dataXML変数内にあるサンプル・データが置換されます。この機能により、サーバーに接続しなくてもFlexレポートをユーザーに配布することができます。

レイアウトの作成

Flex IDEでは、オブジェクトのドラッグ・アンド・ドロップができるデフォルト・キャンバスが作成されます。このキャンバスは必要に応じてレポートに合せて変更できます。

重要: Flash出力をPDF文書に埋め込む場合、テンプレートの幅と高さを「Layout」プロパティの「Size」リージョンに設定する必要があります。デフォルトのサイズのままにする場合でも、これらのフィールドに明示的に値を入力する必要があります。

レイアウトを作成するには、レポート・オブジェクトをレイアウト・パレットに追加します。この例では、Flexの「Design」タブを使用してオブジェクトをレイアウトに追加します。「Design」タブをクリックして、利用可能なオブジェクトを「Component Navigator」ペインに表示します。

次の図は、利用可能なオブジェクトが「Component Navigator」ペインに表示されている例を示します。

この図についてはドキュメントのテキストで説明しています

これらのオブジェクトは、設計パレットにドラッグ・アンド・ドロップすることができます。

  1. パネル・オブジェクトを「Layout」ノードの下から設計パレットにドラッグします。パネルをパレットの周囲にドラッグすると、ガイドラインが青色で表示されます。これらのガイドラインを使用して、オブジェクトの位置合せを行います。

  2. パネルをパレットの左上端でドロップします。

  3. パネルの右下端をパレットの右側にドラッグします。

  4. 次に、パレットの高さの約半分の位置でドロップします。または、右側のプロパティ・パレットを使用して、パネルのサイズを設定します。

  5. Datagridオブジェクトを選択します。これは、データを表形式でレンダリングするためのオブジェクトです。このオブジェクトをステップ1で作成したパネルにドロップします。これでDatagridはパネルの子になり、必要に応じてサイズを変更できます。実行結果を次の図に示します。

    この図についてはドキュメントのテキストで説明しています

    デフォルトでは、3列が作成されます。次の項(「データソースへのレイアウト・オブジェクトのバインド」)では、MXMLコードのデフォルトをオーバーライドする操作を実行します。

チャートの追加

チャート機能オプションのライセンスを購入してある場合、チャートをレイアウトに追加できます。

  1. 最初に、レイアウトにチャートを追加する場所を確保します。Datagridオブジェクトを選択し、ホスティングしているパネルの高さの約半分の位置まで上端を下に移動します。

  2. この例では、列チャートを設計パレットからドラッグして、ホスティングしているパネルにドロップします。ガイドラインを使用して、位置合せを行います。

  3. ドロップすると、デフォルトのサイズがDatagridに重なり、チャートの凡例が左上の隅に表示されます。チャートのサイズを変更して凡例を右側に移動し、次の図と同じようにします。

    この図についてはドキュメントのテキストで説明しています

    これはサンプル・チャートです。データへのバインドを次の項で行います。

データソースへのレイアウト・オブジェクトのバインド

レイアウトが完了したので、レイアウト・オブジェクトをデータソースにバインドします。Flexには、オブジェクトのプロパティ・パレットを使用してバインドを定義する支援機能がありますが、この作業を実行するのに十分ではありません。そのため、Sourceエディタを使用してMXMLを直接更新する必要があります。

DataGridのバインド

DataGridをバインドする手順は次のとおりです。

  1. DataGridを設計パレットで選択してから「Source」タブをクリックして、MXMLソースを表示します。DataGridコードの最初の行が選択された状態で表示されます。これは、複雑なFlexテンプレートを作成してコードを簡単に探す必要がある場合に便利な機能です。

    DataGridコードは次のようになります。

    <mx:DataGrid x="10" y="160" width="476" height="152">
       <mx:columns>
          <mx:DataGridColumn headerText="Column 1" dataField="col1"/>
          <mx:DataGridColumn headerText="Column 2" dataField="col2"/>
          <mx:DataGridColumn headerText="Column 3" dataField="col3"/>
       </mx:columns>
    </mx:DataGrid>

    親コンテナ内のグリッドにおけるx座標とy座標の相対位置、およびその幅と高さがコードで定義されています。その次の要素では、ヘッダー・ラベルとデータ・フィールドの属性で列が定義されています。

    この作業の目的は、次の図のような表を作成することです。

    この図についてはドキュメントのテキストで説明しています

  2. DataGridをデータソースに対応させます。このためには、次に示すように属性を<mx:DataGrid>要素に追加します。

    dataProvider="{dataXML.ROW}"

    この属性により、実行時にグリッドの移入に使用するデータ・オブジェクトを定義します。この例ではXMLデータ変数をdataXMLとして定義しました。ここでは、これにROW(つまり、dataXML.ROW)を付けた定義を使用します。ROWは、データセットの繰返しグループです。データソースであることをFlexエンジンで検出できるように中カッコで囲む必要があることに注意してください。

  3. 列をバインドします。基本構造があるので、dataFieldの値をデータソースの適切な要素名に置き換えます。また、headerTextの値も目的の列ヘッダー名に置き換えます。たとえば、第1列目に次の文字列があると仮定します。

    <mx:DataGridColumn headerText="Column 1" dataField="col1"/>

    前述の文字列は、次の文字列で置き換えます。

    <mx:DataGridColumn headerText="Employee" dataField="NAME" />

    これにより第1列目のヘッダー名はEmployeeと定義され、列データはXMLデータソースのNAME要素にバインドされます。

    完成したDataGridサンプル・コードは次のようになります。

    <mx:DataGrid x="10" y="160" width="476" height="152" dataProvider="{dataXML.ROW}"> 
      <mx:columns>
        <mx:DataGridColumn headerText="Employee" dataField="NAME" />
        <mx:DataGridColumn headerText="Title" dataField="JOB_TITLE"/>
        <mx:DataGridColumn headerText="Monthly Salary" dataField="SALARY"/>
        <mx:DataGridColumn headerText="Annual Salary" dataField="ANNUAL_SALARY"/>
      </mx:columns>
    </mx:DataGrid>
  4. これによって、サンプル・データを適用したテンプレートをプレビューできるようになります。「Run」→「Run EmployeeReport」を選択すると、新しいブラウザ・ウィンドウが開き、サンプル・データの表がレンダリングされます。

チャートのバインド

チャートをバインドする手順は次のとおりです。

  1. Design」タブでチャートを選択します。次に、「Source」ビューに戻って次のようなチャート・コードを検索します。

    <mx:ColumnChart x="10" y="10" id="columnchart1" width="476" height="142">
      <mx:series>
        <mx:ColumnSeries displayName="Series 1" yField=""/>
      </mx:series>
    </mx:ColumnChart>
    <mx:Legend dataProvider="{columnchart1}" x="383" y="10"/>
  2. データソースをチャート・オブジェクトにバインドするには、次のようにしてdataProvider属性を<mx:ColumnChart>要素に追加します。

    dataProvider="{dataXML.ROW}"
  3. 次に、水平軸および系列のバインドを追加します。詳細は、Flexのヘルプ・ファイルを参照してください。

    次の例のような従業員別の給与を示すチャートを作成するには:

    この図についてはドキュメントのテキストで説明しています

    コードを次のように更新します。

    次にサンプル・コードを示します。

    <mx:ColumnChart x="10" y="10" id="columnchart1" width="476" height="142" dataProvider="{dataXML.ROW}"> 
       <mx:horizontalAxis>
         <mx:CategoryAxis  categoryField="NAME" />
       </mx:horizontalAxis>
       <mx:series >
         <mx:ColumnSeries xField="NAME"  yField="SALARY" displayName="Salary"/>
       </mx:series>
    </mx:ColumnChart>
    <mx:Legend dataProvider="{columnchart1}" x="383" y="10"/>

    このサンプルでは、<mx:horizontalAxis>要素が追加され、categoryField属性にはNAMEデータ要素が割り当てられています。この要素は、チャートをレンダリングするために必要です。

    <mx:series>要素は、SALARY値を各従業員のNAMEにバインドするように更新され、従業員ごとにチャートの縦棒が作成されます。

    凡例のコードは更新不要です。<mx:ColumnChart>要素のid属性が、<mx:Legend>要素のdataProvider属性値に一致することに注意してください。

  4. これによって、サンプル・データを使用してテンプレートを実行することができます。次の図に示すように、チャートが表形式のデータの上に表示される出力になります。

    この図についてはドキュメントのテキストで説明しています

レポート定義へのFlashテンプレートのアップロード

テンプレートをレポート定義にアップロードする手順は次のとおりです。

  1. カタログ内のレポートに移動します。「編集」をクリックしてレポート・エディタを起動します。

  2. 新規レイアウトの追加」をクリックします。

  3. 新規レイアウトのアップロードまたは生成で「アップロード」をクリックします。

  4. テンプレート・ファイルのアップロード」ダイアログで次の操作を実行します。

  5. アップロード」をクリックして、レポートに使用可能なレイアウトに、Flashテンプレートを追加します。

PDF出力用プロパティの設定

「レポート・プロパティ」ページには、Flashテンプレートをレンダリングするためのプロパティのセットがあります。出力タイプとしてPDFを選択する場合に、これらのプロパティを使用してFlashオブジェクトのサイズと配置を指定できます。

重要: PDF出力を生成するには、テンプレートの高さと幅をFlex Builderで指定する必要があります。「レイアウトの作成」を参照してください。

PDF出力のプロパティを設定する手順は次のとおりです。

  1. カタログ内のレポートに移動します。「編集」をクリックしてレポート・エディタを起動します。

  2. レポート・エディタで「プロパティ」をクリックして、「レポート・プロパティ」ダイアログを開きます。

  3. 書式設定」タブをクリックし、「Flash」という見出しのプロパティのセットまでスクロールします。

    この図についてはドキュメントのテキストで説明しています

  4. プロパティの値を入力します。必須プロパティはありません。値を入力しないとデフォルト値が適用され、11インチx8.5インチの文書(標準横向き)になり、ページの左上隅には1/4インチの凹枠がFlashオブジェクトの挿入位置として割り当てられます。文書のデフォルト領域は、SWFオブジェクトのサイズになります。

詳細情報

この章では、簡単なFlexテンプレートの作成方法を説明しましたが、Adobe Flexでは、ユーザー向けにより複雑で対話的なレポートを作成することができます。Flexの使用によりレイアウト・オブジェクトをアニメーションとして相互につなぎ合わせ、書式設定することが可能になります。また、受信したデータを要約し、計算したフィールドを作成することもできます。こうしたより高度な機能の詳細は、Flexのドキュメントを参照してください。