以下、本発明の実施の形態について、図を用いて説明する。
実施の形態1.
図1は、本実施の形態に係るシステムの一構成例を示すブロック図である。
この構成では、クライアント・コンピュータ100とサーバ・コンピュータ200が、例えば、イーサネット(登録商標)・プロトコルにより、通信回線300に接続されている。通信回線300はさらに、プロキシ・サーバ400(サーバ・コンピュータ)を介して、インターネット500に接続され、インターネット500を介して複数のサーバ・コンピュータ600にアクセスすることができる。
クライアント・コンピュータ100は、ハードディスク140と、イーサネット(登録商標)・プロトコルに対応する通信インタフェース160(I/F)を備え、ハードディスク140には、オペレーティング・システムやブラウザ120等を有する。オペレーティング・システムとしては、例えば、マイクロソフト社のWindows(登録商標)、Linux(登録商標)、Mac・OS(登録商標)等を使用することができるが、ここに挙げたオペレーティング・システムには限定されない。ブラウザ120としては、例えば、マイクロソフト社のInternet・Explorer(登録商標)、FireFox(登録商標)等が使用可能であるが、ここに挙げたブラウザには限定されない。
クライアント・コンピュータ100は、画面を表示するアプリケーションプログラムを実行するアプリケーション実行装置の一例である。上記のように、本実施の形態において、クライアント・コンピュータ100は、アプリケーションプログラムの例として、ウェブページの画面を表示するブラウザ120を実行する。
サーバ・コンピュータ200は、ハードディスク240と、イーサネット(登録商標)・プロトコルに対応する通信インタフェース260を備え、ハードディスク240には、オペレーティング・システムやアプリケーション・サーバ220等を有する。オペレーティング・システムとしては、例えば、マイクロソフト社のWindows(登録商標)、Linux(登録商標)、Mac・OS(登録商標)等を使用することができるが、ここに挙げたオペレーティング・システムには限定されない。アプリケーション・サーバ220としては、例えば、Apache・Tomcat、Internet・Information・Server等、任意のものが使用可能であるが、ここに挙げたアプリケーション・サーバには限定されない。
サーバ・コンピュータ600は、サーバ・コンピュータ200と同様に、ハードディスク640と、任意のネットワーク・プロトコルに対応する通信インタフェース660を備え、ハードディスク640には、オペレーティング・システムやアプリケーション・サーバ620等を有する。
サーバ・コンピュータ200,600(特に、アプリケーション・サーバ220,620)は、画面の構成要素となる複数の部品を提供するサーバの一例である。後述するように、本実施の形態において、サーバ・コンピュータ200,600は、複数の部品の例として、GUI(Graphical・User・Interface)部品、GUIロジック部品等を提供する。
ハードディスク140,240,640は、記憶装置の一例である。図示していないが、クライアント・コンピュータ100、サーバ・コンピュータ200,600は、記憶装置以外にも、処理装置、入力装置、出力装置等のハードウェアを備える。ハードウェアは、後述するクライアント・コンピュータ100、サーバ・コンピュータ200,600の各部によって利用される。例えば、処理装置は、各部でデータや情報の演算、加工、読み取り、書き込み等を行うために利用される。入力装置は、そのデータや情報を入力するために、出力装置は、そのデータや情報を出力するために利用される。
図2は、クライアント・コンピュータ100のハードウェア構成の一例を示す図である。なお、サーバ・コンピュータ200,600についても、以下と同様のハードウェア構成を採用することができる。
この例において、クライアント・コンピュータ100は、LCD901(Liquid・Crystal・Display)、キーボード902(K/B)、マウス903、FDD904(Flexible・Disk・Drive)、CDD905(Compact・Disc・Drive)、プリンタ906といったハードウェアデバイスを備えている。これらのハードウェアデバイスはケーブルや信号線で接続されている。LCD901の代わりに、CRT(Cathode・Ray・Tube)、あるいは、その他の表示装置が用いられてもよい。マウス903の代わりに、タッチパネル、タッチパッド、トラックボール、ペンタブレット、あるいは、その他のポインティングデバイスが用いられてもよい。
クライアント・コンピュータ100は、プログラムを実行するCPU911(Central・Processing・Unit)を備えている。CPU911は、処理装置の一例である。CPU911は、バス912を介してROM913(Read・Only・Memory)、RAM914(Random・Access・Memory)、通信ボード915、LCD901、キーボード902、マウス903、FDD904、CDD905、プリンタ906、ハードディスク140と接続され、これらのハードウェアデバイスを制御する。ハードディスク140の代わりに、フラッシュメモリ、光ディスク装置、メモリカードリーダライタ又はその他の記憶媒体が用いられてもよい。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、ハードディスク140は、不揮発性メモリの一例である。これらは、記憶装置の一例である。通信ボード915、キーボード902、マウス903、FDD904、CDD905は、入力装置の一例である。また、通信ボード915、LCD901、プリンタ906は、出力装置の一例である。
通信ボード915は、LAN(Local・Area・Network)等の通信回線300に接続されている。通信ボード915は、LANに限らず、IP−VPN(Internet・Protocol・Virtual・Private・Network)、広域LAN、ATM(Asynchronous・Transfer・Mode)ネットワークといったWAN(Wide・Area・Network)、あるいは、インターネット500に接続されていても構わない。LAN、WAN、インターネット500は、ネットワークの一例である。
ハードディスク140には、オペレーティング・システム921(OS)、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923のプログラムは、CPU911、オペレーティング・システム921、ウィンドウシステム922により実行される。プログラム群923には、本実施の形態の説明において「〜部」として説明する機能を実行するプログラムが含まれている。プログラムは、CPU911により読み出され実行される。ファイル群924には、本実施の形態の説明において、「〜データ」、「〜情報」、「〜ID(識別子)」、「〜フラグ」、「〜結果」として説明するデータや情報や信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」や「〜テーブル」の各項目として含まれている。「〜ファイル」や「〜データベース」や「〜テーブル」は、RAM914やハードディスク140等の記憶媒体に記憶される。RAM914やハードディスク140等の記憶媒体に記憶されたデータや情報や信号値や変数値やパラメータは、読み書き回路を介してCPU911によりメインメモリやキャッシュメモリに読み出され、抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理(動作)に用いられる。抽出、検索、参照、比較、演算、計算、制御、出力、印刷、表示といったCPU911の処理中、データや情報や信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
本実施の形態の説明において用いるブロック図やフローチャートの矢印の部分は主としてデータや信号の入出力を示す。データや信号は、RAM914等のメモリ、FDD904のフレキシブルディスク(FD)、CDD905のコンパクトディスク(CD)、ハードディスク140の磁気ディスク、光ディスク、DVD(Digital・Versatile・Disc)、あるいは、その他の記録媒体に記録される。また、データや信号は、バス912、信号線、ケーブル、あるいは、その他の伝送媒体により伝送される。
本実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜工程」、「〜手順」、「〜処理」であってもよい。即ち、「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアのみ、あるいは、素子、デバイス、基板、配線といったハードウェアのみで実現されていても構わない。あるいは、「〜部」として説明するものは、ソフトウェアとハードウェアとの組み合わせ、あるいは、ソフトウェアとハードウェアとファームウェアとの組み合わせで実現されていても構わない。ファームウェアとソフトウェアは、プログラムとして、フレキシブルディスク、コンパクトディスク、磁気ディスク、光ディスク、DVD等の記録媒体に記憶される。プログラムはCPU911により読み出され、CPU911により実行される。即ち、プログラムは、本実施の形態の説明で述べる「〜部」としてコンピュータを機能させるものである。あるいは、プログラムは、本実施の形態の説明で述べる「〜部」の手順や方法をコンピュータに実行させるものである。
図3は、ブラウザ120とアプリケーション・サーバ220の詳細な構成の例を示すブロック図である。なお、アプリケーション・サーバ220を、アプリケーション・サーバ620に置き換えてもよい。
アプリケーション・サーバ220は、実行エンジン121と、アプリケーション定義情報225と、部品サービス実行部230と、部品リポジトリ235を有する。
実行エンジン121は、クライアント上から部品の呼び出しを制御しアプリケーションを実行する基盤であり、ブラウザ120側からの要求でダウンロードされ、ブラウザ120上で実行される。
アプリケーション定義情報225は、実行エンジン121でアプリケーションを実行するために必要な情報を定義したもの(ファイル等)であり、画面定義情報226、動作フロー定義情報227、操作検出定義情報228を含む。
画面定義情報226は、ブラウザ120上で表示される画面の構成を定義したもの(ファイル等)であり、ブラウザ120上に表示する画面の数、及び、それぞれの画面の大きさ、位置等が記述されている。動作フロー定義情報227は、ブラウザ120上で実行される処理の流れを定義したもの(ファイル等)である。操作検出定義情報228は、ユーザがブラウザ120を操作した際に検出する操作の内容を定義したもの(ファイル等)である。なお、本実施の形態では、画面定義情報226、動作フロー定義情報227、操作検出定義情報228はXML(eXtensible・Markup・Language)の形式で書かれているものとする。
部品サービス実行部230は、部品リポジトリ235に格納されている各部品に対応した実行結果を出力する。部品の種類としては、GUI部品236、GUIロジック部品237、ロジック部品238がある。
GUI部品236は、クライアント・コンピュータ100側のブラウザ120で処理される表示用の部品であり、例えば、HTML(HyperText・Markup・Language)形式のソースコードが記述されている。GUIロジック部品237は、クライアント・コンピュータ100側のブラウザ120で処理される部品であり、GUI部品236の加工や、ブラウザ120上で実行される演算処理等を行うためのソースコードが記述されている。本実施の形態では、JavaScript(登録商標)で記述されているものとする。ロジック部品238は、アプリケーション・サーバ220で実行されるプログラムであり、ビジネスロジック等が実装されている。GUI部品236、GUIロジック部品237に対する部品サービス実行部230の出力結果はソースコードであるが、ロジック部品238に対する部品サービス実行部230の出力結果はロジック部品238を実行したときの出力結果である。
ブラウザ120は、アプリケーション・サーバ220から実行エンジン121をダウンロードしてきて実行する。実行エンジン121は、画面構成部122、操作検出部123、フロー処理部124、部品呼出部125、データ変換部126、データバス127を有する。
画面構成部122は、アプリケーション・サーバ220から画面定義情報226を(直接又はブラウザ120本体を介して)取得し、画面定義情報226に基づき、ブラウザ120上に表示する画面の構成を設定する。操作検出部123は、アプリケーション・サーバ220から操作検出定義情報228を(直接又はブラウザ120本体を介して)取得し、操作検出定義情報228に基づき、ブラウザ120上で行われたユーザの操作を検出する。フロー処理部124は、アプリケーション・サーバ220から動作フロー定義情報227を(直接又はブラウザ120本体を介して)取得し、動作フロー定義情報227に基づき、部品の呼び出し等を行う。部品呼出部125は、アプリケーション・サーバ220上の部品サービス実行部230を呼び出して、部品サービスの実行結果(出力結果)を取得する。データ変換部126は、データバス127からデータを入力したり、データバス127にデータを出力したりする際に、データ形式の変換を行う。データバス127は、部品サービス実行部230の実行結果や、フローで共通して利用されるデータを保持する。
図4は、動作フロー定義情報227で定義される処理の流れの一例を示す図である。
動作フロー定義情報227では、ブラウザ120で表示される画面を更新するための処理を行う複数のタスクを実行するフローが、画面ごとに定義される。この例では、動作フロー定義情報227の処理フロー記述領域に、アプリケーション・サーバ220上の部品サービス実行部230を呼び出す部品呼出タスク1211、ユーザからの操作を検出する操作検出待ちタスク1212、フローの分岐や画面遷移等を制御するフロー制御タスク1213の処理の順序が記載されている。また、動作フロー定義情報227のデータバス記述領域に、部品呼出タスク1211やフロー制御タスク1213の入出力で使われるデータバス127上のデータ1231との関係、及び、必要なデータ変換の方法が属性情報1221としてフローに記述されている。
図5は、フロー処理部124の詳細な構成の例を示す図である。
フロー処理部124は、実行待ちタスク・リスト131と、実行管理部132と、タスク実行部133と、タスク・リスト134を有する。
タスク・リスト134は、フロー処理部124がアプリケーション・サーバ220から取得した動作フロー定義情報227で定義されたフローに含まれるタスク136を格納している。実行待ちタスク・リスト131は、タスク・リスト134にあるタスク136のうち、フロー処理部124が実行対象とする(実行待ちの)タスク135を格納している。それぞれのタスク135は、例えば、タスクID、種類、処理内容、データ、次タスクID(次に実行されるタスク135のタスクID)といったフォーマット138で実行待ちタスク・リスト131に格納される。
実行管理部132は、一定間隔で実行待ちタスク・リスト131を監視しており、タスク135が追加された場合(実行待ちタスク・リスト131にタスク135がある場合)に、タスク実行部133に対して、(例えば、実行待ちタスク・リスト131にあるタスク135のうち、実行順序が最先となっている)タスク135の実行指示を行う。
タスク実行部133は、複数のタスク135を実行する機能をもち、部品呼出タスク1211、操作検出待ちタスク1212、フロー制御タスク1213をそれぞれ実行する。
タスク135が部品呼出タスク1211の場合、タスク実行部133は、部品呼出部125を利用して、アプリケーション・サーバ220側のGUI部品236、GUIロジック部品237、ロジック部品238の実行結果を得る。このとき、呼び出す部品がGUI部品236、GUIロジック部品237の場合、タスク実行部133は、ブラウザ120が画面表示を行うために参照しているHTMLデータにソースコードをそれぞれ追加する。GUIロジック部品237の場合、タスク実行部133は、さらに、ブラウザ120上で追加されたGUIロジック処理を実行し、その出力結果を得る。ロジック部品238の場合、タスク実行部133は、部品サービス実行部230の実行結果を得る。タスク実行部133は、部品呼出タスク1211を実行する際、データバス127からデータ128を入力したり、データバス127にデータ128を出力したりする場合にデータ形式の変換が必要である場合は、データ変換部126を使ってデータ変換を行う。
タスク135が操作検出待ちタスク1212の場合、タスク実行部133は、検出対象の操作を操作検出部123に登録し、操作検出が可能な状態にする。操作検出部123では、検出対象の操作が行われた場合、実行待ちタスク・リスト131へのタスク135(次に実行されることが動作フロー定義情報227で定義されているタスク135)の追加が行われる。
タスク135がフロー制御タスク1213の場合、タスク実行部133は、その種類に応じてフローの制御を実施する。フロー制御タスク1213の種類には、分岐、結合等の一般的なフロー処理のほかに、画面遷移を用意する。フロー処理の場合、タスク実行部133は、条件判定を実施した際に、真であれば、実行したフロー制御タスク1213の次のタスク135(条件が真の場合に次に実行されることが動作フロー定義情報227で定義されているタスク135)を実行待ちタスク・リスト131に追加する等の処理を行う。偽であれば、別の処理を行うか、あるいは、別のタスク135(条件が偽の場合に次に実行されることが動作フロー定義情報227で定義されているタスク135)を実行待ちタスク・リスト131に追加する等の処理を行う。画面遷移の場合、タスク実行部133は、条件判定が真であれば画面遷移を行い、偽であれば行わない等の処理を行う。
図4に示した例において、フロー処理部124は、動作フロー定義情報227に基づき、複数のタスクT11〜16をタスク・リスト134に追加する。これにより、フロー処理部124は、動作フロー定義情報227で定義されたフローに従って、タスクT11〜16をタスク実行部133に処理装置により実行させる。なお、フロー処理部124は、ブラウザ120で表示される画面が遷移する度に、遷移先の画面の定義情報として動作フロー定義情報227を取得するものとする。
まず、フロー処理部124は、タスクT11,T12を順番に実行待ちタスク・リスト131に追加する。
実行管理部132は、実行待ちタスク・リスト131にタスクT11が追加されたことを検知すると、タスク実行部133にタスクT11を実行するよう処理装置により命令する。この命令に従い、タスク実行部133は、タスクT11を処理装置により実行する。部品呼出タスク1211であるタスクT11は、部品呼出部125を利用して、アプリケーション・サーバ220から所定の部品を取得する。例えば、タスクT11は、GUI部品236としてHTMLのソースコード等を取得し、取得したHTMLのソースコード等を、ブラウザ120で表示中の画面(ウェブページ)に追加して当該画面を更新する。また、例えば、タスクT11は、アプリケーション・サーバ220からGUIロジック部品237としてJavaScript(登録商標)等のスクリプトのソースコード等を取得し、取得したスクリプトのソースコード等を、ブラウザ120で表示中の画面(ウェブページ)に追加して当該画面を更新する。このとき、タスクT11は、スクリプトを実行し、その実行結果を第1形式のデータとして出力してもよい(この場合、タスクT11はデータ出力タスクでもある)。また、例えば、タスクT11は、ロジック部品238の実行結果として所定のデータベースからの抽出データ等を取得し、第1形式のデータとして出力する(この場合、タスクT11はデータ出力タスクでもある)。図4の例のように、タスクT11によって第1形式のデータが出力される場合、この第1形式のデータは、属性情報1221に基づきデータ変換部126によって処理装置により第2形式のデータ1231に変換され、データバス127に格納される。
実行管理部132は、続けて、タスク実行部133にタスクT12を実行するよう処理装置により命令する。この命令に従い、タスク実行部133は、タスクT12を処理装置により実行する。操作検出待ちタスク1212であるタスクT12は、ブラウザ120で表示中の画面に対するユーザの特定の操作(例えば、所定のボタンの押下、所定のテキストボックスへの文字入力)を検出する。タスク実行部133は、操作検出待ちタスク1212を実行した場合、下記のように、その操作検出待ちタスク1212によってユーザの特定の操作が検出されてから次のタスクを実行する。
タスクT12によってユーザの特定の操作が検出されると、フロー処理部124は、タスクT13,14を実行待ちタスク・リスト131に追加する。
実行管理部132は、実行待ちタスク・リスト131にタスクT13が追加されたことを検知すると、タスク実行部133にタスクT13を実行するよう処理装置により命令する。この命令に従い、タスク実行部133は、タスクT13を処理装置により実行する。部品呼出タスク1211であるタスクT13の処理については、タスクT11と略同様であるが、タスクT13は、さらに、データバス127から、データ変換部126が変換したデータ1231を取得し、取得したデータ1231を利用した処理を行う(この場合、タスクT13はデータ利用タスクでもある)。タスクT13は、例えば、データ1231を入力パラメータとして、GUIロジック部品237のスクリプトを実行したり、アプリケーション・サーバ220にロジック部品238を実行させたりする。このとき、タスクT13は、さらに、その実行結果を第1形式のデータとして出力してもよい(この場合、タスクT13はデータ出力タスクでもある)。
実行管理部132は、続けて、タスク実行部133にタスクT14を実行するよう処理装置により命令する。この命令に従い、タスク実行部133は、タスクT14を処理装置により実行する。フロー制御タスク1213であるタスクT14は、データバス127から、データ変換部126が変換したデータ1231を取得し、取得したデータ1231が所定の条件を満たしているかどうかに応じて次のタスクを決定する(この場合、タスクT14はデータ利用タスクでもある)。具体的には、タスクT14は、タスクT15,T16のいずれかを選択する。タスク実行部133は、フロー制御タスク1213を実行した場合、下記のように、そのフロー制御タスク1213によって決定されたタスクを次に実行する。
タスクT14によって次のタスクがタスクT15に決定されると、フロー処理部124は、タスクT15を実行待ちタスク・リスト131に追加する。一方、タスクT14によって次のタスクがタスクT16に決定されると、フロー処理部124は、タスクT16を実行待ちタスク・リスト131に追加する。
実行管理部132は、実行待ちタスク・リスト131にタスクT15又はタスクT16が追加されたことを検知すると、タスク実行部133に当該タスクを実行するよう処理装置により命令する。この命令に従い、タスク実行部133は、当該タスクを処理装置により実行する。
以下、本実施の形態に係るシステムの動作について説明する。
図6は、ブラウザ120の処理の流れを示すフローチャートである。
ステップS101において、ブラウザ120は初期化処理を行いユーザがブラウザ120を利用可能な状態にする。ブラウザ120の起動は、ユーザがクライアント・コンピュータ100上にて行う。
ステップS102において、ブラウザ120はアプリケーション・サーバ220に対してリクエストを送信する。リクエストを送信するためのURL(Uniform・Resource・Locator)等は、ユーザから与えられるものとする。
ステップS103において、ブラウザ120はアプリケーション・サーバ220上にある実行エンジン121をダウンロードする。
ステップS104において、ブラウザ120はアプリケーション定義情報225をダウンロードしてハードディスク240に保存する。アプリケーション定義情報225には、画面定義情報226、動作フロー定義情報227、操作検出定義情報228が含まれる。
ステップS105において、ブラウザ120は実行エンジン121を初期化する。実行エンジン121は、ステップS104にて取得したアプリケーション定義情報225を参照し、実行エンジン121を実行するために必要な処理を実行する。
ステップS106において、ブラウザ120は実行エンジン121でフロー処理を実行する。フロー処理部124は、動作フロー定義情報227に定義された順序で各タスクを実行する。
ステップS107において、ブラウザ120は、実行エンジン121の実行結果が画面遷移であるかを判断し、画面遷移であった場合には、ステップS104へ戻る。画面遷移でない場合には、ステップS108に移動する。
ステップS108において、ブラウザ120はユーザによる閉じるボタンの押下等により終了される。
図7は、実行エンジン121の初期化処理の流れを示すフローチャートである。
ステップS121において、画面構成部122は前述のステップS104で取得した画面定義情報226をハードディスク240から読み込む。即ち、画面構成部122はブラウザ120本体を介して画面定義情報226を取得する。画面定義情報226には、画面ID、ブラウザ120上での画面の位置、画面の大きさに関する情報が記載されているものとする。また、そのほかに、画面を装飾するための情報が、CSS(Cascading・Style・Sheets)等のレイアウト表記方法で記載されていてもよいものとする。
ステップS122において、画面構成部122はステップS121で読み込んだ画面定義情報226を基に、画面レイアウトを処理装置により生成する。本実施の形態では、具体的にはHTMLとCSSのファイルを生成する。例えば、ステップS121で取得した画面IDに相当する画面は、例えば、<div>タグでHTMLファイルに出力される。また、ステップS121で取得した画面の位置、大きさ、そのほかのレイアウト属性については、CSSファイルに出力される。
ステップS123において、操作検出部123はステップS104で取得した操作検出定義情報228をハードディスク240から読み込む。即ち、操作検出部123はブラウザ120本体を介して操作検出定義情報228を取得する。操作検出定義情報228には、操作検出ID、検出するイベント(ユーザの操作)の種類、検出するイベントが発生する位置(例えば、GUI部品236)に関する情報が記載されているものとする。また、イベントが発生したときにHTMLファイルから取得する内容に関する記載がなされていてもよいものとする。
ステップS124において、操作検出部123はステップS123で読み込んだ操作検出定義情報228を基に、ユーザの操作イベントを検出するためのスクリプトを生成しHTMLファイルに追加し、ブラウザ120上から利用可能な状態とする。
ステップS125において、フロー処理部124はステップS104で取得した動作フロー定義情報227をハードディスク240から読み込む。即ち、フロー処理部124はブラウザ120本体を介して動作フロー定義情報227を取得する。動作フロー定義情報227には、フロー処理部124が実行するタスクの実行順序と実行内容に関する情報が記載されている。図5に示したように、各タスクには、タスクID、タスクの種類、タスクの内容、保持するデータ、次タスクIDが記載されている。タスクの種類には、部品呼出タスク1211、操作検出待ちタスク1212、フロー制御タスク1213がある。部品呼出タスク1211の場合、呼び出す部品の種類(GUI部品236、GUIロジック部品237、ロジック部品238)と、リクエスト先の部品サービスのURL、呼出時に入力とするデータバス127上のデータ、呼び出し完了時に出力結果を格納するためのデータバス127上の格納先等が記載されているものとする。操作検出待ちタスク1212の場合には、操作検出定義情報228に記載されている操作検出IDが記載されているものとする。フロー制御タスク1213の場合には、フローを次に進めるための条件式、条件一致時・不一致時の次タスクID等が記載されているものとする。本実施の形態の変形例として、その他、例外発生時に例外処理等を行うタスク等を用意してもよい。
ステップS126において、フロー処理部124は、ステップS125で読み込んだ動作フロー定義情報227から全てのタスクに対応するオブジェクトを生成し、タスク・リスト134を処理装置により生成する。
ステップS127において、フロー処理部124は、タスク・リスト134に含まれるフロー開始のタスク136をインスタンス化し、実行待ちタスク・リスト131に処理装置により投入する。
図8は、フロー処理部124の処理の流れを示すフローチャートである。
ステップS141において、実行管理部132は、実行待ちタスク・リスト131にタスク135があるかどうかを処理装置により判断し、ある場合には、ステップS142に移動する。ない場合は、ステップS145に移動し、一定時間待った後、再びステップS141に移動する。
ステップS142において、実行管理部132は、実行待ちタスク・リスト131から、タスク135を処理装置により取得する。
ステップS143において、実行管理部132はタスク実行部133を用いて、ステップS142で取得したタスク135を実行する。
ステップS144において、実行管理部132は、ステップS143の結果、フローが終了したかどうか、又は、画面遷移が発生したかどうかを処理装置により判断し、フローが終了した場合、画面遷移が発生した場合にはフローを終了する。フローが終了していなおらず、画面遷移も発生していない場合は、ステップS141へと戻る。
図9は、タスク実行部133の処理の流れを示すフローチャートである。
ステップS161において、タスク実行部133は、タスク135が部品呼出タスク1211であるかどうかを処理装置により判断し、部品呼出タスク1211である場合には、ステップS162に移動する。そうでない場合はステップS171に移動する。
ステップS162において、タスク実行部133は、部品呼出部125を使って部品の呼び出しを行う。以下のように、部品呼出部125を使って実行される処理は、呼び出す部品の種類に応じて異なる処理となる。
GUI部品236の場合、タスク実行部133は、リクエスト先の部品サービスから該当する部品のHTMLのソースコードを取得する。取得したソースコードは指定された格納先に格納する。GUI部品236の場合には、格納先には画面IDが設定されているものとする。また、格納する際、既に表示されている画面の内容を消して新たに格納するか、もしくは、追記するかの設定がされているものとする。HTMLのソースコードは、静的なHTMLだけでなく、アプリケーション・サーバ220側のサーブレットやJSP(登録商標)により生成された動的なHTMLでも構わない。
GUIロジック部品237の場合、タスク実行部133は、リクエスト先の部品サービスから該当する部品のJavaScript(登録商標)のソースコードを取得する。タスク実行部133は、取得したソースコードをHTMLファイルに追加し、ブラウザ120上から利用可能にする。次いで、タスク実行部133は、追加されたJavaScript(登録商標)のソースコードから、呼び出し対象のメソッドを呼び出して実行する。なお、GUIロジック部品237の場合には、実行するメソッド名、入力パラメータ、出力結果の格納先が設定されているものとする。入力パラメータとしては、設定段階で直接値を入力してもよいし、データバス127上にあるデータを参照してもよい。出力結果の格納先にはデータバス127上にあるデータのデータIDを指定しておく。また、このとき、データバス127からデータを入出力する際に、データ変換部126を用いてデータの形式を変換してもよい。
ロジック部品238の場合、タスク実行部133は、リクエスト先の部品サービスから該当する部品の演算結果を取得する。次いで、タスク実行部133は、取得した結果をデータバス127に格納する。出力結果の格納先にはデータバス127上にあるデータのデータIDを指定しておく。また、このとき、データバス127からデータを入出力する際に、データ変換部126を用いてデータの形式を変換してもよい。
ステップS164において、タスク実行部133は、タスク135の実行が完了したことをフロー処理部124本体に通知する。これに応じて、フロー処理部124は、次のタスク136のインスタンスを生成し、実行待ちタスク・リスト131に処理装置により追加する。
ステップS165において、フロー処理部124本体(あるいは、タスク実行部133)は、ステップS162で実行したタスク135を、実行待ちタスク・リスト131から除去する。
ステップS171において、タスク実行部133は、タスク135が操作検出待ちタスク1212であるかどうかを処理装置により判断し、操作検出待ちタスク1212である場合には、ステップS172に移動する。そうでない場合はステップS181に移動する。
ステップS172において、タスク実行部133は、該当する操作検出IDに対応するユーザの操作を検出対象の操作として登録する。操作検出部123では、ユーザが登録された操作を実行した場合に、その旨をフロー処理部124に通知する。これに応じて、フロー処理部124は、このタスク135の次のタスク136のインスタンスを生成し、実行待ちタスク・リスト131に処理装置により格納する。そして、フロー処理部124は、ステップS165に移動し、ステップS172で実行したタスク135を、実行待ちタスク・リスト131から除去する。
ステップS181において、タスク実行部133は、タスク135がフロー制御タスク1213であるかどうかを処理装置により判断し、フロー制御タスク1213である場合には、ステップS182に移動する。そうでない場合はフローを抜ける。
ステップS182において、タスク実行部133は、フロー制御タスク1213に記載されている条件式を実行し、条件判定を処理装置により行う。フロー制御タスク1213の種類には、分岐、合流、判断、フロー開始、フロー終了、画面遷移等があるため、これらの制御を行うために、データバス127上のデータや、タスク135が持っているデータを要素として条件判定する。
ステップS183において、ステップS182の条件判定の結果、条件に一致していた場合は、ステップS184に移動する。そうでない場合は、何もせずにフローを抜ける。
ステップS184において、フロー制御タスク1213が“フロー終了”であった場合、フローを終了させる。そうでない場合は、ステップS185に移動する。
ステップS185において、フロー制御タスク1213が“画面遷移”であった場合、ステップS186に移動する。そうでない場合は、ステップS164に移動し、フロー処理部124に通知する。これに応じて、フロー処理部124は、次のタスク135のインスタンスを生成し、実行待ちタスク・リスト131に処理装置により追加する。
ステップS186において、画面遷移をするための準備として、タスク実行部133は、画面遷移先のアプリケーション定義情報225が置いてあるURL等(即ち、アプリケーション・サーバ220の特定の格納場所を示す情報)を保持し、フローを抜ける。このURL等は、実行エンジン121本体に渡され、ステップS104で利用される。
このように、本実施の形態においては、アプリケーションで行う処理の部品をフローで定義し、そのフローを実行することで、任意のアプリケーションを即座に構築できる構成とした。また、これにより、処理の流れとデータの依存関係を分離することができ、部品の設計者はデータの更新タイミングを考慮しなくてもよく、開発者の負荷を軽減することができる。また、部品間の入出力結果を変換することにより、やり取りするデータの形式を意識する必要がなくなり、部品改修時に部品のインタフェースを改修する必要がなく、開発者の負荷を軽減できる。
また、既に部品が用意されている状態であれば、設定情報の組み合わせだけでアプリケーションを実行できるため、アプリケーションの開発効率、及び、改修効率が向上する。
クライアント側で、処理を実行する際にアプリケーション定義情報255を読み込む構成のため、アプリケーション定義情報255の変更内容が、次回のブラウザ120の画面更新時には即座に反映されているため、アプリケーション改修までの期間が短く、開発作業を効率化することができる。
なお、本実施の形態では、同一のアプリケーション・サーバ220上にある部品のみを用いて説明しているが、これに限らず、インターネット500外部にある複数のアプリケーション・サーバ620上にある部品等も使ってもよい。これにより、クライアント側には意識させずに使用できる部品の追加・拡張が容易にできる。また、共有することができる部品を拡充することにより、再利用性を高め、開発を効率化することができる。
また、従来はブラウザ120上の画面の一部の表示内容を更新するだけでも、画面全体を更新しなければならず、サーバとの通信が発生していたが、この方法では、必要なときに必要な箇所のみ画面更新することができるので、重複した通信量を削減できる、また、サーバサイドで実行する処理を最低限にでき、ユーザへのレスポンスを高速化することができる。また、画面の一部の表示内容を更新する手順をカスタマイズしやすくなる。
また、表示する画面の内容、使用する部品、及びその処理順序等をGUIでグラフィカルに定義し、アプリケーション定義情報255を生成する開発支援用のツールを用意することで、より一層開発効率を向上させることができる。
また、例えば、クライアント側にはJavaScript(登録商標)が実行できる環境があればよく、一般的なブラウザ以外、アプリケーションを実行するために必要なドライバをクライアント側にインストールする必要がないため、ユーザが利用する上での敷居を低くすることができる。
また、異なるシステムが持つ機能を部品化しておくことにより、複数のシステムの機能を持つような統合アプリケーションの開発が容易になる。
以上説明したように、本実施の形態は、アプリケーション開発の効率化に関するものであり、特に、アプリケーション画面、及び、画面を利用する上で必要なロジックのカスタマイズ方法に関するものである。
本実施の形態では、イベント駆動で部品を呼び出す、部品呼出時にデータ形式を変換することを特徴とする、アプリケーション実行方法を提供することで、開発者の負荷低減を得ることができる。
本実施の形態に係るアプリケーション実行装置は、アプリケーションの実行順序をフローで制御しイベント駆動で部品を呼び出す実行エンジン121、部品呼出時にデータ形式を変換し部品間のインタフェースの違いを吸収するデータ変換部126、を備えることを特徴とする。
本実施の形態に係る実行エンジン121、及び、フロー制御方法は、部品呼出タスク1211、操作検出待ちタスク1212、フロー制御タスク1213を組み合わせて記述されたフローを、クライアント上で解釈して実行制御することを特徴とする。
また、実行エンジン121は、GUI部品236、クライアント上で処理を実行するGUIロジック部品237、サーバ上で処理を実行するロジック部品238を組み合わせて処理を実行することを特徴とする。
また、実行エンジン121は、クライアント側で、アプリケーションの実行時にアプリケーション定義情報225を読み込むことで、設定変更を即座に反映することができることを特徴とする。