1 June 2009
ページ ツール |
このチュートリアルは、次のような方を対象としています。
すべて
Adobe Flash Builder 4(以前の名前はFlex Builder)を使えば、Adobe ColdFusionとAdobe Flexフレームワークを統合して、SWFアプリケーションを作成するのが容易になります。ウィザードによる簡単な操作で、ColdFusionコンポーネント(CFC)をプロジェクトに読み込み、CFC関数へのサービス呼び出しを通じてデータにアクセスできます。また、データオブジェクトをクリックしてコントロールにドラッグするだけで、返されたデータをFlex UIコントロールに容易に入力できます。
このチュートリアルでは、ColdFusionデータソースとFlash Builderプロジェクトを設定し、Flash Builderのデータサービスウィザードを使用してCFCを読み込むことにより、架空のセールスプランナーのサンプルアプリケーションを作成します。その後、CFC操作の1つにアクセスして、SWFアプリケーションにデータを返し、FlexフレームワークのDataGridコントロールにデータを入力します。
FlexおよびColdFusionミニラーニングセンターの多くのチュートリアルでは、架空のセールスプランナーの従業員売り上げ情報を記録した同じサンプルデータベースを使用します。この節では、HSQLDBデータベースエンジンおよびサンプルデータベースを設定し、ColdFusionデータソースを作成します。
注意:以下の設定手順では、ColdFusion 8 Professionalのデベロッパー版のローカルスタンドアロンインストールが存在することを前提としています。
次のステップでは、オープンソースの軽量なHyperSQL Database(HSQLDB)エンジンを設定する方法を示します。
HSQLDBが選択された理由は、ローカルColdFusion環境で使用するための設定が容易であり、このチュートリアルに付属する生徒用ファイル以外の追加のダウンロードが不要だからです。
HSQLDB.jarファイルはデータベースエンジンであり、ColdFusionサーバーが起動されたときに自動的に読み込まれます。
この節では、HSQLDBエンジンでF4CF_FictitiousSalesPlannerデータベースインスタンスを設定します。このデータベースには、架空のセールスプランナーのサンプルアプリケーションのための従業員売り上げデータが含まれます。これは、FlexおよびColdFusionミニラーニングセンターの他のチュートリアルでも使用されます。
HSQLDBエンジンが初期化され、新しいF4CF_FictitiousSalesPlannerデータベースインスタンスがColdFusionサーバーのメモリに作成されます。
この節では、ColdFusion Administratorを使用して、HSQLDBデータベースインスタンスのデータソースを作成します。
例えば、PC上のColdFusionのスタンドアロンインストールの場合、次の値をコピーして貼り付けます。
jdbc:hsqldb:file:C:\ColdFusion8\wwwroot\WEB-INF\db\F4CF_FictitiousSalesPlanner\F4CF_FictitiousSalesPlanner
Mac上のColdFusionのスタンドアロンインストールの場合、次の値を使用します。
jdbc:hsqldb:file:/Applications/ColdFusion8/wwwroot/WEB-INF/db/F4CF_FictitiousSalesPlanner/F4CF_FictitiousSalesPlanner
図2に、Windows XPでのColdFusionのデフォルトのスタンドアロンインストールに対する設定を示します。
図3に、Mac OS XでのColdFusionのデフォルトのスタンドアロンインストールに対する設定を示します。
図4に示すように、画面の上部にデータソースの更新に成功しました。というメッセージが表示され、表にOKというステータスが表示されます。
このチュートリアルの後半で、F4CF_FictitiousSalesPlannerデータソースのインストールをテストします。
ColdFusion Administratorがデータベースへの接続エラーを報告した場合、ColdFusionサーバーを再起動して、メモリ上のHSQLDBエンジンとデータベースを更新してから、データソースをもう一度設定してみてください。
アプリケーションを開発する際には、HSQLDBエンジンとデータベースがColdFusionサーバーのメモリ上にあることを意識しておいてください。.scriptファイルまたは.propertiesファイルを変更した場合、通常はサーバーを再起動する必要があります。
また、エラーが発生した場合(図5に示す、データベーステーブルが見つからないというエラーなど)、HSQLDBデータソースのパスが正しく設定されていない可能性を考えてみてください。データソースのパスが間違った場所を指しており、HSQLDBが予期した.propertiesファイルを見つけられなかった場合、空のデータベースで.propertiesファイルが作成されます。データソースの検証時に、テーブル、列、データが存在しないことになります。
注意:FlexおよびColdFusionミニラーニングセンターの「入門」の節を実行している場合は、次の節に進んでください。別のColdFusionデベロッパーのためのFlexチュートリアルからこの節に来た場合は、元のチュートリアルに戻って次の作業に進んでください。
この節では、架空のセールスプランナーのサンプルアプリケーションで使用する、ColdFusionを利用したFlash Builderデータサービスプロジェクトを設定します。
Flash Builderのプロジェクトは、Dreamweaverのサイトに似ています。プロジェクトを作成する目的は、コードファイルを保存して整理することです。Flash Builderプロジェクトを作成するには、以下の手順を実行します。
注意:ここでは、Flash Builder 4ベータ版のスタンドアロン版(プラグイン版ではなく)を使用していることを前提とします。プログラミング環境として既にEclipseを使用している場合は、プラグイン版をインストールしてもかまいません。ただし、以下の手順で多少の違いが生じる可能性があります。また、ColdFusionのローカルスタンドアロンインストールが存在することを前提とします。カスタムインストールの場合は、パスの変更が必要となる可能性があります。
新規プロジェクトダイアログボックスが表示されます。図7に示すように新規プロジェクトを設定します。
Flash BuilderプロジェクトがColdFusionサーバーと連動するように設定するには、以下の手順を実行します。
注意:Mac OS XコンピュータでColdFusionのスタンドアロンモードのデフォルトインストールを使用した場合、ColdFusion設定は通常次のようになります。
出力フォルダーの場所は、ColdFusionサーバーのWebルート内にあることに注意してください。
Flash Builderは、プロジェクト名に–debugが付いた名前のフォルダーを自動的に作成します。この例では、Flash Builderは、F4CF_Getting_Started-debugフォルダーに、コンパイルされたFlash SWFおよびHTMLラッパーファイルを保存します。
注意:Mac OS XコンピュータでColdFusionのスタンドアロンモードのデフォルトインストールを使用した場合、出力フォルダー設定は通常次のようになります。 /Applications/ColdFusion8/wwwroot/F4CF_Getting_Started-debug
Flashソースファイルは、ColdFusionソースファイルと異なり、Webサーバーに展開されません。その代わりに、ソースをコンパイルしてできたSWFファイルが、HTMLラッパーファイルで参照されます。SWFファイルとHTMLファイルが、サーバーにアップロードされます。
図9に示すように、F4CF_Getting_Startedプロジェクトがパッケージエクスプローラーに表示されます。また、同じ名前のMXMLアプリケーションファイルが作成され、編集用に開かれます。図9では、「MXMLエディター」タブがデザインモードで示されています。タブの下の「ソース」ボタンをクリックすると、エディターのコードビューが表示されます。
Flexフレームワークでは、2つのプログラミング言語が提供されています。完全なオブジェクト指向言語であるActionScriptと、CFMLに似た構文を持つXMLベースの言語であるMXMLです。
注意:FlexおよびColdFusionミニラーニングセンターの「入門」の節を実行している場合は、次の節に進んでください。別のColdFusionデベロッパーのためのFlexチュートリアルからこの節に来た場合は、元のチュートリアルに戻って次の作業に進んでください。
これで、データベース、データソース、Flash Builderプロジェクトの設定が終わったので、今度は、CFCメソッドから簡単にデータを取得して、Flexユーザーインターフェイス要素にバインドできることを学びます。
ColdFusionコンポーネントは、ビジネスロジックを再利用可能なコードとして整理するためのものです。これはColdFusion MXで導入されたもので、インラインデータベースクエリー構文を置き換えるものです。つまり、CFMLページの先頭にcfqueryタグを置く代わりに、CFCメソッド内に置かれたクエリーを、必要に応じて引数を渡して呼び出します。
注意:CFCについて詳しくは、記事「Flexアプリケーションの開発におけるCFCの役割について」を参照してください。
Flash Builderプロジェクトを設定したときに、コンパイルされたSWFファイルと関連するHTMLラッパーファイルの出力場所として、プロジェクト固有のデバッグフォルダーが自動的に参照され、作成されています。これはColdFusionデータサービスプロジェクトなので、デバッグフォルダーはColdFusionサーバーのWebルートにあります。図10は、SWFファイルおよびHTMLラッパーファイルと同じディレクトリにあるCFCを示します。
注意:SWFファイルおよびHTMLラッパーファイルについて詳しくは、展開アセットを参照してください。Flash Builderのデフォルトのコンパイル設定は、ソースファイルを保存すると直ちにこれらのファイルが作成されるようになっています。
多数のCFCメソッドがcffunctionタグで定義されているのがわかるはずです。各メソッドには、架空のセールスプランナーアプリケーションのビジネスロジックが、カプセル化されています。このチュートリアルでは、getAllData操作を使用して、データベース中のすべての従業員を取得します。
注意:各メソッドでaccessプロパティがremoteに設定されているのは、メソッドをSWFアプリケーションで使用できるようにするためです。
今度は、付属のテストファイルを使用して、架空の従業員データソースの設定が正常に行えるようにします。
すべてのデータベースレコードのcfdump表示が見られます(図11を参照)。
次に、Flash Builderのデータとサービスビューを使用して、CFCをプロジェクトに読み込みます。
(ビューが開いていない場合、ウィンドウ/データとサービスを選択します)。

注意:データ/データとサービスに接続を選択して、データサービスウィザードを開くこともできます。
注意:サービスの名前は任意です。どのような名前を付けてもかまいませんが、CFCに関連しているので、CFCと似た名前を付けるのが普通です。例えば、SalesTarget_Serviceのような名前が考えられます。ただしこの例では、チュートリアル名に合わせてサービス名を決定しました。
パッケージがservices.f4cf_getting_started_serviceに設定されていることに注意してください。以下の手順を終了すると、パッケージエクスプローラーで、プロジェクトのsrcフォルダーの下にservices.f4cf_getting_started_serviceパッケージが表示されているはずです。このパッケージには、Flash Builderウィザードが自動的に生成するActionScriptファイルが含まれます。
注意:ColdFusion Administratorで必ずRDSを有効にしておいてください。デフォルトのユーザー名はadminです。
Flash BuilderはCFCにアクセスし、イントロスペクトを行い、使用可能な操作と、操作に関連付けられたデータ型に関する情報を返します。CFCの各メソッドが、図16に示すサービス操作ウィンドウに表示されます。
Flash Builderはサービスを作成します。図17に示す指示が表示される場合があります。これは、リモートサービスの使用ダイアログボックスの左下隅にあるチェックボックスを選択していなければ表示されます。
このチュートリアルの残りの部分では、この指示を実行します。
getAllData()メソッド名の後にObjectと表示されていることに注意してください。これは、Flash BuilderがCFCをイントロスペクトしてメソッドに関する情報を提供したときに、この操作から返されるColdFusionクエリーが、一般的なActionScriptのObjectデータ型にマッピングされたためです。
CFCがFlash Builderにイントロスペクトされ、Flash Builderプロジェクトが設定されたので、今度は、返されたデータを使用して、簡単な従業員データ表示を作成します。
この節では、CFCメソッド呼び出しで取得されて返されるデータに、独自のデータ型名を割り当てます。
getAllData()操作を右クリックし、「戻り値の型を設定」を選択します(図19を参照)。
クエリからの各レコードは、名前/値ペアの各データ列(FIRSTNAME、LASTNAME、EMAIL)が設定された状態で、ActionScriptオブジェクト内に格納されます。各レコードには、0から始まるインデックスが付けられます。
注意:ColdFusionと異なり、ActionScript言語のインデックスは0から始まります。
このウィザードを使うと、返されたデータをオブジェクトとして一般的に参照する代わりに、戻り値の型の名前をデータに付けることができます。次にこれを行います。
ここで、データとサービスビューでデータ型カテゴリを展開すると、EmployeeSalesDataデータ型が、EMAIL、FIRSTNAME、LASTNAMEをプロパティとして持つオブジェクトとして定義されているのがわかります(図22を参照)。
メソッドの戻り値の型を設定したら、それを簡単にコンポーネントにバインドできます。この節では、EmployeeSalesDataデータ型をDataGridコンポーネントにバインドする方法を示します。
getAllData() CFC関数をデータとサービスビューからDataGridコントロールにドラッグ&ドロップし、EmployeeSalesDataデータ型を挿入します。 これにより、DataGridコントロールに、EmployeeSalesDataデータ型のプロパティに対応する列ができます(図26を参照)。


図28に、CFCデータが挿入されたDataGridコントロールを示します。Flash Builderは、WebルートにあるF4CF_Getting_Started-debugフォルダーからHTMLラッパーファイルを開いています。

このチュートリアルでは、HSQLDBエンジン、サンプルデータベース、ColdFusionデータソースを設定しました。次に、ColdFusionサーバーテクノロジーと協調動作するFlash Builderプロジェクトを設定しました。最後に、CFCメソッドからデータを取得して、Flexユーザーインターフェイス要素に簡単にバインドできることを体験しました。
FlexとColdFusionの協調動作については、次のチュートリアルを参照してください。