|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Macromedia Flash と IBM Lotus Notes/Dominoの統合: Lotus Dominoベース・ソリューション用のFlashベースのユーザー・インターフェース |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Jonas Israelsson, Principal Domino Developer レベル:中級 原文の掲載:2006年7月11日
この記事では、フラットなLotus Dominoビューに基づいた、IBM Lotus DominoビューのコンテンツをMacromedia Flashで表示する方法を説明します。この方法では、Lotus Dominoビューを変更するだけで、Lotus NotesとFlashのユーザー・インターフェース(UI)の両方で同じ設計とコンテンツを表示することができます。 このソリューションを利用すると、Lotus NotesのUIとFlashのUIでコンテンツの形式をそろえるために、追加のビューにインラインのHTMLまたはXMLを挿入する必要がなくなります。Lotus Dominoビューを1つ作成すると、そこに含まれる列ヘッダーや行に適用するフォーマット(フォントのサイズ、ファミリー、太さなど)が両方のUIで使用できます。この方法でWebクライアントにFlashを使用すると、Webクライアントで完全にレンダリングされる、Lotus Dominoビューの使用フォントをFlashムービーに埋め込むこともできます。 この記事で紹介するのは、FlashNotesViewという名前のFlashソリューションです。FlashNotesViewでは、単純なLotus Dominoビューからコンテンツと設計を読み取って、図1に示すFlash UIに適用します。この記事は、ActionScript言語の知識を持ち、Lotus Notes/Dominoアプリケーション開発に習熟した経験豊富なFlash開発者を対象としています。 メモ: この記事で扱うコードは、FlashNotesView.asという名前のActionScript外部ファイル内にあるので、Macromedia Flashをインストールしていない場合でもテキスト・エディターで参照できます。 図1.FlashNotesViewの最終的な結果のプレビュー
UIコンポーネントの作成Macromedia Flashは、事前定義されたUIコンポーネント・セットを備えていますが、Macromedia Flash Exchange(以下URL参照)を使用してさらにコンポーネントを追加することができます。ステージ上にコンポーネントをドラッグ・アンド・ドロップしたり、実行時に所定のクラスのインスタンスを生成するコードを指定したりするだけで、コンポーネントを利用してMacromedia FlashのUIを作成できます。
ここで、フラットなLotus Notesビューに似た要素をMacromedia Flash内に作成するとします。これには、DataGridというUIコンポーネントを使用します。実行時にコンポーネントを生成するには、Flashムービーの冒頭で3つのUIコンポーネント用のクラスをインポートする必要があります。この3つのクラス、Label、List、DataGridをインポートするコマンドは次のとおりです。
必要なクラスをインポートした後で、createClassObjectメソッドを使用して実行時に新しいクラス・インスタンスを生成するコードは次のとおりです。
データ・プロバイダーの作成データ・プロバイダーとは、ListやDataGridなどのコンポーネント内で参照されるデータのモデルで、理論上は単なるオブジェクトの配列です。Arrayクラスのpushメソッドを使用すると、データ・プロバイダーに新しいオブジェクトを追加できます。配列内の各オブジェクトは、データ・プロバイダー内の1つのアイテムであり、それぞれがListまたはDataGridコンポーネント内の別々の行として表示されます。Listコンポーネントに表示するデータを定義するには、次のコードを記述します。
この記事では、Lotus developerWorksのLotus Documentationサイトのデータベース(notesua.nsf) (US) のLotus Dominoビューを使用します。
データ・プロバイダーの割り当てListコンポーネントのインスタンスには、dataProviderという名前のプロパティーがあります。データ・プロバイダー・モデルをListインスタンスに割り当てるには、次のコードを記述します。
このコマンドは、データ・プロバイダー・モデルのアイテムでListコンポーネントにデータを埋め込みます。ここで、Flashムービーを最初に実行するときにユーザーに表示するものをすべて設定します。以降のセクションでは、FlashムービーのListコンポーネントでユーザーが選択したLotus Dominoビューからコンテンツと設計を取り出すために必要なコードを追加します。(図1の「Select view(ビューを選択)」ボックスにListコンポーネントが表示されています。)
Lotus Dominoビューからのコンテンツと設計の取得(XML形式)最初に、Lotus Dominoビューからコンテンツを取り出す必要があります。Lotus Dominoでこのタスクに使用できるURLコマンドが、?OpenView、?OpenDocument、?OpenPage、?ReadFormなどいくつかありますが、推奨されるURLコマンドは?ReadViewEntriesと?ReadDesignです。 Lotus Dominoビューからのコンテンツの取り出し ?ReadViewEntriesコマンドを使用すると、事前設定された形式の代わりにXML形式でビューのコンテンツを取り出すことができます。この取り出し操作のためのURLの構文は次のとおりです。
URLの結果を以下に示します。
Lotus Dominoビューの設計の取り出し 開発者向けの新情報です。資料にほとんど記載されていないURLコマンド?ReadDesignを使用すると、ビューのコンテンツではなくビューの設計(つまり、ビューの列ヘッダーと行がどのようなフォーマットであるかの情報)をXML形式で取り出せます。設計の取り出し操作のためのURLの構文は次のとおりです。
URLの結果を以下に示します。
Lotus Dominoビューの設計を取り出すと、Lotus Notesで外観を整えたビューやフォント設定などをFlash UIでも表示できます。
XMLオブジェクトの作成
Lotus Dominoビューから受け取ったXMLをMacromedia FlashのDataGridコンポーネントで使用する方法を説明します。まず、サーバーと通信し、サーバーに送られた要求からの応答を処理するXMLオブジェクトが必要です。xmlView XMLオブジェクトには、サーバーが応答に使用するXMLも含まれています。人間が読むためにはXML形式である必要はないため、このオブジェクトに空白を無視するよう指定します(囲み記事の『Macromedia FlashでのXMLの取り扱い』を参照)。 サーバーからXMLの出力結果を受け取るときに実行する関数も割り当てられています。
ビューのコンテンツの取り出し
Macromedia FlashのUIのロード時には、ユーザーが選択したビューからのXMLコンテンツのロードを開始するXMLオブジェクトのloadメソッドを呼び出します。 xmlView.load(strView+"?ReadViewEntries"); 現在選択されたビューに対応するURLはstrView変数に保持されます。
DataGridへのビュー・コンテンツの埋め込みLotus DominoビューからXMLコンテンツを受け取ると、後続の両方のコード・リストが実行されます。これはコードがonXMLViewLoad関数内に配置されているためです。出力結果を繰り返すときには、XMLノードを保持するために一時的な配列を使用します。
次のコード・リストはXMLノードの数だけ反復され、一時的なオブジェクトobjRowを作成します。このオブジェクトはLotus Dominoビューからの各行の列のコンテンツで埋められます。その後でobjRowオブジェクトは、DataGridコンポーネントのdataProviderプロパティーに付加されます。
表示を整えるために、DataGridの列ヘッダーはここで消去し、後でビュー設計を適用するときに埋め込みます。
DataGridへのビュー設計の適用ビューから取得した設計設定を適用するには、ここに示すコードをonXMLViewDesignLoad関数に追加する必要があります。このコードは?ReadDesignコマンドからコンテンツを受け取るときに実行されます。ここでも、出力結果を繰り返すときには、XMLノードを保持する一時的な配列を使用します。
このコードは、XMLに定義された列ごとに繰り返し、DataGridコンポーネントの該当の列に設定を適用します。setStyleプロパティーで適切なカスケーディング・スタイル・シート(CSS)の値を設定することによって実行します。 このコードがサポートするビュー設計のプロパティーは次のとおりです。
コードを追加することで、サポートされるビュー設計のプロパティーをさらに拡張できます。
新しいソリューションでのFlashNotesView.asの実装新規のFlashムービーを開始するときにFlashNotesView.asを使用するには(FlashNotesView_clean.flaに含まれている例のように)、Flashムービーの「Actions(アクション)」ペインの最初のフレームに次の行を追加します。 #include "FlashNotesView.as"
次に、「Components(コンポーネント)」ペインからLabel、List、DataGridのインスタンスをステージ上にドラッグし、新たに作成されたインスタンスをステージから削除します。これにより、FlashファイルをコンパイルしてMacromedia Flash Playerで使用するShockWave Flash (SWF)形式にするときに、新たに追加されたコンポーネントを組み込むようにFlashムービーに通知します。実際のコードは外部のActionScriptファイルFlashNotesView.asであるため、Macromedia Flash内で実行する必要があるのはこれだけです。
FlashNotesViewソリューションのカスタマイズFlashNotesView.asを変更する場合を除き、Flash (FLA)ファイルをMacromedia Flash Player用のSWF FlashムービーにコンパイルするにはMacromedia Flashを使用する必要があります。まず、ユーザーが選択できるビューのリストのカスタマイズを試みます。このプロセスはコード内で簡単に変更できます。例えば、「Bob Balaban (Looseleaf) Forum」のビューを追加したい場合、最初にデータ・プロバイダーを定義する箇所に、次のコードを追加します。 arrSelectViewDP.push({label:"Bob Balaban (Looseleaf) Forum", メモ: URLには既存のURLコマンドを含んでいてはいけません。したがって、WebからURLをコピーするときに元のURLから?OpenViewを削除します。 このソリューションのカスタマイズに慣れたら、DataGridを拡張するカスタム・クラスを作成し、任意のメソッドとプロパティーを使用することも検討してください。
セキュリティーサンプルとして提供しているFlashNotesView_final.swf Flashムービーのテスト中にセキュリティーに関するメッセージが表示される場合は、表示された指示に従ってローカルのSWFファイルが外部のアドレスと通信できるようにしてください。 Macromedia Flash Player 8のこのリリースではセキュリティー・レベルが上がり、Flashムービーが通信できるのは同じドメイン内のバックエンド・システムのみになりました。この問題を回避するには、バックエンド・サーバー上にテキスト・ファイル(ポリシー・ファイル)を作成し、このファイルを使用してFlashムービーが通信できるようにします。次に、現在のサーバーとの通信を許可するドメインをテキスト・ファイルに追加します。 次の例は、clienthost.comからの要求を受け入れる、backendhost.comに配置されたポリシー・ファイルです。 <cross-domain-policy> ポリシー・ファイルのファイル名はcrossdomain.xmlです。Macromedia Flash Player 8で強化されたセキュリティー・モデルの詳細については、Adobe社の記事『Security Changes in Flash Player 8』を参照してください。
まとめリッチ・インターネット・アプリケーション(映像と音声を統合するデスクトップ・アプリケーションの機能を持つFlashベースのUI)は、Flash開発においてここ数年間注目を集めてきたトピックでした。一般にそのようなアプリケーションは、ユーザーにコンテンツを配信するバックエンド・システムとも結び付けられています。 FlashベースのUI用のバックエンド・システムとしてLotus Dominoサーバーを使用することで、Dominoデータベースが生成するHTMLファイルにFlashアプリケーションを埋め込み、さまざまなプラットフォーム上にあるクライアント・コンピューターからの利用が可能になります。Flashアプリケーションをコンパイルしてスタンドアロンの実行可能ファイルを作成し、CDに焼き付けて配布することもできます。CD上のFlashアプリケーションは、バックエンドのLotus Dominoサーバーへの接続情報を保持するため、クライアント・コンピューターからHTTP経由でアクセスできます。これは、Lotus Dominoベースのソリューションで独立したプレゼンテーション層としてMacromedia Flashを使用する強みの1つであり、必要に応じてFlashアプリケーションを追加のバックエンド・システムに容易に適用できます。
ダウンロード
参考資料学ぶ
製品と技術情報を入手する
議論する
筆者について(原文のまま)
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||