Comments
Description
Transcript
Oracle Express Web Agent - OTN
Oracle Express Web Agent アドイン・ビュー・ガイド リリース 6.3 2000 年 2 月 部品番号 : J00730-01 Oracle Express Web Agent アドイン・ビュー・ガイド , リリース 6.3 部品番号 : J00730-01 原本名:Oracle Express Web Agent Guide to Add-In Views, Release 6.3 原本部品番号:A49761-1 Copyright © 1999, 2000, Oracle Corporation. All rights reserved. Printed in Japan. 制限付権利の説明 プログラム(ソフトウェアおよびドキュメントを含む)の使用、複製または開示は、オラクル社との契 約に記された制約条件に従うものとします。著作権、特許権およびその他の知的財産権に関する法律に より保護されています。 当プログラムのリバース・エンジニアリング等は禁止されております。 このドキュメントの情報は、予告なしに変更されることがあります。オラクル社は本ドキュメントの無 謬性を保証しません。 * オラクル社とは、Oracle Corporation(米国オラクル)または日本オラクル株式会社(日本オラクル) を指します。 危険な用途への使用について オラクル社製品は、原子力、航空産業、大量輸送、医療あるいはその他の危険が伴うアプリケーション を用途として開発されておりません。オラクル社製品を上述のようなアプリケーションに使用すること についての安全確保は、顧客各位の責任と費用により行ってください。万一かかる用途での使用により クレームや損害が発生いたしましても、日本オラクル株式会社と開発元である Oracle Corporation(米 国オラクル)およびその関連会社は一切責任を負いかねます。当プログラムを米国国防総省の米国政府 機関に提供する際には、『Restricted Rights』と共に提供してください。この場合次の Notice が適用され ます。 Restricted Rights Notice Programs delivered subject to the DOD FAR Supplement are "commercial computer software" and use, duplication, and disclosure of the Programs, including documentation, shall be subject to the licensing restrictions set forth in the applicable Oracle license agreement. Otherwise, Programs delivered subject to the Federal Acquisition Regulations are "restricted computer software" and use, duplication, and disclosure of the Programs shall be subject to the restrictions in FAR 52.227-19, Commercial Computer Software - Restricted Rights (June, 1987). Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065. このドキュメントに記載されているその他の会社名および製品名は、あくまでその製品および会社を識 別する目的にのみ使用されており、それぞれの所有者の商標または登録商標です。 ドラフトのアルファ版およびベータ版ドキュメント ドラフトのアルファ版およびベータ版ドキュメントはプレリリース状態のものです。これらのドキュメ ントは、オラクル社の機密かつ所有のドキュメントであり、デモおよび暫定使用のみを目的としたもの です。タイプミスからデータの不正確さに至るまでのいくつかの誤りが存在することが考えられます。 このドキュメントは予告なく変更する場合がありますが、当ソフトウェアを使用するハードウェアに限 定するものではありません。オラクル社はプレリリースのドキュメントに対して、無謬性を保証しませ ん。またそのドキュメントを使用したことによって損失および損害が発生した場合も一切責任を負いか ねますのでご了承ください。 目次 このマニュアルの内容 ............................................................................................................................................ v このガイドの説明 ...................................................................................................................................................... v 関連ドキュメント ...................................................................................................................................................... v 表記上の規則 ............................................................................................................................................................ vii 1 アドイン・ビューの概要 概要 ........................................................................................................................................................................... アドイン・ビューについて ................................................................................................................................... このガイドの対象読者 ........................................................................................................................................... アドイン設計オプション ....................................................................................................................................... 1-1 1-1 1-2 1-3 2 アドインのコンポーネント 概要 ........................................................................................................................................................................... アドインのコンポーネント ................................................................................................................................... アドインの初期化プログラム ............................................................................................................................... アドインの TOHTML プログラム ...................................................................................................................... オプションのカスタム・メソッド・プログラム ............................................................................................... アドイン・ビュー・データ ................................................................................................................................. アドイン・ビューの初期化プログラム ............................................................................................................. アドイン・ビューの TOHTML プログラム .................................................................................................... アドイン・ビューのオプションのアプレットまたは ActiveX コントロール ............................................ アドイン・ビューのオプションのデータ送信プログラム ............................................................................. アドインのドキュメント ..................................................................................................................................... アドインを実装するためのステップ ................................................................................................................. 2-1 2-2 2-4 2-7 2-9 2-11 2-12 2-12 2-14 2-15 2-16 2-17 iii 3 アドイン・ビューの Express データ 概要 ........................................................................................................................................................................... アドイン・ビューのデータ ................................................................................................................................... データ・キューブの理解 ....................................................................................................................................... カーソルの理解 ....................................................................................................................................................... カーソルの作成とデータの移入 ........................................................................................................................... エッジ・カーソルの理解 ....................................................................................................................................... エッジ・カーソルのサンプル ............................................................................................................................. エッジ・カーソルの行を移動する方法 ............................................................................................................. エッジ・カーソルの行を移動する方法(展開)............................................................................................... エッジ・カーソルの行を移動する方法(階層)............................................................................................... データ・カーソルの理解 ..................................................................................................................................... カーソルにおける単一値の取得 ......................................................................................................................... データ・キューブを操作するプログラム ......................................................................................................... 3-1 3-2 3-4 3-6 3-7 3-9 3-11 3-13 3-14 3-15 3-17 3-18 3-18 4 サンプル・プログラム 概要 ........................................................................................................................................................................... サンプル・プログラムの概要 ............................................................................................................................... サンプル 1: アプレットまたは アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル .......... サンプル 2: アプレットまたは アプレットまたは ActiveX コントロールを使用した Express プッシュ・モデル .............. サンプル 3: クライアント・プル・モデル クライアント・プル・モデル ..................................................................................................... 索引 iv 4-1 4-1 4-2 4-7 4-10 このマニュアルの内容 このガイドの説明 このガイドの目的 『Oracle Express Web Agent アドイン・ビュー・ガイド』は、アドイン・ビューを設計およ び実装するプログラマを対象としています。このアドイン・ビューは、Oracle Express Web Agent(以後、“Express Web Agent” と表記)には付随していません。 対象読者 このガイドは、Express Web Agent アプリケーションを作成した経験があり、Express 言語 でのプログラミングに習熟しているプログラマを対象としています。 このガイドの対象範囲 このガイドには、アドイン・ビュー特有の情報が記載されています。ここでは、Express Web Agent のインストール方法、または Express Web Agent アプリケーションの開発方法 については説明していません。 多くのアドイン開発者は、Express プログラムではなく、Java アプレットまたは ActiveX コ ントロールを使用して、データの表示を処理します。このガイドには、Java や ActiveX の開 発に関する情報は記載されていません。 関連ドキュメント 印刷されたドキュメント このマニュアルは、印刷物およびオンライン・マニュアルとして使用できるドキュメント・ セットの一部となります。ドキュメント・セットの内容は次のとおりです。 v ■ 『インストレーションおよび構成ガイド』: OLAP Server を、Windows NT サーバーま たはワークステーションのサービスとしてインストール、構成および管理する方法につ いて説明します。 ■ 『データベース管理者ガイド』: 既存の Express データベースを Express Client 製品で最 適に使用するための構成方法、および新しいデータベースの作成方法について説明しま す。Express データ・モデルおよびデータベース・オブジェクトについて説明します。 ■ 『Oracle Express データベース言語ガイド』: Express 言語を構成するコマンド、関数、 オプションおよび プログラムの構文と使用方法について説明します。 ■ 『Oracle OLAP Server Express 言語プログラミング・ガイド』: Express のプログラミン グ環境について説明し、データにアクセスして分析するためのプログラミング方針につ いて例をあげて説明します。 ■ 『API ガイド』: SNAPI を使用して、OLAP Server と対話するクライアント・アプリ ケーションを開発する方法について説明します。 ■ 『Oracle Express Web Agent ユーザーズ・ガイド』: 動的に生成される Express データ のビューを含むドキュメントを作成し、Web 上に公開する方法について説明します。 ■ 『Oracle Express Spreadsheet Add-In ユーザーズ・ガイド』: Excel のアドインを使用し て、OLAP Server と対話するクライアント・アプリケーションを Excel で開発する方法 について説明します。 Windows ヘルプ 印刷されたマニュアルの他に、次のヘルプを利用できます。 vi ■ 「Express インストレーション・ヘルプ」: インストールのためのオンライン・ヘルプ です。 ■ 「Express Service Manager ヘルプ」: Windows NT システムでのサービスを管理するた めのオンライン・ヘルプです。 ■ 「Express Configuration Manager ヘルプ」: Express のモジュールを選択し、実行時の 設定を構成するためのオンライン・ヘルプです。 ■ 「Express Session Manager ヘルプ」: Express セッションを管理するためのオンライ ン・ヘルプです。 ■ 「Express Language Help」: Express 言語を構成するコマンド、関数、オプションおよ びプログラムの構文と使用方法について説明します。 ■ 「Express Administrator ヘルプ」: Express Administrator のオンライン・ヘルプです。 ■ 「Express Web Agent ヘルプ」: Express Web Agent プログラムのオンライン・ヘルプ です。Express Web Agent によって、Web ブラウザで表示する Express データの HTML タグおよび動的ビューを生成します。 ■ 「Express Spreadsheet Add-In ヘルプ」: Express Spreadsheet Add-In のオンライン・ヘ ルプです。 表記上の規則 本文規則 このマニュアルでは、本文に次の規則を使用しています。 規則 かぎカッコ (「」 、『』) 明朝書体の太字の語句 (太字 太字) 太字 用途 「」はメニュー項目、コマンド・ボタン名、オプション、フィール ド名、およびこのマニュアル内の項タイトル名の表記に使用し、『』 はこのマニュアル以外の参照ドキュメント名などの表記に使用す る。 メニュー項目、コマンド・ボタン名、オプション、フィールド名お よびハイパーリンクの表記に使用する。 結果など)の表記に使用する。 ゴシック書体の太字の語句 注意および表中の補足情報(結果 結果 太字) (太字 太字 クーリエ書体の語句 例や、表記どおりに入力する必要があるコマンドなどに使用する。 (Courier) 山カッコ (<>) イタリック書体の語句 (Italic) 下線の語句 可変テキストを含む変数の表記に使用する。可変テキストは、ダイ アログ・ボックスまたはそのコンポーネントにラベルがない場合、 あるいはラベルが状況に応じて動的に変化する場合に使用されま す。可変テキストの文字は、画面の表示と完全には一致しません。 Express 言語コマンド構文内の引数またはパラメータの表記に使用 する。 Express 言語構文の説明でのデフォルト値の表記に使用する。 (下線) 大文字の語句 (UPPERCASE) Express のコマンドやオブジェクト、および頭字語の表記に使用す る。 用語の使用に関する規則 このガイドでは、簡潔に表すために、Oracle Express Web Agent を “Express Web Agent” と 表記します。 vii viii 1 アドイン・ビューの概要 概要 はじめに この章では、このマニュアルの主題であるアドイン・ビューについて紹介します。このガイ ドの対象読者について説明した後、利用できる設計オプションについて説明します。 この章の内容 ■ アドイン・ビューについて ■ このガイドの対象読者 ■ アドイン設計オプション アドイン・ビューについて アドイン・ビューの目的 アプリケーション開発者は、Oracle Express Web Agent(以後、“Express Web Agent” と表 記)を使用して HTML ページを作成する際に、表または VRML グラフを挿入できます。 TABLE および VRMLGRAPH は、Express Web Agent で使用できる 2 つの組込みビュー・ タイプです。これらの組込みタイプには、Express データを表示するための 2 つの方法が用 意されています。 HTML ページにデータを表示した経験のある、Express のカスタマ、コンサルタント、およ びサードパーティ・ベンダーであれば、データを表すための方法を知っています。このよう なユーザーは、マップを作成する方法を知っているか、または各自の製品で、VRML グラフ とは外観の異なるチャートを表示します。このようなユーザーが、Express Web Agent に各 自の表示メソッドを組み込めるように、それぞれのアドイン・ビュー・タイプの設計および 実装を可能にしました。 アドイン・ビューの概要 1-1 このガイドの対象読者 アドイン・ビューの説明 アドイン・ビューは、Express Web Agent に追加されたカスタム・ビュー・タイプの一種で す。アドイン開発者は、ビュー・タイプの名前、メソッド、およびビューに定義されている 特別なプロパティを指定します。Express Web Agent は、メソッドを使用して、この ビュー・タイプに対する HTML コードを生成します。 アドイン開発者がこれらのステップを使用して、Express Web Agent で各自のビュー・タイ プを利用できるようにすると、アプリケーション開発者は、 (XWD_VIEW.CREATE などの) Developer’s Toolkit プログラムを使用して、各自のアプリケーションの中にこのタイプの ビューを表示できるようになります。 アプリケーション・コードはビューを表示する際に、現行のブラウザにおける実行時の表示 用として、ビューのインスタンスを作成します。アドイン・ビューのインスタンスには次の 特徴があり、これによって、Express データを表示できます。 ■ インスタンスはデータ・キューブに関連付けられています。 ■ インスタンス、およびそのデータ・キューブは、組込みビューで使用できるすべての Developer’s Toolkit プログラムを利用して操作できます。 アドイン・ビューを表示するためのメソッドは、すべて Express 言語コードで実装すること も、Java アプレットまたは ActiveX コントロールで実装することもできます。アプレットま たはコントロールは、Express からデータを受け取り、それを表示します。 アドイン・ビューおよびアドイン・オブジェクト アドインは、必ずしもビューであるとは限りません。アドインがビューであるかオブジェク トであるかは、アドインの実装によって決定されます。オブジェクトは、ビューよりも汎用 的なエンティティで、データ・キューブには関連付けられません。 アドインは、主に、Express データを新しいフォームに表示する目的で作成されるため、関 連データを持たないアドインでは、使用が限定されます。したがって、このマニュアルで は、特にアドイン・ビューを対象としています。アドイン・オブジェクトについては、2 章 で、実装を行ってアドインを使用するステップを説明する際に、簡単な例が必要な箇所での み説明しています。 このガイドの対象読者 前提知識 このガイドは、アドイン・ビューを設計および実装するプログラマを対象としています。ア ドインを開発するには、Express Web Agent アプリケーションを作成した経験があり、 Express 言語でのプログラミングに習熟していることが必要です。これらに関する情報は、 次の Express ドキュメントを参照してください。 ■ 『Oracle Express Web Agent ユーザーズ・ガイド』および「Express Web Agent ヘルプ」 1-2 Oracle Express Web Agent アドイン・ビュー・ガイド アドイン設計オプション ■ 『Oracle OLAP Server Express 言語プログラミング・ガイド』、 「Express Language Help」および『Oracle Express データベース言語ガイド』 ■ 『Oracle Express データベース管理者ガイド』および「Express Administrator ヘルプ」 多くのアドイン開発者は、Express プログラムではなく、Java アプレットまたは ActiveX コ ントロールを使用して、データの表示を処理します。各自のアドインに Java アプレットま たは ActiveX コントロールを組み込む場合は、これらのコンポーネントの作成および修正方 法について理解する必要があります。このガイドには、Java や ActiveX の開発に関する情報 は記載されていません。 アドイン開発者とアプリケーション開発者 通常は、コンサルタントやサードパーティ・ベンダーが、アドイン開発者となります。これ らの開発者は、それぞれの特徴である表示機能を Express Web Agent に組み込むことを目的 としています。アドイン開発者は Express プログラムを作成し、オプションとして Java ア プレットや ActiveX コントロールを作成し、Express データを新しい方法で表現します。 このようなアドインの利用者、つまり Express Web Agent のアプリケーション開発者は、ア ドイン開発者が作成したものを利用します。アプリケーション開発者は、コードで、 Express Web Agent の Developer’s Toolkit からプログラムを実行してアドインを初期化し、 アドインを組込みビューのように使用します。 このガイドには、アドイン開発者のための情報が記載されていますが、これはアプリケー ション開発者向けのものではありません。アドイン開発者は、実装したアドインを利用する ために必要な特別な情報を、アプリケーション開発者に提供する責任があります。アドイン 開発者が提供する情報のタイプは、第 2 章「アドインのドキュメント」の項目を参照してく ださい。 アドイン設計オプション 設計について すべての Express Web Agent アプリケーションでは、データは OLAP Server に格納されて おり、ユーザーのブラウザに表示されます。特定のアドインには、データの転送および表示 に関するオプションが用意されています。 ■ データの表示は、HTML 表などの簡単な方法でも、3D グラフィック表現などの複雑な 方法でも処理できます。 ■ データを表示するためのソフトウェア・インテリジェンスは、Express、Java アプレッ トまたは ActiveX コントロールによって実現されています。 ■ データの転送は、Express、アプレットまたは ActiveX コントロールによって開始されま す。 アドインを設計する場合は、これらの事項について決定する必要があります。 アドイン・ビューの概要 1-3 アドイン設計オプション 設計モデル アドインの設計モデルは、データ転送を起動する方法によって、2 種類に分類されます。2 つのモデルは、次のとおりです。 ■ Express プッシュ・モデル ■ クライアント・プル・モデル これらのモデルのどちらを採用するかは、アドインを開発する目的、およびアプレットや ActiveX コントロールを含めるかどうかによって決まります。 Express プッシュ・モデル Express プッシュ・モデルでは、ブラウザに HTML ページを送信する際に、Express によっ てすべてのデータが送信されます。 Express は、HTML タグで囲まれたデータを送信し、データを直接表示することも、 <APPLET> や <OBJECT> タグの中にパラメータとしてデータを送信し、アプレットや ActiveX コントロールで表示することもできます。 このモデルでは、データが変更されるたびに、ページ全体がリフレッシュされます。たとえ ば、ビューの項目をドリルすると、ページ全体が再描画されます。 クライアント・プル・モデル クライアント・プル・モデルでは、クライアントがデータを要求した場合のみ、Express に よって、クライアント・アプレットまたは ActiveX コントロールにデータが送信されます。 クライアント・アプレットや ActiveX コントロールは、データ送信用の Express プログラム を実行する URL にアクセスすることによって、データを要求できます。 このモデルでは、ページの一部はアプレットや ActiveX コントロールによって管理されま す。アプレットや ActiveX コントロールは、新しいデータを要求して受け取った場合のみ、 ページの一部を再描画します。 追加情報 第 2 章では、Express プッシュおよびクライアント・プルの設計モデルの実装について、さ らに詳しく説明します。 1-4 Oracle Express Web Agent アドイン・ビュー・ガイド 2 アドインのコンポーネント 概要 はじめに この章では、アドインのコンポーネントについて説明します。ここでは、アドイン・ビュー の他に、簡単なアドイン・オブジェクトについて説明します。最後の項目では、アドインを 実装するステップについて概説します。 この章の内容 ■ アドインのコンポーネント ■ アドインの初期化プログラム ■ アドインの TOHTML プログラム ■ オプションのカスタム・メソッド・プログラム ■ アドイン・ビュー・データ ■ アドイン・ビューの初期化プログラム ■ アドイン・ビューの TOHTML プログラム ■ アドイン・ビューのオプションのアプレットまたは ActiveX コントロール ■ アドイン・ビューのオプションのデータ送信プログラム ■ アドインのドキュメント ■ アドインを実装するためのステップ アドインのコンポーネント 2-1 アドインのコンポーネント アドインのコンポーネント 必要なアドイン・コンポーネント アドインを実装するには、次の 2 つの Express プログラムを作成する必要があります。 ■ アドインの初期化プログラム。このプログラムによって、Express Web Agent にアドイ ンの名前、およびアドインの TOHTML プログラムの名前が通知されます。また、その 他のタスク(アドインの特別なプロパティの定義など)も行います。 ■ アドイン TOHTML プログラム。このプログラムは、アドインを表示する際に、Express Web Agent でコールされます。このプログラムによって、アドインのインスタンスを ユーザーのブラウザにどのように表示するかが決定されます。 アプリケーション開発者は、この初期化プログラムを実行し、アドインを使用する前に対象 のアドインを登録します。初期化プログラムのコードでは、アドインの TOHTML プログラ ムの名前を指定します。この名前によって、アドインの表示方法が Express Web Agent に通 知されます。 アドインのオプション・コンポーネント アドインを画面に表示する際に、表示方法を少し変更したい場合があります。アドイン開発 者は、アドインの表示方法を変更するカスタム・メソッド・プログラムを提供できます。 アプリケーション開発者は、アドインが定義されている HTML ページと同じページに、独 自のカスタム・メソッド・プログラムを実行するリンクまたはフォームを挿入することがで きます。このリンクまたはフォームをクリックすると、カスタム・メソッド・プログラムに よって表示が変更されます。 アドイン・ビュー特有のオプション・コンポーネント 多くのアドイン作成者は、Java アプレットまたは ActiveX コントロールを使用して、ユー ザーの画面に Express データを表示します。この方法で画面に Express データを表示するに は、TOHTML プログラムを作成する必要があります。TOHTML プログラムでは、ビュー は、HTML の書式タグで囲まれたデータ形式では表現されません。かわりに、<APPLET> タグまたは <OBJECT> タグを生成し、ブラウザにアプレットや ActiveX コントロールを コールするように通知します。 また、アプレットや ActiveX コントロールは、Express との通信を開始して、データを取得 します。この場合には、必要な初期化プログラムと TOHTML プログラムの他に、次のアド イン・コンポーネントを用意する必要があります。 ■ Express データを表示する Java アプレットまたは ActiveX コントロール ■ Express で記述された、データを配布するためのデータ送信プログラム 2-2 Oracle Express Web Agent アドイン・ビュー・ガイド アドインのコンポーネント アプレットまたは ActiveX コントロールによって、Express との通信を開始してデータを取 得しない場合は、データ送信プログラムは必要ありません。かわりに、TOHTML プログラ ムで、すべてのデータをパラメータの形式で、アプレットまたは ActiveX コントロールに提 供できます。データ送信プログラムを使用する場合は、クライアント・プル・モデルとな り、データ送信プログラムを使用しない場合は、Express プッシュ・モデルとなります。こ れらの設計モデルについては、第 1 章で説明しています。 アドイン・コンポーネントの名前と場所 各自のアドインを作成する場合には、アドイン専用の Express データベースに、初期化プロ グラム、TOHTML プログラムおよびオプション・プログラムを格納します。そしてこの データベースは、すべての Expess Web Agent ファイルが格納されているディレクトリの ADDINS サブディレクトリ(例 : ¥ORANT¥OLAP¥OES601¥OWA110¥ADDINS)に、この データベースを保存します。 この場合には、アドインに関連付けられた名前で共通に使用する 3 文字程度の短い接頭辞を 選択する必要があります。サードパーティ・ベンダーでは、接頭辞にそれぞれの会社名を指 定して、Web Agent の中で複数のアドインを表す場合に、名前が重複することが少なくなる ようにすることをお薦めします。 たとえば、AceChart Inc. という会社で作成したアドインで、画面上にチャート(特別なグラ フ)を表示する場合には、接頭辞を「ACE」とし、アドイン・コンポーネントの名前を次の 表のようにします。 名前 説明 ACE.CHART.INIT 初期化プログラム ACE.CHART.TOHTML TOHTML プログラム ACE.CHART.SIZE カスタム・メソッド・プログラム(オプション) ACE.CHART.SNDATA データ送信プログラム(オプション) ACEADDIN.DB アドイン・データベース オプションのアプレットや ActiveX コントロールは、関連した名前を指定しなくてもかまい ません。 アドインを使用するアプリケーション・プログラム アドインを使用するアプリケーション開発者は、次の処理を行うコードを記述する必要があ ります。 1. 引数として指定されたアドインの名前を使用して XWD_ADDIN.INIT プログラムをコー ルして、アドインを初期化します。XWD_ADDIN.INIT は、アドイン・データベースを アタッチし、アドイン初期化プログラムを実行します。 アドインのコンポーネント 2-3 アドインの初期化プログラム 2. XWD_CREATE や XWD_VIEW.CREATE などのコマンドを挿入して、アドインのイン スタンスを HTML ページに表示します。 アドインの作成者は、 (Java アプレットへのアクセスを行うなどの)追加ステップが必要な ことや、 (カスタム・メソッドなどの)追加オプションを使用することを、アプリケーショ ン開発者に通知する必要があります。 この章の以降の内容 この章では、ここからアドイン・コンポーネントについて詳しく説明します。説明を簡単に するために、アドイン・ビューではなく、アドイン・オブジェクト(clock)の例を使用して います。 アドイン・オブジェクトのコンポーネントについて説明した後の項目で、アドイン・ビュー の作成に関する追加情報について説明します。 アドインの初期化プログラム 初期化プログラムの目的 アドインの初期化プログラムは、Express Web Agent に登録されているオブジェクトおよび ビューのリストに、新しいオブジェクトやビューを追加します。また、オブジェクトまたは ビューを表示するため、Express Web Agent で使用する TOHTML プログラムを指定しま す。オプションとして、初期化プログラムで、新しいオブジェクトまたはビューに関連付け るプロパティを定義することもできます。 初期化プログラムの説明 初期化プログラムでは、引数は必要ありません。 初期化プログラムでは、次の Developer’s Toolkit プログラムのコールを記述する必要があり ます。 プログラム 説明 XWD_ADDTYPE アドインを Express Web Agent に登録します。このプログ ラムの引数は、アドインの名前とタイプ(オブジェクトま たはビュー)を指定します。 2-4 Oracle Express Web Agent アドイン・ビュー・ガイド アドインの初期化プログラム プログラム 説明 XWD_ADDHANDLER アドインに対する、Express Web Agent で使用する TOHTML プログラムの名前を指定します。TOHTML プロ グラムは、「TOHTML メソッドのハンドラ」と呼ばれるこ ともあります。 XWD_ADDHANDLER の引数は次のとおりです。 ■ アドインの名前 ■ TOHTML ハンドラが指定されていることを表すキー ワード TOHTML ■ TOHTML プログラムの名前 アドインの初期化プログラムでは、オプションとして、アドインのプロパティを定義するプ ログラムをコールすることもできます。Developer’s Toolkit には、プロパティを定義するた めの次の 4 つのプログラムが用意されています。 プロパティを追加するためのプログラム 追加するプロパティのデータ型 XWD_ADDBOOLPROP BOOLEAN XWD_ADDDECPROP DECIMAL XWD_ADDINTPROP INTEGER XWD_ADDTEXTPROP TEXT いったん初期化プログラムを実行して、プロパティが追加されると、アプリケーション開発 者は、 (XWD_SETPROPVALB などの)Developer’s Toolkit プログラムをコールして、追加 されたプロパティを組込みプロパティのように使用することができます。 追加情報 Developer’s Toolkit プログラムの詳細は、「Express Web Agent ヘルプ」を参照してくださ い。 初期化プログラムの例 この例では、Sundial という会社が、現在の時刻と日付を表示する clock アドインを実装し ます。アドイン開発者は、アドインの接頭辞として「SDL」を使用しています。 この初期化プログラムでは、Express Web Agent に次の内容を指定しています。 ■ SDL.CLOCK というオブジェクトを登録します。 ■ SDL.CLOCK.TOHTML プログラムを使用してオブジェクトのインスタンスを表示しま す。 アドインのコンポーネント 2-5 アドインの初期化プログラム ■ SDL.CLOCK オブジェクトに対して、SDL.CLOCK.DATEFORMAT というテキスト・プ ロパティを定義します。 DEFINE SDL.CLOCK.INIT PROGRAM PROGRAM call xwd_addtype('SDL.CLOCK', 'OBJECT') call xwd_addhandler('SDL.CLOCK', 'TOHTML', 'SDL.CLOCK.TOHTML') call xwd_addtextprop('SDL.CLOCK', 'SDL.CLOCK.DATEFORMAT', '<dd>/<mm>/<yy>') return END 初期化プログラムをコールする方法 アプリケーション開発者は、初期化プログラムを直接コールするようなコードは作成しませ ん。かわりに、Developer’s Toolkit プログラム XWD_ADDIN.INIT のコールを使用します。 アプリケーション開発者は、XWD_ADDIN.INIT の引数に、初期化プログラムの名前、およ びプログラムが格納されているアドイン・データベースを指定します。XWD_ADDIN.INIT は、データベースをアタッチして、初期化プログラムを実行します。 次のアプリケーション・コードでは、SDL.CLOCK アドインを初期化します。 call xwd_addin.init('SDL.CLOCK', 'SDLADDIN', 'SDL.CLOCK.INIT') アプリケーション開発者は、Express Web Agent アプリケーションを初期化するコードの中 に、XWD_ADDIN.INIT へのコールを記述する必要があります。このようにして、必要なと きに随時にアドインを使用することができます。 初期化プログラムの関連情報 ここで説明したプログラムの詳しい使用方法は、 「Express Web Agent ヘルプ」で次のト ピックを参照してください。 「XWD_ADDTYPE」 「XWD_ADDHANDLER」 「XWD_ADDBOOLPROP」 「XWD_ADDDECPROP」 「XWD_ADDINTPROP」 「XWD_ADDTEXTPROP」 「XWD_ADDIN.INIT」 アドイン・ビューの初期化プログラムの追加情報は、この章の「アドイン・ビューの初期化 プログラム」の項目を参照してください。 2-6 Oracle Express Web Agent アドイン・ビュー・ガイド アドインの TOHTML プログラム アドインの TOHTML プログラム TOHTML プログラムの目的 アプリケーション開発者が、アドインのインスタンスをコード内で生成する場合は、 XWD_CREATE や XWD_VIEW.CREATE などの Developer’s Toolkit プログラムをコールし ます。アドイン開発者は、Express Web Agent にアドインを表示する方法を指定し、 XWD_CREATE や XWD_VIEW.CREATE で操作できるようにする必要があります。 アドインの TOHTML プログラムの目的は、Express Web Agent に、アドインのインスタン スを表示する方法を指定することです。 TOHTML プログラムの説明 最も簡単な TOHTML プログラムでは、HTP.PRINT などの Developer’s Toolkit プログラム のコールを記述します。これで、アドインの表示に必要な HTML コードがすべて生成され ます。この項目の例では、簡単なアドイン・オブジェクトを使用します。アドイン・ビュー の TOHTML プログラムでは、ビューのデータ・キューブ内のデータを操作し、複雑な方法 でデータを表示するための HTML コードを生成できます。詳細は、この章の「アドイン・ ビューの TOHTML プログラム」の項目を参照してください。 ほとんどの場合は、TOHTML プログラムでは、アドインのプロパティを使用します。 TOHTML プログラムでこれらの設定をチェックし、それに応じてビューを表示するため、 アプリケーション開発者は、アドイン・ビューのインスタンスに対するプロパティを設定で きます。この項目の例では、アドインのプロパティを使用しています。 すべての TOHTML プログラムでは、 (現行のアドインのインスタンスのハンドルとなる) シングル・テキストの引数を使用することができます。実行時には、この引数によって、 TOHTML プログラムに表示対象(オブジェクトまたはビュー)が指定されます。 TOHTML プログラムの例 この例では、clock アドインの中に、次の TOHTML プログラムがあります。 DEFINE SDL.CLOCK.TOHTML PROGRAM PROGRAM argument hclock text "handle of the add-in instance push dateformat dateformat = xwd_getpropvalt(hclock, 'SDL.CLOCK.DATEFORMAT') call htp.br call htp.print(joinchars('The time is: ', tod)) call htp.para アドインのコンポーネント 2-7 アドインの TOHTML プログラム call htp.print(joinchars('The date is: ', today)) call htp.br pop dateformat return END このプログラムでは、SDL.CLOCK.DATEFORMAT プロパティを使用して、Express DATEFORMAT オプションを設定します。次のようなプログラム行で他の値を設定してい ない場合は、SDL.CLOCK.DATEFORMAT プロパティのデフォルト値が使用されます。 call xwd_setpropvalt(hclock, 'SDL.CLOCK.DATEFORMAT', '<wtextl> <mtextl> <d>, <yyyy>') このような行は、clock のインスタンスを作成するアプリケーション・プログラム、または そのアプリケーション・プログラムでコールされるカスタム・メソッド・プログラムに記述 します。 clock オブジェクトを実行すると、次の 2 行のように表示されます。 The time is: 10:56:4 The date is: Wednesday January 22, 1997 TOHTML プログラムをコールする方法 アプリケーション開発者は、アドインに対する TOHTML プログラムを直接コールすること はありません。かわりに、XWD_CREATE や XWD_VIEW.CREATE などの Developer’s Toolkit プログラムを使用して、アドインのインスタンスを生成します。これらのオブジェ クト生成プログラムは、オブジェクトに関連付けられている TOHTML ハンドラを自動的に コールします。アドインの場合は、アドインの初期化プログラムで、 XWD_ADDHANDLER をコールする際に指定された TOHTML プログラムが、ハンドラと なります。 次のアプリケーション・プログラムでは、XWD_CREATE を使用して、アドイン clock を含 む HTML ページを作成します。アプリケーション開発者が、デフォルト以外の日付の表示 方法を使用しているため、SDL.CLOCK.DATEFORMAT プロパティも設定しています。 DEFINE PAGEWITHCLOCK PROGRAM PROGRAM variable hpage text variable hclock text "handle of the page instance "handle of the clock instance hpage = xwd_page.create hclock = xwd_create('CLOCK', hpage) call xwd_setpropvalt(hclock, 'SDL.CLOCK.DATEFORMAT', '<wtextl> <mtextl> <d>, <yyyy>') 2-8 Oracle Express Web Agent アドイン・ビュー・ガイド オプションのカスタム・メソッド・プログラム return END TOHTML プログラムの関連情報 ここで説明したプログラムの詳しい使用方法は、 「Express Web Agent ヘルプ」で次のト ピックを参照してください。 「XWD_GETPROPVALT」 「XWD_SETPROPVALT」 「XWD_PAGE.CREATE」 「XWD_CREATE」 アドイン・ビューの TOHTML プログラムの追加情報は、この章の「アドイン・ビューの TOHTML プログラム」の項目を参照してください。 オプションのカスタム・メソッド・プログラム カスタム・メソッド・プログラムの目的 アドインを柔軟に使用するために、アドインの表示方法を変更するプログラムを提供できま す。このようなプログラムは、カスタム・メソッドと呼ばれます。 カスタム・メソッドの目的は、アプリケーション開発者が、アドインの表示サイズや色など を調整できるようにすることです。アプリケーション開発者は、オプションとして、ユー ザーがカスタム・メソッドを実行できるように、表示の制御をユーザーに渡します。 カスタム・メソッド・プログラムの説明 ほとんどの場合には、カスタム・メソッド・プログラムは、アドインの表示方法を調整する 目的で作成された、アドインのプロパティ値を設定します。たとえば、カスタム・メソッド をコールして、SDL.CLOCK.HEIGHT という整数型のプロパティの値を変更して、アドイン clock オブジェクトのフォント・サイズを大きくすることができます。 この表示の変更を有効にするには、TOHTML プログラムでプロパティ値をチェックし、そ れに応じて表示を変更する必要があります。 カスタム・メソッド・プログラムの例 この例では、次のカスタム・メソッド・プログラムを使用します。ここでは、 SDL.CLOCK.HEIGHT プロパティを使用します。これは、XWD_ADDINTPROP を使用し て、アドインの初期化プログラムで定義しておく必要があります。 DEFINE SDL.CLOCK.BIGGER PROGRAM PROGRAM アドインのコンポーネント 2-9 オプションのカスタム・メソッド・プログラム argument hclock text "handle of the clock instance variable height integer "text height height = xwd_getpropvali(hclock, 'SDL.CLOCK.HEIGHT') if height gt 7 then height = 1 else height = height + 1 call xwd_setpropvali(hclock, 'SDL.CLOCK.HEIGHT', height) return END SDL.CLOCK.TOHTML プログラムでは、SDL.CLOCK.HEIGHT の現行の値をチェックして、 HTP.FONTOPEN や HTP.FONTCLOSE などの Developer’s Toolkit プログラムを使用して、 clock のフォント・サイズを調整する必要があります。次のコード行のように記述します。 call htp.fontopen(na, na, xwd_getpropvali (hclock, 'SDL.CLOCK.HEIGHT'), na) call htp.br call htp.print(joinchars('The time is: ', tod)) call htp.para call htp.print(joinchars('The date is: ', today)) call htp.br call htp.fontclose カスタム・メソッド・プログラムをコールする方法 アプリケーション開発者に対しては、提供するアドインについての情報で、カスタム・メ ソッド・プログラムの使用方法を説明する必要があります。アプリケーション開発者がカス タム・メソッドを使用するには、次の 2 通りの方法があります。 ■ アプリケーション・コードを使用して、ランタイム条件を評価して表示をどのように調 整するかを決定し、カスタム・メソッドをコールして、プロパティ値を変更します。 ■ アプリケーション・コードを使用して、 (ユーザーの入力を伴うプログラムを実行する ための)フォームまたはハイパーリンクを提供します。 次に、アプリケーション・プログラムのサンプル・コードを示します。ここでは、 CODEBLOCK オブジェクトが作成されます。このオブジェクトには、SDL.CLOCK.BIGGER カスタム・メソッド・プログラムをコールするハイパーリンクが含まれています。 hcode = xwd_create('CODEBLOCK', hpage) call xwd_setpropvalt(hcode, 'PRGTEXT', joinchars( 'call htp.anchor (xwd_url(¥'sdl.clock.bigger¥' ¥'', hclock, '¥'), ¥'Clock size¥') ')) 2-10 Oracle Express Web Agent アドイン・ビュー・ガイド アドイン・ビュー・データ アドイン・ビュー・データ アドインの中枢 Express データ : アドインの中枢 この章の前述の項目では、アドイン・コンポーネントについて簡単に説明しました。clock の例は、説明のうえではわかりやすいものですが、clock アドインはビューではなくオブ ジェクトであり、関連データが定義されていないため、あまり一般的ではありません。 ほとんどのアドインは、Express データ・モデルの機能を利用し、3D データ・キューブのグ ラフィック・ビューを提供します。また、多くのアドインでは、ドリルダウン、データの動 的なフォーマットをサポートするだけでなく、Express データ・モデルでサポートしている 他のオンライン分析処理(OLAP)の機能をサポートしています。 ビューのデータ・キューブ 表や VRML グラフなどのビューと同様に、アドイン・ビューには、関連するデータ・ キューブが定義されています。アプリケーション開発者がアドイン・ビューを作成すると、 関連するキューブのハンドルを取得できます。また、キューブのプロパティおよび Developer’s Toolkit プログラムを使用して、キューブの要素を利用できるようになります。 これらの処理については、 『Oracle Express Web Agent ユーザーズ・ガイド』で説明してい ます。 同様に、アドイン開発者は、各自のアドイン・ビューのコンポーネント内で、データ・ キューブを操作できます。ただし、アドイン開発者の場合は、それぞれのデータ値をビュー の正しい位置に表示しなければならないため、アプリケーション開発者よりも詳細な情報が 必要です。 データ・キューブ上のカーソル データ・キューブへの詳細なアクセスを提供するために、Developer’s Toolkit には、カーソ ルを定義し、キューブ上でカーソルを利用できるようにするプログラムが用意されていま す。カーソルは、特定のキューブのデータ部分、またはデータに関する(ラベルなどの)情 報部分を指定します。カーソルを使用して、キューブのデータ値および情報値をリストする ことも、カーソルを使用せずに操作することもできます。 アドイン・ビューの設計では、TOHTML プログラムでデータおよびデータの情報を表示す るか、または TOHTML プログラムがこれらの値をアプレットまたは ActiveX コントロール に渡して、そこで表示を行うかを定義します。いずれの場合でも、TOHTML プログラムで は、XWD_DCUR.VALUE などの Developer’s Toolkit プログラムを使用して、カーソルを ループして、値をリスト表示します。 カーソルを使用したアドイン・ビューにおけるデータ表示の詳細は、第 3 章を参照してくだ さい。 アドインのコンポーネント 2-11 アドイン・ビューの初期化プログラム アドイン・ビューの初期化プログラム XWD_ADDTYPE のコール アドイン・ビューの初期化プログラムでは、XWD_ADDTYPE をコールする際に、OBJECT ではなく、VIEW と指定します。このように指定しない場合は、アドイン・オブジェクトの 初期化プログラムと同じになってしまいます。 初期化プログラムの例 次に、アドイン・ビューの初期化プログラムの例を示します。 DEFINE ACE.CHART.INIT PROGRAM PROGRAM call xwd_addtype('ACE.CHART', 'VIEW') call xwd_addhandler('ACE.CHART', 'TOHTML', 'ACE.CHART.TOHTML') return END アドイン・ビューの TOHTML プログラム TOHTML プログラムの出力 アドイン・ビューの TOHTML プログラムの出力には、使用している設計モデルによって、 次のいずれかが含まれます。 ■ ビューをブラウザに直接表示するための、HTML の書式タグで囲まれたデータ。これ は、アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデルを 表します。TOHTML プログラムのサンプルは、第 4 章の「サンプル 1」を参照してく ださい。 ■ <APPLET> または <OBJECT> のタグ。これらのパラメータには、アプレットまたは ActiveX コントロールがビューを表示する際に必要なすべてのデータが含まれています。 これは、アプレットまたは ActiveX コントロールを使用した Express プッシュ・モデル を表します。TOHTML プログラムのサンプルは、第 4 章の「サンプル 2」を参照して ください。 ■ <APPLET> または <OBJECT> のタグ。ただし、これらのパラメータには、データは含ま れていません。アプレットまたは ActiveX コントロールは、それぞれの Express のデー タを要求し、データ送信プログラムを実行します。これは、クライアント・プル・モデ ルを表します。TOHTML プログラムのサンプルは、第 4 章の「サンプル 3」を参照し てください。 2-12 Oracle Express Web Agent アドイン・ビュー・ガイド アドイン・ビューの TOHTML プログラム アプレットへのサンプル出力 次に、TOHTML プログラムにデータが含まれている場合に、アプレットをコールして生成 される出力の例を示します。 <APPLET CODE="AceChart" CODEBASE="Rel1" HEIGHT=350 WIDTH=500 <PARAM NAME="Data[0]" VALUE="Alabama 4040587"> <PARAM NAME="Data[1]" VALUE="Alaska 550034"> <PARAM NAME="Data[2]" VALUE="Arizona 3665228"> </APPLET> <APPLET>、</APPLET> および <PARAM....> タグを生成するには、Developer’s Toolkit の HTP.APPLETOPEN、HTP.APPLETCLOSE および HTP.APPLETPARAM プログラムを使 用します。該当する ActiveX タグ(<OBJECT> など)の場合は、HTP.PRINT または HTP.PRN を使用します。 OOWA_WSID 引数と OOWA_PREFIX 引数 アプレットまたは ActiveX コントロール(クライアント)が Express のデータを要求する場 合には、TOHTML プログラムは、1 つまたは 2 つの Developer’s Toolkit 変数の内容をクラ イアントに渡す必要があります。これらの変数には、クライアントが、Express のデータ送 信プログラムからデータを取得するために実行する URL 部分が格納されています。これら の 2 つの変数は、OOWA_WSID および OOWA_PREFIX となります。 OOWA_WSID 変数には、Express セッションのワークスペース・ハンドルが格納されます。 クライアントには、Express がコンテキストでデータ送信プログラムを実行できるように、 実行する URL のハンドルが必ず含まれています。 OOWA_PREFIX 変数には、次の情報が格納されます。 ■ Express Web Agent CGI の実行可能ファイル(OOWA.EXE) 、または OOWA カート リッジの仮想ディレクトリ。たとえば、OOWA.EXE の仮想ディレクトリは ows-bin/oowa.exe、カートリッジの仮想ディレクトリは oowa となります。 ■ Express サービスの名前(インスタンス名など)。たとえば、サービス名は ExpSrv601 と なります。 ■ Express が cookie を使用するように構成されていない場合は、OOWA_PREFIX には、 Express セッションに対するワークスペース・ハンドルが含まれます。たとえば、ワー クスペース・ハンドルは ws0001001440FA となります。Express が cookie を使用するよ うに構成されている場合は、OOWA_PREFIX にはワークスペース・ハンドルは含まれ ません。Configuration Manager の「Web Agent」タブの UseCookie 設定によって、 Express で cookie を使用してワークスペース・ハンドルを保存するかどうかが制御され ます。 Express が cookie を使用するように構成されている場合は、TOHTML プログラムは、 OOWA_PREFIX と OOWA_WSID の値をクライアントに渡す必要があります。クライアン トは、これらの 2 つの値を連結して、Express のデータを取得するために実行する URL に、 アドインのコンポーネント 2-13 アドイン・ビューのオプションのアプレットまたは ActiveX コントロール ワークスペース・ハンドルを含めるようにします。Express が、cookie を使用しないように 構成されている場合は、OOWA_PREFIX にワークスペース・ハンドルが含まれているため、 各自の HTML プログラムでは、この値を渡すだけになります。 ビュー・ハンドルの引数 OOWA_PREFIX(あるいは OOWA_WSID も)だけでなく、TOHTML プログラムも、現行 のアドイン・ビューのハンドルを、アプレットまたは ActiveX コントロールに渡す必要があ ります。このハンドルがない場合は、Express のデータ送信プログラムは、どのビューが データを要求しているのかを識別できません。 アドイン・ビューのオプションのアプレットまたは ActiveX コントロール アプレットまたは ActiveX コントロールのジョブ アプレットまたは ActiveX コントロールが、アドイン・ビューの設計の一部の場合は、アプ レットまたは ActiveX コントロールによって、Express データがブラウザに表示されます。 このようにするには、次のいずれかを準備する必要があります。 ■ Express データをパラメータで取得します。パラメータによるデータの取得は、Express プッシュ・モデルに相当します。 ■ Express のデータ送信プログラムをコールする URL を実行し、プログラムから返される データを受け取ります。データ送信プログラムによるデータの取得は、クライアント・ プル・モデルに相当します。 クライアント・プル・モデルでは、この項目の始めに説明したように、アプレットまたは ActiveX コントロールは、1 つまたは 2 つの OOWA 変数の値、およびアドイン・ビュー・ ハンドルを、TOHTML プログラムのパラメータとして受け取ります。これらの値を使用し て、URL を構成します。 URL コンポーネント アプレットまたは ActiveX コントロールが URL を実行する場合は、最初に、URL を次の 3 つのパートで構成する必要があります。 ■ HTTP://、およびそれに続く OLAP Server が保存されているホスト・コンピュータの名 前。アプレットの場合は、アプレットをダウンロードする際の元のコンピュータがホス ト・コンピュータとなります。ActiveX コントロールの場合は、ホスト・コンピュータ は、ActiveX コントロールをダウンロードする際の元のコンピュータでなくてもかまい ません。 ■ OOWA_PREFIX の値、または OOWA_PREFIX と OOWA_WSID の値(Express が cookie を使用するように構成されているかどうかによって異なります) 。 2-14 Oracle Express Web Agent アドイン・ビュー・ガイド アドイン・ビューのオプションのデータ送信プログラム ■ データ送信プログラムの名前とその引数。引数のいずれかは、必ずアドイン・ビュー・ インスタンスのハンドルとします。 URL の例 次に、アプレットまたは ActiveX コントロールが実行する URL のサンプルを示します。 _xwd_4 は、アドイン・ビュー・インスタンスのハンドルを表します。 HTTP://cloud.us.oracle.com/ows-bin/oowa.exe/ExpSrv6001/ ws0001001440FA/ace.chart.sndata?_xwd_4 アドイン・ビューのオプションのデータ送信プログラム データ送信プログラムの説明 クライアント・プル・モデルでは、アプレットまたは ActiveX コントロールの要求に基づい てデータを送信する Express プログラムを提供する必要があります。HTTP はテキストベー スのプロトコルのため、データは、一連のテキストとして送信されます。ただし、データ・ ストリームの形式は、ユーザーが任意に定義できます。データ・ストリームの形式は、 Express のデータ送信プログラム(データ・ストリームを生成するもの)と、アプレットま たは ActiveX コントロール(データ・ストリームを受信するもの)の両方の形式を満たすよ うにします。 データ・ストリームの形式 データ・ストリームの形式を定義する際に、注意する点は次のとおりです。 ■ データの特定のタイプを区切る場合には、エスケープ文字を使用できます。一般的に は、タブでデータを区切りますが、データ内で使用されない特定の文字列を使用するこ ともできます。 ■ データの先頭にヘッダー・ブロックを付加して、データの特性に関する情報を表すこと ができます。通常、ヘッダー・ブロックには、データ値を表す文字列の件数や、ラベル を表す文字列の件数などが含まれています。 ■ データの後に、データの追加情報を表すパラメータを付加することができます。 データ送信プログラムの引数 データ送信プログラムでは、操作対象のビューのハンドルを引数として受け取ることが重要 なポイントとなります。この情報がないと、データ送信プログラムは、データの送信元の データ・キューブを識別できません。 アドインのコンポーネント 2-15 アドインのドキュメント データ・キューブの情報 第 3 章では、アドイン・ビューに関連するデータ・キューブを操作する方法、およびキュー ブの値をループしてデータ・ストリームを生成する方法について説明します。 アドインのドキュメント ドキュメントの対象範囲 アプリケーション開発者(作成したアドイン・ビューの使用者)は、TOHTML プログラム の細部まで理解する必要はありませんが、アドインをアプリケーションに組み込む方法につ いて理解する必要があります。したがって、アプリケーション開発者には、このマニュアル は必要ありません。ただし、アドイン開発者は、作成したアドインを使用する際に必要な情 報を、アプリケーション開発者に提供する必要があります。 アドイン開発者が提供する情報 アドイン開発者は、次の情報を提供する必要があります。どの情報を提供するかは、アドイ ンを設計した方法によって異なります。 ■ 構成の要件 : アプリケーション開発者は、作成されたアドインのすべてのコンポーネ ントが、実行時に使用できることを確認する必要があります。したがって、アドイン開 発者は、データベースの名前を記述し、すべての Express Web Agent ファイルが格納さ れているディレクトリの ADDINS サブディレクトリ (¥ORANT¥OLAP¥OES601¥OWA110¥ADDINS など)に、このデータベースが保存され ていることを示す必要があります。アプレットまたは ActiveX コントロールを使用する ように構成されている場合は、アドイン開発者は、これらを使用できるようにするため のステップを記述する必要があります。 ■ 初期化の要件 : アプリケーション開発者のコードでは、アドインの初期化プログラム をコールする必要があります。したがって、アドイン開発者は、プログラムの名前、お よび XWD_ADDIN.INIT を使用してプログラムをコールする方法を記述する必要があり ます。 ■ アドインを表示するステップ : アプリケーション開発者のコードでは、XWD_CREATE や XWD_VIEW.CREATE などの Developer’s Toolkit プログラムをコールしてアドイン を作成する必要があります。したがって、アドイン開発者は、実行するコールと使用す る引数を提供する必要があります。 ■ 表示を調整するステップ : アドイン開発者が、アドインにカスタム・メソッドを定義 している場合は、アプリケーション開発者に、その使用方法を提示する必要がありま す。 2-16 Oracle Express Web Agent アドイン・ビュー・ガイド アドインを実装するためのステップ アドインを実装するためのステップ アドインの実装方法 この章には、アドインのコンポーネントがリストされています。次の表に、これらのコン ポーネントを作成するステップ、およびアドインを実装する方法を説明します。 ステップ 処理 1 アドインの設計モデルを決定します。 2 アドイン・データベースを作成し、その中に、作成する Express プログラムを格納し ます。 3 アドインの初期化プログラムを作成します。 4 アドインの TOHTML プログラムを作成します。 5 オプションとして、1 つ以上のカスタム・メソッド・プログラムを作成します。 6 設計のパートであれば、アドインを表示するための Java アプレットまたは ActiveX コントロールを作成します。 7 設計のパートであれば、Java アプレットまたは ActiveX コントロールにデータを提 供するためのデータ送信プログラムを作成します。 8 アプリケーション開発者に、Express Web Agent アプリケーションにアドインを組み 込む方法について提示するドキュメントを作成します。 9 アドイン・コンポーネント、および作成したドキュメントを、Express Web Agent ア プリケーション開発者に配布します。 アドインのコンポーネント 2-17 アドインを実装するためのステップ アプリケーション開発者によるアドインの使用 アドイン開発者がアドインを実装して配布すると、Express Web Agent アプリケーション開 発者は、次のステップに従って、アプリケーションにアドインを組み込むことができます。 ステップ 処理 1 アドイン開発者が作成したドキュメントを確認します。 2 アドインのドキュメントに提示されているとおりに、必要なソフトウェアが構成され ていることを確認します。 3 Express Web Agent で XWD_CREATE または XWD_VIEW.CREATE などをコールす るアプリケーション・プログラムを作成し、アドインのインスタンスを HTML ペー ジに定義します。 4 アドイン開発者によって 1 つ以上のカスタム・メソッド・プログラムが提供されてい る場合は、アプリケーション・プログラムの中に、対象のカスタム・メソッド・プロ グラムのコールを挿入します。 2-18 Oracle Express Web Agent アドイン・ビュー・ガイド 3 アドイン・ビューの Express データ 概要 はじめに この章では、Express データをアドイン・ビューに関連付ける方法、およびデータを操作し てアドインに表示する方法について説明します。 この章の内容 ■ アドイン・ビューのデータ ■ データ・キューブの理解 ■ カーソルの理解 ■ カーソルの作成とデータの移入 ■ エッジ・カーソルの理解 ■ エッジ・カーソルのサンプル ■ エッジ・カーソルの行を移動する方法 ■ エッジ・カーソルの行を移動する方法(展開) ■ エッジ・カーソルの行を移動する方法(階層) ■ データ・カーソルの理解 ■ カーソルにおける単一値の取得 ■ データ・キューブを操作するプログラム アドイン・ビューの Express データ 3-1 アドイン・ビューのデータ アドイン・ビューのデータ ビューのデータの管理 Express Web Agent に組み込まれている TABLE または VRMLGRAPH ビューを使用するア プリケーション開発者は、ビューのデータ・キューブを構成する個別のデータ項目を操作す る必要はありません。Developer’s Toolkit には、データ・キューブ全体を操作および表示す るためのプログラムが用意されています。この簡単なしくみが利用できるのは、組込み ビューの利点です。 アプリケーション開発者が組込みビューのデータを操作する場合とは異なり、アドイン開発 者がアドイン・ビューを実装する場合には、詳細なレベルでデータを操作する必要がありま す。アドイン開発者は、それぞれのデータ値に対する表示、およびその他の(ラベルなど の)特性を、わかる方法で指定する必要があります。つまり、表示する値をそれぞれ管理す る必要があります。 個別のデータ値へのアクセス 詳細なレベルでデータを操作できるように、Developer’s Toolkit には、データ・キューブ上 で対象範囲(カーソル)を定義するプログラムが用意されています。これでデータ領域を順 次に移動して、一度に 1 つずつデータ値を調べることができます。この機能を使用すると、 TOHTML プログラムまたはデータ送信プログラムは、HTML コードを使用してデータ・ス トリームをイメージどおりに表示することも、データ・ストリームをアプレットまたは ActiveX コントロールに送信して表示することもできます。 データ・ストリームを生成するプログラム 1 章および 2 章では、アドインのいくつかの設計モデルについて説明しています。次の表に 示すように、それぞれのモデルによって、データ・ストリームは多少異なります。 設計モデル データ・ストリームの説明 アプレットまたは ActiveX コントロー ルを使用しない Express プッシュ TOHTML プログラムが、HTML 書式タグで囲まれた データ値を生成し、ビューをブラウザに表示します。 アプレットまたは ActiveX コントロー ルを使用する Express プッシュ TOHTML プログラムが、<PARAM...> 構文で囲まれた データ値を生成し、アプレットまたは ActiveX コント ロールの引数にデータを渡します。 クライアント・プル データ送信プログラムが、アプレットまたは ActiveX コントロールが解釈できる形式で、データ・ストリー ムを生成します。 3-2 Oracle Express Web Agent アドイン・ビュー・ガイド アドイン・ビューのデータ サンプル・プログラム TOHTML プログラムおよびデータ送信プログラムのサンプルは、第 4 章に記載されていま す。 HTP.PRINT および HTP.PRN プログラムの使用 『Oracle Express Web Agent ユーザーズ・ガイド』には、HTP.PRINT や HTP.PRN などの Developer’s Toolkit プログラムを使用して、出力を生成する方法が記載されています。通常 の Express Web Agent アプリケーションでは、これらのプログラムを使用して、ブラウザに 対する HTML 書式コードを生成します。 TOHTML プログラムまたはデータ送信プログラムの場合は、HTP.PRINT または HTP.PRN を使用して、ブラウザ、アプレットまたは ActiveX コントロールで受け取るデータ・スト リームを生成します。出力には、HTML 書式コード、<PARAM> タグ、または文字のデリ ミタが含まれることもあります。 データ・ストリームの形式によって、HTP.PRINT と HTP.PRN のどちらを使用するかが決 まります。 ■ HTP.PRINT では、指定したテキストに改行が挿入されます。 ■ HTP.PRN では、改行が挿入されません。 データ・キューブをアドインに関連付ける際の注意点 アプリケーション開発者は、次のようなコマンドを使用して、アドイン・ビューのインスタ ンスを生成します。 call xwd_view.create('ACE.CHART', 'F.SALES', na, na, na, na, 'SALES_CHART') このサンプルのコールは、次のプロセスの最初のフェーズとなります。このコールによっ て、アドインを実装する Express コードが、指定されたインスタンスのデータへアクセスで きるようになります。 フェーズ 説明 1 アプリケーション開発者は、XWD_VIEW.CREATE をコールして、ACE.CHART ビューのインスタンスを作成します。 2 Developer’s Toolkit で、F.SALES データを使用してデータ・キューブが作成されま す。このデータ・キューブは、ACE.CHART ビューのインスタンス (SALES_CHART)に関連付けられています。 3 SALES_CHART を表示するタイミングで、Developer’s Toolkit は、ACE.CHART に 対する TOHTML プログラムをコールし、ビューのインスタンスのハンドルを引数と して渡します。 アドイン・ビューの Express データ 3-3 データ・キューブの理解 フェーズ 説明 4 このビューのハンドルによって、TOHTML プログラムは XWD_VIEW.CUBE を使用 して、関連付けられているデータ・キューブのハンドルを取得します。 5 データ・キューブのハンドルを使用して、TOHTML プログラムは、ビューのインス タンスに関連するすべてのデータ値にアクセスできるようになります。 この章の以降の内容 この章では、ここから、データ・キューブおよびそのコンポーネントを理解するために必要 な情報について説明します。この説明を理解すると、ブラウザ、Java アプレットまたは ActiveX コントロールに対するデータ・ストリームを生成する TOHTML プログラムまたは データ送信プログラムを作成できます。 追加情報 このようなデータ・ストリームを作成するためのコンテキストを理解するには、第 1 章およ び第 2 章を参照してください。プログラムのサンプルは、第 4 章を参照してください。 データ・キューブの理解 データ・キューブの定義 データ・キューブは、Express Web Agent オブジェクトの一種(DATACUBE オブジェク ト)で、XWD_VIEW.CREATE などのプログラムがビューのインスタンスを作成する際に、 Developer’s Toolkit によって生成されます。データ・キューブには、ビューのインスタンス に表示されるデータの内容および構造が保持されます。 データ・キューブのエッジ データ・キューブには、関連付けられているビュー・インスタンスと同様に、行、列および ページが定義されています。行、列、ページはそれぞれ、行エッジ(ダウン・エッジ) 、列 エッジ(アクロス・エッジ) 、ページ・エッジと呼ばれます。 データ・キューブの調査 Developer’s Toolkit には、特定のデータ・キューブについて調べる際に使用するプログラム が多数用意されています。これらのプログラムの詳細は、 「Express Web Agent ヘルプ」で 「XWD_CUBE」で始まるタイトルのトピックを参照してください。 『Oracle Express Web Agent ユーザーズ・ガイド』にも、データ・キューブの操作に関する情報が記載されていま す。 3-4 Oracle Express Web Agent アドイン・ビュー・ガイド データ・キューブの理解 エッジ上の複数のディメンション ビューには、1 つのエッジ上に複数のディメンションを表すものがあります。たとえば、表 の行エッジ(ダウン・エッジ)には、ここで示すように、Time(時間)ディメンションと Channel(チャネル)ディメンションの両方を定義できます。 Time Channel Q1.96 TOTAL DIRECT CATALOG JAN96 TOTAL DIRECT CATALOG FEB96 TOTAL DIRECT CATALOG MAR96 TOTAL DIRECT CATALOG データ・キューブ上のエッジ位置 特定のビュー・インスタンスおよびそのデータ・キューブのディメンションは、インスタン スに指定されているメジャーによって決定されます。これらのものが、データ・キューブの エッジ上でどの位置にあるかは、アプリケーション開発者が、ビュー・インスタンスを生成 するための XWD_VIEW.CREATE などのプログラムをコールする際に指定した、アクロス、 ダウンおよびページのパラメータによって決定されます。 エッジ・ノード エッジ上の各ディメンションは、エッジ・ノードと呼ばれます。エッジ・ノードにはそれぞ れ番号が付けられています。1 つのエッジに複数のディメンション(エッジ・ノード)が関 連付けられている場合は、0 は最も変化の速いディメンションを表し、1 は次に変化の速い ディメンションを表します。それ以降の番号も、同様にディメンションの変化の速さを表し ます。 エッジ・ノード・セレクション名のプロパティ 各エッジ・ノードには、対応する SELNAME プロパティが定義されており、このプロパ ティには、Oracle Express Administrator で作成された保存済みセレクションの名前が保持 されます。このような保存済みセレクションは、特定のエッジ・ノードに含まれるディメン ション値を表します。アプリケーション開発者は、XWD_VIEW.CREATE などのプログラム アドイン・ビューの Express データ 3-5 カーソルの理解 をコールしてビューのインスタンスを生成する際に、関連ディメンションに対する保存済み セレクションを指定することができます。 エッジ・ノードおよびデータ・キューブのプロパティ EDGENODE および DATACUBE オブジェクトには、TOHTML プログラムで参照可能なプ ロパティが定義されています。ディメンション値の表示は、このプロパティで制御されま す。 追加情報 SELNAME などのプロパティの情報は、 『Oracle Express Web Agent ユーザーズ・ガイド』 および「Express Web Agent ヘルプ」を参照してください。保存済みセレクションの作成 は、 『Oracle Express データベース管理者ガイド』を参照してください。 メジャーとエッジ・ノード ほとんどのビューでは、データの識別子として、メジャー名、およびディメンション値が示 されます。Developer’s Toolkit には、すべてのメジャーがリストされている内部ディメン ションが保持されています。 XWD_VIEW.CREATE などのプログラムを使用してビュー(およびデータ・キューブ)を作 成する場合は、メジャーが含まれるように指定します。Developer’s Toolkit を使用すると、 これらのメジャーを内部メジャー・ディメンションに確実に含めることができます。また、 アドイン開発者は、メジャーが示されるエッジ、およびメジャーをエッジ上のディメンショ ンに( 「最も変化の速い」から「最も変化の遅い」の順序で)適用する方法について指定し ます。 データ・キューブのエッジに沿ってメジャーを定義する場合に、Developer’s Toolkit では、 内部メジャー・ディメンションが、他のディメンションと同様に処理されます。つまり、メ ジャー・ディメンションにはそれぞれのエッジ・ノードがあり、これは最も変化の速いから 最も変化の遅い順に対応しています。また、エッジ・ノード上のメジャー名は、メジャー・ ディメンションに対して選択された値となります。 カーソルの理解 データとメタデータ 1 つのデータ・キューブには、そのコンポーネント・エッジとエッジ・ノードが付随してお り、ビュー・インスタンスのデータに関する情報が格納されています。データ・キューブに は、表示されるデータ値だけではなく、それらの値の情報も保持されています。たとえば、 データ・キューブは、行エッジ、列エッジおよびページ・エッジで使用されるラベルを記録 します。データに関する情報は、メタデータと呼ばれます。ほとんどの場合、データベース 3-6 Oracle Express Web Agent アドイン・ビュー・ガイド カーソルの作成とデータの移入 管理者は、Express Administrator を使用してメタデータを作成します。メタデータについて は、 『Oracle Express データベース管理者ガイド』で説明しています。 カーソルの目的 TOHTML プログラムまたはデータ送信プログラムでは、ブラウザ、アプレットまたは ActiveX コントロールにデータを送信して表示するために、データ・キューブのデータおよ びメタデータにアクセスする必要があります。データ・キューブのデータまたはメタデータ にアクセスする場合には、カーソルを作成します。 カーソルの定義 カーソルは、対象とするデータまたはメタデータの部分を指定します。カーソルには、指定 するデータが含まれていると考えることができます。 カーソルには、次の 2 つのタイプがあります。 ■ データ・カーソル。データ・キューブのメジャーのデータ値が含まれています。 ■ エッジ・カーソル。データ・キューブのエッジ・ノードのディメンション値に関するメ タデータが含まれています。 複数カーソル 通常、1 つのデータ・キューブでは、3 つのデータ・カーソル(1 つのデータ・カーソルと 2 つのエッジ・カーソル)を作成します。2 つのエッジ・カーソルとは、行エッジおよび列 エッジに対するものです。必要な場合は、ページ・エッジに対するカーソルも作成できます が、ほとんどのビューでは必要ありません。これは、現行のページが変わった場合に、 ビューでは XWD_CUBE.PAGING プログラムを使用して、ユーザーにフォームを表示して いるためです。 追加情報 XWD_CUBE.PAGING の情報は、第 3 章および「Express Web Agent ヘルプ」を参照してく ださい。 カーソルの作成とデータの移入 カーソルの内容 データ・カーソルまたはエッジ・カーソルには、それが作成されたデータ・キューブの値が 含まれていると表現することができます。つまり、カーソルを作成すると、そのカーソルに 含まれているデータまたはメタデータの部分を指定することになります。このようにする と、カーソルには、対象のデータまたはメタデータの値が移入されます。 アドイン・ビューの Express データ 3-7 カーソルの作成とデータの移入 カーソルの作成とデータ移入の手順 Developer’s Toolkit を使用すると、次の 2 つのステップによって、カーソルを作成し、カー ソルにデータを移入することができます。 ステップ 処理 1 カーソルを作成するには、(データ・カーソルの場合は)XWD_CUBE.DCURSOR プ ログラムをコールし、 (エッジ・カーソルの場合は)XWD_CUBE.ECURSOR プログ ラムをコールします。いずれの場合も、移入するデータ、またはメタデータのタイプ を指定します。 2 指定した値をカーソルに移入するには、(データ・カーソルの場合は) XWD_DCUR.UPDATE プログラムをコールし、(エッジ・カーソルの場合は) XWD_ECUR.UPDATE プログラムをコールします。 カーソル・サイズの制限 オプションとして、XWD_CUR.LIMIT プログラムをコールして、カーソルのサイズを制限 できます。このステップは、ブラウザへ大量のデータを送信する際に重要になります。デー タ・キューブのサイズを調べるには、XWD_CUR.COLS プログラム、XWD_CUR.ROWS プ ログラムおよび XWD_CUR.PAGES プログラムを使用します。 XWD_CUR.LIMIT をコールした後で、XWD_DCUR.UPDATE または XWD_ECUR.UPDATE をコールして、カーソルの値を更新します。必要な場合は、カーソルを作成した直後(およ びデータを移入する前)に XWD_CUR.LIMIT をコールすることもできます。 関連情報 カーソルの作成およびデータの移入に関する Developer’s Toolkit プログラムの詳細は、 「Express Web Agent ヘルプ」で次のトピックを参照してください。 「XWD_CUBE.DCURSOR」 「XWD_CUBE.ECURSOR」 「XWD_CUR.LIMIT」 「XWD_DCUR.UPDATE」 「XWD_ECUR.UPDATE」 以降の項目 ほとんどの場合は、カーソルを作成してデータを移入した後で、カーソルを順次に移動して 値を調べて、ブラウザ、アプレットまたは ActiveX コントロールに送信するためのデータ・ ストリームを作成します。カーソルを順次に移動して値を調べるには、カーソルの構造を理 解しておく必要があります。これ以降の項目では、エッジ・カーソルおよびデータ・カーソ ルの構造について説明し、カーソルの値を取得する方法について説明します。 ■ エッジ・カーソルの理解 3-8 Oracle Express Web Agent アドイン・ビュー・ガイド エッジ・カーソルの理解 ■ エッジ・カーソル行を移動する方法 ■ エッジ・カーソルの行を移動する方法(展開) ■ エッジ・カーソルの行を移動する方法(階層) エッジ・カーソルの理解 エッジ・カーソルの内容 エッジ・カーソルには、データ・キューブの特定のエッジのそれぞれのディメンション値の メタデータが含まれています。たとえば、データ・キューブの行エッジには、Time ディメ ンションと Channel ディメンションが含まれる場合があります。行エッジには、(それぞれ Time ディメンションと Channel ディメンションに対する)2 つのエッジ・ノードが含まれ ており、エッジに対して作成されたエッジ・カーソルには、データ・キューブで選択された Time および Channel のすべての値のメタデータが含まれています。 エッジに含まれているメジャー名は、それぞれのエッジ・ノードを持つ内部メジャー・ディ メンションの値として処理されます。 エッジ・カーソルのメタデータ・タイプ エッジ・カーソルを作成する際に、ディメンション値に対して、次のタイプのメタデータ を、一部またはすべて定義できます。 ■ ディメンション値の名前 ■ ロング・ラベル ■ ショート・ラベル ■ インデント・レベル(階層が定義されている場合) ■ 子レベルのドリル状態(階層が定義されている場合) ■ 子および親レベルのドリル状態(階層が定義されている場合) 追加情報 ラベルと階層の情報は、 『Oracle Express データベース管理者ガイド』を参照してください。 エッジ・カーソルのディメンション エッジ・カーソルには、エッジに関する多数の情報が保持されています。それぞれのエッ ジ・ノードには、ディメンション値のリストがあります。エッジ・ノードの各ディメンショ ン値には、1 ∼ 6 個のメタデータの項目があります。また、複数のエッジ・ノードが存在す る場合もあります。この情報をすべて保持するために、エッジ・カーソルには、ページ、 アドイン・ビューの Express データ 3-9 エッジ・カーソルの理解 列、行の 3 つのディメンションがあります。次の表に、各ディメンションに保持される情報 について説明します。 ディメンション 内容説明 ページ エッジに対するエッジ・ノード。つまり、カーソルの 1 つのページスライス には、対象エッジに示される単一ディメンションのすべてのメタデータが保 持されています。 列 カーソルに含まれているメタデータのタイプ。特定のエッジのすべてのエッ ジ・ノードには、同じメタデータが含まれています。ここでは、VALUE、 LONGLABEL、SHORTLABEL、INDENT、DRILLSTATE および DRILLSTATE1 の列が有効です。特定のエッジ・カーソルには、これらのう ち 1 つ以上の列が含まれています。 行 カーソルのエッジ・ノードに対して選択されたディメンション値。エッジ上 に複数のエッジ・ノードがある場合は、エッジ・カーソルの行ディメンショ ン値は、すべてのエッジのディメンションの中で選択された値において、考 えられるすべての値の組合せを表します。 エッジ・カーソルの行ディメンション エッジ・カーソルの行ディメンションでは、エッジのすべてのディメンションで選択された 値において、考えられるすべての組合せの値を定義する必要があるため、複雑になります。 たとえば、1 つのエッジに、Time ディメンションと Channel ディメンションの値のすべて の組合せを定義しなければならないことがあります。 繰返しエッジ・カーソルのディメンション値 すべての組合せを表すために、それぞれのディメンション値が繰り返されます。また、これ らの繰返しを並べるために、Developer’s Toolkit は、変化の速いディメンションおよび変化 の遅いディメンションの概念を使用しています。 たとえば、Channel が最も変化の速いディメンションで、Time が最も変化の遅いディメン ションの場合は、次の組合せのそれぞれに対して 1 つのエッジの行ディメンション値が存在 し、次の順序で表示されます。 Q1.96 — TOTAL Q1.96 — DIRECT Q1.96 — CATALOG JAN96 — TOTAL JAN96 — DIRECT JAN96 — CATALOG FEB96 — TOTAL FEB96 — DIRECT FEB96 — CATALOG MAR96 — TOTAL 3-10 Oracle Express Web Agent アドイン・ビュー・ガイド エッジ・カーソルのサンプル MAR96 — DIRECT MAR96 — CATALOG 繰返しエッジ・カーソルのディメンション値のパターン 最も変化の速いディメンション(Channel)のページスライスに対する VALUE 列では、一 組の値の名前(TOTAL/DIRECT/CATALOG)が順次表示されます。1 つの組が終了する と、別の組が開始され、すべての組合せが終了するまで順次に別の組が開始されます。 最も変化の遅いディメンション(Time)のページスライスの VALUE 列では、変化の速い ディメンション全体に対して、値の名前(Q1.96/Q1.96/Q1.96)が繰り返され、その後次の 値の名前(JAN96/JAN/96/JAN96)が繰り返され、すべての組合せが終了するまで、順次 に次の値の名前が繰り返されます。 エッジ・カーソルのサンプル エッジ・カーソルの特徴 エッジ・カーソルの構造の理解を簡単にするために、次の特徴を持つエッジ・カーソルの例 について考えてみます。 ■ カーソルが、データ・キューブの行エッジに定義されています。 ■ 行エッジに 2 つのエッジ・ノード(Time ディメンションおよび Channel ディメンション に対するもの)が定義されています。したがって、このエッジ・カーソルには 2 つの ページがあります。 ■ カーソルに、3 つのタイプのメタデータ(ディメンション値の名前、ロング・ラベル、 子レベルのみのドリル状態)が含まれています。したがって、このエッジ・カーソルに は 3 つの列があります。 ■ エッジ・ノードのセレクションで、Time ディメンションに Q1.96、JAN96、FEB96 およ び MAR96 が含まれるように指定しており、Channel ディメンションに TOTAL、 DIRECT および CATALOG が含まれるように指定しています。したがって、このエッ ジ・カーソルには 12(それぞれの組合せの数)の行があります。 エッジ・カーソルを作成するコード 次のコールでは、データ・キューブの行エッジ(ダウン・エッジ)にサンプルのカーソルを 作成します。 call xwd_cube.ecursor(hcube, 'ROW'. 'VALUE¥nLONGLABEL¥nDRILLSTATE') アドイン・ビューの Express データ 3-11 エッジ・カーソルのサンプル エッジ・カーソルの値 サンプル・エッジ・カーソルの 2 つのページには、次の値が定義されています。 エッジ・ノード 1( (Time)のページ )のページ エッジ・ノード 0( (Channel)のページ )のページ 値 ラベル ドリル状態 値 ラベル ドリル状態 Q1.96 First Quarter 96 1 TOTAL Total 1 Q1.96 First Quarter 96 1 DIRECT Direct 0 Q1.96 First Quarter 96 1 CATALOG Catalog 0 JAN96 January 96 0 TOTAL Total 1 JAN96 January 96 0 DIRECT Direct 0 JAN96 January 96 0 CATALOG Catalog 0 FEB96 February 96 0 TOTAL Total 1 FEB96 February 96 0 DIRECT Direct 0 FEB96 February 96 0 CATALOG Catalog 0 MAR96 March 96 0 TOTAL Total 1 MAR96 March 96 0 DIRECT Direct 0 MAR96 March 96 0 CATALOG Catalog 0 3-12 Oracle Express Web Agent アドイン・ビュー・ガイド エッジ・カーソルの行を移動する方法 エッジ・カーソルの図 次の図は、サンプルのエッジ・カーソルを視覚的に表しています。 TIME CHANNEL 値 Value ラベル Label ドリル状態 Drill State Q1.96 - TOTAL Q1.96 - DIRECT Q1.96 - CATALOG JAN96 - TOTAL JAN96 - DIRECT JAN96 - CATALOG FEB96 - TOTAL FEB96 - DIRECT FEB96 - CATALOG MAR96 - TOTAL MAR96 - DIRECT MAR96 - CATALOG エッジ・カーソルの行を移動する方法 行を移動する目的 エッジ・カーソルの行を順次に移動して、値を 1 つずつ取得し、ブラウザ、アプレットまた は ActiveX コントロールに送信するためのデータ・ストリームを作成します。行を移動する 方法は、データ・ストリームに含める値、およびそれを送信する順序によって異なります。 行を移動する 2 つの方法 通常、エッジに複数のエッジ・ノードがある場合には、次の 2 つのいずれかの方法で、エッ ジ・カーソルの行を移動します。 方法 方法の説明 展開 変化の速いディメンションのそれぞれの値に対して、変化の遅いディメンション の値を繰り返します。値は省略できません。 階層 変化の速いディメンションのそれぞれの値に対して、変化の遅いディメンション の値を繰り返しません。値を省略します。 アドイン・ビューの Express データ 3-13 エッジ・カーソルの行を移動する方法(展開) 2 つの方法の説明 次の 2 つの項目で、これらの 2 つの方法について説明します。どちらの方法を選択するか は、アドイン・ビューにメタデータを表示する方法によって決まります。 エッジ・カーソルの行を移動する方法(展開) 展開による方法を使用した結果 エッジ・カーソルの行を展開して移動する方法では、変化の速いディメンションのそれぞれ の値に対して、変化の遅いディメンションの値が繰り返されます。アドイン開発者は、ペー ジおよび行を単純にループして、カーソルの値を 1 つずつ取得し、エッジ・カーソルの各行 に対するメタデータを含むデータ・ストリームを作成します。 展開したリストの例 Time および Channel のエッジ・カーソルを使用すると、次のように繰り返されるロング・ ラベルのリストが生成されます。 First Quarter 96 Total First Quarter 96 Direct First Quarter 96 Catalog January 96 Total January 96 Direct January 96 Catalog February 96 Total February 96 Direct February 96 Catalog March 96 Total March 96 Direct March 96 Catalog 展開による方法でのループ方針 展開する方法を使用してエッジ・カーソルを移動する際に、ループを設定するには、カーソ ルが移動する範囲のページ、列および行の数を認識しておく必要があります。Developer’s Toolkit には、これらの数を取得するための 3 つのプログラムが用意されています。データ・ 3-14 Oracle Express Web Agent アドイン・ビュー・ガイド エッジ・カーソルの行を移動する方法(階層) カーソルの場合は、別の 2 つのプログラムを使用して、カーソルが移動する範囲の最大と最 小数値を取得できます。 追加情報 カーソル情報を提供するためのプログラムの使用方法は、 「Express Web Agent ヘルプ」で 次のトピックを参照してください。 「XWD_CUR.PAGES」 「XWD_CUR.COLS」 「XWD_CUR.ROWS」 エッジ・カーソルの行を移動する方法(階層) 階層による方法を使用した結果 エッジ・カーソルの行を階層的に移動する方法では、変化の遅いディメンションの値が省略 され、変化の速いディメンションのそれぞれの値に対して、変化の遅いディメンション値は 繰り返されません。 階層的なリストの例 Time および Channel のエッジ・カーソルを調べる際、行を階層的に移動する場合は、デー タ・ストリームで、次のロング・ラベルのリストが生成されます。Time ラベルでは省略さ れるものがありますが、Channel ラベルは展開する方法のように繰り返されます。 First Quarter 96 Total Direct Catalog January 96 Total Direct Catalog February 96 Total Direct Catalog March 96 Total Direct Catalog アドイン・ビューの Express データ 3-15 エッジ・カーソルの行を移動する方法(階層) ループの情報 階層による表示をどのようにループするかを考えるには、いくつかの情報が必要になりま す。 ■ カーソルが移動する範囲の行数を認識しておく必要があります。XWD_CUR.ROWS を 使用して、行数を取得できます。 ■ 最も変化の速いエッジ・ノードが 0 で、次に変化の速いエッジ・ノードが 1 のように番 号が割り当てられていることに注意します。 ■ 各エッジ・ノードのディメンションに対する statlen および span を取得しておく必要が あります。ここで、statlen と span について説明します。 statlen の定義 特定のエッジ・ノードの statlen(ステータス長)は、ディメンションに対して選択されてい るディメンションの値の数を表します。この数は、エッジ・ノードの保存済みセレクショ ン、またはディメンションの現行のステータスによって決まります。XWD_CUBE.ENSTAT プログラムを使用して、特定のエッジ・ノードの statlen を取得できます。 span の定義 特定のエッジ・ノードの span は、省略する間隔を表します。span は、値を省略しない場合 (展開して値を表示する場合など)に、エッジに示されるディメンション値の回数のカウン トを表します。 ■ 最も変化の速いディメンションの span は、値がそれぞれ 1 度ずつ示されるため、1 とな ります。 ■ その他のディメンションの span は、span と隣接する変化の速いエッジ・ノードの statlen の積となります。それぞれの値は span の回数だけ示されます。 XWD_CUBE.ENSPAN プログラムを使用して、特定のエッジ・ノードの span を取得できま す。 階層による方法でのループ方針 階層による方法でどのようにループするかを考える場合には、それぞれの span 値の 1 つを 表示し、その他の値を省略します。XWD_CUBE.ENSPAN プログラムを使用して、特定の エッジ・ノードの span を取得できます。 この例のエッジ・カーソルでは、Channel ディメンションが含まれているエッジ・ノードの span は 1 で、statlen は 3 となります。Time ディメンションが含まれているエッジ・ノード の span は 3 で、statlen は 4 となります。 XWD_CUBE.ENMULT プログラムを使用して、特定のエッジ・ノードの statlen と span の 積を取得できます。 3-16 Oracle Express Web Agent アドイン・ビュー・ガイド データ・カーソルの理解 追加情報 statlen および span プログラムの使用方法は、「Express Web Agent ヘルプ」の次のトピック を参照してください。 「XWD_CUBE.ENSTAT」 「XWD_CUBE.ENSPAN」 「XWD_CUBE.ENMULT」 データ・カーソルの理解 データ・カーソルのディメンション データ・カーソルには、特定のデータ・キューブのメジャーのデータ値が含まれています。 データ・カーソルの最初の 3 つのディメンションは、データ・キューブの 3 つのエッジ (行、列、ページ)に対応します。 データ・カーソルの 4 番目のディメンションは、データ・レイヤー・ディメンションと呼ば れます。このディメンションは、セルごとの情報の複数のレイヤーを格納する目的で使用し ます。次の表に、サポートされている 2 つのレイヤーについて説明します。 レイヤー名 内容 VALUE フォーマットされていないデータ値 FORMATTEDVALUE データ・キューブに対応するオブジェクトの関連プロパティに従って フォーマットされたデータ値 データ・カーソルの作成に関する注意事項 データ・カーソルを作成する場合は、XWD_CUBE.DCURSOR プログラムを使用して、カー ソルを作成するデータ・キューブを指定します。 データ・カーソルの移動 データ・カーソルからデータ・ストリームを作成するには、データ・レイヤーを選択し、 カーソルの対象範囲のページ、行および列をループします。通常は、データ・キューブのセ ルは省略せず、セルの順序も変更しません。 追加情報 データ・カーソル情報を提供するためのプログラムの使用方法は、 「Express Web Agent ヘ ルプ」で次のトピックを参照してください。 アドイン・ビューの Express データ 3-17 カーソルにおける単一値の取得 「XWD_CUR.PAGES」 「XWD_CUR.COLS」 「XWD_CUR.ROWS」 「XWD_DCUR.HIGHVAL」 「XWD_DCUR.LOWVAL」 カーソルにおける単一値の取得 カーソルの移動 この章では、エッジ・カーソルおよびデータ・カーソルの移動方法について説明していま す。この方法には、ブラウザ、アプレットまたは ActiveX コントロールに対するデータ・ス トリームを作成するための、カーソルのディメンションにおけるループ処理も含まれます。 ループ処理では、カーソルから一連の値を取得することがポイントです。データ・カーソル の場合は、データ値を順次に取得し、エッジ・カーソルの場合は、メタデータの項目を順次 に取得します。 値の取得 それぞれのループでは、Developer’s Toolkit プログラム(カーソルから 1 つの値を返すプロ グラム)をコールする処理が中心となります。データ・カーソルの場合は、 XWD_DCUR.VALUE をコールします。エッジ・カーソルの場合は、XWD_ECUR.VALUE をコールします。 これらのプログラムの特別な情報は、 「Express Web Agent ヘルプ」で次のトピックを参照 してください。 「XWD_DCUR.VALUE」 「XWD_ECUR.VALUE」 データ・キューブを操作するプログラム データ・キューブ・プログラムの概要 Developer’s Toolkit には、データ・キューブおよびそのコンポーネントを操作するために、 次のプログラム・グループが用意されています。 ■ データ・キューブを操作するためのプログラム ■ カーソルを作成し、データを移入するためのプログラム ■ カーソルの値にアクセスするためのプログラム ■ ページング・フォームを作成するためのプログラム 3-18 Oracle Express Web Agent アドイン・ビュー・ガイド データ・キューブを操作するプログラム データ・キューブを操作するためのプログラム ここにリストされているプログラムを使用して、操作対象のデータ・キューブを調べて、特 性を変更できます。これらのプログラムには、特定のデータ・キューブに関連付けられてい る行、列、ページ、エッジ、エッジ・ノードおよびメジャーの情報を提供するものがありま す。その他のプログラムは、データ・キューブに対応する値を設定します。 データ・キューブを操作するためのプログラム XWD_CUBE.COLS XWD_CUBE.GETEN XWD_CUBE.PAGING XWD_CUBE.DIMEDGE XWD_CUBE.GETEND XWD_CUBE.ROTATE XWD_CUBE.DIMEN XWD_CUBE.GETMEAS XWD_CUBE.ROTEDG XWD_CUBE.DRILL XWD_CUBE.GETPG XWD_CUBE.ROWS XWD_CUBE.EDEPTH XWD_CUBE.GETSTAT XWD_CUBE.SETPG XWD_CUBE.ENMULT XWD_CUBE.MCOUNT XWD_CUBE.SETSEL XWD_CUBE.ENSPAN XWD_CUBE.NTHMEAS XWD_CUBE.SETSTAT XWD_CUBE.ENSTAT XWD_CUBE.PAGES XWD_CUBE.TOCSV 追加情報 これらのプログラムの中には、この章で説明しているものもあります。プログラムの詳しい 使用方法は、 「Express Web Agent ヘルプ」で、それぞれのトピックを参照してください。 カーソルを作成し、データを移入するためのプログラム ここにリストしたプログラムを使用して、カーソルを作成し、データを移入できます。 カーソルを作成し、データを移入するためのプログラム XWD_CUBE.DCURSOR XWD_DCUR.UPDATE XWD_CUBE.ECURSOR XWD_ECUR.UPDATE XWD_CUR.LIMIT 追加情報 これらのプログラムは、すべてこの章で説明しています。プログラムの詳しい使用方法は、 「Express Web Agent ヘルプ」で、それぞれのトピックを参照してください。 アドイン・ビューの Express データ 3-19 データ・キューブを操作するプログラム カーソルの値にアクセスするためのプログラム ここにリストしたプログラムを使用して、カーソルの値にアクセスできます。 カーソルの値にアクセスするためのプログラム XWD_CUR.COLS XWD_DCUR.LOWVAL XWD_CUR.ROWS XWD_DCUR.VALUE XWD_CUR.PAGES XWD_ECUR.VALUE XWD_DCUR.HIGHVAL 追加情報 これらのプログラムは、すべてこの章で説明しています。プログラムの詳しい使用方法は、 「Express Web Agent ヘルプ」で、それぞれのトピックを参照してください。 ページング・フォームを作成するためのプログラム Developer’s Toolkit には、XWD_CUBE.PAGING という便利なプログラムが用意されてお り、これを使用して、フォームを表示するための HTML タグを生成します。ユーザーは、 このフォームによって、表示されているデータ・キューブの現行のページを変更できます。 通常、このプログラムは、アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデルに従って設計されたアドインの一部の TOHTML プログラムで使用されま す。このモデルでは、TOHTML プログラムによって、HTML ページ全体を表示するタグが 作成されます。 追加情報 XWD_CUBE.PAGING プログラムの詳細は、 「Express Web Agent ヘルプ」を参照してくだ さい。 3-20 Oracle Express Web Agent アドイン・ビュー・ガイド 4 サンプル・プログラム 概要 はじめに この章には、アドインの 3 つの設計モデルのサンプル・プログラムが記載されています。こ のサンプルには、アドインの実装に必要なすべてのプログラムが含まれているわけではあり ません。このプログラムでは、Express データを操作して、アドイン・ビューに表示する方 法に重点をおいています。 この章の内容 ■ サンプル・プログラムの概要 ■ サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・ モデル ■ サンプル 2: アプレットまたは ActiveX コントロールを使用した Express プッシュ・モ デル ■ サンプル 3: クライアント・プル・モデル サンプル・プログラムの概要 3 つの設計モデルに対する TOHTML プログラム このマニュアルでは、アドイン・ビューを実装する Express コードの記述方法について説明 しています。すべてのアドインでは、TOHTML プログラムが必須の要素となり、これを使 用して、ビューにデータをどのように表示するかを Express Web Agent に通知します。 特定のアドインに対して TOHTML プログラムを実装する方法は、アドインで使用する設計 モデルによって異なります。 サンプル・プログラム 4-1 サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル ■ アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデルの場合 は、TOHTML プログラムで、ブラウザにビューを表示するための出力を生成します。 データは HTML タグで囲まれます。 ■ アプレットまたは ActiveX コントロールを使用する Express プッシュ・モデルの場合は、 TOHTML プログラムで、<APPLET> または <OBJECT> のタグを含む出力を生成しま す。このタグのパラメータには、データが含まれています。 ■ クライアント・プル・モデルの場合は、TOHTML プログラムで、<APPLET> または <OBJECT> タグを含む出力を生成しますが、このタグのパラメータには、データは含ま れていません。かわりに、アドインの実装にはデータ送信プログラムが含まれており、 これによって、アプレットまたは ActiveX コントロールに理解できる形式でデータが生 成されます。 この章の 3 つのサンプル・プログラムは、これらの 3 つの設計モデルに対応しています。 サンプルに関する注意事項 この章のサンプルは、TOHTML プログラムまたはデータ送信プログラムを記述する際の一 般的な概念を表すものです。これらのプログラムは、アドインで必要な機能と類似の機能を 実現する Express Web Agent の内部プログラムによって構成されています。内部ルーチンの 独自性を保護するために、名前は変更されています。これらのプログラムは、完全にはテス トされていません。 サンプルのワードラップ この章では、1 行では印刷できずにワードラップされているプログラム行があります。これ らのプログラム行を、各自のコード行のモデルとして使用する場合は、テキストの 1 行に収 まるように記述してください。つまり、印刷されている 1 行目の終わりには、改行を挿入し ないようにしてください。複数行にわたるコード行の場合、2 行目以降の先頭にマージンを 挿入しています。 サンプル 1: アプレットまたは アプレットまたは ActiveX コントロールを 使用しない Express プッシュ・モデル サンプル 1 この TOHTML プログラムは、アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデルに対応するアドインの一部で、データ・ストリームを生成します。 データ・ストリームでは、データおよびメタデータの値が、HTML タグで囲まれます。この プログラムには、次の特徴があります。 4-2 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル ■ HTP.TABLEOPEN、HTP.TABLEHEADER、HTP.TABLEROWOPEN、 HTP.TABLEROWCL、HTP.TABLEDATA および HTP.TABLECLOSE プログラムを使用 して、ブラウザに表示するための表ビューを生成します。 ■ ロング・ラベル、ドリル状態およびインデントのメタデータを操作します。ドリル操作 の場合には、A_DRILLANCPRG という別のプログラムをコールしますが、このプログ ラムは、ここには含まれていません。 ■ エッジ・ノードの span および statlen に基づいた階層的なデータを操作します。つまり、 3 章で説明したような、エッジ・カーソル行を階層的に移動する方法を使用します。 ■ データ・キューブの現行のページが変更された際に、ユーザーにフォームを表示するた めに、XWD_CUBE.PAGING をコールします。 サンプル 1 TOHTML プログラム DEFINE A.TABLE.TOHTML PROGRAM PROGRAM arg htable text vrb vrb vrb vrb vrb hcube hcolcur hrowcur hdatacur hedgenode text text text text text vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb a_tableheader a_rowopen a_edgenodes a_edgenode a_statlen a_span a_row a_emptycols a_emptycol a_hierarchical a_dimension a_drillstate a_cols a_col a_label a_rows a_value a_indent a_hierarchy text boolean integer integer integer integer integer integer integer boolean text integer integer integer text integer text integer text trap on SYSERR noprint サンプル・プログラム 4-3 サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル " get the data cube hcube = XWD_VIEW.CUBE(htable) " create the cursors hcolcur = XWD_CUBE.ECURSOR(hcube, 'COLUMN', 'VALUE¥nLONGLABEL¥nDRILLSTATE') call XWD_ECUR.UPDATE(hcolcur) hrowcur = XWD_CUBE.ECURSOR(hcube, 'ROW', 'VALUE¥nLONGLABEL¥nDRILLSTATE¥nINDENT') call XWD_ECUR.UPDATE(hrowcur) hdatacur = XWD_CUBE.DCURSOR(hcube, 'VALUE') call XWD_CUR.LIMIT(hdatacur, na, na, na, na, 0, 1) call XWD_DCUR.UPDATE(hdatacur) " create the form with the paging controls call XWD_CUBE.PAGING(hcube) " start generating HTML call htp.tableOpen(yes) " skip the appropriate number of columns a_emptycols = XWD_CUR.PAGES(hrowcur) " create the across labels a_edgenodes = XWD_CUR.PAGES(hcolcur) a_rows = XWD_CUR.ROWS(hcolcur) a_edgenode = a_edgenodes - 1 while a_edgenode ge 0 do a_emptycol = 1 while a_emptycol le a_emptycols do call htp.tableHeader a_emptycol = a_emptycol + 1 doend hedgenode = XWD_CUBE.GETEN(hcube, 'COLUMN', a_edgenode) a_dimension = XWD_GETPROPVAL(hedgenode, 'DIMENSION') a_hierarchy = nafill(XWD_GETPROPVAL(hedgenode, 'HIERARCHY'), 'NONE') a_hierarchical = a_hierarchy ne '' and a_hierarchy ne 'NONE' a_span = XWD_CUBE.ENSPAN(hcube, 'COLUMN', a_edgenode) a_statlen = XWD_CUBE.ENSTAT(hcube, 'COLUMN', a_edgenode) a_row = 0 4-4 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル while a_row lt a_rows do if a_hierarchical then do a_drillstate = XWD_ECUR.VALUE(hcolcur, a_edgenode, a_row, 'DRILLSTATE') a_value = XWD_ECUR.VALUE(hcolcur, a_edgenode, a_row, 'VALUE') a_label = XWD_ECUR.VALUE(hcolcur, a_edgenode, a_row, 'LONGLABEL') a_tableheader = if a_drillstate gt 0 then htf.anchor(_xwd_DRILLANCPRG(a_dimension,a_value), a_label)else a_label doend else a_tableheader = XWD_ECUR.VALUE(hcolcur, a_edgenode, a_row, 'LONGLABEL') call htp.tableHeader(a_tableheader, na, na, true, na, a_span) a_row = a_row + a_span doend call htp.tableRowCl a_edgenode = a_edgenode - 1 doend a_rowopen = false a_edgenodes = XWD_CUR.PAGES(hrowcur) a_cols = XWD_CUR.COLS(hdatacur) a_rows = XWD_CUR.ROWS(hdatacur) a_row = 0 while a_row lt a_rows do a_edgenode = a_edgenodes - 1 while a_edgenode ge 0 do if not a_rowopen then do call htp.tableRowOpen a_rowopen = true doend a_statlen = XWD_CUBE.ENSTAT(hcube, 'ROW', a_edgenode) a_span = XWD_CUBE.ENSPAN(hcube, 'ROW', a_edgenode) if rem(a_row + 1, a_span) eq 1 or a_span eq 1 then do hedgenode = XWD_CUBE.GETEN(hcube, 'ROW', a_edgenode) サンプル・プログラム 4-5 サンプル 1: アプレットまたは ActiveX コントロールを使用しない Express プッシュ・モデル a_dimension = XWD_GETPROPVAL(hedgenode, 'DIMENSION') a_hierarchy = nafill(XWD_GETPROPVAL(hedgenode, 'HIERARCHY'), 'NONE') a_hierarchical = a_hierarchy ne '' and a_hierarchy ne 'NONE' if a_hierarchical then do a_drillstate = XWD_ECUR.VALUE(hrowcur, a_edgenode, a_row, 'DRILLSTATE') a_value = XWD_ECUR.VALUE(hrowcur, a_edgenode, a_row, 'VALUE') a_label = XWD_ECUR.VALUE(hrowcur, a_edgenode, a_row, 'LONGLABEL') a_indent = XWD_ECUR.VALUE(hrowcur, a_edgenode, a_row, 'INDENT') a_tableheader = if a_drillstate gt 0 then htf.anchor(_xwd_DRILLANCPRG (a_dimension, a_value), a_label)else a_label a_tableheader = joinchars(extchars (XW_INDENTSTRING, 1, a_indent * 12), a_tableheader) doend else a_tableheader = XWD_ECUR.VALUE(hrowcur, a_edgenode, a_row, 'LONGLABEL') call htp.tableHeader(a_tableheader, 'LEFT', na, true, a_span, na) doend a_edgenode = a_edgenode - 1 doend a_col = 0 while a_col lt a_cols do call htp.tableData(XWD_DCUR.VALUE(hdatacur, a_col, a_row, 0, 'VALUE'), 'RIGHT') a_col = a_col + 1 doend call htp.tableRowCl a_rowopen = false a_row = a_row + 1 doend call htp.tableClose return true SYSERR: 4-6 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 2: アプレットまたは ActiveX コントロールを使用した Express プッシュ・モデル return false END サンプル 2: アプレットまたは アプレットまたは ActiveX コントロールを 使用した Express プッシュ・モデル サンプル 2 この TOHTML プログラムは、ActiveX コントロールを使用した Express プッシュ・モデル に対応するアドインの一部で、データ・ストリームを生成します。データ・ストリームで は、データ値は、<OBJECT> および <PARAM...> タグで囲まれます。このプログラムには、 次の特徴があります。 ■ HTP.PRINT プログラムを使用して、ブラウザに対するデータ・ストリームを生成しま す。データ・ストリームには、ActiveX コントロールでチャートを表示するために必要 なデータが含まれています。 ■ ロング・ラベルおよびショート・ラベルのメタデータを操作します。 ■ つまり、3 章で説明したような、エッジ・カーソル行を展開して移動する方法を使用し ます。 ■ ここでは、アドイン・チャート・オブジェクトに対して他の位置で定義されている TITLE プロパティと SUBTITLE プロパティを参照します。 ■ このプログラムでは、チャートの下に、個別の <OBJECT> タグを持つ凡例が生成されま す。 サンプル 2 TOHTML プログラム DEFINE ACE.CHART.TOHTML PROGRAM PROGRAM arg hchart text vrb vrb vrb vrb vrb hcube hcolcur hrowcur hdatacur hpagecur text text text text text vrb vrb vrb vrb vrb a_row a_emptycols a_emptycol a_label a_rows integer integer integer text integer サンプル・プログラム 4-7 サンプル 2: アプレットまたは ActiveX コントロールを使用した Express プッシュ・モデル vrb vrb vrb vrb a_value a_title a_subtitle a_rownumtext text text text text trap on SYSERR " get the data cube hcube = XWD_VIEW.CUBE(hchart) " create the cursors hcolcur = XWD_CUBE.ECURSOR(hcube, 'COLUMN', 'LONGLABEL') call XWD_ECUR.UPDATE(hcolcur) hrowcur = XWD_CUBE.ECURSOR(hcube, 'ROW', 'SHORTLABEL') call XWD_ECUR.UPDATE(hrowcur) hpagecur = XWD_CUBE.ECURSOR(hcube, 'PAGE', 'LONGLABEL') call XWD_ECUR.UPDATE(hpagecur) hdatacur = XWD_CUBE.DCURSOR(hcube, 'VALUE') call XWD_CUR.LIMIT(hdatacur, na, na, na, na, 0, 1) call XWD_DCUR.UPDATE(hdatacur) call htp.print (joinlines( '<OBJECT ID="DBChart1" WIDTH=500 HEIGHT=350 STANDBY="Loading AceChart Software¥'s DBChart Control"' 'CLASSID="CLSID:A1F66360-D994-11CF-9BD7-0000C0044CBE"' 'CODEBASE="/activex/dbchart.ocx#Version1,1,0,73">' '<PARAM NAME="_Version" VALUE="65536">' '<PARAM NAME="_ExtentX" VALUE="13229">' '<PARAM NAME="_ExtentY" VALUE="9278">''<PARAM NAME="_StockProps" VALUE="1">''<PARAM NAME="SpatialDataType" VALUE="ChartInfo">''<PARAM NAME="SpatialDataName" VALUE=""/activex/world_ll.tab" "/activex/us_state.tab"">' )) a_rows = XWD_CUR.ROWS(hdatacur) call htp.print (joinlines( joinchars('<PARAM NAME="Rows" VALUE="', a_rows, '">')'<PARAM NAME="Columns" VALUE="2">' )) a_row = 0 a_value = na 4-8 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 2: アプレットまたは ActiveX コントロールを使用した Express プッシュ・モデル while a_row lt a_rows do a_rownumtext = convert(a_row, TEXT, 0) a_value = joinlines(a_value, joinchars('<PARAM NAME="Data[', a_rownumtext, ']" VALUE="', XWD_ECUR.VALUE(hrowcur, 0, a_row, 'SHORTLABEL'), '¥x09', XWD_DCUR.VALUE(hdatacur, 0, a_row, 0, 'VALUE'), '">') ) a_row = a_row + 1 doend call htp.print (a_value) call htp.print ('</OBJECT>') " for column and page edges, write code to do similar looping " do the legend a_title = XWD_GETPROPVAL(hchart, 'NAME') a_title = nafill(a_title, 'AceChart Chart') a_subtitle = XWD_GETPROPVAL(hchart, 'SUBTITLE') a_subtitle = nafill(a_subtitle, 'Page') call htp.print (joinlines('<OBJECT ID="Legend1" WIDTH=200 HEIGHT=300 STANDBY="Loading AceChart Software¥'s Legend Control"''CLASSID="CLSID:867CDAA1-D9AE-11CF-9BD7-0000C0044CBE"''CODEBASE="/activex/legend.ocx#Version=1,1,0,72">''<PARAM NAME="_Version" VALUE="65536">''<PARAM NAME="_ExtentX" VALUE="7056">''<PARAM NAME="_ExtentY" VALUE="10583">''<PARAM NAME="_StockProps" VALUE="13">'joinchars('<PARAM NAME="Title" VALUE="', a_title, '">') joinchars('<PARAM NAME="SubTitle" VALUE="', a_subtitle, '">') )) return TRUE SYSERR: return false END サンプル・プログラム 4-9 サンプル 3: クライアント・プル・モデル サンプル 3: クライアント・プル・モデル クライアント・プル・モデル サンプル 3 このサンプルには、TOHTML プログラムとデータ送信プログラムの両方が含まれています。 これは、アドインがクライアント・プル・モデルに対応しているためです。 TOHTML プログラムには、次の特徴があります。 ■ HTP.PRINT プログラムを使用して、ブラウザに対するデータ・ストリームを生成し、 ブラウザに適切な ActiveX コントロールを起動するよう通知します。 ■ ActiveX コントロールのパラメータとして、OOWA_PREFIX の値、および表示する ビューのハンドルが渡されます。 データ送信プログラムには、次の特徴があります。 ■ HTP.PRINT および HTP.PRN プログラムを使用して、タブで区切られたデータ・スト リームを生成します。このデータ・ストリームには、ActiveX コントロールで表示され るデータが含まれています。 ■ このデータ送信プログラムは、ActiveX コントロールがデータ送信プログラムの名前お よび 2 つの引数が指定されている URL を実行する際にコールされます。これらの 2 つ の引数は、データを必要とするビューのハンドル、およびデータ・ストリームを作成す る際に、プログラムで階層的な方法を使用するかどうかを表すブール値です。 ■ このプログラムでは、ロング・ラベルおよびインデントのメタデータを操作します。 サンプル 3 TOHTML プログラム DEFINE XYZ.GRAPH.TOHTML PROGRAM PROGRAM arg hview text trap on SYSERR call htp.print (joinlines( '<OBJECT ID="DBChart1" WIDTH=500 HEIGHT=350 STANDBY="Loading AceChart Software¥'s DBChart Control"' 'CLASSID="CLSID:A1F66360-D994-11CF-9BD7-0000C0044CBE"' 'CODEBASE="/activex/dbchart.ocx#Version1,1,0,73">' '<PARAM NAME="_Version" VALUE="65536">' '<PARAM NAME="_ExtentX" VALUE="13229">' '<PARAM NAME="_ExtentY" VALUE="9278">''<PARAM NAME="_StockProps" VALUE="1">''<PARAM NAME="SpatialDataType" VALUE="ChartInfo">''<PARAM NAME="SpatialDataName" VALUE=""/activex/world_ll.tab" 4-10 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 3: クライアント・プル・モデル "/activex/us_state.tab"">' joinchars('<PARAM NAME="URLComponent" VALUE="', oowa_prefix, '">') joinchars('<PARAM NAME="ViewHandle" VALUE="', hview, '">') '</OBJECT>' )) return true SYSERR: return false END サンプル 3 データ送信プログラム DEFINE XYZ.GRAPH.SNDATA PROGRAM PROGRAM arg hview text arg x_hierlabels boolean vrb vrb vrb vrb vrb vrb hcube hcolcur hrowcur hpagecur hdatacur hedgenode text text text text text text vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb vrb i x_tableheader x_rowopen x_edgenodes x_edgenode x_statlen x_span x_row x_emptycols x_emptycol x_hierarchical x_dimension x_drillstate x_cols x_col x_label x_rows x_value x_indent x_tab x_newline x_34spaces integer text boolean integer integer integer integer integer integer integer boolean text integer integer integer text integer text integer text text text サンプル・プログラム 4-11 サンプル 3: クライアント・プル・モデル vrb x_nextlabel integer trap on SYSERR x_hierlabels = nafill(x_hierlabels, yes) " set the delimiters once x_tab = '¥x09' x_newline = '¥x0a' x_34spaces = ' ' " get the data cube hcube = XWD_VIEW.CUBE(hview) " create the cursors hcolcur = XWD_CUBE.ECURSOR(hcube, 'COLUMN', 'LONGLABEL') call XWD_ECUR.UPDATE(hcolcur) hrowcur = XWD_CUBE.ECURSOR(hcube, 'ROW', 'LONGLABEL¥nINDENT') call XWD_ECUR.UPDATE(hrowcur) hpagecur = XWD_CUBE.ECURSOR(hcube, 'PAGE', 'LONGLABEL') call XWD_ECUR.UPDATE(hpagecur) hdatacur = XWD_CUBE.DCURSOR(hcube, 'VALUE') call XWD_CUR.LIMIT(hdatacur, na, na, na, na, 0, 1) call XWD_DCUR.UPDATE(hdatacur) x_edgenodes = XWD_CUBE.EDEPTH(hcube, 'PAGE') i = 0 while i lt x_edgenodes do hedgenode = XWD_CUBE.GETEN(hcube, 'PAGE', i) x_dimension = XWD_GETPROPVAL(hedgenode, 'DESCRIPTION') call htp.print (joinchars('"', x_dimension, ':"¥x09"' XWD_ECUR.VALUE(hpagecur, i, 0, 'LONGLABEL'), '"')) i = i + 1 doend call htp.print ('""') " skip the appropriate number of columns x_emptycols = XWD_CUR.PAGES(hrowcur) " create the across labels x_edgenodes = XWD_CUR.PAGES(hcolcur) x_rows = XWD_CUR.ROWS(hcolcur) 4-12 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 3: クライアント・プル・モデル x_edgenode = x_edgenodes - 1 while x_edgenode ge 0 do x_emptycol = 1 while x_emptycol le x_emptycols do call htp.prn (x_tab ) x_emptycol = x_emptycol + 1 doend hedgenode = XWD_CUBE.GETEN(hcube, 'COLUMN', x_edgenode) x_dimension = XWD_GETPROPVAL(hedgenode, 'DIMENSION') x_hierarchical = nafill(XWD_GETPROPVAL(hedgenode, 'HIERARCHY'), 'NONE') ne 'NONE' x_span = XWD_CUBE.ENSPAN(hcube, 'COLUMN', x_edgenode) x_statlen = XWD_CUBE.ENSTAT(hcube, 'COLUMN', x_edgenode) x_row = 0 while x_row lt x_rows do if x_hierarchical then do x_label = XWD_ECUR.VALUE(hcolcur, x_edgenode, x_row, 'LONGLABEL') x_tableheader = x_label doend else x_tableheader = XWD_ECUR.VALUE(hcolcur, x_edgenode, x_row, 'LONGLABEL') call htp.prn (joinchars('"', x_tableheader, '"') ) if x_hierlabels then do x_nextlabel = x_row + x_span while x_row lt x_nextlabel do call htp.prn (x_tab) x_row = x_row + 1 doend doend else do call htp.prn (x_tab) x_row = x_row + 1 doend doend call htp.prn (x_newline) x_edgenode = x_edgenode - 1 doend x_rowopen = false サンプル・プログラム 4-13 サンプル 3: クライアント・プル・モデル x_edgenodes = XWD_CUR.PAGES(hrowcur) x_cols = XWD_CUR.COLS(hdatacur) x_rows = XWD_CUR.ROWS(hdatacur) x_row = 0 while x_row lt x_rows do x_edgenode = x_edgenodes - 1 while x_edgenode ge 0 do if not x_rowopen then do x_rowopen = true doend x_statlen = XWD_CUBE.ENSTAT(hcube, 'ROW', x_edgenode) x_span = XWD_CUBE.ENSPAN(hcube, 'ROW', x_edgenode) if not(x_hierlabels) or (rem(x_row + 1, x_span) eq 1 or x_span eq 1) then do hedgenode = XWD_CUBE.GETEN(hcube, 'ROW', x_edgenode) x_dimension = XWD_GETPROPVAL(hedgenode, 'DIMENSION') x_hierarchical = nafill(XWD_GETPROPVAL(hedgenode, 'HIERARCHY'), 'NONE') ne 'NONE' if x_hierarchical then do x_label = XWD_ECUR.VALUE(hrowcur, x_edgenode, x_row, 'LONGLABEL') x_indent = XWD_ECUR.VALUE(hrowcur, x_edgenode, x_row, 'INDENT') x_tableheader = x_label x_tableheader = joinchars(extchars(x_34spaces, 1, x_indent * 3), x_tableheader) doend else x_tableheader = XWD_ECUR.VALUE(hrowcur, x_edgenode, x_row, 'LONGLABEL') call htp.prn (joinchars('"', x_tableheader, '"') ) call htp.prn (x_tab) doend else call htp.prn (x_tab) x_edgenode = x_edgenode - 1 doend x_col = 0 while x_col lt x_cols do call htp.prn (joinchars('"', XWD_DCUR.VALUE(hdatacur, x_col, x_row, 0, 4-14 Oracle Express Web Agent アドイン・ビュー・ガイド サンプル 3: クライアント・プル・モデル 'VALUE'), '"') ) call htp.prn (x_tab) x_col = x_col + 1 doend call htp.prn (x_newline) x_rowopen = false x_row = x_row + 1 doend return true SYSERR: return false END サンプル・プログラム 4-15 サンプル 3: クライアント・プル・モデル 4-16 Oracle Express Web Agent アドイン・ビュー・ガイド 索引 A ActiveX コントロール,2-2,2-14 C CGI 実行可能ファイル,2-13 cookie,2-13,2-14 E Express プッシュ・モデル 定義,1-4 データ・ストリーム,3-2 H HTP.PRINT プログラム,3-3,4-7,4-10 HTP.PRN プログラム,3-3,4-10 J Java アプレット,2-2,2-14 O OOWA_PREFIX 変数,2-13,4-10 OOWA_WSID 変数,2-13 T TOHTML プログラム Express プッシュ・モデル,4-2,4-7 XWD_VIEW.CREATE によるコール,2-8 アドイン・ビュー,2-12 アプレットの例,2-13 概要,2-2 簡単な例,2-7 クライアント・プル・モデル,4-10 詳細な例,4-1 説明,2-7 単一の引数,2-7 プロパティの使用,2-7 命名規則,2-3 目的,2-7 TOHTML メソッドのハンドラ,2-5 X XWD_ADDBOOLPROP プログラム,2-5 XWD_ADDDECPROP プログラム,2-5 XWD_ADDHANDLER プログラム,2-5 XWD_ADDHANDLER を使用した TOHTML プログラ ム,2-5 XWD_ADDIN.INIT プログラム,2-3,2-6 XWD_ADDINTPROP プログラム,2-5 XWD_ADDTEXTPROP プログラム,2-5 XWD_ADDTYPE プログラム,2-4 XWD_CUBE.DCURSOR プログラム,3-8 XWD_CUBE.ECURSOR プログラム,3-8,3-11 XWD_CUBE.ENMULT プログラム,3-16 XWD_CUBE.ENSPAN プログラム,3-16 XWD_CUBE.ENSTAT プログラム,3-16 XWD_CUBE.PAGING プログラム,3-20,4-3 XWD_CUR.COLS プログラム,3-8 XWD_CUR.LIMIT プログラム,3-8 XWD_CUR.PAGES プログラム,3-8 XWD_CUR.ROWS プログラム,3-8 XWD_DCUR.HIGHVAL プログラム,3-18 XWD_DCUR.LOWVAL プログラム,3-18 索引 -1 XWD_DCUR.UPDATE プログラム,3-8 XWD_DCUR.VALUE プログラム,3-18 XWD_ECUR.UPDATE プログラム,3-8 XWD_ECUR.VALUE プログラム,3-18 XWD_VIEW.CREATE プログラム,3-3 あ アドイン・オブジェクト,1-2 アドイン開発者,1-3,2-17 アドイン・データベース,2-3 アドインの登録,2-4 アドインのドキュメント,2-16 アドインのプロパティ 参照,2-7,2-9 定義,2-5 アドイン・ビュー 実装のステップ,2-17 説明,1-2 ドキュメント,2-16 目的,1-1 アドイン名の接頭辞,2-3 アプリケーション開発者,1-3,2-18 アプリケーション・プログラム,2-3 い インデント・レベル,3-9 え エッジ,3-4 エッジ・カーソル 階層的に移動する方法,3-15,4-3 行を移動する方法,3-13 繰返しディメンション値,3-10 定義,3-7 ディメンション,3-9 展開して移動する方法,3-14,4-7 内容,3-9 例,3-11 エッジ・ノード,3-5 エッジ・ノードの span 定義,3-16 例,4-3 エッジ・ノードの statlen 定義,3-16 索引 -2 例,4-3 か カーソル 概要,2-11 サイズの制限,3-8 定義,3-7 カートリッジ,2-13 階層,3-9 カスタム・メソッド・プログラム 概要,2-2 コール,2-10 説明,2-9 命名規則,2-3 目的,2-9 例,2-9 く クライアント・プル・モデル 定義,1-4 データ・ストリーム,3-2 し 初期化プログラム XWD_ADDIN.INIT の実行,2-3 アドイン・ビュー,2-12 概要,2-2 コール,2-6 説明,2-4 命名規則,2-3 目的,2-4 例,2-5,2-12 せ 設計モデル,1-4 て データ・カーソル 定義,3-7 内容,3-17 データ・キューブ 概要,2-11 作成,3-3 定義,3-4 データ送信プログラム アドイン・ビュー,2-15 概要,2-2 コールする URL,2-14 データ・ストリーム形式,2-15 命名規則,2-3 例,4-10 と ドリル状態,3-9 ひ ビューのインスタンス,1-2 め メジャーとエッジ・ノード,3-6 メタデータ エッジ・カーソル,3-9 例,4-3,4-7,4-10 ら ラベル,3-9 る ループ方法 エッジ・カーソル,3-16 単一値の取得,3-18 データ・カーソル,3-17 目的,3-18 例,4-1 索引 -3 索引 -4