以下に添付図面を参照して、この発明にかかるオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体の最良な実施の形態を詳細に説明する。なお、本実施の形態では、パーソナルコンピュータ(PC)に本発明のオブジェクト連携装置、オブジェクト連携方法、プログラム、および記録媒体を適用した例ついて説明する。但し、PC機に限られず、複合機(MFP:Multi Function Peripheral)、プリンタ、ファクシミリ、コピー機等の画像形成装置などにも本発明を適用することができる。
(第1実施の形態)
図1は、本実施の形態にかかるPCのハードウェアおよびソフトウェアの構成を説明するための説明図である。図1に示すように、本実施の形態にかかるPC100は、各種機器からなるハードウェアリソース107を有する。このハードウェアリソース107に含まれる機器には、HDD(Hard Disk Drive)、ネットワークインターフェース、表示部やキーボード等の操作表示部などがある。
このハードウェアリソース107を制御するソフトウェアシステムは、ウェブブラウザ(Web Browser)101、エンジン(Engine)102、ウェブサーバ(Web Server)103、CGI(Common Gateway Interface)104、オブジェクト105、およびオペレーティングシステム106を有している。
オペレーティングシステム106は、その他のソフトウェアが動作するための基盤を提供する。ウェブブラウザ101は、操作表示部に画像データ等を表示するソフトウェアである。
エンジン102は、ウェブブラウザ101を通じて、利用者にビジュアルプログラミングシステムを提供するソフトウェアである。ここで、ビジュアルプログラミングシステムとは、プログラムのモジュール等、固有の内部処理を実行するオブジェクト105を視覚的に表現した視覚情報であるアイコン等のラベルを表示し、ラベルが表示されたオブジェクト105の中から選択したオブジェクト105が連携して内部処理を実行するプログラムを作成・実行させるシステムである。
CGI104は、エンジン102により選択されたオブジェクト105を起動するためのソフトウェアである。
オブジェクト105は、分散したオブジェクト間での通信、対話、協調といった連携処理を行うものである。また、オブジェクト105は、オブジェクト間を流れるメッセージに対して各オブジェクトが反応して内部処理を実行する。また、オブジェクト105は、ソフトウェアシステムへの参加、離脱により、ソフトウェアシステム全体の動作を柔軟に変更させることができる。
なお、本実施の形態では、PC100のソフトウェアシステム内を流れるメッセージに対してオブジェクト105が反応して内部処理を実行する例について説明するが、これに限定するものではない。例えば、共通の通信路を流れるメッセージに対して、他のPC、デバイス、当該他のPCやデバイス内で動作する個々のアプリケーションプログラム、または当該アプリケーションプログラム内で動作する個々のプログラムコンポーネント内で実現されたオブジェクトが反応する形で内部処理を実行することも可能である。
ここで、共通の通信路は、単にLANなどの物理的ネットワークに限定されるものではなく、無線、音声、光などメッセージを流すことができる媒体を介在するものであればよい。また、共通の通信路は、各オブジェクトが共通に呼び出し可能なメモリ等の記憶媒体、さらには通信路上のポートアドレス等など仮想的な存在であってもよい。
ウェブサーバ103は、CGI104とエンジン102との間での情報送信を行うソフトウェアである。
図2は、本実施の形態にかかるPCのハードウェア構成を示すブロック図である。図2に示すように、本実施の形態にかかるPC100は、コントローラ200と、USB(Universal Serial Bus)インターフェース201と、IEEE1394(the Institute of Electrical and Electronics Engineers 1394)インターフェース202と、をPCI(Peripheral Component Interconnect)バス203で接続した構成となる。
コントローラ200は、PC100の全体制御を行う制御装置であり、CPU(Central Processing Unit)204と、システムメモリ(MEM−P)205と、ノースブリッジ(NB)206と、サウスブリッジ(SB)207と、ASIC(Application Specific Integrated Circuit)208と、ローカルメモリ(MEM−C)209と、ハードディスクドライブ(HDD:Hard Disk Drive)210と、を有し、ノースブリッジ(NB)206とASIC208との間をAGP(Accelerated Graphics Port)15で接続した構成となる。
CPU204は、各種ソフトウェアを実行するための演算装置である。本実施の形態に係るオブジェクト105を含む、PC100の各種機能を実現するためのソフトウェアシステム(図1に示す)は、MEM−C209もしくはHDD210に記憶保持され、必要に応じてMEM−P205にロードされてこのCPU204により実行される。
MEM−P205は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタに出力する画像データの描画用メモリなどとして用いるシステムメモリであり、ROM(Read Only Memory)205aとRAM(Random Access Memory)205bとからなる。ROM205aは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、RAM205bは、プログラムやデータの展開用メモリ、プリンタに出力する画像データの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
NB206およびSB207は、MEM−P205やAGP15を制御する制御装置であり、NB206を介してCPU204とMEM−P205とSB207とAGP15とが接続される形をとる。NB206は、AGP15を介してASIC208とも接続され、その先にPCIバス203が接続される。
ASIC208は、画像処理のための制御装置である。このASIC208は、MEM−C209やHDD210や操作表示部211のような周辺機器と接続され、これらの制御もおこなう。MEM−C209は、ASIC208が画像処理をおこなう画像データ等を一時記憶する記憶部であり、HDD210は、各種ソフトウェア、フォントデータ、蓄積するよう指示された画像データ等を記憶する記憶部である。操作表示部211は、利用者の操作を受け付ける入力装置である。
USBインターフェース201およびIEEE1394インターフェース202は、外部機器を接続するためのインターフェースである。PCIバス203には、これら以外にネットワーク接続のためのインターフェース装置等も接続される。
次に、オブジェクト105のオブジェクトモデルについて説明する。図3は、オブジェクトのUMLクラス図である。UML(Unified Modeling Language)とは、OMG(Object Management Group)が使用を策定しているシステムモデリング言語であり、モデリングの成果を記述する記法を定義したものである。このUMLは、オブジェクト指向によるソフトウェアの設計において広く用いられている。
クラスとは、オブジェクトの設計図に相当する概念であり、オブジェクト内部に有する属性や操作や、他のオブジェクトとの関係を定義するものである。クラスは、UMLクラス図においては、3段の区画を有する矩形として記述される。それぞれの区画は、上から名前区画、属性区画、および操作区画と呼ばれる。名前区画には、当該クラスの名称が記述され、属性区画には、当該クラスが有するデータ(属性)が記述され、操作区画には、当該クラスが有する手続(操作)が記述される。
このように、クラスは、データ(属性)を所持するための属性区画と、かかる属性の書込みおよび読み出しを行う手続き(操作)を所持するための操作区画とを有している。これらのクラスは、ソフトウェアの一部として含まれるので、予めMEM−C209に格納されたソフトウェアが実行されると、各クラスはRAM205bの所定領域に実体化され、属性区画に含まれる各データ(属性)がRAM205b上に展開される。したがって、クラスが実体化したオブジェクト105は、RAM205b上の各データ(属性)の書き込みおよび読み出しを行うことが可能となる。
なお、クラス図において、属性や操作の左側に「-」記号を付した場合は、当該属性や操作が外部のクラスに非公開であることを示し、「+」記号を付した場合は、当該属性や操作が外部のクラスに公開されていることを示す。また、操作については「メッセージ受信()」のように「()」記号を付すことが通例であり、「(引数1,引数2)」のように、かかる操作に引き渡す引数を記述する場合もある。
オブジェクト105のクラスは、操作として、メッセージ受信()、不整合受信()、および処理()を有する。
メッセージ受信()は、オブジェクトの内部処理の実行を要求するメッセージを外部機器または他のオブジェクトから受信する処理である。また、不整合受信()は、連携処理を行えない原因を通知する不整合通知メッセージを他のオブジェクトから受信する処理である。処理()は、オブジェクトの内部処理(内部状態や内部関数)である。
また、オブジェクト105のクラスは、属性として、オブジェクトID、オブジェクトの名前、オブジェクトのURL、オブジェクトの種類、設定情報名、設定情報値、およびテンプレートを有する。これらの属性と操作のうち、処理()、設定情報名、設定情報値、およびテンプレートは、クラスの外部に公開されない。
オブジェクトIDは、オブジェクトを特定するための情報である。オブジェクトの名前は、オブジェクトの名称である。オブジェクトのURLは、オブジェクトを指定する情報である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。
次に、図3に示すオブジェクトモデルにより印刷処理を行う場合のオブジェクトの詳細な機能構成および印刷処理を行うオブジェクトの操作の実行手順について説明する。より具体的には、HDD210に記憶されているテキストファイルを読み込んで所定の文字コードに変換した後、変換後のテキストファイルをプリンタに出力して印刷処理を行う例について説明する。
まず、図4を用いて、印刷処理を行うオブジェクトの関係について説明する。図4は、印刷処理を行うオブジェクトの関係を示す図である。
図4に示すように、印刷処理は、HDD210に記憶されているテキストファイルを読み込むテキストファイル読込オブジェクト401、およびテキストファイル読込オブジェクト401により読み込んだテキストファイルをUSBインターフェース201やIEEE1394インターフェース202を介して接続されたプリンタに出力するテキスト印刷オブジェクト402の連携処理により行われるものとする。テキストファイル読込オブジェクト401およびテキスト印刷オブジェクト402は、互いにメッセージ403およびメッセージ404を送出し、送出されたメッセージに反応して内部処理を実行する。
次に、テキストファイル読込オブジェクト401およびテキスト印刷オブジェクト402の詳細な機能構成およびテキストファイル読込オブジェクト401およびテキスト印刷オブジェクト402の操作の実行手順について説明する。図5は、テキスト読込オブジェクトおよびテキスト印刷オブジェクトの機能構成を示すブロック図である。図5に示すように、テキストファイル読込オブジェクト401およびテキスト印刷オブジェクト402は、設定情報記憶部501、実行部502、送信部503、通信部504、受信部505、実行判断情報記憶部506、判断部507、生成部508、および不整合判断部509を備えて構成される。なお、テキストファイル読込オブジェクト401およびテキスト印刷オブジェクト402は、それぞれ共通の通信路510で接続されているものとする。
図6は、テキスト読込オブジェクトからテキスト印刷オブジェクトにメッセージを送信する処理手順を示すフローチャートである。まず、実行部502は、設定情報記憶部501から設定情報を取得する(ステップS601)。さらに、実行部502は、HDD210に記憶されているテキストファイルを読み込む(ステップS602)。
ここで、設定情報記憶部501は、テキストファイル読込オブジェクト401が内部処理に用いる設定情報であるパラメータ等のメタデータを記憶するものである。図7Aは、設定情報記憶部に記憶されている設定情報の一例を示す図である。設定情報記憶部501には、設定情報名と、設定情報値と、設定優先度と、選択カーソルと、が対応付けて記憶されている。設定優先度は、テキストファイル読込オブジェクト401が複数の設定情報値に基づいてテキストファイルを変換可能な場合に、その優先度を示すものである。本実施の形態では、設定優先度は、数字が小さい順に設定優先度が高いことを示している。また、選択カーソルは、実行部502の内部処理に用いた設定情報値にチェックを入れるカーソルである。つまり、チェックが入っている選択カーソルと対応付けて記憶されている設定情報名および設定情報値が、テキストファイル読込オブジェクト401の属性としてRAM205b上に展開されている設定情報名および設定情報値(データ)である。
次に、実行部502は、設定情報記憶部501から取得した設定情報に含まれる設定情報値のうち、設定優先度が最も高い設定情報値(文字コード)に従って、テキストファイル読込オブジェクト401の操作である処理()である文字変換処理を読み込んだテキストファイルに対して実行する(ステップS603)。なお、取得した設定情報に含まれる設定情報値と対応付けられた選択カーソルにチェックが入っている場合、実行部502は、選択カーソルにチェックが入っている設定情報値の次に設定優先度が高い設定情報値に従って文字変換処理を実行するものとする。また、実行部502は、文字変換処理に用いた設定情報値と対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部501に記憶する(ステップS604)。
図7Bは、選択カーソルにチェックが入っている設定情報値に従って文字変換処理を実行する例の説明図である。取得した設定情報に含まれる設定情報値(現在選択されている設定情報):UTF-8と対応付けられた選択カーソルにチェックが入っている場合(図7B(a)に示す)、実行部502は、設定情報値:UTF-8の次に設定優先度が高い設定情報値(次に優先して選択される設定情報):Shift_JISに従って文字変換処理を実行する(図7B(b)に示す)。そして、実行部502は、設定情報値:Shift_JISと対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部501に記憶する。
さらに、実行部502は、テキストファイル読込オブジェクト401が連携処理を行うテキスト印刷オブジェクト402の内部処理の実行を要求するものであって、文字変換処理を施したテキストファイルの内容および当該文字変換処理に用いた設定情報を含むメッセージを生成する(ステップS605)。そして、実行部502は、生成したメッセージを送信部503に送出する(ステップS606)。
図8は、実行部により生成されるメッセージの一例を示す図である。本実施の形態では、実行部502は、XML形式のメッセージ800を生成するものとする。メッセージ800は、符号801で示すように、送信元のオブジェクト(テキストファイル読込オブジェクト401)の場所(URL)および送信先のオブジェクト(テキスト印刷オブジェクト402)の場所を示す情報(URL)を含んでいる。
また、メッセージ800は、符号802で示すように、オブジェクトが内部処理に用いた設定情報を示すメタデータであるinfo要素を含んでいる。具体的には、メッセージ800は、送信元のオブジェクトが内部処理に用いたパラメータのメタデータを含んでいる。例えば、メッセージ800は、送信元のオブジェクトであるテキストファイル読込オブジェクト401が文字変換処理に用いた設定情報名:文字コードや設定情報値:UTF-8のメタデータを含んでいる。
また、メッセージ800は、符号803で示すように、送信先のオブジェクトに送るテキストや画像などのデータの内容やタイトル(名前)などを示すメタデータであるentry要素を含んでいる。符号803で示すentry要素を含むメッセージ800を受信したオブジェクトは、entry要素が示すデータに対して当該オブジェクトの内部処理を実行する。
送信部503は、通信部504を介して、実行部502により生成されたメッセージを、連携処理を行うテキスト印刷オブジェクト402に送信する(ステップS607)。ここで、通信部504は、ネットワークなど、連携処理を行うオブジェクト間において共通の通信路510上の他のオブジェクトと通信するためのものである。
本実施の形態では、通信部504は、テキストファイル読込オブジェクト401の識別情報、およびテキストファイル読込オブジェクト401が連携処理を行うオブジェクトであるテキスト印刷オブジェクト402の識別情報を記憶しているものとする。そして、通信部504は、メッセージを送信する際、記憶しているオブジェクトの識別情報を用いて当該メッセージを他のオブジェクトに送信するものとする。ここで、識別情報は、共通の通信路510(例えば、インターネット)上でオブジェクトを判別可能な情報である。
図9は、メッセージを受信したテキスト印刷オブジェクト402が内部処理(印刷処理)を行う際の処理手順を示すフローチャートである。まず、受信部505は、通信部504を介して、テキストファイル読込オブジェクト401から送信されたメッセージを、テキスト印刷オブジェクト402の操作であるメッセージ受信()により受信する(ステップS901)。
判断部507は、実行判断情報記憶部506から実行判断情報を取得する(ステップS902)。ここで、実行判断情報は、連携処理を行うテキストファイル読込オブジェクト401が内部処理に用いた設定情報であって、テキスト印刷オブジェクト402の内部処理を実行するために要求される当該設定情報の条件を示すものである。
図10は、実行判断情報記憶部に記憶されている実行判断情報の一例を示す図である。実行判断情報記憶部506は、上述したように、テキストファイル読込オブジェクト401が文字変換処理に用いた設定情報であって、テキスト印刷オブジェクト402の内部処理である印刷処理を実行するために要求される設定情報の条件を示す実行判断情報1000を記憶するものである。具体的には、実行判断情報記憶部506は、設定情報(例えば、設定情報名:文字コード,フォント等、および設定情報値:Shift_JIS,EUC-JP等)の条件を示す実行判断情報1000を記憶している。
なお、実行判断情報が示す設定情報の条件にはワイルドカード(*で示す)を用いることができる。例えば、設定情報名の条件にワイルドカードが示されている場合、テキスト印刷オブジェクト402は、テキストファイル読込オブジェクト401が内部処理に用いた設定情報名にかかわらず印刷処理が実行可能であることを示している。また、設定情報値の条件にワイルドカードが示されている場合、テキスト印刷オブジェクト402は、テキストファイル読込オブジェクト401が内部処理に用いた設定情報値にかかわらず印刷処理が実行可能であることを示している。
判断部507は、受信部505により受信したメッセージが含む設定情報が、実行判断情報記憶部506に記憶する実行判断情報が示す設定情報の条件に該当するか否かを判断する。
本実施の形態では、判断部507は、まず、実行判断情報が示す設定情報名の条件にワイルドカードが用いられているか否かを判断する(ステップS903)。実行判断情報が示す設定情報名の条件にワイルドカードが用いられている場合(ステップS903:No)、判断部507は、受信したメッセージが含む設定情報が、実行判断情報が示す設定情報の条件に該当すると判断して、当該受信したメッセージを実行部502に送出して処理を終了する(ステップS908)。
一方、実行判断情報が示す設定情報名の条件にワイルドカードが用いられていない場合(ステップS903:Yes)、判断部507は、取得した実行判断情報が示す設定情報の条件を順に読み出し(ステップS904)、受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当するか否かを判断する(ステップS905)。受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当すると判断した場合(ステップS905:Yes)、判断部507は、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当するか否かを判断する(ステップS906)。
そして、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当すると判断した場合(ステップS906:Yes)、判断部507は、取得した実行判断情報から全ての設定情報の条件を読み出したか否かを判断する(ステップS907)。そして、取得した実行判断情報から全ての設定情報の条件を読み出したと判断した場合(ステップS907:Yes)、判断部507は、受信したメッセージが含む設定情報が、実行判断情報が示す設定情報の条件に該当すると判断して、当該受信したメッセージを実行部502に送出して処理を終了する(ステップS908)。一方、取得した実行判断情報から全ての設定情報の条件を読み出していないと判断した場合(ステップS907:No)、ステップS904に戻る。
また、受信したメッセージが含む設定情報名が読み出した設定情報の条件に含まれる設定情報名に該当しないと判断した場合(ステップS905:No)、判断部507は、受信したメッセージ、および読み出した設定情報の条件に含まれる設定情報名に該当しないと判断した当該受信したメッセージが含む設定情報名を生成部508に送出する(ステップS909)。また、受信したメッセージが含む設定情報値が読み出した設定情報の条件に含まれる設定情報値に該当しないと判断した場合(ステップS906:No)、判断部507は、受信したメッセージ、および読み出した設定情報の条件に含まれる設定情報値に該当しないと判断した当該受信したメッセージが含む設定情報値を生成部508に送出する(ステップS909)。
図11は、内部処理を実行することができないと判断された場合の処理手順を示すフローチャートである。具体的には、図9に示すステップS909において、受信したメッセージおよび読み出した設定情報の条件に該当しないと判断した設定情報が生成部508に送出された場合の処理手順である。
まず、生成部508は、判断部507から送出されたメッセージおよび設定情報を受け取る(ステップS1101)。次いで、生成部508は、受け取ったメッセージおよび設定情報を用いて、テキスト印刷オブジェクト402の内部処理が実行できない原因を通知する不整合通知メッセージを生成する(ステップS1102)。本実施の形態では、生成部508は、判断部507から送出されたメッセージに、テキスト印刷オブジェクト402の内部処理が実行できない原因である判断部507から送出された設定情報を追加した不整合通知メッセージを生成する。
図12は、生成部により生成される不整合通知メッセージの一例を示す図である。本実施の形態では、生成部508は、図8に示すメッセージと同様、XML形式の不整合通知メッセージ1200を生成するものとする。不整合通知メッセージ1200は、符号1201で示すように、送信元のオブジェクト(テキストファイル読込オブジェクト401)の実行部502で生成されたメッセージ800に、テキスト印刷オブジェクト402の内部処理が実行できない原因である設定情報を示すメタデータであるerror要素を含んでいる。具体的には、不整合通知メッセージ1200は、図9に示すステップS905またはステップS906において読み出した設定情報の条件に該当しないと判断した設定情報名および設定情報値の少なくとも1つを含むものである。
次に、生成部508は、生成した不整合通知メッセージを送信部503に送出する(ステップS1103)。送信部503は、通信部504を介して、生成部508により生成された不整合通知メッセージを、メッセージの送信元であるテキストファイル読込オブジェクト401に送信する(ステップS1104)。
図13は、内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。具体的には、図9に示すステップS908において、受信したメッセージが実行部502に送出された場合の処理手順である。
まず、実行部502は、判断部507から送出されたメッセージを受け取る(ステップS1301)。次いで、実行部502は、受け取ったメッセージを用いて、テキスト印刷オブジェクト402の内部処理である印刷処理を実行する(ステップS1302)。本実施の形態では、実行部502は、メッセージのinfo要素を参照してテキストファイル読込オブジェクト401により文字変換処理を施されたテキストファイルを取得し、取得したテキストファイルをUSBインターフェース201やIEEE1394インターフェース202を介して接続されたプリンタに出力する。
次に、実行部502は、他のオブジェクトにメッセージを送信するか否かを判断する(ステップS1303)。具体的には、実行部502は、テキスト印刷オブジェクト402の内部処理が行われたことを示す処理結果メッセージを送信元のオブジェクトであるテキストファイル読込オブジェクト401に送信するか否かを判断する。なお、処理結果メッセージを送信しないと判断した場合(ステップS1303:No)、そのまま処理が終了する。なお、処理結果メッセージを送信するか否かは予め設定されているものとする。
処理結果メッセージを送信すると判断した場合(ステップS1303:Yes)、実行部502は、内部処理が正常に行われたことを示す処理結果メッセージを生成する(ステップS1304)。
そして、実行部502は、生成した処理結果メッセージを送信部503に送出する(ステップS1305)。送信部503は、通信部504を介して、実行部502により生成された処理結果メッセージを、受信したメッセージの送信元のオブジェクトであるテキストファイル読込オブジェクト401に送信する(ステップS1306)。
図14は、不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。まず、受信部505は、通信部504を介して、テキスト印刷オブジェクト402から送信されたメッセージを、テキストファイル読込オブジェクト401の操作である不整合受信()により受信する(ステップS1401)。
不整合判断部509は、受信部505により受信したメッセージが不整合通知メッセージであるか否かを判断する(ステップS1402)。具体的には、不整合判断部509は、受信したメッセージにerror要素が含まれているか否かにより不整合通知メッセージであるか否かを判断する。なお、受信したメッセージが不整合通知メッセージでないと判断した場合(ステップS1402:No)、そのまま処理を終了する。
受信したメッセージが不整合通知メッセージであると判断した場合(ステップS1402:Yes)、不整合判断部509は、受信した不整合通知メッセージから、テキスト印刷オブジェクト402が内部処理を実行できない原因であるerror要素が示す設定情報を抽出する(ステップS1403)。さらに、不整合判断部509は、受信した不整合通知メッセージおよび抽出した設定情報を実行部502に送出する(ステップS1404)。
実行部502は、不整合判断部509から送出された設定情報に応じて、設定情報記憶部501から設定情報を抽出し、抽出した設定情報を用いて再度内部処理(図6に示す処理)を実行し、さらにテキスト印刷オブジェクト402に再度メッセージを送信する(ステップS1405)。
具体的には、実行部502は、設定情報記憶部501から取得した設定情報に含まれる設定情報値のうち、不整合判断部509から送出された設定情報に含まれる設定情報値(選択カーソルにチェックが入っている設定情報値)の次に設定優先度が高い設定情報値に従って文字変換処理を実行するものとする。
ここで、図15を用いて、上述したオブジェクトの連携処理により得られる効果について説明する。図15は、連携処理を行うオブジェクトを模式的に示すブロック図である。図15に示す例は、オブジェクトA(1501)、オブジェクトB(1502)、およびオブジェクトC(1503)がメッセージを送受信する主体となるオブジェクトであるものとする。また、メッセージM1(1504)、メッセージM2(1505)、メッセージM3(1506)、およびメッセージM4(1507)は、オブジェクト間を流れるメッセージであり、メッセージを示す矢印の起点がメッセージの送信を表し、終点がメッセージの受信を表している。さらに、処理A1(1501a)、処理A2(1502a)、および処理A3(1503a)は、各オブジェクトの内部関数による処理であり、各オブジェクトが固有に実行する内部処理に相当するものである。
図15に示すように、オブジェクトA(1501)とオブジェクトB(1502)との連携処理は、メッセージM1(1504)を介して行われる。オブジェクトA(1501)は、基本的には、オブジェクトB(1502)の持つ内部関数について関知せずにメッセージを送信する。なお、各オブジェクトは、連携処理を行う他のオブジェクトの内部関数(操作)には関知しないが、共通の操作であるメッセージ受信と不整合受信を持つことは、全てのオブジェクトについて共通であるものとする。そして、オブジェクト間のメッセージのやりとりは、各オブジェクトが操作区画に有するメッセージ受信の呼び出しにより行われるものとする。また、不整合通知メッセージのやりとりは、各オブジェクトが操作区画に有する不整合受信の呼び出しにより行われるものとする。
オブジェクトB(1502)は、メッセージM1(1504)を受信し、メッセージM1(1504)に基づいてオブジェクトB(1502)の内部処理が実行可能であると判断した場合、メッセージM1(1504)の受信に反応して処理A2を起動する。
また、オブジェクトB(1502)の内部処理が実行できないと判断した場合、オブジェクトB(1502)は、オブジェクトA(1501)に不整合通知メッセージであるメッセージM4(1507)を送信して、オブジェクトA(1501)の処理A1(1501a)に用いた設定情報の不備(メッセージM1(1504)が含む不備)を通知する。これにより、オブジェクトA(1501)は、不整合(処理A1(1501a)に用いた設定情報の不備)を解消するように、再度処理A1(1501a)を実行して新たにメッセージM1(1504)を生成してオブジェクトB(1502)に送信することができるので、仮に連携処理の途中で何か不具合が生じた場合にも回復して連携処理を継続することが可能となる。
なお、受信したメッセージM1(1504)がオブジェクトB(1502)にとって関連のないものである場合、つまり、メッセージM1(1504)に含まれる送信先のオブジェクトの場所を示す情報(URL)がオブジェクトB1(1502)を示すものでない場合、オブジェクトB(1502)は何の反応もしない。
つまり、オブジェクトA(1501)とオブジェクトB(1502)とは、有為な連携を取り得るが、それはオブジェクトA(1501)とオブジェクトB(1502)との間で送受信されるメッセージM1(1504)およびメッセージM4(1507)による結び付きによるものといえる。
なお、オブジェクトB(1502)とオブジェクトC(1503)との連携処理についても、上述したオブジェクトA(1501)とオブジェクトB(1502)との連携処理と同様にして行われるものとする。また、連携処理を行うオブジェクトは、2つだけに限らず、例えば、オブジェクトA(1501)からオブジェクトB(1502)にメッセージM1(1504)を送信し、さらにオブジェクトB(1502)からオブジェクトC(1503)にメッセージM2(1505)を送信することにより、3つ以上のオブジェクトによる連携処理を行うことも可能である。
このように、本実施の形態にかかるPC100によれば、オブジェクトが内部処理を実行することができないと判断した場合、連携処理を行う他のオブジェクトに当該内部処理を実行できない原因を通知することにより、オブジェクトが連携処理を行う際に必要な条件等を確認し、条件が満たされない場合には条件を満たすようにオブジェクトが内部処理に用いる設定情報を変更して不整合を解消することができるので、オブジェクト間の連携処理を動的かつ柔軟に行うことができる。
(第2実施の形態)
本実施の形態にかかるPCは、オブジェクトの内部処理の実行により物理的な状態が変化する場合、実際に内部処理の仮実行を行わず、あたかも内部処理を実行したかのような処理結果を得ることができる内部処理の仮実行を行うものである。なお、PC100の構成については、第1実施の形態とほぼ同様であるため、第1実施の形態と異なる部分の処理のみを説明する。
以下の説明では、USBインターフェース201やIEEE1394インターフェース202を介して接続されたスキャナを用いてスキャン処理を行い、スキャン処理により得られたデータに含まれるQRコードの解析処理を行う例について説明する。
まず、図16を用いて、スキャン処理およびQRコードの解析処理を行うオブジェクトの関係について説明する。図16は、スキャン処理およびQRコードの解析処理を行うオブジェクトの関係を示す図ある。
図16に示すより、スキャン処理およびQRコードの解析処理は、USBインターフェース201やIEEE1394インターフェース202を介して接続されたスキャナを用いてスキャン処理を行うスキャンオブジェクト1601、およびスキャンオブジェクト1601によるスキャン処理により得られたデータに含まれるQRコードの解析処理を行うQRコード解析オブジェクト1602の連携処理により行われるものとする。スキャンオブジェクト1601およびQRコード解析オブジェクト1602は、互いにメッセージ1603およびメッセージ1604を送出し、送出されたメッセージに反応して内部処理を実行する。
次に、図17および図18を用いて、スキャンオブジェクト1601およびQRコード解析オブジェクト1602のオブジェクトモデルについて説明する。図17は、スキャンオブジェクトのUMLクラス図である。図18は、QRコード解析オブジェクトのUMLクラス図である。
スキャンオブジェクト1601のクラスは、操作として、メッセージ受信()、不整合受信()、およびスキャン処理()を有する。
スキャン処理()は、スキャンオブジェクト1601の内部処理であり、USBインターフェース201やIEEE1394インターフェース202を介して接続されたスキャナを制御する処理である。スキャン処理()は、スキャンオブジェクト1601の操作であるスキャン処理を仮実行することができる。なお、メッセージ受信()および不整合受信()について第1実施の形態と同様であるため、ここでは説明を省略する。
また、スキャンオブジェクト1601のクラスは、属性として、オブジェクトID、オブジェクトの名前、オブジェクトのURL、オブジェクトの種類、設定情報名、設定情報値、および仮実行結果の生成用テンプレートを有する。これらの属性と操作のうち、スキャン処理()、設定情報名、設定情報値、および仮実行結果の生成用テンプレートは、クラスの外部に公開されない。
オブジェクトIDは、オブジェクトを特定するための情報であり、例えば、“ScanObject”である。オブジェクトの名前は、オブジェクトの名称であり、例えば、“スキャンオブジェクト”である。オブジェクトのURLは、オブジェクトを指定する情報であり、例えば、“http://example.com/scanObject”である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類であり、例えば、“入力”である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称であり、例えば、“解像度”である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値であり、例えば、“300dpi”である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。仮実行結果の生成用テンプレートは、メッセージに含めるダミーのデータであり、例えば、“ダミーのJPEGデータ”である。
QRコード解析オブジェクト1602のクラスは、操作として、メッセージ受信()、不整合受信()、およびQRコード解析処理()を有する。
メッセージ受信()は、QRコード解析オブジェクト1602の内部処理の実行または仮実行を要求するメッセージをスキャンオブジェクト1601から受信する処理である。また、不整合受信()は、連携処理を行えない原因を通知する不整合通知メッセージを他のオブジェクトから受信する処理である。QRコード解析処理()は、QRコード解析オブジェクト1602の内部処理であり、スキャンオブジェクト1601のスキャン処理により得られたデータに含まれるQRコードを解析する処理である。なお、QRコード解析処理()は、内部処理の仮実行を行わないものとする。
また、QRコード解析オブジェクト1602のクラスは、属性として、オブジェクトID、オブジェクトの名前、オブジェクトのURL、オブジェクトの種類、設定情報名、設定情報値、および仮実行結果の生成用テンプレートを有する。これらの属性と操作のうち、QRコード解析処理()、設定情報名、設定情報値、および仮実行結果の生成用テンプレートは、クラスの外部に公開されない。
オブジェクトIDは、オブジェクトを特定するための情報であり、例えば、“QR Code Object”である。オブジェクトの名前は、オブジェクトの名称であり、例えば、“QRコード解析オブジェクト”である。オブジェクトのURLは、オブジェクトを指定する情報であり、例えば、“http://example.com/qrCodeObject”である。オブジェクトの種類は、オブジェクトが実行する内部処理の種類であり、例えば、“加工”である。設定情報名は、オブジェクトが内部処理に用いるパラメータ等の設定情報の名称であり、例えば、“解像度”である。設定情報値は、オブジェクトが内部処理に用いるパラメータの値であり、例えば、“600dpi”である。テンプレートは、オブジェクト間で送受信するメッセージの書式である。仮実行結果の生成用テンプレートは、メッセージに含めるダミーのデータであり、QRコード解析オブジェクト1602は内部処理の仮実行を行わないため、“なし”である。
次に、スキャンオブジェクト1601およびQRコード解析オブジェクト1602の詳細な機能構成およびスキャンオブジェクト1601およびQRコード解析オブジェクト1602の操作の実行手順について説明する。図19は、スキャンオブジェクトおよびQRコード解析オブジェクトの機能構成を示すブロック図である。図19に示すように、スキャンオブジェクト1601およびQRコード解析オブジェクト1602は、設定情報記憶部501、実行部502、通信部504、受信部505、実行判断情報記憶部506、判断部507、生成部508、不整合判断部509、仮実行部1901、および送信部1902を備えて構成される。なお、スキャンオブジェクト1601およびQRコード解析オブジェクト1602は、それぞれ共通の通信路510で接続されているものとする。
図20は、スキャンオブジェクトからQRコードオブジェクトにメッセージを送信する処理手順を示すフローチャートである。まず、仮実行部1901は、設定情報記憶部501から設定情報を取得する(ステップS2001)。次に、仮実行部1901は、設定情報記憶部501から取得した設定情報に含まれる設定情報値のうち、設定優先度が最も高い設定情報値(解像度)をスキャナに設定して、スキャンオブジェクト1601の操作であるスキャン処理を仮実行する(ステップS2002)。
図21は、選択カーソルにチェックが入っている設定情報値に従って仮実行を行う例の説明図である。取得した設定情報に含まれる設定情報値(現在選択されている設定情報):300dpiと対応付けられた選択カーソルにチェックが入っている場合(図21(a)に示す)、仮実行部1901は、設定情報値:300dpiの次に設定優先度が高い設定情報値(次に優先して選択される設定情報):600dpiに従ってスキャン処理を仮実行する(図21(b)に示す)。そして、仮実行部1901は、設定情報値:600dpiと対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部501に記憶する。
ここで、仮実行とは、上述したように、実際にスキャンオブジェクト1601の内部処理であるスキャン処理を行わず、仮実行結果の生成用テンプレートを用いて、あたかもスキャン処理を行ったかのようなデータ(例えば、ダミーのJPEGデータ)を生成する処理である。例えば、ADFの原稿台にセットされた原稿の読み取りを行わず、原稿がセットされていないコンタクトガラスをスキャンする処理である。
具体的には、スキャン処理のような処理前と処理後とでスキャナの物理的な状態が変化してしまう処理においては、実行部502によるスキャン処理の実行後に不整合通知メッセージを受信した場合、当該不整合通知メッセージに従って設定情報を再設定したとしても、再度スキャン処理を行うためには物理的な状態を元に戻さなければならない。例えば、ADFを用いて原稿のスキャン処理を実行して不整合通知メッセージを受信した場合には、再度スキャン処理を行う必要が生じ、そのためには排出部に排出された原稿を再度ADFの原稿台にセットしなおさなければならない。そこで、本実施の形態では、実行部502による内部処理を行わずに、仮実行部1901によって内部処理を仮実行することを実現し、前述の不都合を解消している。
次に、仮実行部1901は、スキャンオブジェクト1601と連携処理を行うQRコード解析オブジェクト1602の内部処理の仮実行を要求するものであって、内部処理の仮実行により得られたデータおよび当該内部処理の仮実行に用いた設定情報を含むメッセージを生成する(ステップS2003)。そして、仮実行部1901は、生成したメッセージを送信部1902に送出する(ステップS2004)。
図22は、仮実行部により生成されるメッセージの一例を示す図である。本実施の形態では、仮実行部1901は、XML形式のメッセージ2200を生成するものとする。メッセージ2200は、符号2201で示すように、送信元のオブジェクト(スキャンオブジェクト1601)の場所を示す情報(URL)および送信先のオブジェクト(QRコード解析オブジェクト1602)の場所を示す情報(URL)を含んでいる。
また、メッセージ2200は、符号2202で示すように、仮実行部1901が内部処理の仮実行に用いた設定情報を示すメタデータであるinfo要素を含んでいる。具体的には、メッセージ2200は、仮実行部1901が内部処理の仮実行に用いたパラメータのメタデータを含んでいる。例えば、メッセージ2200は、仮実行部1901が内部処理の仮実行に用いた設定情報名:解像度や設定情報値:300dpiのメタデータを含んでいる。
また、メッセージ2200は、符号2203で示すように、内部処理の仮実行により得られたデータのタイトルおよびデータの場所を示すメタデータであるentry要素を含んでいる。符号2203で示すentry要素を含むメッセージ2200を受信したQRコード解析オブジェクト1602は、内部処理の仮実行を行わないため、entry要素が示すデータに対して内部処理を実行する。
送信部1902は、通信部504を介して、仮実行部1901により生成されたメッセージを、実行部502(スキャンオブジェクト1601)の内部処理の実行により得られたメッセージとして、連携処理を行うQRコード解析オブジェクト1602に送信する(ステップS2005)。なお、メッセージを受信したQRコード解析オブジェクトが内部処理を行う際の処理手順(図9に示す)、および内部処理を実行することができないと判断された場合の処理手順(図11に示す)は、第1実施の形態とほぼ同様であるため、ここでは説明を省略する。
図23は、内部処理を実行することができると判断された場合の処理手順を示すフローチャートである。具体的には、図9に示すステップS908において、受信したメッセージがQRコード解析オブジェクト1602の実行部502に送出された場合の処理手順である。
まず、実行部502は、判断部507から送出されたメッセージを受け取る(ステップS2301)。次いで、実行部502は、受け取ったメッセージを用いて、QRコード解析オブジェクト1602の操作であるQRコード解析処理を実行する(ステップS2302)。本実施の形態では、実行部502は、メッセージのinfo要素を参照してスキャンオブジェクト1601によりスキャンしたデータを取得し、取得したデータに含まれるQRコードの解析処理を実行する。
次に、実行部502は、他のオブジェクトにメッセージを送信するか否かを判断する(ステップS2303)。具体的には、実行部502は、QRコード解析オブジェクト1602のQRコード解析処理が行われたことを示す処理結果メッセージを送信元のオブジェクトであるスキャンオブジェクト1601に送信するか否かを判断する。なお、処理結果メッセージを送信しないと判断した場合(ステップS2303:No)、そのまま処理が終了する。
処理結果メッセージを送信すると判断した場合(ステップS2303:Yes)、実行部502は、内部処理が正常に行われたことを示す処理結果メッセージを生成する(ステップS2304)。
そして、実行部502は、生成した処理結果メッセージを送信部1902503に送出する(ステップS2305)。送信部1902は、通信部504を介して、実行部502により生成された処理結果メッセージを、受信したメッセージの送信元であるスキャンオブジェクト1601に送信する(ステップS2306)。
図24は、不整合通知メッセージを受信した場合の処理手順を示すフローチャートである。まず、受信部505は、通信部504を介して、QRコード解析オブジェクト1602から送信されたメッセージを、スキャンオブジェクト1601の操作である不整合受信()により受信する(ステップS2401)。
不整合判断部509は、受信部505により受信したメッセージが不整合通知メッセージであるか否かを判断する(ステップS2402)。具体的には、不整合判断部509は、受信したメッセージにerror要素が含まれているか否かにより不整合通知メッセージであるか否かを判断する。なお、受信したメッセージが不整合通知メッセージでないと判断した場合(ステップS2402:No)、そのまま処理を終了する。
図25は、不整合通知メッセージの一例を示す図である。本実施の形態にかかる不整合通知メッセージ2500も、第1実施の形態と同様、XML形式のメッセージである。不整合通知メッセージ2500は、符号2501で示すように、送信元のオブジェクト(スキャンオブジェクト1601)の実行部502で生成されたメッセージ2200に、スキャンオブジェクト1601との連携処理が可能な設定情報を示すメタデータであるerror要素を含んでいる。本実施の形態では、生成部508は、実行部502によりQRコード解析処理が可能な設定情報名および設定情報値を含む不整合通知メッセージ2500を生成するものとする。
例えば、スキャンオブジェクト1601から解像度:300dpiでスキャン処理を行ったデータに対するQRコード解析処理の実行要求を受けた場合、生成部508は、QRコード解析処理が可能な解像度:600dpiを含む不整合通知メッセージ2500を生成する。
受信したメッセージが不整合通知メッセージであると判断した場合(ステップS2402:Yes)、不整合判断部509は、受信した不整合通知メッセージからスキャンオブジェクト1601との連携処理が可能な設定情報であるerror要素を抽出する(ステップS2403)。さらに、不整合判断部509は、受信した不整合通知メッセージおよび抽出した設定情報を仮実行部1901に送出する(ステップS2404)。
仮実行部1901は、不整合判断部509から送出された設定情報を用いて、再度、内部処理を仮実行し、さらにQRコード解析オブジェクト1602に再度メッセージを送信する(ステップS2405)。その際、仮実行部1901は、不整合判断部509から送出された設定情報に含まれる設定情報値と対応付けられた選択カーソルにチェックを入れた設定情報を設定情報記憶部501に記憶するものとする。
なお、本実施の形態では、不整合判断部509から送出された設定情報を用いて仮実行部1901によって内部処理の仮実行を再度行っているが、これに限定するものではない。例えば、不整合通知メッセージがスキャンオブジェクト1601との連携処理が可能な設定情報を含む場合、不整合判断部509から送出されたメッセージおよび抽出した設定情報を実行部502に送出し、実行部502によるスキャン処理を実行してもよい。
ここで、図26を用いて、上述したオブジェクトの連携処理により得られる効果について説明する。図26は、連携処理を行うオブジェクトを模式的に示すブロック図である。図26に示すように、本実施の形態では、スキャンオブジェクト1601は、まず、スキャン処理を仮実行し(ステップS2601)、その結果を含むメッセージをQRコード解析オブジェクト1602に送信する(ステップS2602)。次いで、QRコード解析オブジェクト1602は、内部処理が実行できないと判断した場合、不整合通知メッセージをスキャンオブジェクト1601に送信する(ステップS2603)。そして、スキャンオブジェクト1602は、不整合通知メッセージからerror要素が示す設定情報を抽出し、抽出した設定情報を用いて再度内部処理を仮実行し(ステップS2604)、その結果を含むメッセージをQRコード解析オブジェクト1602に再度送信する(ステップS2605)。
これにより、スキャンオブジェクト1601のように紙文書をスキャンしてQRコード解析処理を行うためのデータを生成する場合等、スキャンオブジェクト1601の内部処理の処理前と処理後とで物理的な状態が変化する場合であっても、不整合通知メッセージの通知に従って再度内部処理の仮実行(または内部処理)を実行することにより、不整合を解消することができる。
(第3実施の形態)
本実施の形態では、オブジェクトに連携処理を行わせるソフトウェアを開発するソフトウェア開発環境について説明する。
なお、本実施の形態では、アイコン手段を用いて操作表示部211の画面上でグラフィカルにソフトウェアの開発を行うソフトウェア開発環境を主要な例として説明するが、これに限定されるものではない。例えば、テキストエディタなどによる文字入力手段を用いて画面上で文字入力によりソフトウェア開発を行うソフトウェア開発環境、あるいはアイコン手段より一連の処理を行うソフトウェアを開発することができるCASEツールにも同様に用いることができる。
図27は、ソフトウェア開発システムの構成を示す説明図である。ソフトウェア開発システム2700は、ソフトウェア開発環境(エンジン102)を実現するPC100、およびオブジェクトが実体化されたデバイス2701を備えて構成されている。
PC100は、Web等の様々なネットワーク上のサービスが稼働しているインターネット2702に接続されているものとする。また、PC100は、操作表示部211の画面であるビットマップスクリーンと、マウスなどのポインティングデバイスと、キーボードなどの文字入力部と、を備えているものとする。
図28は、PC上に実現されるソフトウェア開発環境の機能構成を示すブロック図である。図28に示すように、ソフトウェア開発環境であるエンジン102は、入力部2801、編集部2802、表示部2803、オブジェクト仮実行部2804、オブジェクト実行部2805、オブジェクト監視部2806、およびオブジェクト通信部2807を備えて構成されている。
入力部2801は、ポインティングデバイスや文字入力部を介して、文字列の入力やビットマップスクリーンに表示されたアイコンの選択や操作を受け付けるものである。ここで、ビットマップスクリーンに表示されたアイコンは、デバイス2701上に実現されたオブジェクトを視覚的に表現したものである。
編集部2802は、入力部2801により入力を受け付けた文字列、入力部2801により選択や操作が可能なアイコンを保持するものである。
表示部2803は、オブジェクト間の連携処理の様子をビットマップスクリーンに表示するものである。具体的には、表示部2803は、入力部2801により受け付けた文字列の入力やアイコンの選択や操作に応じて、編集部2802から文字列やアイコンを取得し、ビットマップスクリーンに表示する。
図29は、表示部の詳細な機能構成を示すブロック図である。表示部2803は、オブジェクト一覧表示部2803aおよびオブジェクトレイアウト表示部2803bを備えて構成されている。オブジェクト一覧表示部2803aは、インターネット2702を介して接続されたデバイス2701上に実現されたオブジェクトの一覧をビットマップスクリーンに表示するものである。オブジェクトレイアウト表示部2803bは、オブジェクト一覧表示部2803aによりビットマップスクリーンに表示されたオブジェクトのうち、入力部2801により受け付けたアイコンの選択に従って連携処理を行うオブジェクトをビットマップスクリーンに表示するものである。
本実施の形態では、ビットマップスクリーンには、オブジェクトの一覧であって、各オブジェクトを視覚的に表すアイコンを表示するオブジェクト一覧表示領域と、連携処理を行うオブジェクトであって、入力部2801を介して受け付けたアイコンの選択に従ってアイコンを適切な位置に表示するオブジェクトレイアウト表示領域と、がある。ユーザは、マウス等を操作してオブジェクト一覧表示領域に表示されているオブジェクトのアイコンをドラッグし、オブジェクトレイアウト表示領域にドロップすることにより、ソフトウェアの開発をグラフィカルに行うことができる。
なお、本実施の形態では、アイコンは、当該アイコンがどのオブジェクトを示しているかのインターネット2702上で判別するため識別情報と、オブジェクトを視覚的に表す絵と、がセットになったものである。また、識別情報は、例えば、インターネット2702上でユニークとなる整数や文字列により構成されるものとする。
図30は、ビットマップスクリーンの画面構成の一例を示す図である。図30に示すように、表示部2803は、ビットマップスクリーン3000上に、オブジェクト一覧表示領域3001およびオブジェクトレイアウト表示領域3002を設ける。そして、ユーザは、マウス等を操作してオブジェクト一覧表示領域3001に表示されているアイコンをドラッグし、オブジェクトレイアウト表示領域3002にドロップすることにより、ソフトウェアの開発を行うことができる。
図31は、テキストエディタなどによる文字入力手段を用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。図31に示すように、表示部2803は、ビットマップスクリーン3100上に、文字列表示領域3101を設ける。表示部2803は、入力部2801により受け付けた文字列であって、編集部2802に保持されている文字列を文字列表示領域3101に表示する。これにより、ユーザは、文字列表示領域3101に表示された文字列を見ながらソフトウェアの開発を行うことができる。
図32は、CASEツールを用いてソフトウェア開発を行う場合におけるビットマップスクリーンの画面構成を示す図である。図32に示すように、表示部2803は、ビットマップスクリーン上3200上に、オブジェクト一覧表領域3201およびオブジェクトレイアウト表示領域3202を設ける。そして、ユーザは、マウス等を操作してオブジェクト一覧表示領域3201に表示されているアイコンをドラッグし、オブジェクトレイアウト表示領域3202にドロップすることにより、ソフトウェアの開発を行うことができる。
ここで、CASEツールを用いてソフトウェア開発が行われる場合、オブジェクトレイアウト表示部2803bは、各デバイス2702のオブジェクトの通信部504に記憶されているオブジェクトの識別情報を参照して、オブジェクトレイアウト表示領域3202に表示されたアイコンを実線等で結ぶことができ、この線によって動作フローを視覚的に表すことができる。
以下、オブジェクト仮実行部2804、オブジェクト実行部2805、オブジェクト監視部2806、およびオブジェクト通信部2807により実行される処理について説明する。
まず、図33を用いて、デバイス2701上に実体化されたオブジェクトの仮実行部1901に仮実行を行わせる処理手順について説明する。図33は、オブジェクトの仮実行部に仮実行を行わせる処理のフローチャートである。
オブジェクト仮実行部2804は、オブジェクトレイアウト表示領域3002にドロップされたアイコン群からオブジェクトの識別情報群を抽出する(ステップS3301)。その際、オブジェクト仮実行部2804は、連携処理を行う順番に合わせて各オブジェクトの識別情報を抽出するものとする。さらに、オブジェクト仮実行部2804は、抽出したオブジェクトの識別情報群をオブジェクト通信部2807に送出する(ステップS3302)。
次に、オブジェクト通信部2807は、ウェブサーバ103を介して、オブジェクト仮実行部2804から受け取ったオブジェクトの識別情報群のうち、連携処理を開始する開始部分となるオブジェクトの識別情報に基づいて、内部処理の仮実行を要求するメッセージを送信する(ステップS3303)。オブジェクトにメッセージが送信された後は、上述の実施の形態で説明したオブジェクト間における連携処理が行われる。
さらに、オブジェクト仮実行部2804は、オブジェクト監視部2806を監視状態に設定して処理を終了する(ステップS3304)。オブジェクト監視部2806は、ウェブサーバ103を介して、オブジェクト間で送受信されるメッセージを監視するものであり、メッセージの送受信が行われる毎にエンジン102により実現されるソフトウェア開発環境にフィードバックする。
このように、オブジェクト仮実行部2804と、上述の実施の形態にかかるオブジェクトが備える仮実行部1901と、を連携させることにより、連携処理を行うオブジェクトを組み合わせたソフトウェアを作成することができる。
ここで、図34および図35を用いて、オブジェクト間で送受信されるメッセージを監視する処理について説明する。図34は、オブジェクト間で不整合通知メッセージが送受信された場合の処理の説明図である。図35は、オブジェクト間で処理結果メッセージが送受信された場合の処理の説明図である。
まず、図34を用いて、オブジェクト間において不整合通知メッセージが送受信された場合の処理について説明する。まず、オブジェクト監視部2806は、オブジェクト仮実行部2804により監視状態に設定されると、共通の通信路510上を流れるメッセージを監視する状態に移る。
そして、オブジェクト監視部2806は、不整合通知メッセージを検知すると(ステップS3401)、編集部2802を介して表示部2803に対して、当該不整合通知メッセージの送信先のオブジェクトに設定する設定情報を入力させるためのダイアログ等(3406)の表示を要求する(ステップS3402)。
入力部2801により設定情報が受け付けられると、オブジェクト監視部2806は、当該入力部2801により受け付けた設定情報を取得し(ステップS3403)、取得した設定情報をオブジェクト仮実行部2804に通知する(ステップS3404)。
なお、オブジェクト仮実行部2804は、オブジェクト監視部2806から設定情報が通知されると、当該設定情報を含むメッセージを生成し、オブジェクト通信部2807を介して生成したメッセージを、不整合通知メッセージの送信先のオブジェクトに送信するものとする(ステップS3405)。
また、上述の実施の形態では、設定情報記憶部501に記憶されている設定情報に含まれる設定情報値のうち、設定優先度が高い設定情報値に従って、オブジェクトの内部処理または内部処理の仮実行を行ったが、これに限定するものではない。例えば、エンジン102(オブジェクト仮実行部2804)から設定情報を含むメッセージを受信した場合、オブジェクトの実行部502または仮実行部1901は受信したメッセージに含まれる設定情報を用いて内部処理または内部処理の仮実行を行ってもよい。
次に、図35を用いて、オブジェクト間において処理結果メッセージが送受信された場合の処理について説明する。まず、オブジェクト監視部2806は、オブジェクト仮実行部2804により監視状態に設定されると、共通の通信路510上を流れるメッセージを監視する状態に移る。
そして、オブジェクト監視部2806は、処理結果メッセージを検知すると(ステップS3501)、編集部2802を介して表示部2803に対して、オブジェクトレイアウト表示領域3503に内部処理が正常に行われた旨のアイコン等の表示3503aを行うことを要求する(ステップS3502)。これにより、オブジェクトの内部処理が成功した旨を視覚的に表現することができる。
次に、図36を用いて、デバイス2701上に実体化されたオブジェクトの実行部502に内部処理を行わせる処理手順について説明する。図36は、オブジェクトの実行部に内部処理を行わせる処理のフローチャートである。
オブジェクト実行部2805は、オブジェクトレイアウト表示領域3002にドロップされたアイコン群からオブジェクトの識別情報群を抽出する(ステップS3601)。その際、オブジェクト実行部2805は、連携処理を行う順番に合わせて各オブジェクトの識別情報を抽出するものとする。さらに、オブジェクト実行部2805は、例えば、図30のオブジェクトレイアウト表示領域3002に表示された実行アイコンがクリックされた際に、抽出したオブジェクトの識別情報群をオブジェクト通信部2807に送出する(ステップS3602)。
次に、オブジェクト通信部2807は、オブジェクト実行部2805から受け取ったオブジェクトの識別情報群のうち、連携処理を開始する開始部分となるオブジェクトの識別情報に基づいて、内部処理の実行を要求するメッセージを送信する(ステップS3603)。オブジェクトにメッセージが送出された後は、上述の実施の形態で説明したオブジェクト間における連携処理が行われる。
このように、オブジェクト実行部2805と、上述の実施の形態にかかるオブジェクトが備える実行部502と、を連携させることにより、連携処理を行うオブジェクトを組み合わせたソフトウェアを作成することができる。
以上、本実施の形態にかかるPC100によれば、オブジェクトに連携処理を行わせるソフトウェアの開発が可能なソフトウェア開発環境を提供することができる。
(第4実施の形態)
第1実施の形態および第2実施の形態では、MEM−C209に格納されているソフトウェアを起動して、RAM205b上にオブジェクト105を実体化する例について説明したが、これに限定するものではない。プログラムをPC100にインストールし、当該プログラムを起動することによりオブジェクト105を実体化できる媒体であればよい。
図37は、オブジェクトを実体化できるプログラムを格納する記憶媒体の一例を示す図である。
図37(a)は、PC100が備えるHDD210にインストールされているプログラムを起動することによりオブジェクト105をRAM205b上に実体化する例を示す図である。この場合、HDD210が記憶媒体に相当する。
図37(b)は、PC100が記憶媒体3701を着脱可能なインターフェースを備える場合、またはPC100に記憶媒体を組み込むことが可能な場合に、当該記憶媒体に一時的または永続的に格納されているプログラムを起動することにより、オブジェクト105をRAM205b上に実体化する例を示す図である。なお、記憶媒体は、図37(c)に示すように、フレキシブルディスク3702、CD−ROM(Compact Disc Read Only Memory)3703、MO(Magneto Optical)ディスク3704、DVD(Digital Versatile Disc)3706、磁気ディスク3705、半導体メモリ3707などが利用できる。
図37(d)は、PC100がLAN(Local Area Network)インターネット等のネットワークに接続され、ネットワーク上のダウンロードサイト3708から有線または無線でプログラムをPC100のHDD210にダウンロードし、ダウンロードしたプログラムを起動することにより、オブジェクト105をRAM205b上に実体化する例を示す図である。この場合、ダウンロードサイト3708が記憶媒体に相当する。