【DO!BOOK・ページリンク】
2010_migaro_techreport_001   70 / 84

BOOKをみる

10秒後にBOOKのページに移動します


68 してIBM i より必要なデータを取得 し、PDF 形式の帳票を出力する。 ・ CGI アプリケーションは、Delphi/400 のWebBroker で開発する。 ・ PDF 出力を行うために「PowerPDF」 を使用している(※)。 C CGI アプリケーションは、出力した PDF 形式の帳票をブラウザ上で参照 できるようブラウザ側へ結果を返す。 ※ PowerPDF については、本誌「Migaro.Techni cal Report 2010」に、帳票出力に関する論文が記 載されている。そちらも参考にしていただきたい。 今回のポイント  今回の仕組みのポイントは、次の2 点 である。 ● VCL for the Web での開発は画面周 りに特化させ、PDF 出力の部分に関 してはCGI アプリケーション側で実 装し、そのCGI アプリケーションを 呼び出すようにしたこと。 ● PDF 出力の部分を、Delphi/400 を 使用して、CGI アプリケーションと して開発したこと。  このような構成にすることで、VCL for the Web の開発では、PDF 出力の 仕組みを気にすることなく、画面の開発 を行うことができる。  そして、CGI アプリケーションを Delphi/400 で開発することで、CGI ア プリケーションとしてWeb アプリケー ションの機能を持つことができ、さらに クライアント/ サーバー型の開発手法に よる機能を実装したCGI アプリケー ションを構築することができる。  従って、Delphi/400 でIBM i へ接続 し、IBM i より取得したデータをもと にPowerPDF を使用してPDF 出力を 行うといった一連の流れには、クライア ント/ サーバー型の開発手法をそのまま 利用でき、これまで培ってきたノウハウ を活用することができる。 開発手順  具体的な開発手順について紹介してい く。開発手順の流れは、以下の通りである。 (1)CGI 実行形式アプリケーションの作成 (2)CGIアプリケーションのActionsの実装 (3)CGIアプリケーションとPowerPDF との連携 (4)ISAPI アプリケーションからの実行 (1)CGI 実行形式アプリケーションの 作成  まずは、実際にどのようにしてCGI アプリケーションを作成するのかを紹介 したい。  Delphi では、WebBroker というフ レームワークを利用して、CGI アプリ ケーションを容易に作成することが可能 である。  手順としては[ファイル]→[その他] →[Delphi プロジェクト/WebBroker] →[Web サーバーアプリケーション] を選択する。「Web アプリケーションの 新規作成」のWindow が表示されるの で、「CGI 実行形式」を選択すると、開 発画面に遷移する。  開発画面には、Unit.pas(TWebModu le)が自動で生成されている。このユニッ トに、CGI アプリケーションの処理を 記述していくこととなる。【図2】 (2)CGI アプリケーションのActions の実装 ● CGI アプリケーションのURL  図のURL は、CGI アプリケーション のURL である。 URL には、Pathinfo 部とQuery 部と いうものが存在する。Pathinfo 部は CGI アプリケーションの処理の分岐に使 われ、Query 部はCGI アプリケーショ ンへ渡すパラメータの役割を持ってい る。【図3】  WebBroker では、TWebModule が 持つActions を設定することによって、 Pathinfo ごとの処理を容易に分岐させ ることができる。  TWebModule が持つActions は、ク ライアント/ サーバー型アプリケーショ ンのAction と非常によく似た仕組みに なっている。Actions は、オブジェクト インスペクタから、Actions のプロパ ティエディターで追加することができ る。このActions のOnAction イベン トにコーディングすることで、CGI ア プリケーションの処理を実装することが できる。【図4】  ここからは、実際のコーディングの説 明を行う。  前述した通り、Web アプリケーショ ンとは、ブラウザ(ユーザー)がWeb サー バーに対してリクエスト(要求)を送り、 Web サーバーがレスポンス(結果)を ブラウザ(ユーザー)に返すということ が大きな仕組みとなっている。  CGI アプリケーションがユーザー(ブ ラウザ)からのリクエストを受け取る時 や、それとは逆にユーザー(ブラウザ) にレスポンスを返す場合のどちらも、 TWebModule.Request プロパティで行 う。アプリケーションに渡された、Pat hinfo やQuery の値はすべてRequest プロパティ内で保持されている。 (3)CGIアプリケーションとPowerPDF との連携  では、帳票出力処理の実装の説明に入 りたい。  最初に、PowerPDF で作成したテンプ レートForm を、CGI アプリケーション のプロジェクトに追加する。続いて、こ の追加したForm を、CGI アプリケーショ ン内部で生成し、帳票出力に利用する。  なお、PowerPDF のForm 自体は、 クライアント/ サーバー形式で作成する 場合と同じものを使用することができる ため、すでに作成済みのテンプレートが ある場合などはそのまま流用することも 可能である。 【コーディング処理の流れ】 @ テンプレートファイルを生成 A リクエストからの情報Query を取得 B パラメータをもとにSQL をデータ ベースに発行 C 該当レコードをテンプレートファイ ルに転送 D PDFファイルに出力(ファイルに保存) E 保存されたファイルの読込 F レスポンスに対して、読み込んだファ イルと表示アプリケーションの指定を 返却  この流れで連携処理を実装していく。 流れの中で、WebBroker 特有のクラス やメソッドを利用する部分は@とFの部