(57)【要約】【課題】ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができる情報処理装置を提供する。【解決手段】本発明の起点処理装置４１０は、遠隔処理装置４５０と通信可能に接続されるとともに、ワークフローコンポーネント４３０を記憶している。記憶装置４１４において、記憶されていない欠損したワークフローコンポーネントを保持している遠隔処理装置４５０のＵＲＬを記録した設定ファイルを含むプロキシコンポーネント４３３が記憶されている。特定の処理を実施するために欠損したワークフローコンポーネントの実行が必要となる場合、設定ファイルを参照して、遠隔処理装置に対して、欠損したワークフローコンポーネントの実行結果を要求するワークフロー要求処理部４２５と、その実行結果に基づき、ワークフローコンポーネントを順次実行するワークフロー開始処理部とを備える。【選択図】図７
2010055610.tif 000002
【特許請求の範囲】
【請求項１】
他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置であって、
上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、
上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求手段と、
上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求手段によって要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行手段と、を備えることを特徴とする情報処理装置。
【請求項２】
上記記憶装置は、上記他の情報処理装置において上記欠損ソフトウェアモジュールを実行する際に利用する入力情報を設定するための第１プロパティと、上記他の情報処理装置から受け付けた上記欠損ソフトウェアモジュールの実行結果である出力情報を設定するための第２プロパティとを含む設定ファイルを記憶しており、
上記要求手段は、上記第１プロパティに設定された入力情報に基づき、上記欠損ソフトウェアモジュールの実行を他の情報処理装置に指示し、
上記処理実行手段は、上記第２プロパティに設定された出力情報に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記欠損ソフトウェアモジュールを実行するためのライセンスが上記他の情報処理装置に付与されている場合、上記第１プロパティに設定された入力情報には、このライセンスに対するライセンスキーが含まれており、
上記要求手段は、上記第１プロパティに設定された入力情報に基づき、上記欠損ソフトウェアモジュールの実行を他の情報処理装置に指示するとともに、上記ライセンスキーを送信することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
他の情報処理装置から受け付けたソフトウェアモジュールの実行結果の要求に応じて、上記記憶装置に記憶しているソフトウェアモジュールを読み出し実行する要求処理実行手段をさらに備え、
上記要求処理実行手段は、上記特定のソフトウェアモジュールの実行結果を上記他の情報処理装置に対して出力することを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置の制御方法であって、
上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、
上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求ステップと、
上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求ステップにおいて要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行ステップと、を含むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明では、分散型ワークフローアーキテクチャに関し、いくつかの実施形態により説明する。本発明は、特に、プロキシワークフローコンポーネントの実行を介してワークフローコンポーネントを分散させて実行処理させるものに関する。
【背景技術】
【０００２】
近年、ネットワークを通じて複数の装置間で情報の送受信を行う機会が多くなっている。そこで、装置内部の処理を効率的に実行しながら、他の装置との通信を確立させることが要求されるようになってきている。例えば、特許文献１には、一方の計算機から他方の計算機に所定の手続きを依頼する場合、プロセスオブジェクトに代理して通信者オブジェクトがメッセージ通信を行うプロセス間通信処理装置が開示されている。このプロセス間通信処理装置は、通信者オブジェクトにメッセージ通信を行わせることができるため、プロセスオブジェクトは、通信以外の別の処理を実行することができ、装置内部での処理効率を向上させることができる。
【０００３】
また、複数の装置間で情報を共有し、該情報の管理をこの複数の装置間で行ったり、該情報に基づく処理を複数の装置で分散して行ったりするシステムも開発されている。例えば、特許文献２では、分散されたプロセスを並列に実行する分散型ホストと、複数の分散型ホストの動作を制御する制御ホストとを備えた並列分散処理システムが開示されている。
【０００４】
また、完成した文書などの最終品、またはその中間品の共同生成と共同管理との両方を支援するものとして、ワークフロー自動生成機が開発されている。例えば、このワークフロー自動生成機により、ユーザは、オンライン形式などを利用するワークフローモデルやワークフローコンポーネントを生成することができる。そこで、これらのユーザを含め、その他のユーザも、中間品の取り扱いに関する一貫した管理および／または実施のためにワークフロー自動生成機を使用することができる。また、ワークフロー自動生成機が備えるワークフロー生成エンジンは、ワークフロー自動プログラム方式により、１以上の処理をワークフローコンポーネントとして実現できる開発ツールである。このワークフローコンポーネントには、複数の手順、各手順のステップ、および各ステップに関する規則が含まれる。
【０００５】
一般的にワークフローコンポーネントは、再利用可能なソフトウェアモジュールとして提供される。そして、再利用可能なソフトウェアモジュールをワークフローコンポーネントとしてパッケージ化する。なお、このパッケージ化される各ワークフローコンポーネントは、ワークフロー作成者が柔軟にカスタマイズできるようにいくつかのプロパティ設定を提供することができるようになっている。また、ワークフローのフレームワークにおいて、ワークフローを構成するためのメカニズムを提供している。一般的には、情報の共用や、フロー制御を容易に管理できるようにするため、全てのワークフローコンポーネントを、ワークフローホストなどの同一マシン上で実行している。また、ワークフローコンポーネントは、作業を連携させるためのライブラリや、インターフェースと連動するプログラム言語によって実装できる。このようなライブラリやインターフェースの例としてはマイクロソフト（登録商標）社製の「ＷＩＮＤＯＷＳ（登録商標）ＷＯＲＫＦＬＯＷ  ＦＯＵＮＤＡＴＩＯＮ」が挙げられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−２７１７２３号公報（１９９５年１０月２０日公開）
【特許文献２】特開平１０−９７４３７号公報（１９９８年４月１４日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述のような従来技術は、複数のソフトウェアモジュールの組み合わせを実行する装置を複数備えたシステムにおける任意の装置で、ユーザに負荷をかけず、多様なソフトウェアの組み合わせを実行することができないという問題がある。
【０００８】
具体的には、特許文献２に開示されたシステムでは、処理の入力指示を行う装置は、常に制御ホストＡに固定されてしまうという問題がある。つまり、システムに備えられた任意の装置において、ユーザからの入力指示を受け付け、多様なソフトウェアの組み合わせを実行することができない。
【０００９】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができる情報処理装置、情報処理装置の制御方法、情報処理装置の制御プログラム、情報処理装置の制御プログラムを記録した記録媒体を提供することにある。
【課題を解決するための手段】
【００１０】
本発明に係る情報処理装置は、上記した課題を解決するために、他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置であって、上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求手段と、上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求手段によって要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行手段と、を備えることを特徴とする。
【００１１】
上記した構成によると、記憶装置に装置特定情報を記憶しているため、特定の処理を実施するために、記憶装置に記憶していないソフトウェアモジュール、すなわち欠損ソフトウェアモジュールの実行が必要となる場合、この欠損ソフトウェアモジュールを保持する他の情報処理装置を特定することができる。
【００１２】
また、要求手段を備えるため、装置特定情報に基づき特定した他の情報処理装置に対して上記欠損ソフトウェアモジュールの実行を要求し、その実行結果を得ることができる。また処理実行手段を備えるため、この取得した実行結果に基づき、ソフトウェアモジュールの機能と欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、ソフトウェアモジュールを実行することができる。
【００１３】
このように、欠損ソフトウェアモジュールがある場合であっても他の処理装置から該欠損ソフトウェアモジュールの実行結果を取得し、特定の処理を実施することができる。したがって、本発明に係る情報処理装置は、必要に応じて他の情報処理装置が保持するソフトウェアモジュールの実行結果を利用することができるため、多様なソフトウェアモジュールの組み合わせを実現することができる。
【００１４】
さらに、要求手段によって当該情報処理装置において欠損しているソフトウェアモジュールの実行結果を他の情報処理装置から自動的に取得することができるため、欠損するソフトウェアモジュールの取得先をユーザが指示する等の処理行う必要がない。
【００１５】
よって、本発明の情報処理装置は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができるという効果を奏する。
【００１６】
また、本発明に係る情報処理装置は、上記した構成において、上記記憶装置は、上記他の情報処理装置において上記欠損ソフトウェアモジュールを実行する際に利用する入力情報を設定するための第１プロパティと、上記他の情報処理装置から受け付けた上記欠損ソフトウェアモジュールの実行結果である出力情報を設定するための第２プロパティとを含む設定ファイルを記憶しており、上記要求手段は、上記第１プロパティに設定された入力情報に基づき、上記欠損ソフトウェアモジュールの実行を他の情報処理装置に指示し、上記処理実行手段は、上記第２プロパティに設定された出力情報に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行するように構成されていてもよい。
【００１７】
また、本発明に係る情報処理装置は、上記した構成において上記欠損ソフトウェアモジュールを実行するためのライセンスが上記他の情報処理装置に付与されている場合、上記第１プロパティに設定された入力情報には、このライセンスに対するライセンスキーが含まれており、上記要求手段は、上記第１プロパティに設定された入力情報に基づき、上記欠損ソフトウェアモジュールの実行を他の情報処理装置に指示するとともに、上記ライセンスキーを送信するように構成されていてもよい。
【００１８】
上記した構成によると、第１プロパティに設定する入力情報にライセンスキーが含まれており、他の情報処理装置に欠損ソフトウェアモジュールの実行を要求する際に要求手段がこのライセンスキーを該他の情報処理装置に送信することができる。このように、本発明に係る情報処理装置は、他の情報処理装置に欠損ソフトウェアモジュールの実行時に求められるライセンスキーの入力を行うことが可能となる。
【００１９】
よって、欠損ソフトウェアモジュールの使用ライセンスが他の情報処理装置のみに与えられている場合であっても、本発明に係る情報処理装置は、ライセンスキーを送信することで、この欠損ソフトウェアモジュールの実行結果を他の情報処理装置を通じて取得できる。
【００２０】
また、本発明に係る情報処理装置は、上記した構成において、他の情報処理装置から受け付けたソフトウェアモジュールの実行結果の要求に応じて、上記記憶装置に記憶しているソフトウェアモジュールを読み出し実行する要求処理実行手段をさらに備え、上記要求処理実行手段は、上記特定のソフトウェアモジュールの実行結果を上記他の情報処理装置に対して出力するように構成されていてもよい。
【００２１】
上記した構成によると、要求処理実行手段を備えているため、他の情報処理装置から、特定のソフトウェアモジュールの実行結果の要求を受け付けた場合、該要求された特定のソフトウェアモジュールの実行結果を該他の情報処理装置に出力することができる。
【００２２】
このため、特定の処理を実施するにあたり、他の情報処理装置にて実行すべきソフトウェアモジュールが欠損している場合、本発明の情報処理装置は、この欠損しているソフトウェアモジュールの実行結果を提供することができる。
【００２３】
本発明に係る情報処理装置の制御方法は、上記した課題を解決するために、他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置の制御方法であって、上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求ステップと、上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求ステップにおいて要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行ステップと、を含むことを特徴とする。
【００２４】
上記した方法によると、記憶装置に装置特定情報を記憶しているため、特定の処理を実施するために、記憶装置に記憶していないソフトウェアモジュール、すなわち欠損ソフトウェアモジュールの実行が必要となる場合、この欠損ソフトウェアモジュールを保持する他の情報処理装置を特定することができる。
【００２５】
また、要求ステップを含むため、装置特定情報に基づき特定した他の情報処理装置に対して上記欠損ソフトウェアモジュールの実行を要求し、その実行結果を得ることができる。また、処理実行ステップを含むため、この取得した実行結果に基づき、ソフトウェアモジュールの機能と欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、ソフトウェアモジュールを実行することができる。
【００２６】
このように、欠損ソフトウェアモジュールがある場合であっても他の処理装置から該欠損ソフトウェアモジュールの実行結果を取得し、特定の処理を実施することができる。したがって、本発明に係る情報処理装置の制御方法は、必要に応じて他の情報処理装置が保持するソフトウェアモジュールの実行結果を利用することができるため、多様なソフトウェアモジュールの組み合わせを実現することができる。
【００２７】
さらに、要求ステップにおいて当該情報処理装置において欠損しているソフトウェアモジュールの実行結果を他の情報処理装置から自動的に取得することができるため、欠損ソフトウェアモジュールの取得先をユーザが指示する等の処理行う必要がない。
【００２８】
よって、本発明の情報処理装置の制御方法は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができるという効果を奏する。
【発明の効果】
【００２９】
本発明に係る情報処理装置は、以上のように、他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置であって、上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求手段と、上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求手段によって要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行手段と、を備えることを特徴とする。
【００３０】
よって、本発明の情報処理装置は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができるという効果を奏する。
【００３１】
本発明に係る情報処理装置の制御方法は、以上のように、他の情報処理装置と通信可能に接続されるとともに、ソフトウェアモジュールを記憶する記憶装置を備え、該ソフトウェアモジュールを実行し、特定の処理を実施する情報処理装置の制御方法であって、上記記憶装置は、上記ソフトウェアモジュール以外のソフトウェアモジュールである欠損ソフトウェアモジュールを保持している他の情報処理装置を特定するための情報である装置特定情報をさらに記憶しており、上記装置特定情報を参照して、上記他の情報処理装置に対して、上記欠損ソフトウェアモジュールの実行結果を要求する要求ステップと、上記ソフトウェアモジュールの機能と上記欠損ソフトウェアモジュールの機能との組み合わせに相当する特定の処理が実現されるように、上記要求ステップにおいて要求した欠損ソフトウェアモジュールの実行結果に基づき、上記記憶装置に記憶したソフトウェアモジュールを実行する処理実行ステップと、を含むことを特徴とする。
【００３２】
よって、本発明の情報処理装置の制御方法は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができるという効果を奏する。
【図面の簡単な説明】
【００３３】
【図１】本発明の実施形態を示すものであり、分散型システムが備える処理装置の要部構成を示すブロック図である。
【図２】本発明の実施形態を示すものであり、処理装置にて実施するワークフローの一例を示す図である。
【図３】本発明の実施形態を示すものであり、処理装置にて実施するワークフローの一例を示す図である。
【図４】本実施の形態に係る処理装置によって形成される分散型システムを示す図である。
【図５】本実施の形態に係るプロキシコンポーネントの設定ファイルの一例を示す図である。
【図６】本実施の形態に係る通信プロトコルの一例を示す図である。
【図７】本発明の実施形態に係る起点処理装置の要部構成を示す機能ブロック図である。
【図８】本発明の実施形態に係る遠隔処理装置の要部構成を示す機能ブロック図である。
【図９】本発明の実施形態を示すものであり、起点処理装置が備えるワークフローホストにおいて実行される起点ワークフロー処理の一例を示す図である。
【図１０】本発明の実施形態を示すものであり、遠隔処理装置が備えるワークフローホストおよびスタブワークフロー部において実行される処理の一例を示す図である。
【図１１】本発明の実施形態に係る欠損したワークフローコンポーネントをプロキシコンポーネントの実行によって補って処理するプロセスの一例を示す図である。
【発明を実施するための形態】
【００３４】
本発明の分散型システム１００に関する実施の一形態について図１〜図１１に基づいて説明すれば以下のとおりである。
【００３５】
図１では、各処理装置１１０、１２０、１３０を有する分散型システム１００を示している。この分散型システム１００は、処理装置１１０、１２０、１３０のうちの少なくとも１つの処理装置で所定のワークフロー処理を実行することができるシステムである。なお、本明細書中においてワークフローという文言は、設定された複数の再利用可能なソフトウェアモジュールの組の実行処理を、マシン（処理装置１１０、１２０，１３０のいずれか）にて行うことができるものを意味する。すなわち、ワークフローとは、ソフトウェアを複数のモジュールとし、複数モジュールの組み合わせをマシン（処理装置１１０、１２０、１３０のいずれか）で実行することにより実現できる特定の処理である。より具体的には、複数のモジュールの組み合わせとは、例えば、図２に示すように、「test job」という処理を実施するにあたり実行されるプログラムの組み合わせ（「sub process_1, sub process_2, sub process_3」等)である。また、分散型システム１００を利用して実行するワークフローを分散型ワークフローと称する。
【００３６】
また、分散型システム１００にてワークフローを実行する場合、各ソフトウェアモジュールを各処理装置１１０、１２０、１３０に分散して保持させ、これらソフトウェアモジュールを複数の装置間で共有できるようになっている。このため、各処理装置１１０、１２０、１３０のいずれかにおいて「test job」というワークフローを実施する際に、図３に示すように、例えば、一部のプログラム（「sub process_2」）が欠損していたとしても、この欠損しているプログラムによる実行結果を他の処理装置から受け取ることができる。そして、この受け取った実行結果を使ってワークフローを完了させることができる。
【００３７】
なお、ユーザからの入力指示に応じてワークフローを実施する処理装置を起点処理装置とし、欠損しているプログラムの実行結果を起点処理装置から要求される装置を分散型処理装置もしくは遠隔処理装置と称する。
【００３８】
ここでまず、本実施の形態に係る分散型システム１００の詳細について、以下に図４を参照して説明する。
【００３９】
本実施の形態に係る分散型システム１００は、上述したように、処理装置１１０、１２０、１３０を備えてなる構成である。なお、分散型システム１００が備える処理装置の数はこの３つに限定されるものではなく３つよりも多くてもよい。分散型システム１００が備える処理装置の数が多くなればなるほど、多様なプログラムの組み合わせが利用可能となり、多様な処理を実現するワークフローを実行できる。
【００４０】
図４に示すように、各処理装置１１０、１２０、１３０は、分散型ホストプログラム１１１、１２１、１３１と、複数のプログラム（ソフトウェアモジュール）から構成される一組のワークフローコンポーネント１１２、１２２、１３２と、通信プロトコル１１３、１２３、１３３とを記憶する記憶装置１０、２０、３０を有している。また、各処理装置１１０、１２０、１３０は、さらに中央演算処理装置（ＣＰＵ）１１４、１２４、１３４およびアドレス可能なメモリ１１５、１２５、１３５を有している。記憶装置１０、２０、３０に記憶される分散型ホストプログラム１１１、１２１、１３１には、各処理装置１１０、１２０、１３０におけるオペレーティングシステムの制御下で動作可能なアプリケーションプログラムとして、プロキシコンポーネントが含まれている。このプロキシコンポーネントは、具体的には、特定のワークフローを実施するにあたり、欠損しているソフトウェアモジュールが存在する場合、該ソフトウェアモジュールを保持する他の処理装置に対して、そのソフトウェアモジュールの実行結果を要求するプログラムである。なお、このアプリケーションプログラムは、例えば、ハードディスクドライブ等の大容量記憶装置などのコンピュータ読取り可能な媒体により実現される記憶装置１０、２０、３０に記憶されており、該媒体から読み出し実行することで特定の処理を実現できる。大容量記憶装置としてここで示すものとしては、上述したハードディスクドライブに加えＣＤ−ＲＯＭドライブなどが挙げられる。しかしながら、コンピュータ読取り可能な記録媒体は、これらに限定されるものではなく、コンピュータによってアクセスできるあらゆる利用可能な記録媒体として当業者により認められるものであればよい。記憶装置１０、２０、３０に記憶されるワークフローコンポーネント１１２、１２２、１３２それぞれは、再利用可能な複数のソフトウェアモジュールから構成されており、これらソフトウェアモジュールは、動的リンクライブラリ（ＤＬＬ）でパッケージ化されている。そして、いくつかの実施形態では、必要に応じて、再利用可能なソフトウェアモジュールを、メモリ１１５、１２５、１３５にロードすればいいように、該ソフトウェアモジュールは各処理装置１１０、１２０、１３０で実行可能な処理のランタイムとして関連付けられている。つまり、このワークフローコンポーネント１１２、１２２、１３２は、特定のワークフローを実施するための、複数のソフトウェアモジュールの集合である。
【００４１】
また、図４では各処理装置１１０、１２０、１３０は、ネットワーク１４０または通信バスを介して相互ネットワークを確立するネットワークリンク１４１、１４２、１４３を有するものとして図示されている。各ネットワークリンク１４１、１４２、１４３としては、ケーブル、無線リンクなどが挙げられる。この各ネットワークリンク１４１、１４２、１４３は、ネットワーク１４０内で、あるいは場合によってはネットワーク１４０の向こう側に接続された装置との間で通信可能となるように接続を確立させるための手段である。この接続の確立は、ＣＰＵ１１４、１２０、１３０からの制御指示に応じて実行される。なお、処理装置１１０、１２０、１３０を備えた分散型システム１００をピアツーピアにより実施する場合、ネットワーク１４０またはバスは不要となる。
【００４２】
ここで、分散型ホストプログラム１１１、１２１、１３１の詳細について図５を参照して説明する。上述したように、分散型ホストプログラム１１１、１２１、１３１は、１以上のプロキシコンポーネントを含んでいる。
【００４３】
また、各プロキシコンポーネントにはそれぞれ対応する設定ファイルが設けられており、該設定ファイルによって各プロキシコンポーネントに対する各種設定を行うことができる。図５では、プロキシコンポーネントの設定ファイル２００について、その設定ファイル２００に含まれるいくつかの内容からなる構成を図示した一例を示している。分散型システム１００を利用して実施する分散型ワークフローに参加する各処理装置１１０、１２０、１３０は、ネットワーク１４０上における位置、あるいは、ユーアールエル（ＵＲＬ）などインターネットでアクセス可能な唯一のファイルアドレスにより識別されている。分散型ワークフローの実行の準備段階で、処理装置１１０、１２０、１３０は、特定の設定ファイル名をワークフローコンポーネントの設定ファイルに付す。また、分散型ホストプログラム１１１、１２１、１３１に含まれるプロキシコンポーネントの設定ファイルにも特定の設定ファイル名が付されている。すなわち、プロキシコンポーネントの設定ファイルは図５に示されるようになる。また、この図５に示すプロキシコンポーネントの設定ファイル２００には、例えば特定の設定ファイル名と関連付けられた分散型ワークフローホストのＵＲＬ２０１などを利用して行う分散型通信のための命令（コマンド）も含まれている。ここで、分散型ワークフローホストとは、ワークフローコンポーネント１１２、１２２、１３２において欠損しているソフトウェアモジュールの実行を当該処理装置の代わりに実行する他の処理装置である。また、分散型ワークフローホストのＵＲＬとは、この他の処理装置のネットワーク１４０上での位置を示す情報である。また、上記分散型通信のための命令（コマンド）とは、ＵＲＬにより特定された他の処理装置に対して欠損したワークフローコンポーネント（ソフトウェアモジュール）の実行結果を要求するための制御信号である。ところで、ワークフロープロセスに沿った特定の状態で、１以上のワークフローコンポーネントを実行するためには、所望の情報伝送の受信が必要となる。また、適切な１以上のワークフローコンポーネントを実行するステップを要求するためには、効率的にこの受信の初期化が必要となる。そこで、図５に示すプロキシコンポーネントの設定ファイル２００には、プロキシコンポーネントが、遠隔処理装置（ネットワーク１４０を介して接続された他の処理装置）との分散型通信の実行準備のための命令を含んでいる。また、この命令には、要求した処理に関するワークフローコンポーネントに適応したプロパティと、その値とを含んでいる。すなわち、要求した処理に関するワークフローコンポーネントに対する入力情報を提供するためのプロパティ２０２を含んでいる。このワークフローコンポーネントに適したプロパティと、その値とは、ワークフローの機能に関する特徴（特性）を規定するものである。例えばワークフロー機能が画像処理機能の場合、プロパティとその値とは、画像処理特徴に関するノイズ低減パラメータに関するものとなる。また、分散型通信の起点となる処理装置（以後、起点処理装置と称する）は、ワークフロープロセス全体を継続するために特定のプロパティに対する出力値を、ネットワーク１４０を介して接続された他の処理装置に要求し、その後、呼び出されたワークフローコンポーネントの実行を効果的に初期化するために、この出力値を受信する。図５に示すプロキシコンポーネントの設定ファイル２００では、ワークフローコンポーネントにおける１以上のソフトウェアモジュールに適応したプロパティと、そのプロパティ値（出力情報を提供するためのプロパティ２０３）とを含む分散型通信の実行準備のための命令も設定されている。なお、この出力情報には、次のワークフローコンポーネントに対する入力で用いられる結果が含まれる。
【００４４】
上記した入力情報および入力情報を提供するためのプロパティ２０２と、出力情報および出力情報を提供するためのプロパティ２０３との関係をより具体的に説明すると以下のとおりとなる。例えば、他の処理装置（遠隔処理装置）が起点処理装置において欠損するワークフローコンポーネントとして特定の画像処理を実行するプログラムを有しているとする。そこで、起点処理装置がこの欠損ワークフローコンポーネントの実行を所望するとする。このような状況下で、起点処理装置から遠隔処理装置に対する入力情報として画像処理対象となる画像データと、そのプロパティ２０２の値として、この画像データが保存されているメモリのアドレスがそれぞれ入力される。一方、遠隔処理装置は入力情報として入力された画像データに関し、プロパティ２０２の値として設定されているメモリアドレスを参照して、該画像データを読み出す。そして、読み出した画像データに対して特定の処理を施し、自信が保持する記憶装置に格納する。
【００４５】
このように遠隔処理装置において画像データに対し特定の画像処理が施されると、起点処理装置は、該遠隔処理装置からの出力情報として特定の画像処理が施された画像データを、そのプロパティ２０３の値として処理済みの画像データが記憶されているメモリのアドレスをそれぞれ受け付ける。これにより、起点処理装置は、遠隔処理装置が保持するメモリから処理済の画像データを読み出し、該処理済みの画像データを取得することができる。
【００４６】
次に、分散型システム１００において、ネットワーク１４０を介して他の処理装置との通信を確立するために利用する通信プロトコルについて説明する。図６は、いくつかのコンテンツからなる、本実施の形態に係る通信プロトコル３００の構成例を図示するものである。この通信プロトコル３００に応じて、遠隔処理装置（すなわち、分散型処理装置）は、ワークフローコンポーネントとプロキシコンポーネントとを適切に連結するために、プロキシコンポーネントの設定ファイル２００を識別する情報を起点処理装置から受信する。一方、起点処理装置が、分散型通信にて相互に関連する情報を遠隔処理装置から受信する。このため、通信プロトコルは、図６において設定ファイル２００を識別するための設定ファイル名３０１を含むものとして示されている。また、分散型処理で実行する命令において、起点処理装置が最小のビジー状態となるように、また、ロードするデータ量が最小となるように、あるいは複数の分散型処理装置候補のうちで最も効果的なプロセッサとなるようにするために、特定の分散型ホスト状態情報３０２を、通信プロトコル３００の一部に組み込むことができる。例えば、ＤＬＬのメンバなど、１以上のランタイムのメンバ（構成要素）またはコンポーネントを、遠隔処理装置でのローディング用のランタイムコンポーネントとして利用できない場合、通信プロトコル３００において、遠隔処理装置の外部にある１以上のワークフローランタイムコンポーネントのＵＲＬ、または他のネットワークアドレスを、ワークフローランタイムコンポーネントのＵＲＬ３０３として含めることができる。これにより、遠隔処理装置におけるロード段階で、識別したランタイムコンポーネントを当該遠隔処理装置がダウンロードし、その内包を容易とすることができる。分散型処理装置、すなわち遠隔処理装置から起点処理装置への情報伝送では、全ワークフローの次の処理に必要な出力がプロキシコンポーネントとともに伝送される。なお、この情報伝送では、送信側の遠隔処理装置、すなわち分散型処理装置によって実行された、１以上のワークフローコンポーネントによって生成されたデータが格納されているネットワーク上の位置に関する情報が含まれている。したがって、通信プロトコル３００には、図６で示すような、プロパティおよびそのプロパティの値が含まれる。なお、状況に応じてはデータファイルのネットワーク上での位置を特定するために、プロキシコンポーネントの出力３０４の出力位置を示すものとして、プロキシコンポーネントに応じた出力の一部をも含んでもよい。
【００４７】
上記では、複数の処理装置により構成された分散型システム１００の構成および、この分散型システム１００で利用されるプロキシコンポーネントの設定ファイル２００、通信プロトコル３００のデータ構造について説明した。次に、この分散型システム１００を構成する各処理装置１１０、１２０、１３０の構成について説明する。なお、便宜上、処理装置１１０の構成を例に挙げて図１を参照して説明するものとする。
【００４８】
図１は、本発明の実施形態を示すものであり、処理装置１１０の概略構成を説明するブロック図である。処理装置１１０は、図１に示すように、主制御部７、出力部８、入力部９、および記憶装置１０を備えてなる構成である。
【００４９】
出力部８は、処理装置１１０によって処理された結果を出力するものであり、例えば表示装置やプリンタ等によって実現できる。
【００５０】
入力部９は、ユーザからの指示を受け付けるものであり、例えば、キーボード、マウス、タッチパネル等によって実現できる。
【００５１】
主制御部７は、処理装置１１０が備える各部の各種制御を行うものであり、例えば、ＣＰＵ１１４によって実現できる。また、主制御部７は、機能ブロックとして、ワークフロー実行部７１および通信制御部７２を備えている。これら機能ブロックは、例えばＣＰＵ１１４が記憶装置１０に記憶された不図示のプログラムをメモリ１１５に読み出し実行することで実現できる。
【００５２】
ここで、主制御部７が備えるワークフロー実行部７１および通信制御部７２について説明する。
【００５３】
ワークフロー実行部７１は、記憶装置１０に記憶されたワークフローコンポーネント１１２および分散型ホストプログラム１１１を読み出し、分散型システム１００におけるワークフロー処理を実施するためのものである。例えば、ワークフローコンポーネント１１２が、図２に示すようなソフトウェアモジュールの集合（subprocess_1, subprocess_2, subprocess_3)により構成される場合、ワークフロー実行部７１は、これらのワークフロソフトウェアモジュールを順次実行し、ワークフロー処理を完了させる。一方、図３に示すように、ソフトウェアモジュールの集合において一部のソフトウェアモジュールが欠損している場合、ワークフロー実行部７１は、記憶装置１０から、この欠損するソフトウェアモジュールに対応する分散型ホストプログラムを読み出す。つまり、ワークフロー実行部７１は、欠損しているソフトウェアモジュールに対応するプロキシコンポーネントを含む分散型ホストプログラム１１１を読み出す。そして、この欠損したソフトウェアモジュールを保持する他の処理装置（処理装置１２０または処理装置１３０）に対して該プログラムの実行結果を要求する処理を行うように通信制御部７２に指示する。
【００５４】
通信制御部７２は、ワークフロー実行部７１からの制御指示に応じて、通信プロトコル１１３を読み出し、他の処理装置との通信を確立させるものである。
【００５５】
（ワークフローシステムの実施例）
次に、上記分散型システム１００により実現されるワークフローシステム４００の実施例について図７および図８を参照して説明する。
【００５６】
図７および図８を一まとめにして本発明に係るワークフローシステム４００全体の実施例を図示する。このワークフローシステム４００は、起点処理装置４１０と、遠隔処理装置４５０とを備えており、これらは、ネットワークリンク、ローカルエリアネットワーク、あるいはインターネットなどの通信媒体４４０を介して互いに通信している。なお、この起点処理装置４１０および遠隔処理装置４５０は、処理装置１１０、１２０、１３０のいずれか１つによって実現される。まず、図７、９を参照して起点処理装置４１０の構成について説明する。起点処理装置４１０は、図７に示すように、ワークフローホスト４２０および通信プロトコル４２２に基づき通信制御を行う通信制御部４２３を有する主制御部４１３と、ワークフローを実行するために必要なソフトウェアである起点ワークフロー４２１、および遠隔処理装置４５０との通信を確立するための通信プロトコル４２２を記憶した記憶装置４１４とを備えてなる構成である。
【００５７】
また、起点処理装置４１０は、ユーザからの入力を受け付けるための入力部４１２、ワークフロー処理を実行した結果を出力するための出力部４１１をさらに備えている。つまり、起点処理装置４１０が備える出力部４１１、入力部４１２、主制御部４１３、および記憶装置４１４は、図１に示す処理装置１１０が備える出力部８、入力部９、主制御部７、および記憶装置１０に対応する。また、主制御部４１３が有するワークフローホスト４２０は、図１に示すワークフロー実行部７１に、通信制御部４２３は、図１に示す通信制御部７２に対応する。
【００５８】
記憶装置４１４は、起点ワークフロー４２１および通信プロトコル４２２を記憶している。記憶装置４１４に記憶される起点ワークフロー４２１は、ワークフローコンポーネント４３０、プロキシコンポーネント４３３を含んでいる。ワークフローコンポーネント４３０は、ソフトウェアモジュールとして１以上のローカルワークフローコンポーネント（第一ローカルワークフローコンポーネント４３１、第二ローカルワークフローコンポーネント４３２）を含んでいる。なお、このワークフローコンポーネント４３０は、図１に示す処理装置１１０の記憶装置１０に記憶されるワークフローコンポーネント１１２に対応する。
【００５９】
プロキシコンポーネント４３３は、１以上の中間ワークフローコンポーネント（第一中間ワークフローコンポーネント４３４、第二中間ワークフローコンポーネント４３５）を含んでいる。なお、このプロキシコンポーネント４３３は、図１に示す処理装置１１０の記憶装置１０に記憶される分散型ホストプログラム１１１に対応する。また、図９に示すようにプロキシコンポーネント４３３は、第一ローカルワークフローコンポーネント４３１と第二ローカルワークフローコンポーネント４３２との間に組み込まれており、この間に実行すべきワークフローコンポーネントの代替処理を担うものである。なお図９は、ワークフローホスト４２０において実行される起点ワークフローの処理の一例を概念的に示す図である。このため、図９では、出力部４１１および入力部４１２については省略して図示している。
【００６０】
また、ワークフローホスト４２０は、機能ブロックとしてワークフロー開始処理部４２４およびワークフロー要求処理部４２５を備えている。
【００６１】
ワークフロー開始処理部４２４は、起点ワークフロー４２１を実行するために、ワークフローコンポーネント４３０（第一ローカルワークフローコンポーネント４３１および第二ローカルワークフローコンポーネント４３２）を記憶装置４１４から読み出し実行するものである。起点ワークフロー４２１を実行するにあたり、記憶装置４１４に記憶されていないワークフローコンポーネントが存在する場合、ワークフロー開始処理部４２４はこの記憶装置４１４に記憶されていないワークフローコンポーネントの実行結果を遠隔処理装置４５０に要求するようにワークフロー要求処理部４２５に指示する。また、ワークフロー開始処理部４２４は、遠隔処理装置４５０にて実行するワークフローコンポーネントに対する入力情報を、設定ファイル２００のプロパティ（入力情報を提供するためのプロパティ２０２）に設定する。
【００６２】
ワークフロー要求処理部４２５は、ワークフロー開始処理部４２４からの指示に応じて、特定のプロキシコンポーネント４３３（第一中間ワークフローコンポーネント４３４、第二中間ワークフローコンポーネント４３５）に含まれる設定ファイル２００を参照して、遠隔処理装置４５０にワークフローコンポーネントの実行結果を要求するものである。設定ファイル２００には、ワークフローコンポーネントの実行結果を要求する遠隔処理装置４５０のネットワーク上におけるＵＲＬ（分散型ワークフローホストのＵＲＬ２０１）が含まれている。このため、ワークフロー要求処理部４２５は、この分散型ワークフローホストのＵＲＬ２０１を参照して、ワークフローコンポーネントの実行結果を要求する遠隔処理装置４５０を決定することができる。そして、ワークフロー要求処理部４２５は、決定した遠隔処理装置４５０に対して、設定ファイル２００に設定されているプロパティ２０２の値を含めて、ワークフローコンポーネントの実行結果を要求するコマンドを送信する。
【００６３】
また、ワークフロー要求処理部４２５は、遠隔処理装置４５０に対して要求した上記ワークフローコンポーネントの実行結果を受信すると、その実行結果の値を設定ファイル２００のプロパティ（出力情報を提供するためのプロパティ２０３）に設定する。ワークフロー開始処理部４２４は、設定ファイル２００に設定されているプロパティ２０３の値に基づき、起点ワークフロー４２１の実行を継続する。つまり、ワークフロー開始処理部４２４は、プロパティ２０３の値を第二ローカルワークフローコンポーネント４３２に入力し、この第二ローカルワークフローコンポーネントを実行する。
【００６４】
このように、起点処理装置４１０は、記憶装置４１４に記憶されていないソフトウェアモジュールが存在する場合であっても遠隔処理装置４５０からこのソフトウェアモジュールの実行結果を取得することができる。このため、起点処理装置４１０は、複数のソフトウェアモジュールの組み合わせ（ワークフローコンポーネン４３０）を実行し、起点ワークフロー４２１を実施することができる。つまり、起点処理装置４１０は、必要に応じて遠隔処理装置４５０が保持するソフトウェアモジュール（ワークフローコンポーネント）の実行結果を利用することができるため、多様なソフトウェアモジュールの組み合わせを実現することができる。つまり、起点処理装置４１０は、多様な処理を実施することができる。
【００６５】
さらに、ワークフロー要求処理部４２５によって起点処理装置４１０において欠損しているソフトウェアモジュール（ワークフローコンポーネント）の実行結果を遠隔処理装置４５０から自動的に取得することができる。このため、欠損するソフトウェアモジュールを特定し、その取得先をユーザが指示する等の処理行う必要がない。
【００６６】
よって、起点処理装置４１０は、ユーザに特段の負担をかけずに多様なソフトウェアモジュールの組み合わせを実現し、多様な処理を実施することができる。
【００６７】
また、上記したワークフローシステム４００では、起点ワークフロー４２１を実行する起点処理装置４１０と、起点処理装置４１０において欠損しているソフトウェアモジュール（ワークフローコンポーネント）を実行する遠隔処理装置４５０とを区別して説明した。しかしながら、起点処理装置４１０が、他の処理装置にとっての遠隔処理装置として機能したり、遠隔処理装置４５０が起点処理装置として機能したりしてもよい。つまり、上記では説明の便宜上、処理装置１１０、１２０、１３０のいずれか１つを起点処理装置４１０とし、処理装置１１０、１２０、１３０のいずれか１つを遠隔処理装置４５０として説明した。しかしながら、処理装置１１０、１２０、１３０は、起点処理装置４１０として機能する場合もあるし、遠隔処理装置４５０として機能する場合もある。このため、処理装置１１０、１２０、１３０は、起点処理装置４１０が備える各部と遠隔処理装置４５０が備える各部とを有するように構成される。
【００６８】
次に図８、図１０を参照して起点処理装置４１０と通信を確立する遠隔処理装置４５０の詳細な構成を示す。この遠隔処理装置４５０と起点処理装置４１０との間の通信を、矢印で示し、この矢印はネットワークリンク（通信媒体４４０）を介している。遠隔処理装置４５０は、ワークフローホスト４６２、通信制御部４６０、スタブワークフロー部４９０等を実行させる主制御部４５３と、通信プロトコル４６１および１以上の遠隔ワークフローコンポーネント（第一遠隔ワークフローコンポーネント４９１、第二遠隔ワークフローコンポーネント４９２）を記憶する記憶装置４５４と、各種情報を出力するための出力部４５１と、ユーザからの入力を受け付けるための入力部４５２とを備えてなる構成である。主制御部４５３が備える通信制御部４６０は、通信プロトコル４６１に基づき起点処理装置４１０との通信を制御する。また、スタブワークフロー部４９０は、１以上の遠隔ワークフローコンポーネントを実行する。また、ワークフローホスト４６２は、スタブワークフロー部４９０に対する各種制御を行う。スタブワークフロー部４９０は、第一遠隔ワークフローコンポーネント４９１と第二遠隔ワークフローコンポーネント４９２とをそれぞれ実行する。そして、その実行結果は、起点処理装置４１０が有すプロキシコンポーネント４３３（第一中間ワークフローコンポーネント４３４、第二中間ワークフローコンポーネント４３５）（図７参照）に作用する。
【００６９】
なお、遠隔処理装置４５０が備える出力部４５１、入力部４５２、主制御部４５３、および記憶装置４５４が、図１に示す処理装置１１０の出力部８、入力部９、主制御部７、および記憶装置１０に対応する。また、主制御部４５３が備える機能ブロックである通信制御部４６０が図１に示す処理装置１１０の通信制御部７２に対応する。また、主制御部４５３が備える機能ブロックであるワークフローホスト４６２およびスタブワークフロー部４９０が図１に示す処理装置１１０のワークフロー実行部７１に対応する。また、記憶装置４５４に記憶する第一遠隔ワークフローコンポーネント４９１、第二遠隔ワークフローコンポーネント４９２は、図１に示す記憶装置１０に記憶されたワークフローコンポーネント１１２に対応する。また、ワークフローホスト４６２は、機能ブロックとして、ロード・バインド処理部５０１、実行指示部５０２、および完了バインド処理部５０３を備えている。ワークフローホスト４６２が備える、ロード・バインド処理部５０１、実行指示部５０２、および完了バインド処理部５０３と、スタブワークフロー部４９０とによって、本発明の要求処理実行手段を実現する。
【００７０】
また、図１０では、信号線を介して実行される操作が図示されている。すなわち、初期化通信４７１では、プロパティ値に関する入力を含む設定ファイルが含まれており、この初期化通信４７１は、起点処理装置４１０から遠隔処理装置４５０に対して行われる。ワークフローホスト４６２では、ランタイムコンポーネントのローディングと、そのランタイムコンポーネントに対する入力値のバインド（連結）（入力プロパティのロード・バインド）とをロード・バインド処理部５０１が実行する。このローディングにおいて、遠隔処理装置４５０で利用できないＤＬＬなどの１以上のランタイムコンポーネントが必要となる場合、ワークフローホスト４６２では、通信制御部４６０が、通信プロトコル４６１に基づき、複数の欠損したランタイムコンポーネントの要求を起点処理装置４１０などの外部処理装置に対して信号線４７２を通じて行う。そして、遠隔処理装置４５０は、この信号線４７２を介して、要求した、上記複数の欠損したランタイムコンポーネントを起点処理装置４１０からダウンロードし、受信する。入力プロパティのロードと、その連結の実行に成功すると、信号線４７３を介して初期化が完了した旨を示す信号を遠隔処理装置４５０が起点処理装置４１０に送信する。起点処理装置４１０は、初期化完了を示す信号を信号線４７３を介して受信すると、ワークフロー要求処理部４２５がワークフローの実行コマンドを信号線４７４を介して遠隔処理装置４５０に出力する。遠隔処理装置４５０では、ワークフロー実行部４８２がワークフロー実行コマンドを認識すると、ワークフローホスト４６２では、実行指示部５０２が信号線４７６を介して遠隔処理装置４５０が備えるスタブワークフロー部４９０に対して、第一遠隔ワークフローコンポーネント４９１および第二遠隔ワークフローコンポーネント４９２の実行を要求する。スタブワークフロー部４９０が複数の遠隔ワークフローコンポーネント（第一遠隔ワークフローコンポーネント４９１、第二遠隔ワークフローコンポーネント４９２）の実行ステップを終了させると、このスタブワークフロー部４９０は、ワークフローホスト４６２の完了・バインド処理部５０３に対して出力プロパティをバインドさせる（出力プロパティの完了・バインド４８３）ように指示する。このスタブワークフロー部４９０からの指示に応じて、完了・バインド処理部５０３は、ワークフローホスト４６２による処理を完了させ、出力プロパティのバインドを行う。そして、バインドした出力プロパティを通信制御部４６０に渡す。通信制御部４６０は、信号線４７７を通じて受信したその処理の実行の完了結果、すなわちバインドした出力プロパティを、信号線４７５を通じて起点処理装置４１０に送信する。
【００７１】
ところで、分散型システム１００により実現されるワークフローシステム４００において、２以上の演算装置それぞれでワークフローホスト４６２を実行させることができる。このような分散型システム１００により実現されるワークフローシステム４００では、ワークフローコンポーネント４３０、プロキシコンポーネント４３３を実行したり、ネットワークに関する分散型通信プロトコル（通信プロトコル４２２）を記憶装置４１４から呼び出し、この呼び出した通信プロトコル４２２に基づき他の演算装置（例えば、起点処理装置４１０）との通信を確立させたりする構成となっている。なお、ワークフローコンポーネントまたはワークフローコンポーネント４３０は、ワークフロー全体を分離したその一部分を担う一以上の演算装置にそれぞれ分散配置されている。そして、各演算装置は、ワークフローホストプログラムを有し、該ワークフローホストプログラムを実行することで分散型ワークフローをホストすることができる。また、このワークフローホストプログラムは、所定の通信プロトコル（図６参照）に従ってワークフローを開始することができるように設計されている。なお、他の通信プロトコルとしては、以下の情報を含んでもよい。すなわち、（１）起点処理装置４１０において実行される分散型ワークフローに関する情報（例えば、設定ファイル２００など）、（２）分散型ワークフローを実現する転結したワークフローコンポーネントのステップを実行する前に、起点処理装置４１０において分散型ワークフローコンポーネントに対して設定する入力パラメータ値、（３）起点となるワークフローに連結したワークフローコンポーネントのプロパティに値を割り当て、１以上のワークフローコンポーネントの連結からなる全ワークフローを手続きの流れに沿うように継続させるために受信する出力パラメータの値。
【００７２】
起点となるワークフローは、入力パラメータおよび出力パラメータにより他のワークフローに対して連結されたり、あるいは、他のワークフローと連結したりする。そして、まるでワークフローコンポーネントが同一マシンでホストされているかのように、起点となるワークフロー内で情報が共有される。したがって、本発明の実施形態のワークフローシステム４００では、起点処理装置４１０として、ワークフローホスト４２０を有する処理装置をそれぞれ備える。そして、このワークフローホスト４２０は、所定の通信プロトコル（図６参照）により他の処理装置が有するワークフローホスト４６２と通信を行うことができるようになっている。なお、他の通信プロトコルとして、以下の情報を含んでいてもよい。すなわち、（１）遠隔処理装置４５０において実行される分散型ワークフローに関する情報であって、ワークフローホスト４６２が設定ファイル２００に基づきワークフローコンポーネント（つまり、マシンで命令できる再利用可能なソフトウェアモジュール）をロードする、特定のワークフローに関する設定ファイル名を識別できる情報、（２）１以上の連結項目を含み、各連結項目はコンポーネント名、プロパティ名、およびプロパティ値をさらに含み、マシン、またはプロセス、連結全般で連続して読み出し、操作できるように、プロパティ値が好ましくは、例えばシリアルに連続して配列されている入力情報、（３）連結され、起点処理装置４１０のワークフローホスト４２０および起点処理装置４１０によって実行される分散型ワークフローコンポーネントの１以上のプロパティに関する値を含む、遠隔処理装置４５０からの出力情報。
【００７３】
分散型ワークフローホスト（ワークフローホスト４６２）を備える遠隔処理装置４５０、（分散型処理装置）は、通信プロトコル４２２にしたがって、入力情報を受信するように適応される、あるいは構成されている。そして、設定に関してローカルに保持したコピーでは、１以上のパラメータ値が割り当てられている。つまり、いくつかの実施形態では、ワークフローホスト４６２、つまり分散型ワークフローホストは、分散型ワークフローの一部の実行を開始する前に、コピーされた設定に基づき、ワークフローコンポーネントプロパティ値を設定するステップを実行する。起点処理装置４１０に返信されるプロパティ値については、本発明の実施形態では、通信プロトコル４２２にしたがって、生成された出力値を有しており、そのため、この出力情報を受信する起点処理装置４１０のワークフローホスト４２０は、この値が設定されることにより応答し、プロキシコンポーネント４３３（図９参照）の後に第二ローカルワークフローコンポーネント４３２の実行を継続する。入力プロパティの値と同様に、出力プロパティ値は、マシン、またはプロセス、連結全般で連続して読み出し、操作できるように、好ましくは、例えばシリアルに連続して配列される。
【００７４】
本実施形態では、起点処理装置４１０は、特には、ワークフローホスト４２０が実行する起点ワークフロー４２１に含まれるプログラムを備え、少なくとも１つのワークフローコンポーネントが欠損している場合、起点ワークフロー４２１に基づき実行するワークフローホスト４２０は、欠損ワークフローコンポーネントの代わりに、プロキシコンポーネント４３３を実行する（図９）。つまり、本実施の形態では、起点ワークフロー４２１に含まれる分散型ワークフローコンポーネントのプロキシコンポーネント４３３として、あるいは、分散型ワークフローコンポーネント群のプロキシコンポーネント４３３として機能する特定のコンポーネントを提供する。したがって、起点処理装置４１０での入力および最終出力を観察するユーザにとって、起点処理装置４１０が実行するこの起点ワークフロー４２１は、まるで全てのそのワークフローコンポーネントが同じマシンで実行され、同じプロセス（つまり、起点マシンと起点プロセス）で処理されるように見える。
【００７５】
ここで、上述したような、欠損したワークフローコンポーネントをプロキシコンポーネント４３３によって補って処理を実行する一例を、図１１を参照してより具体的に説明する。なお、説明の便宜上、図１１では、第１演算装置５２０と第２演算装置５３０との間で通信が確立されているものとする。なお、第１演算装置５２０と、第２演算装置５３０との関係は、上述した起点処理装置４１０と遠隔処理装置４５０との関係に対応する。
【００７６】
図１１を参照すると、第１演算装置５２０におけるユーザからの入力信号５１０により「test job」で示す設定ファイル２００を呼び出す。ただし、この設定ファイル「test job」は、第１演算装置５２０だけによって実行することはできない。なぜならば、この設定ファイルを用いて実行するための必要条件となるワークフローコンポーネント（subprocess_2）がこの第１演算装置５２０の範囲内に存在しない。つまり、ワークフローコンポーネント（subprocess_2）が、この第１演算装置５２０のオペレーティングシステムによって実行されるワークフローホスト５２２の制御範囲外にあるからである。そこで、「test job」を実行する場合、第１演算装置５２０は、二つのローカルにあるワークフローコンポーネント（subprocess_1とsubprocess_3）との連結として、プロキシコンポーネント（subprocess_2_proxy）を要求する。一度ランタイムと連結されると、subprocess_1の各ステップが実行され、そしてsubprocess_2_proxyの各ステップが実行される。なお、このsubprocess_2_proxyの各ステップには、第２演算装置５３０との通信を確立するための通信プロトコルに基づく通信５２４による送信ステップを含んでいる。なお、この第２演算装置５３０は、第１演算装置５２０のローカルにある「test job」の一部として連結され、subprocess_2_proxyの実行範囲内で識別されるワークフローコンポーネントとして、subprocess_2を有している。この通信５２４では、必要な入力がなされる。この入力される値は、第１演算装置５２０によるsubprocess_1の実行終了後に利用可能となる値であって、subprocess_2のｘ２で示される値である。第２演算装置によってこの通信５２４における受信がなされると、subprocess_2は、ランタイムと連結される。このステップを実行し、この実行により得られる出力は、通信５３４を通じて第１演算装置５２０に提供される。つまり、第１演算装置５２０では、上記した通信プロトコルにより、プロパティ値が、比較的大きな出力データファイルのネットワーク上の位置を示す情報とともに返される。
【００７７】
また、第２演算装置５３０は、他の通信に対しても応答する。つまり、この他の通信では、ローカルにある２以上のワークフローコンポーネント同士の連結、およびローカルにある１以上のワークフローコンポーネントと第２演算装置５３０（特には、第２演算装置５３０のオペレーティングシステムによって実行されるワークフローホストの制御範囲外となる１以上のワークフローコンポーネント）との連結のうちの少なくとも一方を要求する設定ファイル２００が含まれている。このように、第２演算装置５３０は、１以上のプロキシコンポーネントと関連づけられる。これにより、第２演算装置５３０は、さらなる追加の演算装置との連結、ならびに第１演算装置５２０と第２演算装置５３０との間における情報の循環のうちの少なくとも一方を実現することができる。
【００７８】
第２演算装置５３０がsubprocess_2のステップの実行を制御する間、第１演算装置５２０は、特定のワークフローの設定ファイル２００に関しては稼動しない状態、すなわち、待ち受け状態にある。あるいは、第１演算装置５２０は、subprocess_2のステップの実行による出力に依存しない、次のワークフローコンポーネントを処理する。つまり、subprocess_3がsubprocess_2のステップの実行により得られる出力に依存するワークフローコンポーネントである場合、「test job」の実行は、第１演算装置５２０が、subprocess_3を実行するための入力として必要となる値を出力する第２演算装置から情報の伝達を受信するまでは待ち受け状態となる。subprocess_3の各ステップの実行が終了すると、subprocess_2の各ステップの一部の実行により生成されたデータファイルからの読み出しデータを含むこととなり、「test job」のワークフロー処理が完了する。
【００７９】
以上のように、演算装置（第１演算装置５１０、第２演算装置５３０）を備える分散型システム５００においてワークフローを実行するためのシステム、方法、およびコンピュータ読取り可能な記録媒体が提供される。また、当業者なら、本明細書にて記載したモジュールおよび機能をさらに細分したり、組み合わせたり、あるいは本実施の形態の技術範囲において変更したりすることができることは理解できるであろう。加えて、いくつかの本発明のバリエーションでは、その詳細や他の変形例が示され、記述されているが、これらの記述は本発明の技術思想の範囲においてなされるものであり、これらの開示に基づく技術であることは当業者にとって容易に明らかであろう。例えば、明細書にて記述したフローチャートの一例や処理を、本発明の技術範囲において修正または変形することができる。また、本発明の技術思想の範囲で、実施形態の特別な特徴および態様の様々な組み合わせ、または小結合が検討される。開示された実施形態の様々な特徴および態様は、開示された発明の変形モードを形成するために、互いに結合したり、置き換えたりすることができることは理解できよう。
【００８０】
したがって、本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【００８１】
また、本発明に係る実施形態では、例示として図示しており、添付図面の図により発明が制限されるものではない。
【００８２】
ところで、すべてのワークフローコンポーネントの実行を、ある処理装置（マシン）でホストし、同じ処理ホスト内で実行する場合、以下のような問題がある。例えば、特定のソフトウェアのソフトウェアライセンスが、ワークフローを開始するマシンではなく、サーバなど特定のマシンまたはマシンのクラスに固定して与えられている場合がある。同様に、ワークフローの任意のステップまたは任意の段階で要求されるデータは、ワークフローを開始したマシンとは異なるマシンによってのみ独占的にアクセスできる場合がある。このため、ワークフローを開始したマシンとは異なる特定のマシンを介してワークフローコンポーネントの情報のやりとりをユーザが要求する必要があるという問題がでてくる。
【００８３】
このような問題に対しても、設定ファイル２００に含まれるプロパティ値として使用制限されている特定のソフトウェアモジュールの実行結果を利用するために必要な情報を含めることで、この特定のソフトウェアモジュールの実行結果を得ることができる。
【００８４】
例えば、図１に示す分散型システム１００において、処理装置１１０を起点処理装置４１０とし、処理装置１２０、処理装置１３０を遠隔処理装置４５０とする。そして、処理装置１３０に対してのみ特定のソフトウェアモジュールの実行に関するライセンスが付与されているものとする。
【００８５】
このような前提において、処理装置１１０にて上記特定のソフトウェアモジュールの実行結果が必要となるとする。
【００８６】
ここで、処理装置１１０から処理装置１２０に対して上記特定のソフトウェアモジュールの実行結果を要求すると、この要求に応じて処理装置１２０では、特定のソフトウェアモジュールを実行させる。この特定のソフトウェアモジュールを実行する場合、ライセンスキーに関する入力が要求される。ここで、処理装置１２０にて付与されているライセンスキーの情報が設定ファイル２００のプロパティ値に含まれており、処理装置１１０は処理装置１２０に送信する。一方、処理装置１２０はこのプロパティ値を含む設定ファイル２００を受け付けると、プロパティ値を確認して特定のソフトウェアモジュールの実行を行う。そして、処理装置１２０は上記特定のソフトウェアモジュールを実行した結果を処理装置１１０に返す。なお、ライセンスキーの入力処理は、処理装置１２０において実行するワークフロー動作の一部として設定され、ライセンスキーの値はランタイムで利用可能となっていてもよい。
【００８７】
なお、この一連の動作において、処理装置１１０が有する設定ファイル２００には、使用制限されている特定のソフトウェアモジュールの実行結果を利用するために必要な情報として、該ソフトウェアモジュールの実行をどのマシンにて実行させるかに関する情報が含まれる。
【００８８】
このように、どのマシンが使用制限された特定のソフトウェアモジュールを実行するかに関する情報を、設定ファイル２００のプロパティに含めることで、特定のソフトウェアモジュールの実行結果を適切なターゲットマシンに要求することができる。このように、設定ファイル２００におけるプロパティは、このワークフローを実行するにあたり必要な情報を記録するために用いることができる。
【００８９】
なお、本発明は以下の構成であってもよい。
【００９０】
すなわち、本発明に係る情報処理装置は、処理ユニットとアドレス可能なメモリとを備え、処理ユニットは、１以上のプロパティ値の組を有する設定ファイルに基づく、プロキシワークフローコンポーネントに関する１以上の命令を実行するように設定されていてもよい。
【００９１】
また、本発明に係る情報処理装置は、この構成において、処理ユニットがさらに第２演算装置に対する情報の伝送を生成するように設定されており、この情報の伝送には、設定ファイル名と、プロキシワークフローコンポーネントに関連するワークフローコンポーネント用の１以上のプロパティ値の組とを含んでいてもよい。
【００９２】
また、本発明に係る情報処理装置は、処理ユニットとアドレス可能なメモリとを備え、処理ユニットは、発信元によって提供された、識別された設定ファイルに基づくワークフローコンポーネントに関する１以上の命令と、発信元によって提供される１以上のプロパティ値の組とを実行するように設定されおり、この処理ユニットは、さらにこの発信元用に、ワークフローコンポーネントの命令の実行結果の組を生成するように設定されていてもよい。
【００９３】
また、本発明に係る情報処理装置は、この構成において、処理ユニットが、さらに発信元のプロキシワークフローコンポーネントに対する入力として、実行結果の組を生成するように設定されていてもよい。
【００９４】
また、コンピュータネットワークにおける分散型ワークフロー処理に関する、マシンで実行可能な方法では、第１計算機ノードで設定ファイルと関連づけられたプロキシワークフローコンポーネントを提供するステップと、第２計算機ノードで設定ファイルに関連づけられたワークフローコンポーネントを提供するステップと、プロキシワークフローコンポーネントに基づく第１計算機ノードでの送信を準備するステップであって、この送信には、設定ファイル名と入力値の組とが含まれているステップと、第１計算機ノードからの送信の受信に基づく入力値の組からなる、１以上の構成要素（メンバ）を有するワークフローコンポーネントを実行するステップと、設定ファイル名とワークフローコンポーネントの実行に基づく出力値の組とを有する送信に対する応答を準備するステップとを含んでいてもよい。なお、上記計算機ノードは、計算機上でワークフローアプリケーションをホストするホスト処理を示す。
【００９５】
また、本発明に係るコンピュータ読取り可能な記録媒体は、コンピュータが実行可能な命令を格納しており、コンピュータを実行させると、設定ファイルと１以上のプロパティ値の組とに基づく、プロキシワークフローコンポーネントに関する１以上の命令を実行し、第２演算装置に対する、設定ファイル名とプロキシワークフローコンポーネントに関連するワークフローコンポーネント用の１以上のプロパティの組とを含む情報の伝送を設定するよう動作してもよい。
【００９６】
１以上のプロキシワークフローコンポーネントを介して、演算装置の分散型処理ネットワークでワークフローを実行するシステム、方法、ならびにコンピュータ読取り可能な記録媒体であって、処理の起点となる装置（起点処理装置）から始まる全てのワークフローの実行を支援する一方、通信プロトコルにより、特定のワークフローコンポーネントを装置固有に実施することができる。例えば、いくつかの実施形態では、処理ユニットとアドレス可能なメモリとを有する演算装置とを備えている。さらにこの処理ユニットは、ホストのワークフローを読み出すことにより、設定ファイルおよび１以上のプロパティ値の組に基づく１以上のプロキシワークフローコンポーネントに関する命令を実行するように適用されている、あるいは設定されている。この処理ユニットは、第２演算装置、すなわち遠隔処理装置に対し情報の伝送を行うように適用されている、あるいは設定されている。１以上のワークフローコンポーネントの遠隔での実行を初期化するための情報の伝送には、設定ファイル名、ならびプロキシワークフローコポーネントに関連するワークフローコンポーネント用の、１以上のプロパティ値の組が含まれている。いくつかの実施形態では、遠隔装置などの演算装置の処理ユニットは、例えば起点処理装置など発信元によって提供された、識別された設定ファイルと、この発信元によって提供された１以上のプロパティ値の組とに基づき、ワークフローコンポーネントに関する１以上の命令を実行するように適用されている、あるいは設定されている。そして、遠隔装置の処理ユニットは、発信元（起点）でアドレスが指定された直近のプロキシワークフローコンポーネントの後に、起点ワークフローコンポーネントに対する入力として、一連の結果を生成するようにさらに適用される、あるいは構成される。
【００９７】
本発明の実施形態では、コンピュータネットワークにおける分散型ワークフロー処理に関し、マシンが使用可能な方法を含んでいる。この方法では、必ずしもこの順番に限定されるものではないが、以下のステップを含む。すなわち、（ａ）第１の計算機ノードまたは第１の演算装置で設定ファイルと関連づけられた、プロキシワークフローコンポーネントを提供するステップ、（ｂ）第２の計算機ノードまたは第２の演算装置で設定ファイルと関連付けられたワークフローコンポーネントを提供するステップ、（ｃ）上記プロキシワークフローコンポーネントに基づく上記第１の計算機ノードで送信を準備するステップであって、この送信は、上記設定ファイル名と一組の入力値とを含むステップ、（ｄ）第１の計算機ノードからの送信により受信した一組の入力値からなる１以上のメンバ（構成要素）を用いて、第２の計算機ノードまたは演算装置で、ワークフローコンポーネントを実行するステップ、ならびに（ｅ）上記設定ファイル名と第２の計算機ノードによって実行されたワークフローコンポーネントに基づく一組の出力値を含む、上記送信に対する応答を、第２の計算機ノードによって準備するステップである。
【００９８】
また、本発明の実施形態では、コンピュータが実行可能な命令を格納した、コンピュータ読取り可能な記録媒体を含み、コンピュータの実行により以下のように動作する。すなわち、コンピュータが、（ａ）１以上のプロパティ値の組を有する設定ファイルに基づく、１以上のプロキシワークフローコンポーネントの命令を実行し、（ｂ）第２の演算装置に対する通信であって、設定ファイル名と、プロキシワークフローコンポーネントに関連するワークフローコンポーネント用の、１以上のプロパティ値の組からなる１以上のメンバ（構成要素）とを含む情報の伝送を行うように実行する。
【産業上の利用可能性】
【００９９】
本発明は、ソフトウェアを複数のモジュールとし、複数モジュールの組み合わせをマシンで実行することにより特定の処理を実施する技術に広く適量することができる。
【符号の説明】
【０１００】
１０  記憶装置
７１  ワークフロー実行部（要求手段・処理実行手段）
１１０  処理装置（情報処理装置・他の情報処理装置）
１１１  分散型ホストプログラム
１１２  ワークフローコンポーネント（ソフトウェアモジュール）
１２０  処理装置（情報処理装置・他の情報処理装置）
１３０  処理装置（情報処理装置・他の情報処理装置）
２００  設定ファイル
２０１  ＵＲＬ（装置特定情報）
２０２  プロパティ
２０３  プロパティ
４１０  起点処理装置（情報処理装置）
４１４  記憶装置
４２０  ワークフローホスト
４２１  起点ワークフロー
４２４  ワークフロー開始処理部（処理実行手段）
４２５  ワークフロー要求処理部（要求手段）
４３０  ワークフローコンポーネント
４３１  第一ローカルワークフローコンポーネント（ソフトウェアモジュール）
４３２  第二ローカルワークフローコンポーネント（ソフトウェアモジュール）
４３３  プロキシコンポーネント
４３４  第一中間ワークフローコンポーネント
４３５  第二中間ワークフローコンポーネント
４５０  遠隔処理装置（他の情報処理装置）
４５４  記憶装置
４６２  ワークフローホスト（要求処理実行手段）
４８２  ワークフロー実行部（要求処理実行手段）
４９０  スタブワークフロー部（要求処理実行手段）
４９１  第一遠隔ワークフローコンポーネント
４９２  第二遠隔ワークフローコンポーネント
５００  分散型ネットワーク
５０１  ロード・バインド処理部（要求処理実行手段）
５０３  完了・バインド処理部（要求処理実行手段）
５０２  実行指示部（要求処理実行手段）
５２０  第１演算装置（情報処理装置）
５３０  第２演算装置（他の情報処理装置）
【図１】
2010055610.tif 000003
【図２】
2010055610.tif 000004
【図３】
2010055610.tif 000005
【図４】
2010055610.tif 000006
【図５】
2010055610.tif 000007
【図６】
2010055610.tif 000008
【図７】
2010055610.tif 000009
【図８】
2010055610.tif 000010
【図９】
2010055610.tif 000011
【図１０】
2010055610.tif 000012
【図１１】
2010055610.tif 000013