(57)【要約】【課題】複数の同一の機能を提供するサービスが存在する場合、正常時においても、最適なサービスによって一連の連携処理を行うことを目的とする。【解決手段】サービス特性情報取得手段と、フロー情報取得手段と、利用可能なサービスに係るサービス特性情報と、フロー情報とに応じて、サービスが連携する際の仮想距離を算出する仮想距離算出手段と、仮想距離算出手段で算出した仮想距離に応じて、サービスに処理を依頼する処理依頼手段と、を有することによって上記課題を解決する。【選択図】図７
2007156736.tif 000002
【特許請求の範囲】
【請求項１】
機能をサービスとして提供する複数の機器と通信する情報処理装置であって、
サービスの特性を示すサービス特性情報を取得するサービス特性情報取得手段と、
サービスの実行順序を示すフロー情報を取得するフロー情報取得手段と、
利用可能なサービスに係る前記サービス特性情報と、前記フロー情報とに応じて、サービスが連携する際の仮想距離を算出する仮想距離算出手段と、
前記仮想距離算出手段で算出した仮想距離に応じて、サービスに処理を依頼する処理依頼手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記仮想距離算出手段は、サービスに処理を依頼する際の優先度を示す値を、前記連携処理に係るサービスの仮想距離として算出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記仮想距離算出手段は、前記各サービスの特性に応じて、重み付けを行い、前記仮想距離を算出することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
同一の機能のサービスを前記仮想距離の短い順に並べた仮想距離情報を作成する仮想距離情報作成手段を更に有することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記仮想距離情報の順に、サービス又はサービスに係る機器に、前記連携処理の次の実行順序のサービスに係る仮想距離情報の作成を依頼する仮想距離情報作成依頼手段を更に有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記連携処理の実行順序付きの前記仮想距離情報の集合である連結仮想距離情報を作成する連結仮想距離情報作成手段を更に有することを特徴とする請求項４又は５に記載の情報処理装置。
【請求項７】
前記仮想距離情報の作成を依頼するサービス又はサービスに係る機器の数を指定する依頼数指定手段を更に有することを特徴とする請求項５又は６に記載の情報処理装置。
【請求項８】
前記連結仮想距離情報に含まれる前記仮想距離情報の数を指定する見積数指定手段を更に有することを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
前記処理依頼手段は、前記連携処理において実行不可能なサービスが存在する場合、前記仮想距離算出手段で算出した仮想距離に応じて、次に仮想距離が短いサービスに処理を依頼することを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
前記特性に係る制約条件を示す制約条件情報を取得する制約条件情報取得手段を更に有し、
前記仮想距離算出手段は、利用可能なサービスに係る前記サービス特性情報と、前記フロー情報と、前記制約条件情報と、に応じて、サービスが連携する際の仮想距離を算出することを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
機能をサービスとして提供する複数の機器と通信する情報処理装置における連携処理方法であって、
サービスの特性を示すサービス特性情報を取得するサービス特性情報取得ステップと、
サービスの実行順序を示すフロー情報を取得するフロー情報取得ステップと、
利用可能なサービスに係る前記サービス特性情報と、前記フロー情報とに応じて、サービスが連携する際の仮想距離を算出する仮想距離算出ステップと、
前記仮想距離算出手段で算出した仮想距離に応じて、サービスに処理を依頼する処理依頼ステップと、
を有することを特徴とする連携処理方法。
【請求項１２】
請求項１１に記載の連携処理方法をコンピュータに実行させるための連携処理プログラム。
【請求項１３】
請求項１２に記載の連携処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び連携処理方法に関する。
【背景技術】
【０００２】
近年、複写機の高性能化に伴い、印刷機能、スキャナ機能、ＦＡＸ機能、メール送信機能、文字認識機能等、複数の機能を有する複写機が存在する。また、これらの各機能を、機能単位でサービス化（Ｗｅｂサービス化）し、ネットワークを介して接続された複写機同士で、サービス（つまり、機能）を、利用することができるようなシステムも存在する。
【０００３】
このようなシステムでは、例えば複写機Ａのスキャン機能を用いて紙原稿を読み取り、ネットワークを介して複写機Ａと接続された複写機Ｂの印刷機能を用いてスキャン原稿を印刷する等、複写機同士を連携させて一連の処理（連携処理）を行わせることができる。
【０００４】
また、このような複写機同士を連携させて、一連の処理を行わせるため、従来では、例えばシステムの利用者等が、予め、スキャン、印刷等の機能について、連携させる順番を指定する指示書を作成し、一連の処理を行わせていた。しかしながら、このような方法の場合、あるサービスにエラーが発生すると、一連の連携処理が中断してしまう問題があった。
【０００５】
この問題を解決するため、例えばシステムの利用者等が、エラーが発生したサービスの代替サービスを検索し、処理を続けるような指示書を発行し、一連の連携処理を継続する方法がある（例えば、特許文献１参照。）。
【０００６】
【特許文献１】特開２００４−２８８０６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述した従来の技術は、同一の機能を提供するサービスが複数存在した場合でも、サービスにエラーが発生したとき、つまり異常時しか代替サービスに処理を依頼してなかった。よって、常に最適なサービスによって一連の連携処理が行われていない問題があった。
【０００８】
本発明は上記の点に鑑みなされたもので、複数の同一の機能を提供するサービスが存在する場合、正常時においても、最適なサービスによって一連の連携処理を行うことを目的とする。
【課題を解決するための手段】
【０００９】
そこで、上記問題を解決するため、本発明は、機能をサービスとして提供する複数の機器と通信する情報処理装置であって、サービスの特性を示すサービス特性情報を取得するサービス特性情報取得手段と、サービスの実行順序を示すフロー情報を取得するフロー情報取得手段と、利用可能なサービスに係る前記サービス特性情報と、前記フロー情報とに応じて、サービスが連携する際の仮想距離を算出する仮想距離算出手段と、前記仮想距離算出手段で算出した仮想距離に応じて、サービスに処理を依頼する処理依頼手段と、を有することを特徴とする。
【００１０】
係る構成とすることによって、例えば、仮想距離が短い順にサービスに処理を依頼して行くので、複数の同一の機能を提供するサービスが存在する場合、正常時においても、最適なサービスによって一連の連携処理を行うことができる。
【００１１】
また、上記問題を解決するため、本発明は、連携処理方法、連携処理プログラム、及び記録媒体としてもよい。
【００１２】
なお、情報処理装置とは、例えば、後述する複写機又は機器等に対応する。また、特許請求の範囲に記載の依頼数とは、例えば、後述する先読み数等に対応する。また、特許請求の範囲に記載の記録媒体とは、例えば、後述するＲＡＭ１０３、又はＲＯＭ１０４、又はハードディスク１０９等に対応する。
【発明の効果】
【００１３】
本発明によれば、複数の同一の機能を提供するサービスが存在する場合、正常時においても、最適なサービスによって一連の連携処理を行うことができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施例について図面に基づいて説明する。
【実施例１】
【００１５】
図１は、複写機の構成の一例を示す図である。バス１０１上に、以下に説明する各種デバイスが接続されている。ＣＰＵ１０２は、プリント時の印刷処理や、スキャン時の画像処理等、自身の持つ機能に応じて各種制御や、演算等を行う。ＲＡＭ１０３は、揮発性メモリであり、ＣＰＵ１０２による演算結果や、プリントやスキャンに係る画像データ、フォントデータ等が格納される。ＲＯＭ１０４は、不揮発性メモリであり、フォントデータ等が格納されている。なお、ＲＯＭ１０４は、書き換え可能であってもよい。
【００１６】
入力部１０５は、ユーザからの指示（指示情報）、又は入力（入力情報）を受け取る。例えば入力部１０５は、図１には図示していないが、複写機に搭載されたタッチスクリーン等を用いたユーザからの指示、又は入力を受け取る。
【００１７】
出力部１０６は、複写機の状態（状態情報）や、機能（機能情報）、ユーザからの指示を受けるための情報等、各種情報の表示を行う。例えば出力部１０６は、図１には図示されていないが、複写機に搭載されたタッチスクリーン等に上述した情報を表示する。
【００１８】
ネットワークインターフェイス１０７は、複写機（又はＣＰＵ１０２）と、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等の外部ネットワークとの接続を行う。複写機は、ネットワークインターフェイス１０７を介して、例えば画像等のデータのやり取りを、外部機器と行う。
【００１９】
ディスクインターフェイス１０８は、ＣＰＵ１０２と、ハードディスク１０９との接続を行う。ハードディスク１０９には、画像データ等が格納される。ハードディスク１０９に格納されているデータは、必要に応じて、ＣＰＵ１０２からの指示により、ＲＡＭ１０３に読み出されて、利用される。なお、ハードディスク１０９は、複数存在していてもよい。
【００２０】
複写機に搭載されるプリント、スキャン、ＦＡＸ等の各種機能を実行するハードウェアである装置は、図１には図示されていないが、ユニット接続部１１０に接続される。なお、ユニット接続部１１０は、機能毎に個別に存在していてもよい。
【００２１】
なお、入力部、出力部、ネットワークインターフェイスを備えており、外部機器（例えば、他の複写機等）へ自身の有する機能をサービスとして提供し、サービスが、外部機器が提供するサービスと通信可能な複写機であれば、図１に示した構成に限らない。
【００２２】
つまり、本実施例の複写機は、外部機器へ自身の有する機能をサービスとして提供し、各サービスは、外部機器が提供するサービスと通信可能である。図１においては、サービスに係る処理を実行するプログラムが、ハードディスク１０９又はＲＯＭ１４に格納されている。ＣＰＵ１０２は、前記プログラムをハードディスク１０９又はＲＯＭ１４より読み出し、ＲＡＭ１０３に格納し、実行する。これにより、複写機は、ネットワークインターフェイス１０７を介して外部機器のサービス一覧（サービス一覧リスト）を受け取ったり、自身の持つ機能をサービスとして提供したり、外部機器にサービスの提供を依頼したりする。また、ＣＰＵ１０２が前記プログラムを実行することにより、複写機は、外部機器から受け取ったサービス一覧を出力部１０６に出力（表示）したり、入力部１０５を介した、ユーザからサービスの選択を受け取ったりする。
【００２３】
図２は、ネットワークを介して互いに接続された複写機のサービス構成の一例を示す図である。図２に示されるように、ネットワーク３０１を介して、複写機Ａ（３０２）と、複写機Ｂ（３０３）と、複写機Ｃ（３０４）と、が互いに接続されている。複写機Ａ（３０２）、及び複写機Ｂ（３０３）は、自らが持つ機能をサービスとしてネットワーク３０１を介して接続された他の機器（外部機器）に提供する。つまり、複写機Ａ（３０２）は、サービスＡ１（３０５）と、サービスＡ２（３０６）とを提供し、複写機Ｂ（３０３）は、サービスＢ１（３０７）を提供する。また、各複写機３０２、３０３、３０４は、どの機器でどのようなサービスが実行できるのか（又はサービスを提供しているのか）の情報、つまりサービス一覧リスト、を取得する機能を有する。
【００２４】
ここで、複写機Ｃ（３０４）が、ネットワークを介して接続されている他の機器（他の複写機）が提供しているサービスの情報、つまりサービス一覧リスト、を取得する場合を例に、サービス一覧リストの取得処理を説明する。
【００２５】
複写機Ｃ（３０４）は、ネットワークを介して接続された他の機器に対して、自身のＩＰアドレスと共にサービス一覧リストを求めるブロードキャストメッセージを送信する。このブロードキャストメッセージを受信した機器は、自身が提供できる機能（サービス）が存在する場合は、ブロードキャストメッセージを送ってきたターゲット機器（複写機Ｃ（３０４））のＩＰアドレス宛に、サービス一覧リストを返却する。つまり、複写機Ａ（３０２）であれば、サービスＡ１（３０５）と、サービスＡ２（３０６）とについてのリストを、サービス一覧リストとして、複写機Ｃ（３０４）宛に送信する。また、複写機Ｂ（３０３）であれば、サービスＢ１（３０７）についてのリストを、サービス一覧リストとして、複写機Ｃ（３０４）宛に送信する。
【００２６】
なお、複写機は、ブロードキャストメッセージでなく、特定のＩＰアドレスの機器にのみサービス一覧リストを求めるメッセージを送信するようにしてもよい。このようにすることによって、ネットワークのトラフィックを減少させることができる。
【００２７】
また、複写機は、特定のＩＰアドレスの機器にのみ、この機器が提供するサービスの更新情報を求めるメッセージを送信するようにしてもよい。このようにすることによって、ネットワークのトラフィックを減少させることができる。
【００２８】
ここで、サービス一覧リストの一例を、図３に示す。図３は、サービス一覧リストの一例を示す図である。各機器からは、図３に示されるようなサービス一覧リストが送信される。なお、図３はサービス一覧リストの概念図であり、実際のサービス一覧リストのフォーマットは、例えばＸＭＬ形式のフォーマット、又はバイナリ形式のフォーマット等、各機器間で認識できるフォーマットであれば何でもよい。ここで、ＸＭＬとは、ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅの略である。
【００２９】
４０１は、機器固有の値を示す機器ＩＤ（デバイスＩＤ）である。例えば機器が複写機であれば、複写機毎に設定されているＩＤである。図３の例では、このＩＤは、「ＡＢＣ１１２３４５」となっている。４０２は、機器のＩＰアドレスである。図３の例では、このＩＰアドレスは、「１６８．５４．６９．２２１」となっている。もし、機器が複数のネットワークインターフェイスを有しており、サービス毎にＩＰアドレスが異なるのであれば、本実施例の場合は、ＩＰアドレス単位にサービス一覧リストが発行される。但し、これに限定されず、一つのサービス一覧リスト中に複数のＩＰアドレスを記述できる仕組みとしてもよい。
【００３０】
以上、４０１及び４０２が機器に関する情報であるが、機器（例えば、複写機）は、図３に示していないモデル名、型式情報等、機器に関連する情報を、サービス一覧リストに記述するようにしてもよい。
【００３１】
次に、４０３から４０６が、個々のサービスに関する記述である。４０３は、サービスに一意に設定されたＩＤである。図３の例では、このＩＤは、「９６４２」となっている。また、４０４は、サービスの名称である。図３の例では、この名称は、「サービスＡ１」となっている。４０５は、サービスを利用する場合の料金である。図３の例では、この料金は、「１５円」となっている。つまり、図３のサービス一覧リストには、サービスＩＤ「９６４２」を実行するためには、料金「１５円」が必要であることが記述されている。４０６は、サービスの処理速度である。なお、処理速度とは、複写機に搭載されているサービスであれば、ページ当たりの処理能力のことである。図３の例では、この処理速度は、「３  Ｓｅｃ／Ｐａｇｅ」、つまり１ページ当たり３秒の処理時間が掛かるとなっている。
【００３２】
４０５の料金や、４０６の処理速度に加えて、又は変えて、複写機等が、サービスの比較を行える情報を、サービス一覧リストに記述するようにしてもよい。４０７には、この機器が有する他のサービスについて、上述したサービスと同様な記述がされる。サービス一覧リストには、少なくとも一つ以上のサービスの情報が記述される。
【００３３】
なお、サービス一覧リストを作成するに当り、機能を提供する機器（複写機）が、ネットワークを介して接続された他の機器のサービスの情報を取得して、他の機器のサービスの情報をも含むサービス一覧リストを作成し、要求元に送信することは行わない。このような処理は、サービス一覧リストの取得を要求した複写機が、各々の機器（複写機）より取得したサービス一覧リストを用いて行う。
【００３４】
なお、サービス一覧リストは、各々の機器やサービスで保持し、更新するようにしてもよい。また、サービス一覧リストは、各機器やサービスが保持するのでなく、整合性を保つため、複写機等とネットワークを介して接続されたサーバ等で集中して管理するようにしてもよい。
【００３５】
また、サービス一覧リストには、利用可能なサービスのみが記述されるため、その時点でサービスが利用できない、即ちエラーが起こっているサービスの情報が、ブロードキャストメッセージの送信元の複写機に通知されることはない。
【００３６】
複写機は、各複写機から受け取ったサービス一覧リストをまとめて、出力部１０６に表示する。なお、出力部１０６は、例えばタッチスクリーン等に、サービス一覧リストに係る出力画面を表示する。
【００３７】
図４は、タッチスクリーンに表示された、サービス一覧リストに係る出力画面の一例を示す図である。ユーザは、図４上のボタンに相当する位置を押すことによって、複写機に指示を与える。５０１は、利用可能なサービス（機能）の一覧を示すエリアである。５０１には、スクロールバーが付いており、ユーザは、スクロールバーをクリックすることで隠れた領域にある機能を表示させる。また、５０１には、ボタン５０６、５０７、５０８が表示されており、それぞれ機能Ｂ、機能Ｍ、機能Ｃに対応付けられている。
【００３８】
ユーザは所望の機能を選択して、５０３の追加ボタンを押すことにより、選択した機能を、実行する機能エリア５０２へ移す。なお、機能選択については図示していないが、ユーザが、機能を選択したことが判別できるようなものであればどのようなものでもよい。つまり、複写機は、選択された機能の表示を反転させるようにしてもよいし、選択されたことが分かるマークを付けるようにしてもよいし、選択されたことが分かるよう色を変えるようにしてもよい。また、複写機は、ユーザによって機能を再度選択されると、選択を解除するようにしてもよい。
【００３９】
複写機は、図４を用いて説明したような方法で、選択され、順序付けられた機能（サービス）を、図５に示すようなフローリストとして、例えばハードディスク１０９等に格納する。図５は、フローリストの一例を示す図である。
【００４０】
１１０１は、Ｆｌｏｗタグであり、フローリストを表している。Ｆｌｏｗタグには、ｄｅｖｉｄｅＩＤ属性と、ｊｏｂ属性とがある。ｄｅｖｉｃｅＩＤ属性には機器（フローリストを作成した複写機）を特定するＩＤが記述されている。また、ｊｏｂ属性には、前記機器において、処理（ジョブ）を特定するための一意に定まる値が記述されている。なお、機器を特定するＩＤの代わりに、ＩＰアドレスを記述するようにしてもよい。
【００４１】
機能の順序は、１１０２や、１１０３のＳｅｒｖｉｃｅタグで示される。例えば１１０２は、Ｎｏ属性が１であるので、最初に実行されるサービスであり、そのサービスＩＤは、６９０１となっている。また、１１０３は、Ｎｏ属性が２であるので、サービスＩＤ６９０１の実行後に行われるサービスであり、サービスＩＤは、８３１となっている。
【００４２】
図５に示されるように、本実施例における複写機は、特定の機器に依存した指示書を作成するのではなく、機能に割り振られているサービスＩＤを用いてフローリストを作成する。なお、連携処理の最初の処理を実行する複写機では、フローリストを作成するが、連携処理の二番目以降の処理を実行する複写機（又はサービス）では、前記作成されたフローリストを取得して処理を行う。後述する制約条件リスト等も同様である。
【００４３】
複写機は、連携処理を指定するフローリストを作成した後に、ユーザからの指示等に基づいて、制約条件リストを作成する。制約条件リストとは、各サービスの特性（条件）のうち、どの特性を優先するかを記述したリストのことである。図６は、制約条件リストの一例を示す図である。
【００４４】
６０１は、Ｃｏｎｓｔｒａｉｎｔタグであり、制約条件を表している。また、６０２、６０３は、Ｐｒｉｏｒｉｔｙタグであり、優先度に応じて制約条件が記述されている。６０２は、６１０に記述されているように、「料金」についての制約条件を表し、６０３は、６１１に記述されているように、「処理速度」についての制約条件を表している。優先度は、Ｐｒｉｏｒｉｔｙタグのｏｒｄｅｒ属性に記述されており、６０４に"１"、６０５に"２"と記述されていることから、６０２が最優先（"１"）、６０３がその次に優先（"２"）となる。また、Ｐｒｉｏｒｉｔｙタグには、ｗｅｉｇｈｔ属性も記述されており、重み付けの値が記述されている。本実施例においては、重み付けの値が正で小さいほど、優先されるものとする。図６においては、「料金」の制約条件に関しては、６０６にあるように重み付け値は、"０"であり、「処理速度」の制約条件に関しては、６０７にあるように重み付け値は、"２０"である。
【００４５】
更に、Ｐｒｉｏｒｉｔｙタグには、ｃｏｍｐａｒｅ属性が記述されている。ｃｏｍｐａｒｅ属性６０８には、降順を意味するｄｅｓｃｅｎｄｉｎｇが記述されている。また、ｃｏｍｐａｒｅ属性６０９には、昇順を意味するａｓｃｅｎｄｉｎｇが記述されている。
【００４６】
図６の例では、制約条件「料金」を最優先とし、次に、制約条件「処理速度」を優先して連携処理を行わせるための制約条件リストとなっている。また、図６の例では、「料金」は、安いものを優先し（即ち、値の低いものから優先し）、「処理速度」は速いものを優先する（即ち、値の高いものから優先する）ことを示す制約条件リストとなっている。複写機は、作成した又は取得した制約条件リストを、例えば、ＲＡＭ１０３又はハードディスク１０９等に格納し、必要なときに適宜参照（又は取得）する。
【００４７】
図７は、一連の連携処理において、次に実行すべき最適なサービスを決定し、サービスの提供を依頼する処理の一例を示すフローチャートである。ステップＳ７０１において、複写機は、ネットワークを介して接続された他の複写機から送信されたサービス一覧リストからサービス特性リストを取得（又は生成）する。より具体的に説明するため、まず、図３に示したようなサービス一覧リストが、図８に示すようなＸＭＬ形式で記述されていたとする。図８は、ＸＭＬ形式で記述されたサービス一覧リストの一例を示す図である。
【００４８】
複写機は、各サービスについて、機器ＩＤやＩＰアドレス等の機器固有の情報（図８の８０１）と、個々のサービスの情報（図８の８０２）と、から後述する図９に示されるようなサービス特性リストを生成する。複写機は、作成したサービス特性リストを、例えば、ＲＡＭ１０３又はハードディスク１０９等に格納する。
【００４９】
このように、サービス一覧リストが、ＸＭＬ形式であれば、複写機は、例えば、ＸＳＬＴ（ＸＭＬ  Ｓｔｙｌｅｓｈｅｅｔ  Ｌａｎｇｕａｇｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎｓ）等を利用して個々のサービスについてサービス特性リストを生成する。ここで、それぞれのサービスに番号を与え、番号ｎに相当するサービスをＳnとする。更にサービスＳnに相当するサービス特性リストをＬnとする。複写機は、ステップＳ７０１において、このＬnを求める処理を実行する。
【００５０】
ここで、図８の機器固有の情報８０１と、個々のサービスの情報８０２と、から生成されるサービス特性リストの一例を、図９に示す。図９は、サービス特性リストの一例を示す図である。図９に示されるように、複写機によってサービス一覧リストからサービス特性リストに変換された時点で、１つのサービスについての情報（特性情報）が、サービス特性リストに記述される。また、Ｓｅｒｖｉｃｅを示すタグには、サービスに振られた一意な番号が記述される（ｎｏ属性であり、図９においては、１である。）。
【００５１】
なお、複写機は、サービス特性リストＬnに、サービスの特性情報だけなく、例えば、予め実行していなければならないサービスＩＤを記述するようにしてもよい。また、複写機は、サービス特性リストＬnに、サービスの特性情報だけなく、例えば、サービスの前後に実行しておいた方がよいサービスＩＤを記述するようにしてもよい。また、複写機は、サービス特性リストＬnに、サービスの特性情報だけなく、例えば、サービスを利用する上で、いくつかのサービスを組み合わせた推奨サービスのＩＤを記述するようにしてもよい。
【００５２】
ここで、図２のシステム構成を例に、ステップＳ７０１における処理の一例を図１０に示す。図１０は、図７のステップＳ７０１における処理の一例を示す図である。図２の場合、例えば、複写機Ｃ（３０４）は、複写機Ａ（３０２）が提供しているサービスＡ１（３０５）、Ａ２（３０６）についての情報が記述されているサービス一覧リスト１００１を、複写機Ａ（３０２）等より取得して保持している。また、複写機Ｃ（３０４）は、複写機Ｂ（３０３）が提供しているサービスＢ１（３０７）についての情報が記述されているサービス一覧リスト１００２を、複写機Ｂ（３０３）等より取得して保持している。このような場合、複写機Ｃ（３０４）は、Ｓ７０１の処理によって、サービス毎にサービス特性リストを作成する。つまり、複写機Ｃ（３０４）は、サービスＡ１に対して、サービス特性リストＬ1（１００３）を作成する。また、複写機Ｃ（３０４）は、サービスＡ２に対して、サービス特性リストＬ2（１００４）を作成する。また、複写機Ｃ（３０４）は、サービスＡ１に対して、サービス特性リストＬ3（１００５）を作成する。なお、図２のサービスＡ１、サービスＡ２、サービスＢ１は、それぞれ図７のステップＳ７０１のサービスＳ１、サービスＳ２、サービスＳ３に対応する。
【００５３】
ステップＳ７０２では、複写機は、連携処理の順序が記述されたフローリストから、次に実行するサービス、即ち、未実行のサービスのうち、最初に行わなければならないサービスのサービスＩＤを求め、ＳＩＤ（Ｎｅｘｔ）とする。
【００５４】
ステップＳ７０３では、複写機は、ステップＳ７０１において作成した全てのサービス特性リストＬnにおけるサービスＩＤと、ステップＳ７０２において求めたＳＩＤ（Ｎｅｘｔ）とが一致するサービス特性リストを取得する。そして、複写機は、取得したサービス特性リストを含む利用可能サービス群（利用可能サービス群情報）を、例えば、ＲＡＭ１０３又はハードディスク１０９等に格納し、保持する。
【００５５】
ステップＳ７０３では、複写機は、利用可能サービス群にサービス特性リストが存在しているか否かを判定する。複写機は、利用可能サービス群にサービス特性リストが存在していないと判定すると、実行可能なサービスが無いので、Ｓ７０８へ進み、エラー処理を行い、処理を終了する。一方、複写機は、利用可能サービス群にサービス特性リストが存在していると判定すると、Ｓ７０５へ進み、利用可能サービス群に存在するサービス特性リストが１つか否かを判定する。
【００５６】
複写機は、利用可能サービス群に存在するサービス特性リストが１つであると判定すると、このサービス特性リストに記述されているサービス（機器）にしか処理を依頼できないため、ステップＳ７０７へ進み、前記サービス（機器）に処理を依頼する。一方、複写機は、利用可能サービス群に存在するサービス特性リストが２つ以上存在すると判定すると、ステップＳ７０６に進む。
【００５７】
ステップＳ７０６では、複写機は、利用可能サービス群に存在する全てのサービス特性リストＬnと、制約条件リストとから、全てのサービス特性リストＬnについての仮想距離ｄnを求める。なお、仮想距離ｄnを求める処理の詳細は、後述する図１１に示す。
【００５８】
ステップＳ７０６に続いてステップＳ７０７に進み、複写機は、Ｓ７０６において計算されたサービス特性リストＬnについての仮想距離ｄnのうち、最短の仮想距離に対応するサービス特性リストＬminを選択する。そして、複写機は、Ｌminに記載されているＩＰアドレス等の情報を元にして、Ｌminに係るサービス（機器）に処理を依頼する。
【００５９】
図１１は、仮想距離を求める処理の一例を示すフローチャートである。ステップＳ１２０１において、複写機は、ｐを１とする（つまり、変数ｐに１を設定する。）。Ｓ１２０２では、複写機は、制約条件リストの中に優先度がｐ（ｐの値）の制約条件が存在するか否かを判定する。より具体的に説明すると、複写機は、制約条件リストが図６に示したようなＸＭＬ形式のフォーマットをしていたとき、Ｐｒｉｏｒｉｔｙタグ中のｏｒｄｅｒ属性がｐの制約条件が存在するか否かを判定する。
【００６０】
複写機は、Ｐｒｉｏｒｉｔｙタグ中のｏｒｄｅｒ属性がｐの制約条件が存在すると判定すると、ステップＳ１２０３に進む。一方、複写機は、Ｐｒｉｏｒｉｔｙタグ中のｏｒｄｅｒ属性がｐの制約条件が存在しないと判定すると、全ての優先度についての処理が終了したとして、ステップＳ１２１０に進む。
【００６１】
ステップＳ１２０３では、複写機は、優先度ｐの特性（制約条件）が、値が大きいものを優先するのか（つまり、降順か）、又は値が小さいものを優先するのか（つまり、昇順か）を判定する。例えば、制約条件が、サービスの１処理当たりの「値段」の場合で、制約条件リスト等に値段の安い方を優先すると設定されていると、この制約条件は昇順である。また、制約条件が、１ページ当たりの「処理速度」の場合で、制約条件リスト等に処理速度が早い方を優先すると設定されていると、この制約条件は降順である。
【００６２】
図６の例を用いて説明すると、複写機は、ステップＳ１２０３において、Ｐｒｉｏｒｉｔｙタグのｏｒｄｅｒ属性がｐの制約条件のｃｏｍｐａｒｅ属性が"ｄｅｓｃｅｎｄｉｎｇ"か否かを判定する。複写機は、Ｐｒｉｏｒｉｔｙタグのｏｒｄｅｒ属性がｐの制約条件のｃｏｍｐａｒｅ属性が"ｄｅｓｃｅｎｄｉｎｇ"であると判定すると、ステップＳ１２０６に進む。一方、複写機は、Ｐｒｉｏｒｉｔｙタグのｏｒｄｅｒ属性がｐの制約条件のｃｏｍｐａｒｅ属性が"ｄｅｓｃｅｎｄｉｎｇ"でない（つまり、"ａｓｃｅｎｄｉｎｇ"である）と判定すると、ステップＳ１２０４に進む。
【００６３】
Ｓ１２０４では、複写機は、利用可能サービス群に存在する全てのサービス特性リストの中から、優先度ｐに相当する特性（制約条件）で、値（つまり、制約条件が料金の場合、料金の値）が最大のものをＶmaxとする。例えば、優先度ｐ＝１、即ち図６のｏｒｄｅｒ属性が"１"の場合を例にとると、複写機は、「料金」の特性（制約条件）について、利用可能サービス群中の全サービス特性リストの中で、値が最大の料金をＶmaxとする。
【００６４】
なお、複写機は、例えば、全てのサービス特性リストの優先度ｐに相当する特性（制約条件）の値を比較して、値が最大のものを決定し、Ｖmaxとする。
【００６５】
Ｓ１２０５では、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値をＶmaxで割って商を求める。即ち、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値を、区間［０，１］で正規化する。つまり、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値の中で一番値が大きいもの（つまり、優先度ｐの中では一番優先順序が低いもの）を１とし、値が小さいものほど、優先順序が高くなるようにする。
【００６６】
ここで、ステップＳ１２０４及びステップＳ１２０５の処理を、より具体的な値を用いて説明する。例えば、優先度ｐの制約条件が、料金で、１回のサービス当たり、１０円、２０円、１００円の３種類の同一ＩＤのサービスがあるとする。このような場合、複写機は、ステップＳ１２０４において、Ｖmax＝１００とする。続いてステップＳ１２０５において、複写機は、１０、２０、１００をそれぞれＶmaxで割った商を求める。即ち、複写機は、１０／１００＝０．１、２０／１００＝０．２、１００／１００＝１を求める。つまり、複写機は、料金の値を区間［０，１］で正規化する。このことにより、優先順位が低いサービスに係る料金の値が１となり、優先順位が高いサービスに係る料金の値ほど、小さくなる。
【００６７】
一方、Ｓ１２０６では、複写機は、利用可能サービス群に存在する全てのサービス特性リストの中から、優先度ｐに相当する特性（制約条件）で、値（つまり、制約条件が処理速度の場合、処理速度の値）が最小のものをＶminとする。複写機は、例えば、全てのサービス特性リストの優先度ｐに相当する特性（制約条件）の値を比較して、値が最小のものを決定し、Ｖminとする。例えば、優先度ｐ＝２、即ち図６のｏｒｄｅｒ属性が"２"の場合を例にとると、複写機は、「処理速度」の特性（制約条件）について、利用可能サービス群中の全サービス特性リストの中で、値が最小の処理速度をＶminとする。
【００６８】
なお、複写機は、例えば、全てのサービス特性リストの優先度ｐに相当する特性（制約条件）の値を比較して、値が最小のものを決定し、Ｖminとする。
【００６９】
Ｓ１２０７では、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値をＶminで割って商を求める。即ち、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値を、区間［１，∞］で正規化する。つまり、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値の中で一番値が小さいもの（つまり、優先度ｐの中では一番優先順序が低いもの）を１とし、値が大きいものほど、優先順序が高くなるようにする。
【００７０】
ステップＳ１２０８では、複写機は、ステップＳ１２０７で求めた商の逆数を求める。即ち、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値を、区間［０，１］で正規化する。つまり、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値の中で一番値が小さいもの（つまり、優先度ｐの中では一番優先順序が低いもの）を１とし、値が小さいものほど、優先順序が高くなるようにする。
【００７１】
ここで、ステップＳ１２０６からステップＳ１２０８までの処理を、より具体的な値を用いて例示する。例えば、優先度ｐの制約条件が、処理速度で、１秒当たり、１ページ、２ページ、３ページの３種類の同一ＩＤのサービスがあったとする。このような場合、複写機は、ステップＳ１２０６において、Ｖmin＝１とする。続いてステップＳ１２０７において、複写機は、２、４、５をそれぞれＶminで割った商を求める。即ち、複写機は、２／２＝１、４／２＝２、５／２＝２．５を求める。つまり、複写機は、処理速度の値を区間［１，∞］で正規化する。続いてステップＳ１２０８において、複写機は、ステップＳ１２０７で求めた商の逆数を求める。即ち、複写機は、１／１＝１、１／２＝０．５、１／２．５＝０．４を求める。つまり、複写機は、処理速度を区間［０，１］で正規化する。このことにより、優先順位が低いサービスに係る料金の値が１となり、優先順位が高いサービスに係る料金の値ほど、小さくなる。
【００７２】
ステップＳ１２０９では、複写機は、ｐの値を１だけインクリメントして、ステップＳ１２０２へ戻る。つまり、複写機は、ステップＳ１２０２からステップＳ１２０９までのループ処理において、制約条件リストに書かれている全ての優先度の特性（制約条件）について、区間［０，１］で正規化された値（距離）を求める。
【００７３】
ステップＳ１２１０では、複写機は、制約条件リストの各特性（制約条件）の重みに応じて、全サービス特性リストＬnについて、上述したように区間［０，１］で正規化された値に対して重み付けを行う。なお、重み付け処理の詳細は、後述する図１２に示す。ステップＳ１２１０の処理によって、全ての優先度の特性（制約条件）について、仮想的な距離（仮想距離）が求められる。
【００７４】
ステップＳ１２１１からステップＳ１２１７の処理は、全サービス特性リストＬnからそれぞれのサービスにおけるサービス実行のための仮想距離を求めるためのループ処理である。
【００７５】
ステップＳ１２１１では、複写機は、全サービス特性リストＬnからまだ選択していないサービス特性リストＬiを選択する。ステップＳ１２１２では、複写機は、サービス特性リストＬiに対するサービスＳiの仮想距離ｄiを０とする。ステップＳ１２１３では、複写機は、ｐを１とする（つまり、変数ｐに１をセットする。）。
【００７６】
ステップＳ１２１４では、複写機は、制約条件リストの中に優先度がｐの特性（制約条件）が存在するか否かを判定する。複写機は、制約条件リストの中に優先度がｐの特性（制約条件）が存在すると判定すると、ステップＳ１２１５に進み、存在しないと判定すると、ステップＳ１２１８に進む。
【００７７】
ステップＳ１２１５では、複写機は、優先度ｐに相当する特性の値（つまり、上述したように区間［０，１］で正規化され、ステップＳ１２１０において重み付けされた値）をサービス特性リストＬiから取り出し、ｄｐとする。ステップＳ１２１６では、複写機は、ｄiにｄｐを加えたものをｄiとする。ステップＳ１２１７では、複写機は、ｐの値を１だけインクリメントして、ステップＳ１２１４へ戻る。
【００７８】
Ｓ１２１４からＳ１２１６までの処理で、サービス特性リストＬiに対するサービスＳiの仮想距離ｄiが求められる。
【００７９】
ステップＳ１２１８では、複写機は、全サービス特性リストＬnの中で、ステップＳ１２１１においてまだ選択されていないサービス特性リストＬiが存在するか否かを判定する。複写機は、全サービス特性リストＬnの中で、ステップＳ１２１１においてまだ選択されていないサービス特性リストＬiが存在すると判定すると、ステップＳ１２１１に戻り、存在しないと判定すると、処理を終了する。
【００８０】
図１２は、重み付け処理の一例を示すフローチャートである。ここで、図１２に示される重み付け処理では、優先度が低い制約条件（特性）に対して、より大きな重みを与えるようにしている。より具体的に説明すると、制約条件リストに記述された重み（ｗｅｉｇｈｔ属性の値）を、制約条件（特性）に加算している。制約条件リストのｗｅｉｇｈｔ属性の値は、正であり、優先度が低いほど（ｏｒｄｅｒ属性の値が大きいほど）大きくなる単調増加な値となっている。
【００８１】
ステップＳ１３０１では、複写機は、ｐを２とする（つまり、変数ｐに２を設定する。）。ステップＳ１３０２では、複写機は、制約条件リストの中に優先度がｐ（ｐの値）の制約条件が存在するか否かを判定する。複写機は、制約条件リストの中に優先度がｐの特性（制約条件）が存在すると判定すると、ステップＳ１３０３に進み、存在しないと判定すると、処理を終了する。ここで、最優先（つまり、ｐが１）の制約条件については、重み付けの処理は行わないようにしている。これは、仮想距離は、複写機等が次のサービスを選択する際に用いるからである。
【００８２】
ステップＳ１３０３では、複写機は、制約条件リストの優先度ｐの制約条件の重みをｗｐとする。つまり、複写機は、制約条件リストの優先度ｐの制約条件のｗｅｉｇｈｔ属性の値を取得し、変数ｐに設定する。
【００８３】
ステップＳ１３０４では、複写機は、全サービス特性リストＬn中の優先度ｐに相当する特性（制約条件）の値（上述したように区間［０，１］で正規化された値）にｗｐの値を加算する。ステップＳ１３０５では、複写機は、ｐの値を１だけインクリメントして、ステップＳ１３０２へ戻る。
【００８４】
なお、図１２に示した例では、複写機は、ステップＳ１３０４において、上述したように区間［０，１］で正規化された値に対して重み（ｗｐの値）を加算したが、区間［０，１］で正規化された値に対して重みを乗じるようにしてもよい。また、複写機は、ステップＳ１３０４において、重みについて正規化を行い、重みをある一定の割合にしてから、上述したように区間［０，１］で正規化された値に対して加算したり、又は乗じたりするようにしてもよい。
【００８５】
また、図１２に示した例では、複写機は、最優先の制約条件（特性）の値に対しては、重み付けの処理を行わなかったが、最優先の制約条件（特性）の値に対しても重み付けの処理を行うようにしてもよい。
【００８６】
なお、同一機器（同一複写機）内に、同じ機能（例えば、印刷機能）を提供するサービスが複数存在する場合も、サービス毎にサービス特性リストが異なるため、複写機は、本実施例の方法等によって仮想距離ｄnを求めることができる。そして、最適なサービス（つまり、仮想距離ｄnが短いサービス）に対して処理を依頼し、一連の連携処理を速やかに行うことができる。
【００８７】
なお、各サービスは、ＳＯＡＰ（Ｓｉｍｐｌｅ  Ｏｂｊｅｃｔ  Ａｃｃｅｓｓ  Ｐｒｏｔｏｃｏｌ）に従って、通信を行い、データ等をやり取りするようにしてもよい。例えば、ＳＯＡＰのＢｏｄｙ部にサービス一覧リストや、フローリスト、制約条件リストを格納し、機器又はサービス間で、データ等のやり取りを行ったり、サービスの制御等もＳＯＡＰに従って行ったりするようにしてもよい。
【００８８】
ＳＯＡＰに従って処理を行うことによって、ＬＡＮに繋がれた機器又はサービスだけなく、機器間又はサービス間にプロキシサーバがあるような、インターネットを介して接続された機器間又はサービス間においてもデータのやり取りを行うことが可能となる。
【００８９】
但し、インターネットを介して機器間又はサービス間が接続されている場合は、複写機は、例えば、予め設定等されたターゲット機器又はサービスに対して、サービス一覧リストの取得を要求する。また、複写機は、例えば、ある一定のネットワークの範囲内（ＩＰアドレスの範囲内）に対して、サービス一覧リストの取得を要求するようにしてもよい。
【００９０】
また、複写機は、バイナリデータでデータ（例えば、サービス一覧リスト等）のやり取りを行えない場合、Ｂａｓｅ６４等でデータをエンコーディングして、データのやり取りを行うようにしてもよい。また、複写機は、ＳＯＡＰに従った通信において、データの暗号化や、電子署名等を用いて、セキュリティを高めるようにしてもよい。
【００９１】
即ち、本実施例は、ローカルなネットワークに限定されず、グローバルなネットワーク（インターネット）においても適用可能である。なお、本実施例では、複写機を用いて説明を行ったが、このことは本発明の実施を制限するものではない。
【００９２】
上述したように、実施例１によれば、複写機は、連携処理において、次の処理を行うサービスの仮想距離を求めることができる。よって、複写機は、この仮想距離が一番短いサービスに対して、次の処理を依頼することができる。
【実施例２】
【００９３】
実施例１では、複写機が、次の処理を行うサービスの仮想距離を求める例を示した。以下、実施例２では、複写機又はネットワークを介して接続された複数の複写機が、次の処理以降の処理を行うサービスの仮想距離を求める一例を示す。なお、本実施例において、実施例１と同様の内容については説明を省略する。
【００９４】
まず、複写機（又はサービス）は、同一の機能を提供するサービスについて、仮想距離の短い順に並べられた一覧の情報（仮想距離リスト）を求める。ここで、フローリストのｘ番目のサービスの仮想距離リストをＶＤＬ（ｘ）とする。
【００９５】
複写機は、求めた仮想距離リストＶＤＬ（ｘ）において、仮想距離の短いサービスから順に、次のサービスの実行における仮想距離リストＶＤＬ（ｘ＋１）を求めるよう、依頼を行う。例えば、仮想距離リストＶＤＬ（ｘ）のｉ番目に仮想距離が短いサービス（サービスに係る複写機）が作成した次のサービスの実行における仮想距離リストは、ＶＤＬi（ｘ＋１）となる。このように各複写機（各サービス）が、仮想距離リストを計算していくことにより、最終的に一連の処理全体に係る仮想距離が最短の処理経路が、最適な処理経路となる。
【００９６】
ここで、本実施例においては、際限なく仮想距離の見積もりや、先読みを行わないよう、見積数ｍ、先読み数ｎが、例えば複写機のハードディスク１０９等に格納されているものとする。なお、見積数ｍ及び／又は先読み数ｎの値は、例えば、複写機が、タッチスクリーン等を用いたユーザからの指示に応じてハードディスク１０９等に格納する。また、複写機は、仮想距離リストを求める依頼と共に見積数や、先読み数の値を、依頼先の複写機等に渡す。仮想距離リストを求める依頼と共に見積数や、先読み数の値を受け取った複写機は、見積数や、先読み数の値をハードディスク１０９等に格納する。また、タッチスクリーン等を用いたユーザからの指示に応じて、複写機が、ハードディスク１０９等に格納されている見積数ｍ及び／又は先読み数ｎの値を変更するようにしてもよい。
【００９７】
なお、見積数とは、次に実行するサービスの中で仮想距離リストを求める数のことである。より具体的に説明すると、仮想距離リスト中に１０の候補（つまり、サービス）があり、見積数が３であったときは、複写機は、仮想距離リストの中で仮想距離が短いサービスから３つのサービスを選択する。そして、複写機は、この３つのサービス（又はサービスに対応する複写機）に対して、次のサービスの仮想距離の見積り（つまり、仮想距離リストの作成）の依頼を行う。なお、仮想距離リスト中のサービスが、見積数ｍに満たない場合、複写機は、仮想距離リスト中のサービス全てに対して、仮想距離リストの作成を依頼する。
【００９８】
また、先読み数とは、フローリストにおいて、現在の処理（サービス）から数えて幾つ先の処理（サービス）まで仮想距離リストを求めるかを示す数のことである。なお、フローリスト中の処理（サービス）が、先読み数までの処理（サービス）まで無い場合、複写機（又はシステム）は、フローリスト中の最後の処理（サービス）まで、仮想距離リストを求める。
【００９９】
図１３は、仮想距離リストの一例を示す図である。図１３に示される仮想距離リストは、見積数２、先読み数３の場合の、フローリストのｘ番目のサービスの仮想距離リストの一例である。
【０１００】
複写機は、仮想距離リストＶＤＬ（ｘ）のうち、仮想距離が短いサービスから２つ（見積数）のサービスに対して、次のサービスの仮想距離の見積り（つまり、仮想距離リストの作成）の依頼を行う。この依頼を受けた各サービス（又は複写機）は、仮想距離リストＶＤＬ1（ｘ＋１）又は仮想距離リストＶＤＬ2（ｘ＋１）を作成する。例えば、サービス（又は複写機）は、依頼に応じて、仮想距離リストを作成すると、作成した仮想距離リストを依頼元に送信する。
【０１０１】
また、複写機は、仮想距離リストＶＤＬ1（ｘ＋１）のうち、仮想距離が短いサービスから２つ（見積数）のサービスに対して、次のサービスの仮想距離の見積り（つまり、仮想距離リストの作成）の依頼を行う。この依頼を受けた各サービス（又は複写機）は、仮想距離リストＶＤＬ1（ｘ＋２）又は仮想距離リストＶＤＬ2（ｘ＋２）を作成する。なお、先読み数が３であるので、サービス（又は複写機）は、これ以上先読み処理を継続しない。同様に、サービス（又は複写機）は、見積数についても限界を超えて処理を行わない。
【０１０２】
なお、図１３に示されるように、仮想距離リストＶＤＬ1（ｘ＋１）１６０１には、仮想距離の短い順に並べられたサービスに係る情報（又は次に実行するサービスの候補に係る情報）１６０２及び１６０３が含まれる。また、サービスに係る情報１６０２には、サービスを一意に識別するサービス情報１６０４と、サービスまでの仮想距離１６０５と、が含まれる。
【０１０３】
また、図１３では、例えばＶＤＬ1（ｘ＋２）が複数存在しているが、最初の仮想距離リストからの順序付き集合で特定されるため、同じ名称が存在していても構わない。例えば、ＶＤＬ1（ｘ＋２）１６０６は、［ＶＤＬ（ｘ）、ＶＤＬ1（ｘ＋１）、ＶＤＬ1（ｘ＋２）］で識別され、ＶＤＬ1（ｘ＋２）１６０７は、［ＶＤＬ（ｘ）、ＶＤＬ2（ｘ＋１）、ＶＤＬ1（ｘ＋２）］で識別される。なお、このような仮想距離リストの順序付き集合を、連結仮想距離リストという。
【０１０４】
図１４は、連携処理の経路を求める処理の一例を示すフローチャートである。ステップＳ１４０１では、複写機は、連結仮想距離リストを求める。なお、連結仮想距離リストを求める処理の詳細は、後述する図１５に示す。
【０１０５】
ステップＳ１４０２では、複写機は、サービスの組合せにおいて仮想距離が最短となる経路を、連携処理の経路として決定する。
【０１０６】
図１５は、連結仮想距離リストを求める処理の一例を示すフローチャートである。なお、図１５のフローチャートでは、見積数ｍ、先読み数ｎの場合の、フローリストのｘ番目のサービスの連結仮想距離リストを求める例を示している。また、以下において、複写機が最初に連結仮想距離リストを求める処理を実行した時点でのフローリストのサービスの順番をｘ0とする。
【０１０７】
ステップＳ１５０１では、複写機は、ｘが、ｘ＞ｘ0＋ｎ−１を満たすか否かを判定する。ステップＳ１５０１の処理は、複写機が、先読み数の範囲を超えて処理を行っていないか否かを判定する処理である。複写機は、ｘが、ｘ＞ｘ0＋ｎ−１を満たすと判定すると、処理を終了し、満たさないと判定すると、ステップＳ１５０２に進む。
【０１０８】
ステップＳ１５０２では、複写機は、フローリストにｘ番目の処理（サービス）が存在するか否かを判定する。複写機は、フローリストにｘ番目の処理が存在すると判定すると、ステップＳ１５０３に進み、存在しないと判定すると、処理を終了する。
【０１０９】
ステップＳ１５０３では、複写機は、フローリストのｘ番目の処理（サービス）の仮想距離リストＶＤＬ（ｘ）を求める。なお、ステップＳ１５０３の処理は、実施例１の図７、図１１、図１２に示したフローチャートの処理と同等である。
【０１１０】
ステップＳ１５０４では、複写機は、ｉを１とする（つまり、変数ｉに１を設定する。）。ステップＳ１５０５では、複写機は、ｉが、ｉ＞ｍを満たすか否かを判定する。つまり、複写機は、ステップＳ１５０５において、ｉが、見積数ｍを越えているか否かを判定し、見積数を超えて処理を行わないように制御している。
【０１１１】
複写機は、ｉが、ｉ＞ｍを満たすと判定すると、ステップＳ１５１０に進み、満たさないと判定すると、ステップＳ１５０６に進む。ステップＳ１５０６では、複写機は、仮想距離リストＶＤＬ（ｘ）のｉ番目に仮想距離が短いサービスの実行先に、前記フローリストのｘ＋１番目の処理（サービス）について、仮想距離を求める見積り（つまり、仮想距離リストの作成）を依頼する。この依頼を受けたサービス（又は複写機）は、前記フローリストのｘ＋１番目の処理（サービス）について、仮想距離リストを作成し、作成した仮想距離リストを依頼元に送信する。
【０１１２】
なお、例えば、先読み数ｎを越えているような場合、見積り先のサービス（又は複写機）からは、仮想距離リストＶＤＬi（ｘ＋１）（又は依頼した仮想距離リスト）が返ってこない（送信されてこない）ものとする。
【０１１３】
ステップＳ１５０７では、複写機は、依頼先のサービス（又は複写機）から、仮想距離リスト（又は連結仮想距離リスト）ＶＤＬi（ｘ＋１）が返されたか否かを判定する。複写機は、依頼先のサービス（又は複写機）から、仮想距離リストＶＤＬi（ｘ＋１）が返ってきたと判定すると、ステップＳ１５０８に進み、返ってこなかったと判定すると、ステップＳ１５１０に進む。
【０１１４】
ステップＳ１５０８では、複写機は、ステップＳ１５０６において依頼先のサービス（又は複写機）より返された仮想距離リスト（又は連結仮想距離リスト）ＶＤＬi（ｘ＋１）と、ステップＳ１５０３において求めたＶＤＬ（ｘ）と、の連結処理を行う。そして、複写機は、ステップＳ１５０８において、上述したような連結仮想距離リストを作成する。ステップＳ１５０９では、複写機は、ｉの値を１だけインクリメントして、ステップＳ１５０５へ戻る。つまり、複写機は、次に仮想距離が短いサービスに対して、処理を実行する。
【０１１５】
ステップＳ１５１０では、複写機は、連結仮想距離リスト（又は仮想距離リスト）のｉ番目以降のサービスに係る情報について削除する。つまり、複写機は、ステップＳ１５１０において、見積数を超えている等、不要なサービスに係る情報（サービス情報や、仮想距離）を削除する。
【０１１６】
ステップＳ１５１１では、複写機は、連結仮想距離リスト（又は仮想距離リスト）が空か否かを判定する。複写機は、連結仮想距離リスト（又は仮想距離リスト）が空であると判定すると、処理を終了し、空でないと判定すると、ステップＳ１５１２に進む。即ち、複写機は、処理すべき連結仮想距離リスト（又は仮想距離リスト）がない場合は処理を終了する。ステップＳ１５１２では、複写機は、依頼された、連結仮想距離リスト（又は仮想距離リスト）を依頼元に返す。
【０１１７】
最終的に求められた経路（連結仮想距離リスト）を、制約条件リスト、フローリスト等と共にサービス（又は複写機）間で受け渡すことで、各サービス（又は各複写機）は、前記経路に従って次の処理を行うサービスを決定して、処理を依頼する。また、サービス（又は複写機）は、事前に求めた経路が無い場合等に、再度、その時点で最適な経路を求める。
【０１１８】
また、サービス（又は複写機）は、最適な経路を求めるための先読みの実行について、先読み数分の処理が終わった後に、再度次の先読み処理を実行してもよい。サービス（又は複写機）が、先読み数分の処理が終わった後に、再度次の先読み処理を実行することによって、つまり、処理を区切っているため、先読みの処理に時間をかけずに最適な経路を求めることができる。
【０１１９】
また、サービス（又は複写機）は、先読みの実行について、先読み数分の処理が終わる前に、逐次先読みの処理を実行しながら、常に最適な経路を求めるようにしてもよい。このような処理は、毎回であってもよいし、先読み数以下の回数であってもよい。サービス（又は複写機）が、先読みの実行について、先読み数分の処理が終わる前に、逐次先読みの処理を実行することによって、つまり、逐次、最適な経路の探索を行っているため、より最適な経路を求めることができる。
【０１２０】
また、上述した各実施例は、実行不可能なサービスが存在していた場合の最適な代替経路の探索に利用してもよい。サービス（又は複写機）は、機能（サービス）の提供を依頼する機器（複写機）に対して、連結仮想距離リストを渡す。したがって、経路の途中で、実行不可能なサービスが存在していても、例えば実行不可能なサービスに依頼を行ったサービス（複写機）は、連結仮想距離リストを用いて、次に仮想距離が短いサービスを求める。つまり、例えば実行不可能なサービスに依頼を行ったサービス（複写機）は、連結仮想距離リストを用いて、代替経路を求め、同一の機能を提供するサービスに依頼を行うことができる。なお、例えば、サービス（複写機）は、一定期間経過しても、サービスの提供を行った旨の情報等が依頼先のサービス（複写機）より返ってこない場合等、実行不可能なサービスであると判定する。
【０１２１】
また、本実施例では、複写機が、先読み回数と、見積数と、の両方を有し、処理を行う例を説明したが、どちらか一方の情報のみを有し、処理を行ってもよい。
【０１２２】
上述したように、各実施例によれば、複写機（又はサービス）は、複数の同一サービスがある場合に、ユーザの求める条件に応じて、最適な経路で連携処理を行うことができる。
【０１２３】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【０１２４】
【図１】複写機の構成の一例を示す図である。
【図２】ネットワークを介して互いに接続された複写機のサービス構成の一例を示す図である。
【図３】サービス一覧リストの一例を示す図である。
【図４】タッチスクリーンに表示された、サービス一覧リストに係る出力画面の一例を示す図である。
【図５】フローリストの一例を示す図である。
【図６】制約条件リストの一例を示す図である。
【図７】一連の連携処理において、次に実行すべき最適なサービスを決定し、サービスの提供を依頼する処理の一例を示すフローチャートである。
【図８】ＸＭＬ形式で記述されたサービス一覧リストの一例を示す図である。
【図９】サービス特性リストの一例を示す図である。
【図１０】図７のステップＳ７０１における処理の一例を示す図である。
【図１１】仮想距離を求める処理の一例を示すフローチャートである。
【図１２】重み付け処理の一例を示すフローチャートである。
【図１３】仮想距離リストの一例を示す図である。
【図１４】連携処理の経路を求める処理の一例を示すフローチャートである。
【図１５】連結仮想距離リストを求める処理の一例を示すフローチャートである。
【符号の説明】
【０１２５】
１０２    ＣＰＵ
１０３    ＲＡＭ
１０４    ＲＯＭ
１０５    入力部
１０６    出力部
１０７    ネットワークインターフェイス
１０８    ディスクインターフェイス
１０９    ハードディスク
１１０    ユニット制御部
【図１】
2007156736.tif 000003
【図２】
2007156736.tif 000004
【図３】
2007156736.tif 000005
【図４】
2007156736.tif 000006
【図５】
2007156736.tif 000007
【図６】
2007156736.tif 000008
【図７】
2007156736.tif 000009
【図８】
2007156736.tif 000010
【図９】
2007156736.tif 000011
【図１０】
2007156736.tif 000012
【図１１】
2007156736.tif 000013
【図１２】
2007156736.tif 000014
【図１３】
2007156736.tif 000015
【図１４】
2007156736.tif 000016
【図１５】
2007156736.tif 000017