(57)【要約】【課題】多機能機（ＭＦＰ、Multi-Function  Peripheral）において実行されるマルチスレッドプロセスとしてＷＳ装置プロファイル規格の実施に関する。【解決手段】ウェブサービス装置プロファイル仕様を実装する、コンピュータにより実行される方法である。該方法は、ウェブサービス装置プロファイル仕様が規定する機能を集合的に実装する並列実行される複数のスレッドを装置上で実行する段階を有する。この装置は、（ａ）画像スキャンウェブサービスアプリケーション、（ｂ）印刷ウェブサービスアプリケーション、（ｃ）ファックスウェブサービスアプリケーションのうちの少なくとも２つを有する。【選択図】図４
2008181487.tif 000002
【特許請求の範囲】
【請求項１】
ウェブサービス装置プロファイル仕様を実装する、コンピュータにより実行される方法であって、
ウェブサービス装置プロファイル仕様が規定する機能を集合的に実装する並列実行される複数のスレッドを装置上で実行する段階を有し、
前記装置は、（ａ）画像スキャンウェブサービスアプリケーション、（ｂ）印刷ウェブサービスアプリケーション、（ｃ）ファックスウェブサービスアプリケーションのうちの少なくとも２つを有する方法。
【請求項２】
前記装置はコピー機及びプリンタの両方として機能する、請求項１に記載の方法。
【請求項３】
前記複数のスレッドはＷＳディスカバリプロトコルが規定したタスクのみを実行する、請求項１に記載の方法。
【請求項４】
前記複数のスレッドの少なくとも１つは前記装置内で実行されているプロセスからの通信を処理するが、前記装置外で実行されるどのプロセスからのどの通信も処理しない、請求項１に記載の方法。
【請求項５】
前記複数のスレッドの少なくとも１つは前記装置外で実行される、ネットワークを介して前記装置と通信するプロセスからの通信を処理するが、前記装置内で実行されるどのプロセスからのどの通信も処理しない、請求項１に記載の方法。
【請求項６】
前記スレッドの少なくとも１つが前記装置外で実行されるプロセスからの通信を処理し、前記スレッドの他の１つが前記装置内で実行されるプロセスからの通信を処理する、請求項１に記載の方法。
【請求項７】
前記スレッドの少なくとも１つが（１）前記装置に関するメタ情報の変更を検知し、（２）前記複数のスレッドのうちの他のスレッドに、ネットワーク上で、他の装置に前記メタデータへの変更を示す更新情報をブロードキャストするように命じる、請求項１に記載の方法。
【請求項８】
前記スレッドの少なくとも１つは、前記複数のスレッドのうちの他のスレッドを初期化する、請求項１に記載の方法。
【請求項９】
前記複数のスレッドのうちのどれを終了しても前記複数のスレッドのうちの他のスレッドはどれも終了しない、請求項１に記載の方法。
【請求項１０】
前記複数のスレッドのうちの各スレッドは前記装置の同一のマルチスレッド装置及びファシリティマネージャの一部である、請求項１に記載の方法。
【請求項１１】
前記装置及びファシリティマネージャは前記装置にあるウェブサービスプロトコルを管理する、請求項１０に記載の方法。
【請求項１２】
前記装置上で実行される前記少なくとも１つのウェブサービスは、（ａ）前記装置及びファシリティマネージャにより実施され、（ｂ）前記少なくとも１つのウェブサービスアプリケーションにより実施されないウェブサービスプロトコルの実装を使用する、請求項１０に記載の方法。
【請求項１３】
前記複数のスレッドのうちの１つ以上のスレッドはＳＯＡＰとＷＳＤＬとに基づきフォーマットされたメッセージで通信する、請求項１に記載の方法。
【請求項１４】
前記複数のスレッドの少なくとも１つのスレッドは、前記装置上で前には利用できなかったウェブサービスが前記装置上で現在は利用可能であることを示す情報を、ネットワーク上にブロードキャストする、請求項１に記載の方法。
【請求項１５】
前記複数のスレッドの少なくとも１つのスレッドは、前記装置上で前には利用できたウェブサービスが前記装置上で今は利用可能でないことを示す情報を、ネットワーク上にブロードキャストする、請求項１に記載の方法。
【請求項１６】
２つ以上の並列実行されるスレッドを含むマルチスレッドプロセスを一装置上で実行する段階を有する、コンピュータにより実行される方法であって、
前記スレッドは、
ネットワーク上に前記一装置があることを示す情報を前記ネットワーク上にブロードキャストする少なくとも１つのスレッドと、
前記ネットワーク上に他の装置があることを示す情報を前記ネットワーク上で監視する少なくとも１つのスレッドと、
前記一装置で実行されたプロセスとの通信は処理するが、前記一装置上で実行されていないどのプロセスのどの通信も処理しない少なくとも１つのスレッドと、
前記一装置で実行されていないプロセスとの通信は処理するが、前記一装置上で実行されているどのプロセスのどの通信も処理しない少なくとも１つのスレッドと、
前記一装置の変更を検知し、それに応じて、前記一装置がオファーするサービスを示すメタデータを更新する少なくとも１つのスレッドと、
前記一装置が前にはオファーしていなかったウェブサービスを前記一装置が今はオファーしていることを示す情報を、前記ネットワーク上にブロードキャストする少なくとも１つのスレッドと、
前記一装置が前にオファーしていたウェブサービスを前記一装置がもうオファーしていないことを示す情報を、前記ネットワーク上にブロードキャストする少なくとも１つのスレッドとを含む方法。
【請求項１７】
前記一装置は画像形成装置である、請求項１６に記載の方法。
【請求項１８】
前記一装置はコピー機及びプリンタの両方として機能する多機能機である、請求項１６に記載の方法。
【請求項１９】
プロセッサにより処理された時、前記プロセッサに、ウェブサービス装置プロファイル仕様が規定する機能を集合的に実装する並列実行される複数のスレッドを装置上で実行する段階を実行させる命令を格納した機械読み取り可能媒体であって、
前記装置は、（ａ）画像スキャンモジュール、（ｂ）印刷モジュール、（ｃ）ファックスモジュールのうちの少なくとも２つを有する機械読み取り可能媒体。
【請求項２０】
マルチスレッドプロセスを実行する装置であって、前記装置は一組の動作のうちの動作を互いに同時に実行する２つ以上のメカニズムを含み、前記一組の動作には、
ネットワーク上に前記一装置があることを示す情報を前記ネットワーク上にブロードキャストすることと、
前記ネットワーク上に他の装置があることを示す情報を前記ネットワーク上で監視することと、
前記一装置上で実行されたプロセスとの通信を処理することと、
前記一装置上で実行されたプロセスとの通信を処理しないことと、
前記一装置の変更を検知し、それに応じて、前記一装置がオファーするサービスを示すメタデータを更新することと、
前記一装置が前にはオファーしていなかったウェブサービスを前記一装置が今はオファーしていることを示す情報を、前記ネットワーク上にブロードキャストすることと、
前記一装置が前にオファーしていたウェブサービスを前記一装置がもうオファーしていないことを示す情報を、前記ネットワーク上にブロードキャストすることと、を含む装置。
【請求項２１】
ネットワーク上で装置をアドバタイズする、コンピュータにより実行される方法であって、
前記装置において並列実行される複数のスレッドを実行する段階を有し、前記並列実行される複数のスレッドのうちの第１のスレッドがウェブサービス装置プロファイル仕様で規定された第１の機能の組を実行し、
前記並列実行される複数のスレッドのうち第２のスレッドがウェブサービスディスカバリ仕様で規定された第２の機能の組を実行する方法。
【請求項２２】
前記装置は、多機能機、プリンタ、コピー機、ファクシミリ装置、及びスキャナのうちの１つである、請求項２１に記載の方法。
【請求項２３】
前記第２のスレッドはスタティッククラスを用いて実装される、請求項２１に記載の方法。
【請求項２４】
前記第１のスレッドは前記第２のスレッドがアクセスできるフラグを設定して前記第２のスレッドと通信する、請求項２１に記載の方法。
【請求項２５】
第１のフラグが設定されていることを検知すると、前記第２のスレッドが前記ネットワーク上に前記装置の装置メタデータが変更されたことを示す第１のメッセージを送信させる段階をさらに有する、請求項２１に記載の方法。
【請求項２６】
前記並列実行される複数のスレッドのうちの第１のスレッドが前記並列実行される複数スレッドのうちの第２のスレッドにフラグを用いて第１のメッセージを送信する段階をさらに有し、
前記第１のメッセージは、
前記第２のスレッドが前記ネットワーク上での監視をスタートすべきこと、
前記第２のスレッドが前記ネットワーク上での監視を停止すべきこと、
前記第２のスレッドが終了すべきこと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置の装置メタデータが変更されたことを知らせるべきこと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置が提供するサービスが利用可能であることを知らせるべきこととのうち１つを示す、請求項２１に記載の方法。
【請求項２７】
ネットワーク上で装置をアドバタイズする命令を格納したコンピュータ読み取り可能媒体であって、プロセッサにより前記命令を実行することにより、
並列実行される複数のスレッドを前記装置上で実行し、
前記並列実行される複数のスレッドのうち第１のスレッドがウェブサービス装置プロファイル仕様で規定された第１の機能の組を実行し、
前記並列実行される複数のスレッドのうち第２のスレッドがウェブサービスディスカバリ仕様で規定された第２の機能の組を実行するコンピュータ読み取り可能媒体。
【請求項２８】
前記装置は、多機能機、プリンタ、コピー機、ファクシミリ装置、及びスキャナのうちの１つである、請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項２９】
前記第２のスレッドはスタティッククラスを用いて実装される、請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項３０】
前記第１のスレッドは前記第２のスレッドがアクセスできるフラグを設定して前記第２のスレッドと通信する、請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項３１】
前記プロセッサによる前記命令の実行により、さらに、
フラグが設定されていることを検知すると、前記第２のスレッドが前記装置の装置メタデータが変更されたことを示す第１のメッセージを前記ネットワーク上に送信させる、請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項３２】
前記プロセッサによる前記命令の実行により、さらに、
前記並列実行される複数のスレッドのうちの第１のスレッドが前記並列実行される複数スレッドのうちの第２のスレッドにフラグを用いて第１のメッセージを送信し、前記第１のメッセージは、
前記第２のスレッドが前記ネットワーク上での監視をスタートすべきこと、
前記第２のスレッドが前記ネットワーク上での監視を停止すべきこと、
前記第２のスレッドが終了すべきこと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置の装置メタデータが変更されたことを知らせるべきこと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置が提供するサービスが利用可能であることを知らせるべきこと、のうち１つを示す、請求項２７に記載のコンピュータ読み取り可能媒体。
【請求項３３】
ネットワーク上で装置をアドバタイズするシステムであって、
プロセッサと、
命令を格納したコンピュータ読み取り可能媒体であって、前記プロセッサにより実行されると、
並列実行される複数のスレッドを前記装置上で実行し、
前記並列実行される複数のスレッドのうち第１のスレッドがウェブサービスディスカバリ仕様で規定された第１の機能の組を実行し、
前記並列実行される複数のスレッドのうち第２のスレッドがウェブサービスディスカバリ仕様で規定された第２の機能の組を実行させるコンピュータ読み取り可能媒体とを有するシステム。
【請求項３４】
前記装置は、多機能機、プリンタ、コピー機、ファクシミリ装置、及びスキャナのうちの１つである、請求項３３に記載のシステム。
【請求項３５】
前記第２のスレッドはスタティッククラスを用いて実装される、請求項３３に記載のシステム。
【請求項３６】
前記第１のスレッドは前記第２のスレッドがアクセスできるフラグを設定して前記第２のスレッドと通信する、請求項３３に記載のシステム。
【請求項３７】
前記プロセッサによる前記命令の実行により、さらに、
フラグが設定されていることを検知すると、前記第２のスレッドが前記装置の装置メタデータが変更されたことを示す第１のメッセージを前記ネットワーク上に送信させる、請求項３３に記載のシステム。
【請求項３８】
前記プロセッサによる前記命令の実行により、さらに、
前記並列実行される複数のスレッドのうちの第１のスレッドが前記並列実行される複数スレッドのうちの第２のスレッドにフラグを用いて第１のメッセージを送信する段階を有し、前記第１のメッセージは、
前記第２のスレッドが前記ネットワーク上での監視をスタートすべきことと、
前記第２のスレッドが前記ネットワーク上での監視を停止すべきことと、
前記第２のスレッドが終了すべきことと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置の装置メタデータが変更されたことを知らせるべきことと、
前記第２のスレッドが前記ネットワーク上に第２のメッセージを送信させ、前記第２のメッセージの受信者に前記装置が提供するサービスが利用可能であることを知らせるべきこととのうち１つを示す、請求項３３に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はウェブサービスの提供に関し、具体的には多機能機（ＭＦＰ、Multi-Function  Peripheral）において実行されるマルチスレッドプロセスとしてＷＳ装置プロファイル規格の実施に関する。
【背景技術】
【０００２】
このセクションで説明するアプローチは、達成しようとすることができるものであるが、必ずしも以前に思いついたものや達成しようと試みたものではない。それゆえ、特に注意しない限り、このセクションに記載したアプローチはいずれもこのセクションに記載したことをもって先行技術であると考えるべきではない。
【０００３】
ワールドワイドウェブ（ＷＷＷ）はグローバルな読み出し書き込み情報スペース（global,  read-write  information  space）である。テキスト文書、画像、マルチメディア、その他の多数の情報アイテムは、リソース（resources）と呼ばれ、ＵＲＬ（Uniform  Resource  Identifiers）と呼ばれる短い位置知的なグローバルな識別子により特定され、非常に簡単な方法で各リソースを探し、アクセスし、相互参照することができる。Ｗ３Ｃ（World  Wide  Web  Consortium）は、メンバー組織とフルタイムのスタッフと一般市民とが共に働きＷＷＷの標準規格を開発している。Ｗ３Ｃは、ネットワーク上で相互利用可能なマシン・ツー・マシン・インターラクションをサポートするように設計されたソフトウェアシステムとして、「ウェブサービス」を規定している。この規定は相異なる多数のシステムを包含するが、一般的な使用においては、この用語はＳＯＡＰフォーマットのＸＭＬ（Extensible  Markup  Language）エンベロープを使用する、ＷＳＤＬ（Web  Services  Description  Language）により記述されたインターフェイスを有するサービスを意味している。ウェブサービスにより、人間の介入なしに装置とアプリケーションがネットワークを介して相互に通信できるようになり、かかる装置やアプリケーションと人間がネットワークを介して通信するプロトコルスイート（suite  of  protocols）（例えば、ＨＴＴＰ）と同じものを用いることができる。
【０００４】
ウェブサービスを規定している仕様書は意図的にモジュール式になっており、結果として、ウェブサービスのすべてを規定している文書はない。その代わりに、少数のコアとなる仕様書があり、状況と技術的な選択に応じて他の仕様書により補足されている。最も一般的なコアとなる仕様書はＳＯＡＰ、ＷＳＤＬ、ＷＳ−Ｓｅｃｕｒｉｔｙ、及びＷＳ−ＲｅｌｉａｂｌｅＥｘｃｈａｎｇｅである。仕様書ごとに異なるタスクと機能が記載されている。
【０００５】
ＳＯＡＰはＸＭＬベースの拡張可能なメッセージエンベロープのフォーマットであり、基礎となるプロトコル（例えば、ＨＴＴＰとＳＭＴＰ）と結びついている。ＸＭＬを用いて、ＳＯＡＰはメッセージをどのようにフォーマットすべきか規定している。これらのメッセージは、その受信者（装置やアプリケーション）がメッセージを理解できるようにフォーマットされる。ＳＯＡＰは、例えば、リモートプロシージャコールを実行する。
【０００６】
ＷＳＤＬは、特定のプロトコルに結びついたインターフェイスの詳細に沿ってサービスインターフェイスを記述することができるＸＭＬフォーマットである。ＷＳＤＬは典型的にはサーバとクライアントコードを生成し、設定するために使用される。ＷＳ−Ｓｅｃｕｒｉｔｙは、メッセージ交換を確保するためにＸＭＬ暗号化とＸＭＬシグネチャをどのように使用するかを規定している。ＷＳ−ＲｅｌｉａｂｌｅＥｘｃｈａｎｇｅは２つのウェブサービス間の信頼性の高いメッセージ交換のためのプロトコルである。
【発明の開示】
【課題を解決するための手段】
【０００７】
本発明の第１の態様による実施形態は、ＷＳ装置プロファイル仕様（WS-DeviceProfile  specification）の実装を含む。具体的な実装はＷＳデバイスプロファイル（WS-DeviceProfile）仕様に従う。具体的な実施には、ＷＳデバイスプロファイル仕様に明示的に規定されていない装置及びファシリティマネージャ（ＤＦＭ、Device  and  Facility  Manager）を含む。ＤＦＭは様々なウェブサービス（例えば、ＷＳアドレッシング、ＷＳディスカバリ、ＷＳセキュリティ等）を使用し、これらのウェブサービスをどのように仕様して様々なタスクを実行するか記載している。ＤＦＭはネットワーク上の装置とサービスのディスカバリ（discovery）を処理する。ＤＦＭはファシリティマネージャとしても動作する。ＤＦＭは単一のコンポーネントに様々なウェブサービスを実装し、プリケーションはそれを使用したり再使用したりできる。ＤＦＭは、ＤＦＭが実施するウェブサービスのより複雑な詳細の一部からこれらのアプリケーションを遮蔽（insulate）する。
【０００８】
本発明の一実施形態では、ＤＦＭは多機能機（「ＭＦＰ」）内に実装される。ＭＦＰは相異なる複数のアプリケーションを有し、各アプリケーションは異なる特別な機能（例えば、印刷、スキャン、ファックス等）を有する。各アプリケーションはＤＦＭが提供するウェブサービスを使用する。後でＭＦＰに動的に追加される追加的アプリケーションもＤＦＭが提供するウェブサービスを使用できる。最も一般的に使用されているウェブサービスはＤＦＭにより提供される。これらのウェブサービスは各アプリケーションに別々に実装する必要はない。
【０００９】
本発明の一実施形態では、ＤＦＭは複数の実行スレッドとして実施される。ＤＦＭのマルチスレッド化（multi-threaded  nature）により効率が高くなる。ＤＦＭが複数のスレッドを有するとき、各スレッドは並行してタスクを処理することができる。例えば、１つのスレッドはＭＦＰ外部のプロセス、アプリケーション、及び装置との通信を処理でき、他のスレッドはＭＦＰ内部のプロセスとアプリケーションとの通信を同時に処理できる。また、ＤＦＭをマルチスレッド化して実装することにより、ＤＦＭの機能の一部を一時的にシャットダウンし、更新し、及び／またはデバッグしつつ、ＤＦＭのその他の機能は動作し続けさせることができる。エラーが発生したスレッドを終了、リスタートしても、その他のスレッドはそのエラーの影響を受けない。このように、マルチスレッドＤＦＭは単一スレッドＤＦＭよりもロバスト（robust）である。
【００１０】
本発明の第２の態様による実施形態は、ＷＳ装置プロファイル仕様（WS-DeviceProfile  specification）の実装を含む。本発明の実施形態は、ＷＳデバイスプロファイル仕様に明示的に規定されていない装置及びファシリティマネージャ（ＤＦＭ、Device  and  Facility  Manager）を含む。ＤＦＭは様々なウェブサービス（例えば、ＷＳアドレッシング、ＷＳディスカバリ、ＷＳセキュリティ等）を使用し、これらのウェブサービスをどのように仕様して様々なタスクを実行するか記載している。ＤＦＭはネットワーク上の装置とサービスのディスカバリ（discovery）を行う。ＤＦＭはファシリティマネージャとしても動作する。ＤＦＭは単一のコンポーネントに様々なウェブサービスを実装し、プリケーションはそれを使用したり再使用したりできる。ＤＦＭは、ＤＦＭが実施するウェブサービスの詳細からこれらのアプリケーションを遮蔽（insulate）する。
【００１１】
本発明の一実施形態では、ＤＦＭは装置に実装される。装置には、これに限定はされないが、多機能機（ＭＦＰ、Multi-Function  Peripheral）が含まれる。例えば、ＭＦＰは相異なる複数のアプリケーションを有し、各アプリケーションは異なる機能（例えば、印刷、スキャン、ファックス等）を有する。各アプリケーションはＤＦＭが提供するウェブサービスを使用できる。後でＭＦＰに動的に追加される追加的アプリケーションもＤＦＭが提供するウェブサービスを使用できる。最も一般的に使用されているウェブサービス（ＷＳディスカバリ等）はＤＦＭにより提供される。これらのウェブサービスは各アプリケーションが別々に実装する必要はない。
【００１２】
本発明の一実施形態では、ＤＦＭは複数の実行スレッドとして実施される。ＤＦＭのマルチスレッド化（multi-threaded  nature）により効率が高くなる。ＤＦＭが複数のスレッドを有するとき、各スレッドは並行してタスクを処理することができる。例えば、装置上で実行されている１つのスレッドはＷＳ装置プロファイルプロトコルが規定する機能の第１の組を実行することができる。例えば、そのスレッドは装置が提供するウェブサービスの管理に関するタスクを実行する。装置上で実行されている他のスレッドは、ＷＳディスカバリプロトコルが規定する機能の第２の組を実行することができる。例えば、そのスレッドは他の装置と通信して、その装置が利用可能であり、その装置にどんな能力があるかを通信した他の装置に知らせる。
【００１３】
本発明の実施形態により、ＤＦＭが他のアプローチを使用する効率を高くすることができる。例えば、ＤＦＭのスレッドはフラグの設定と読み出しにより互いに通信でき、１つのスレッドが他のスレッドを待つ時間を最小化できる。また、ＤＦＭの一部をスタティッククラスを用いて実装して、インスタンス化したオブジェクトへのポインタを管理する複雑性を避けることができる。
【発明を実施するための最良の形態】
【００１４】
［関連出願との相互参照］
本願は次の米国特許出願に関連し、各出願の内容をあたかもここに開示したように参照援用する：米国特許出願第１１／２６５，８３５号（発明の名称「APPROACH  FOR  DISCOVERING  NETWORK  RESOURCES」；米国特許出願第１１／４９７，０００号（発明の名称「ADVANCED  WEB  SERVICES  ON  A  LEGACY  PLATFORM」）；米国特許出願第ＸＸ／ＸＸＸ，ＸＸＸ号（代理人事件整理番号第４９９８６−０６０６号）（発明の名称「Multi-threaded  device  and  Facility  Manager」、出願日ＸＸＸＸ）。
【００１５】
本発明は、添付した図面において実施例によって示すが、本発明を限定するものではない。同じ参照数字は同じ要素を示す。
【００１６】
以下の詳細な説明では、説明を目的として、本発明を完全に理解してもらうために、具体的な詳細事項を開示した実施形態例を記載する。しかし、言うまでもなく、本発明はこれらの詳細がなくても実施することができる。他の場合において、ブロック図として周知の構造やデバイスを示すが、これは本発明が不明瞭になることを避けるためである。
【００１７】
以下に示したセクションに沿って説明する。
１.０          アーキテクチャの概要
１.１        クライアント
１.２        ネットワーク
１.３        装置ファシリティマネージャ
１.４        ＷＳＤマネージャ
１.４.１        一般的ＡＰＩ
１.４.２        一般的ＡＰＩの実装
１.５        ウェブサービスアプリケーション
１.５.１        抽象ＡＰＩ
１.５.２        抽象ＡＰＩの実装
２.０          マルチスレッドＤＦＭ
３.０          マルチスレッドＤＦＭへのＷＳ−Ｄｉｓｃｏｖｅｒｙ機能の組込
４.０          実施メカニズム
【００１８】
１.０        アーキテクチャの概要
図１は、本発明の一実施形態による、ネットワーク環境にある装置の一例を示すブロック図である。図１に示した例において、装置は多機能機（ＭＦＰ）である。ＭＦＰは複数のモジュールを有し、各モジュールが異なる機能を実行する。かかる機能には、例えば、印刷、コピー、ファックス、スキャン、アーカイブ（archiving）、文書提供（document-serving）等がある。リコーＡｆｉｃｉｏＣｏｌｏｒ５５６０はＭＦＰの一例である。このＭＦＰは、他の用途もあるが、プリンタ、スキャナ、コピー機等として動作する。
【００１９】
図１はＭＦＰである装置を示しているが、本発明の他の実施形態では、ＭＦＰ１０２は、例えばプリンタ、コピー機、ファクシミリ機、画像形成装置、デジタルカメラ、スキャナ等であるＭＦＰ以外の装置であってもよい。このように、本発明の実施形態ではＤＦＭをＭＦＰ以外の装置で実施してもよい。しかし、ここでは説明を容易にするため、主としてＭＦＰで実施されたＤＦＭについて説明する。結果として、本発明の実施形態はＤＦＭが実施される装置の種類には制限されず、例えば、ＤＦＭは自動販売機、キッチン機器、パーソナルコンピュータ、組み込みコンピュータ等で実施されてもよい。
【００２０】
図１は、ＭＦＰ１０２、ローカルエリアネットワーク（ＬＡＮ）１０４、ファイアウォール１０６、インターネット１０８を示している。ＭＦＰ１０２はＬＡＮ１０４と通信可能に結合されている。ＬＡＮ１０４はファイアウォール１０６と通信可能に結合されている。ファイアウォール１０６はインターネット１０８と通信可能に結合されている。このように、ＭＦＰ１０２はＬＡＮ１０４、ファイアウォール１０６、及びインターネット１０８を介して他の装置と通信することができる。
【００２１】
ＭＦＰ１０２は、相異なる複数のモジュールを有し、各モジュールは異なる機能を提供する。これらのモジュールには、中央処理ユニット（ＣＰＵ）１１０、ネットワークインターフェイス（例えば、イーサネット(登録商標)カード）１１２、メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ））１１４、記憶装置（例えば、ハードディスクドライブ）１１６、ディスプレイ（例えば、液晶ディスプレイ）１１８、フロントパネル入力装置（例えば、キーパッド）１２０、ファックスエンジン１２２、スキャンエンジン１２４、プリントエンジン１２６等が含まれる。本発明の様々な実施形態では、ＭＦＰが有するモジュールは図１に示したよりも多くても、少なくても、異なっていてもよい。
【００２２】
図２は、本発明の一実施形態による、ＭＦＰのウェブサービスアプリケーションの一例を示すブロック図である。図２には、（図１のＭＦＰ１０２に相当する）ＭＦＰ２０２と、ネットワーク２０４と、ウェブサービスクライアント２１８と、ＤＦＭ２２０とが示されている。本発明の一実施形態では、ＤＦＭ２２０はＷＳ−ＤｅｖｉｃｅＰｒｏｆｉｌｅ仕様の実装である。ＭＦＰ２０２とウェブサービスクライアント２１８はネットワーク２０４に通信可能に結合され、相互に通信する。
【００２３】
ＭＦＰ２０２はウェブサービスアプリケーション２０６を有する。そのウェブサービスアプリケーション２０６はＭＦＰ２０２上で実行される。ウェブサービスアプリケーション２０６は、ネットワーク２０４とＤＦＭ２２０を介してウェブサービスクライアント２１８と通信する。ＭＦＰ２０２はさらにＳＯＡＰソフトウェアデベロップメントキット（ＳＤＫ）２０８とウェブサービスプロトコル２１０とを有する。ＭＦＰ２０２は相異なる任意数のプラットフォーム２１６Ａ−２１６Ｎを有していてもよい。各プラットフォームは、例えば、異なるオペレーティングシステムや異なるハードウェア（set  of  hardware）であってもよい。図２は複数のプラットフォーム２１６Ａ−２１６Ｎを示しているが、本発明の一実施形態では、ＭＦＰ２０２のプラットフォームは１つだけでもよく、プラットフォーム２１６Ａ−２１６Ｎのうちのどれか１つでもよい。
【００２４】
図３は、本発明の一実施形態による、ＭＦＰ上で実行される相異なる複数のウェブサービスアプリケーションとＤＦＭの一例を示すブロック図である。図３は、ネットワーク３０４と通信可能に結合された（図２のＭＦＰ２０２に相当する）ＭＦＰ３０２を示している。ＭＦＰ３０２はウェブサービスアプリケーション３０６Ａと３０６Ｂを有する。各ウェブサービスアプリケーションはＭＦＰ３０２の特定の機能の処理に特化していてもよい。例えば、ウェブサービスアプリケーション３０６Ａは特に印刷のタスクを処理するアプリケーションであり、ウェブサービスアプリケーション３０６Ｂは特にスキャンのタスクを処理するアプリケーションである。ウェブサービスアプリケーション３０６Ａと３０６Ｂは「装置制御プロトコル（ＤＣＰ、device  control  protocols）」とも呼ばれる。ＭＦＰ３０２はＳＯＡＰ  ＳＤＫ３０８とウェブサービスプロトコル３１０も有する。ウェブサービスアプリケーション３０６Ａと３０６Ｂは両方ともＳＯＡＰ  ＳＤＫ３０８とウェブサービスプロトコル３１０とを使用する。
【００２５】
ＭＦＰ３０２は相異なる任意数のプラットフォーム３１６Ａ−３１６Ｎを有していてもよい。各プラットフォームは、例えば、異なるオペレーティングシステムや異なるハードウェア（set  of  hardware）であってもよい。図３は複数のプラットフォーム３１６Ａ−３１６Ｎを示しているが、本発明の一実施形態では、ＭＦＰ３０２のプラットフォームは１つだけでもよく、プラットフォーム３１６Ａ−３１６Ｎのうちのどれか１つでもよい。
【００２６】
各プラットフォーム３１６Ａ−Ｎには、各ウェブサービスアプリケーション３０６Ａと３０６Ｂに対して、プラットフォームとウェブサービスアプリケーションごとに別々のＡＰＩ実装がある。各抽象ＡＰＩ実装３１４ＡＡ−ＮＡはプラットフォームに対して抽象ＡＰＩ３１２Ａを実装する。同様に、各抽象ＡＰＩ実装３１４ＡＢ−ＮＢはプラットフォームに対して抽象ＡＰＩ３１２Ｂを実装する。このように、抽象ＡＰＩ実装３１４ＡＡはプラットフォーム３１６Ａの抽象ＡＰＩ３１２Ａのプラットフォーム個別の実装（platform-specific  implementation）であり、抽象ＡＰＩ実装３１４ＢＡはプラットフォーム３１６Ｂの抽象ＡＰＩ３１２Ａのプラットフォーム個別の実装である。どうように、抽象ＡＰＩ実装３１４ＡＢはプラットフォーム３１６Ａの抽象ＡＰＩ３１２Ｂのプラットフォーム個別の実装（platform-specific  implementation）であり、抽象ＡＰＩ実装３１４ＢＢはプラットフォーム３１６Ｂの抽象ＡＰＩ３１２Ｂのプラットフォーム個別の実装である。ウェブサービスアプリケーション３０６Ａはプラットフォーム３１６Ａ−Ｎとその対応する抽象ＡＰＩ実装３１４ＡＡ−ＮＡを介して通信し、ウェブサービスアプリケーション３０６Ｂはプラットフォーム３１６Ａ−Ｎとその対応する抽象ＡＰＩ実装３１４ＡＢ−ＮＢを介して通信する。
【００２７】
ＭＦＰ３０２はＤＦＭ３２０も有する。本発明の一実施形態では、ＭＦＤ３２０はＷＳ−ＤｅｖｉｃｅＰｒｏｆｉｌｅ使用の実装である。各プラットフォーム３１６Ａ−Ｎには、それに固有の別々の一般ＡＰＩ実装がある。各一般ＡＰＩ実装３１８Ａ−Ｎは個別プラットフォームの一般ＡＰＩ３２２を実装する。このように、一般ＡＰＩ実装３１８Ａはプラットフォーム３１６Ａの一般ＡＰＩ３２２のプラットフォーム個別の実装（platform-specific  implementation）であり、一般ＡＰＩ実装３１８Ｂはプラットフォーム３１６Ｂの一般ＡＰＩ３２２のプラットフォーム個別の実装である。ＤＦＭ３２０はプラットフォーム３１６Ａ−Ｎと、対応する一般ＡＰＩ実装３１８Ａ−Ｎを介して通信する。
【００２８】
図４は、本発明の一実施形態による、マルチスレッドＤＦＭを有するＭＦＰのアーキテクチャ４００の一例を示すブロック図である。アーキテクチャ４００はクライアント４０２とアドミニストレータ４０４とＭＦＰとを含む。このＭＦＰは、ＭＦＰ上で実行されている装置ファシリティマネージャ（ＤＦＭ）４０６と、複数のウェブサービスアプリケーション（ＷＳＡ）とを有する。
【００２９】
ＭＦＰは、図４に示したように、プラットフォーム（例えば、レガシープラットフォーム４３０、リナックスベースプラットフォーム４４０、ＶｘＷｏｒｋｓベースプラットフォーム４５０等）を有し、各プラットフォーム上ではＷＳＡ４０８が実行されている。図４に示したプラットフォームは単なる例であり、このアプローチはいかなる種類のプラットフォーム（platform）にも適用できる。
【００３０】
ＤＦＭ４０６は、ディスカバリ要求、クライアント４０２からのメタデータ要求、管理者（装置）４０４からの設定その他のＭＦＰ管理要求に応答することによりＭＦＰを代表する。ＤＦＭ４０６は、ＷＳ−Ｄｉｓｃｏｖｅｒｙ４１２とＷＳ−ＭｅＸ（すなわち、ＷＳ−ＭｅｔａｄａｔａＥｘｃｈａｎｇｅ）４１６等である複数のウェブサービス仕様を実装したリポジトリとして機能する。
【００３１】
クライアント４０２はＭＦＰにサービスを要求する。ＭＦＰで実行されているウェブサービスアプリケーション（ＷＳＡ）４０８は、（例えば、ＳＯＡＰプロトコルを用いて）クライアントにサービスを提供する。各ＷＳＡ４０８は、目標プラットフォームとは独立した抽象ＡＰＩ４２４等であるサービス固有の抽象ＡＰＩを利用することができる。各ＷＳＡ４０８はＷＳ−Ｅｖｅｎｔｉｎｇ４２２を利用してもよい。
【００３２】
クライアント４０２は、ディスカバリ要求またはディスカバリＨＥＬＬＯ（すなわち、同一ネットワーク上の装置に対してＭＦＰが発行するブロードキャストまたはマルチキャストメッセージ）によりＭＦＰがあることを発見（discover）する。クライアント４０２は、ＭＦＰがあることを知ると、（例えば、ＷＳ−ＭｅｔａｄａｔａＥｘｃｈａｎｇｅにより）装置メタデータ交換要求を送信し、そのＭＦＰが提供するすべてのサービスを発見する。ＤＦＭ４０６は、すべての装置に対して、要求を受信し、ＭＦＰが提供する様々なサービスを記述したメタデータを返す。クライアント４０２は、ウェブサービスアプリケーション（ＷＳＡ）４０８等であるＭＦＰ上で実行されている具体的なウェブサービスアプリケーションにサービスメタデータを要求する。ＷＳＡ４０８は、ウェブサービス装置（ＷＳＤ）マネージャ４１０にサービスメタデータを要求する。ＷＳＤマネージャ４１０はＷＳＡ４０８にサービスメタデータを返す。ＷＳＡ４０８はクライアント４０２にサービスメタデータを転送する。
【００３３】
あるいは、ＭＦＰの装置メタデータ及びＷＳＡのサービスメタデータは、同一の応答でクライアント４０２に送信してもよい。
【００３４】
サービスメタデータに基づき、クライアント４０２は、ＷＳＡ４０８が提供するサービスに対応するＳＯＡＰ要求を生成して送信する。ＷＳＡ４０８はＳＯＡＰ要求を受信して処理する。受信した要求に基づき、ＷＳＡ４０８は抽象ＡＰＩ４２４を使用して、抽象ＡＰＩ実装（abstract  API  implementation）４４４等の抽象ＡＰＩ４２４にプラットフォーム固有のコール（call）を行う。ウェブサービスアプリケーション（例えば、ＷＳＡ４０８）の開発者は、ウェブサービス自体の開発に集中でき、ウェブサービスが実行される基礎となるプラットフォームに関する複雑な知識を有する必要はない。それゆえ、目標プラットフォーム（target  platform）の知識を有する人が、ウェブサービスアプリケーションの開発者でなくても、対応する抽象ＡＰＩの実装を規定（define）することができる。
【００３５】
１.１        クライアント
クライアント４０２は、ＭＦＰが提供するサービスを要求するプロセスに関連したアプリケーションである。クライアント４０２は、典型的には、初期要求プロセスをサポートするオペレーティングシステムに関連したアプリケーションである。クライアント４０２の目的は、要求プロセスからのプラットフォーム固有なプロシージャ（procedure）を、ＳＯＡＰを理解できるアプリケーションが処理できるＳＯＡＰ要求に変換することである。
【００３６】
例えば、要求プロセスはマイクロソフト社のＷｏｒｄアプリケーションと関連するものである。ＷＳＡ４０８は印刷サービスを提供できる。クライアント４０２は、初期要求プロセスをサポートするオペレーティングシステムに関連したアプリケーションであり得る。クライアント４０２は、要求プロセスから送信されたプラットフォーム固有な「印刷データ」要求を受信する。クライアント４０２は、その印刷データ要求を、ＷＳＡ４０８が処理できるＳＯＡＰメッセージにエンコードする。
【００３７】
１.２        ネットワーク
クライアント４０２とＭＦＰとの間のＳＯＡＰ通信は、ネットワーク（図示せず）を介して行うことができる。ネットワークは、そのネットワーク中のいろいろなノード間におけるデータの交換を提供する媒体またはメカニズムにより実装される。かかるネットワークの例としては、これに限定されないが、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イーサネット(登録商標)、インターネット等のネットワークや、地上波、衛星波、または無線リンク等が含まれる。ネットワークは、ここに説明したようなネットワークを組み合わせたものを含んでいてもよい。ネットワークは、例えば、ＴＣＰ（Transmission  Control  Protocol）、ＵＤＰ（User  Datagram  Protocol）、及び／またはＩＰ（Internet  Protocol）によりデータを伝送することができる。
【００３８】
１.３        装置ファシリティマネージャ
ＤＦＭ４０６は、ＭＦＰを代表して、ディスカバリ要求、ロギング情報要求、設定命令を受け取る。本発明の一実施形態では、ＤＦＭ４０６は複数のウェブサービス仕様の実装したリポジトリ（repository）としても機能する。このように、ＤＦＭ４０６は、それぞれがウェブサービス仕様により規定された機能を実装するルーチンを含む共有ライブラリを含んでいてもよい。このように、複数のウェブサービス仕様を実装して、ＭＦＰ上で実行されている（ＷＳＡ４０８等の）複数のウェブサービスアプリケーションのそれぞれで共有してもよい。結果として、ウェブサービスアプリケーションの開発者は、ＭＦＰに実装されたウェブサービス仕様を使用してこれに依存することができ、これらの使用の詳細を知る必要はない。ＤＦＭ４０６上に実装されたウェブサービス仕様には、これに限定はされないが、ＷＳ−Ｄｉｓｃｏｖｅｒｙ４１２、ＷＳ−Ｔｒａｎｓｆｅｒ４１４、ＷＳ−ＭｅＸ（すなわち、ＷＳ−ＭｅｔａｄａｔａＥｘｃｈａｎｇｅ）４１６、ＷＳ−Ｓｅｃｕｒｉｔｙ４１８が含まれる。
【００３９】
本発明の一実施形態では、ＤＦＭ４０６はＳＯＡＰプロトコルに対応するライブラリルーチンを含む。各ＳＯＡＰライブラリルーチンは、（１つ以上の）ＳＯＡＰ仕様により規定された（１つ以上の）機能を実装する。ＳＯＡＰライブラリルーチンを使用してＳＯＡＰ要求を分析し、ＳＯＡＰメッセージをパッケージする。ＳＯＡＰプロトコル規格の複数のバージョンをサポートすることもできる。ＳＯＡＰプロトコル規格の新しいバージョンに更新しても、ＷＳＡ４０８への修正はほとんどまたはまったくない。
【００４０】
本発明の一実施形態では、ＤＦＭ４０６はブロードキャストメッセージを送信して、ＭＦＰ上の（１つ以上の）ＷＳＡに更新されたことを知らせる。本発明の一実施形態では、クライアント４０２はかかる更新イベントをサブスクライブ（subscribe）する必要はない。しかし、本発明の一実施形態では、クライアント４０２は、ＭＦＰ上の（１つ以上の）ＷＳＡへの更新通知を受信するよう登録する。本発明のかかる実施形態では、ＤＦＭ４０６があるアプリケーションの更新に関する更新情報を受信し、クライアント４０２がかかる更新通知を受信するように登録されていると、ＤＦＭ４０６はクライアントアプリケーションに更新通知を送信する。
【００４１】
本発明の一実施形態では、ＤＦＭ４０６はＷＳＡに関する更新情報を受信する。例えば、ＷＳＡ４０８はファックスサービスを提供できる。ＭＦＰはファックスラインが切断されていることを検知できる。ファックスサービスが利用できない時、ＤＦＭ４０６は、その後のメタデータ要求に対してＭＦＰがファックスサービスを提供することを示す装置メタデータで応答すべきではない。それゆえ、ＷＳＡ４０８から更新情報を受信するとそれに応じて、ＤＦＭ４０６はＷＳＡ４０８に関連した装置メタデータ及び／またはサービスメタデータを更新する。
【００４２】
本発明の一実施形態では、ＤＦＭ４０６は管理者（装置）４０４から設定要求を受信する。設定要求は設定及び／または更新すべき（１つ以上の）ＷＳＡを示している。ＤＦＭ４０６は設定要求を処理して、適当なＷＳＡに対して設定または更新命令を実行する、または実行させる。あるいは、ＤＦＭ４０６はＷＳＤマネージャ４１０に命令してかかる設定要求を処理させてもよい。
【００４３】
本発明の一実施形態では、ＤＦＭ４０６は管理者（装置）４０４からログ要求を受信して応答する。ＤＦＭ４０６は、ＭＦＰで実行されている（１つ以上の）ＷＳＡに関するロギング（logging）情報を読み出す。ＤＦＭ４０６はロギング情報を管理者（装置）４０４に送信する。ＷＳＤマネージャ４１０はロギング情報を読み出し、ＤＦＭ４０６に提供する。
【００４４】
１.４        ＷＳＤマネージャ
本発明の一実施形態では、ＤＦＭ４０６はＷＳＤマネージャ４１０も有する。ＷＳＤマネージャ４１０は、ＭＦＰのロギング情報、状態問い合わせ、外部管理の中心点（central  point）を提供する。本発明の一実施形態では、管理者（装置）４０４はＭＦＰに関する情報をＷＳＤマネージャ４１０を通して読み出すように構成されたアプリケーションである。例えば、ＷＳＤマネージャ４１０は、すべてのＷＳＡ４０８と、ＷＳＡ４０８が実行されている様々なプラットフォームとから内部的に来るすべてのロギング情報を集中する。管理者（装置）４０４は、ＷＳＤマネージャ４１０を用いてＷＳＡ４０８を設定、更新、またはディスエーブル（disable）してもよい。
本発明の一実施形態では、ＷＳＤマネージャ４１０は全体的な状態情報を持っている。その全体的な状態情報とは、例えば、ＭＦＰがどこに配置されているか、ＭＦＰにどのＷＳＡがインストールされているか、ＷＳＡが正しく実行されているか等である。
【００４５】
本発明の一実施形態では、ＷＳＤマネージャ４１０はＭＦＰのメタデータを持っている。本発明の一実施形態では、ＷＳＤマネージャ４１０はＭＦＰで実行されている各ＷＳＡ４０８に関するサービスメタデータを持っている。
【００４６】
１.４.１        一般ＡＰＩ
本発明の一実施形態では、ＷＳＤマネージャ４１０は、一般ＡＰＩ４２０を通して、ＭＦＰのＩＰアドレスやモデルナンバ等であるそのＭＦＰに関する一般情報を読み出す。一般ＡＰＩ４２０は、ＤＦＭ４０６がＭＦＰの各プラットフォームに固有の情報を受信するインターフェイスを規定（define）する。結果として、ＤＦＭの開発者は、特定のプラットフォームについて詳細を知る必要はなく、その開発者が作っているＤＦＭの詳細を知っていればよい。図４中の点線は、ＡＰＩからしかるべきＡＰＩ実装へのＡＰＩコールを表している。
【００４７】
１.４.２        一般ＡＰＩ実装
一般ＡＰＩ４２０がＤＦＭ４０６に対して規定されていれば、一般ＡＰＩ４２０のプラットフォーム固有の実装が規定されている。例えば、一般ＡＰＩ実装４３２はレガシー（legacy）プラットフォーム４３０上の一般ＡＰＩ４２０に対して規定されている。同様に、一般ＡＰＩ実装４４２はリナックスベースプラットフォーム４４０上の一般ＡＰＩ４２０に対して規定されている。一般ＡＰＩ実装は、装置固有の要求で指定されてＭＦＰ上に実装される関数（functions）を規定（define）する。ＤＦＭ４０６の開発者が一般ＡＰＩ実装を規定してもよい。あるいは、目標プラットフォームに関する知識を有する人が一般ＡＰＩ実装を規定してもよい。
【００４８】
１.５        ウェブサービスアプリケーション
ウェブサービスアプリケーション（ＷＳＡ）４０８は（１つ以上の）ウェブサービスを提供するモジュールであり、ＤＦＭ４０６が提供するプロトコル等であるウェブサービスプロトコルと技術に依存している。ＷＳＡ４０８は、ＳＯＰＡ要求を解析するロジックを含まない場合、ＳＯＡＰ要求を解析するために別のＳＯＡＰモジュール（図示せず）にも依存する。上記の通り、別のＳＯＡＰモジュールをＤＦＭ４０６に設けて、すべてのＷＳＡ４０８で共有してもよい。
【００４９】
一実施形態では、ＷＳＡ４０８はクライアント４０２からのイベント要求に応答するＷＳ−Ｅｖｅｎｔｉｎｇモジュール４２２も有する。クライアント４０２は、ＷＳＡ４０８が提供するサービスに関連するイベントをサブスクライブ（subscribe）してもよい。例えば、ＷＳＡ４０８は印刷アプリケーションであり得る。クライアント４０２がサブスクライブするイベントは、ＭＦＰの印刷ジョブの完了であってもよい。かかる状況では、イベントの完了時にＷＳＡ４０８はクライアント４０２にイベントメッセージを送信する。イベントメッセージは印刷ジョブが完了したことを示す。
【００５０】
１.５.１        抽象ＡＰＩ
ＷＳＡ４０８は、装置固有のコール（device-specific  calls）を発生する抽象ＡＰＩ（例えば、抽象ＡＰＩ４２４）も含む。抽象ＡＰＩは、関連するＷＳＡ４０８がＭＦＰ上の（１つ以上の）機能を起動するインターフェイスを規定する。それゆえ、ウェブサービスアプリケーションの開発者は、目標プラットフォームについての複雑な知識を知る必要はなく、提供しようとする新しいサービスに関する知識があればよい。
【００５１】
１.５.２        抽象ＡＰＩ実装
抽象ＡＰＩがウェブサービスアプリケーションの開発者により規定されると、プラットフォームに対する抽象ＡＰＩの実装が規定される。例えば、図４に示したように、抽象ＡＰＩ実装４３４はレガシープラットフォーム４３０上の抽象ＡＰＩ４２４に対して規定される。同様に、抽象ＡＰＩ実装４５４はＶｘＷｏｒｋｓベースプラットフォーム４５０上の抽象ＡＰＩ４２４に対して規定されている。抽象ＡＰＩ実装は、装置固有の要求で指定されてＭＦＰ上に実装される関数（functions）を規定（define）する。ウェブサービスアプリケーションの開発者は実装を規定してもよい。あるいは、目標プラットフォームに関する知識を有する人が実装を規定してもよい。
【００５２】
２.０        マルチスレッドＤＦＭ
上記の通り、本発明の一実施形態では、ＤＦＭ（例えば、ＤＦＭ３２０）は、複数の同時実行スレッド（multiple  concurrently  executing  threads）により実装される。一実施形態では、少なくとも４つのスレッドがあり、（１）ＷＳＤマネージャスレッド、（２）ＷＳ−Ｄｉｓｃｏｖｅｒｙスレッド、（３）内部ディスパッチャスレッド、（４）外部要求処理スレッドが含まれる。
【００５３】
本発明の一実施形態では、ＭＦＰの電源がオンにされた時、メインスレッドが初期化され、複数のコンポーネントを立ち上げる（start  up）。メインスレッドが他のスレッドを立ち上げると、メインスレッドは制御をＷＳＤマネージャスレッドに渡す（または、ＷＳＤマネージャスレッドとして動作を開始する）。ＷＳＤマネージャスレッドはウェブサービスアプリケーション（例えば、ウェブサービスアプリケーション３０６Ａと３０６Ｂ）の登録（registration）と非登録（un-registration）を監視する。また、ＷＳＤマネージャスレッドは、抽象レイヤ（例えば、一般ＡＰＩ３２２／一般ＡＰＩ実装３１８Ａ）を介してＭＦＰから来る変化を監視する。かかる変化が起こるとそれに応じて、ＷＳＤマネージャスレッドは、（１）ＭＦＰに記憶されている装置メタデータのバージョンを更新し、（２）ＭＦＰの外部にあるその他の装置に装置メタデータの変化を（例えば、ネットワーク３０４を介して）ブロードキャストするようにＷＳ−Ｄｉｓｃｏｖｅｒｙスレッドに命令する。
【００５４】
本発明の一実施形態では、ＷＳ−ＤｉｓｃｏｖｅｒｙスレッドはＷＳＤマネージャの「Ｈｅｌｌｏ」メッセージを送信する承認を待つ。ＷＳ−Ｄｉｓｃｏｖｅｒｙスレッドは、ＷＳＤマネージャのスレッドからかかる承認を取得するとそれに応じて、他の装置に「Ｈｅｌｌｏ」メッセージを（例えば、ネットワーク３０４を介して）ブロードキャストして、ＭＦＰがあることを示す。かかる「Ｈｅｌｌｏ」メッセージを送信した後、ＷＳ−Ｄｉｓｃｏｖｅｒｙスレッドは入来する「Ｐｒｏｂｅ」メッセージ及び「Ｒｅｓｏｌｖｅ」メッセージを待ち受ける（listen）。「Ｐｒｏｂｅ」または「Ｒｅｓｏｌｖｅ」メッセージを受信すると、それに応じてＷＳ−Ｄｉｓｃｏｖｅｒｙスレッドは適宜応答する。この応答はＷＳ−Ｄｉｓｃｏｖｅｒｙの仕様で規定されている。
【００５５】
また、本発明の一実施形態では、ＭＦＰの装置メタデータが更新されたことを示す通知をＷＳＤマネージャスレッドから受信すると、ＷＳ−Ｄｉｓｃｏｖｅｒｙスレッドは装置メタデータの変化を（例えば、ネットワーク３０４上に）ブロードキャストする。例えば、このメッセージは、他の装置に対して、追加のウェブサービス（例えば、印刷、スキャン等）がＭＦＰで利用できること、または以前はＭＦＰ上で利用可能であったウェブサービスが今は利用できないことを示す。
【００５６】
本発明の一実施形態では、内部ディスパッチャスレッドは、ＤＦＭ３２０とウェブサービスアプリケーション３０６Ａ／３０６Ｂ、及び／またはＭＦＰ上で実行されているその他のアプリケーションとの間のメッセージ交換を処理する。これらのメッセージは指定されたフォーマットに従うように構成されている。内部ディスパッチャスレッドは受信したメッセージを解析（parse）する。内部ディスパッチャスレッドは、これらのメッセージをＤＦＭの適当なコンポーネントに送る（dispatch）。内部ディスパッチャスレッドは、これらのメッセージに対するＤＦＭコンポーネントの応答を適当な構成要素（entity）に中継する。
【００５７】
一実施形態では、外部要求処理スレッドはＭＦＰの外部にある装置やプロセスから発せられた要求メッセージを監視する。例えば、外部要求処理スレッドは、ウェブサービスクライアントがネットワーク３０４を介してＭＦＰに送信するメッセージを監視してもよい。このように、一実施形態では、内部ディスパッチャスレッドはＭＦＰ内から発信されたメッセージのみを処理し、外部要求処理スレッドはＭＦＰの外部から発信されたメッセージのみを処理する。有益にも、内部ディスパッチャスレッドと外部要求処理スレッドとはメッセージを並行して処理でき、ＭＦＰは内部と外部からの要求に（順次的ではなく）並行して反応することができる。外部メッセージディスパッチャスレッドは、入来するメッセージの種類を判断し、それらのメッセージの種類に基づいて適当なＤＦＭにメッセージを送り、そのメッセージを送ったＤＦＭコンポーネントからのそのメッセージに対する応答を受け取り、そのメッセージを発信した外部の構成要素（entities）にその応答を（例えば、ネットワーク３０４を介して）送信する。
【００５８】
有益にも、マルチスレッドＤＦＭにより、外部要求を待ち行列に入れ、先着順で処理しても、ＭＦＰのその他の部分への影響はない。また、マルチスレッドＤＦＭにより、ウェブサービスアプリケーションをＭＦＰに動的に登録（registered）したり非登録（un-registered）にしたりしても、ＤＦＭのその他のタスクには影響がない。さらに、マルチスレッドＤＦＭにより、ＭＦＰプラットフォームとの通信を処理しても、ＤＦＭが実行している作業に制約を設ける必要はない。また、マルチスレッドＤＦＭにより、１つのスレッドをＤＦＭのビジネスロジック（business  logic）に集中させても、ＭＦＰプラットフォームやウェブサービスアプリケーションやＭＦＰ外部の構成要素との通信に関しては何もする必要がない。プログラムの観点から、ＤＦＭをマルチスレッドとすることにより、ＤＦＭをより一層モジュール化でき、フレキシブルかつロバスト（robust）にできる。
【００５９】
図５は、本発明の一実施形態による、並列実行されたＤＦＭの複数のスレッドを示すシーケンス図である。メインスレッドは、（後でＷＳＤマネージャスレッドとして機能するが）、本発明の一実施形態では、「CreateThread()」メソッドを起動して他のスレッドをスタートさせる。このように生成されるスレッドには、ＷＳ−Ｄｉｓｃｏｖｅｒｙスレッド、内部ディスパッチャスレッド、及び外部要求処理スレッドが含まれる。ＷＳディスカバリスレッドはＷＳディスカバリ仕様を実施し、ディスカバリ要求と応答を処理する。内部ディスパッチャスレッドはＭＦＰ内部の構成要素（例えば、ウェブサービスアプリケーション）との通信を処理する。外部要求処理スレッドは、（１）ＤＦＭのビジネスロジック（business  logic）と、（２）ＭＦＰの外部にある構成要素（例えば、ネットワークを介してＭＦＰにアクセスするウェブサービスクライアント）との通信とを処理する。本発明の一実施形態では、この他のスレッドを生成してから、メインスレッドがＷＳＤマネージャスレッドになり、上で説明したＷＳＤマネージャの動作（例えば、ＭＦＰのメタデータの管理）を実行する。
【００６０】
外部要求処理スレッドは内部ディスパッチャスレッドとは別のものなので、ＤＦＭはＭＦＰ内部の構成要素との通信とＭＦＰ外部の構成要素との通信とを同時に処理できる。ＤＦＭはＭＦＰ内部の構成要素との通信が完了するのを待って、ＭＦＰ外部の構成要素との通信を開始する必要、またはその逆の必要はない。図示した本発明の実施形態には４つのスレッドを示したが、本発明の別の実施形態ではスレッドの数はこれより多くても少なくてもよい。例えば、ＭＦＰ上の各ウェブサービスアプリケーションでは、別のスレッドをスタートして、そのウェブサービスアプリケーションに係わるが他のウェブサービスアプリケーションには係わらない通信を処理してもよい。しかし、スレッドの数が増えるにつれて、スレッドを維持するのに要するオーバーヘッド（overhead）も増加する。
【００６１】
本発明の別の実施形態では、並行して実行されるスレッドは２つしかない：ＷＳディスカバリスレッドはＷＳディスカバリ仕様で指定されたすべての通信を処理し、もう１つのスレッドがＷＳディスカバリスレッドが実行しない動作を実行する。
【００６２】
本発明の一実施形態では、メインメソッドが「DFMCleanUp()」メソッドを起動すると、その他のスレッドはすべてすぐに（in  a  graceful  manner）閉じられる。
【００６３】
図６は、本発明の一実施形態によるＤＦＭの並列実行されたスレッドのいくつかにより実行されるステップを示すフロー図である。図６に示したステップの一部を図６に示したステップのその他のものと並列的に実行することもできる。
【００６４】
ステップ６０２−６２８はメインスレッドにより実行される。ブロック６０２において、ＷＳＤマネージャが初期化される。ブロック６０４において、ＷＳＤマネージャから外部及び内部のＩＰ（Internet  Protocol）アドレスとポートを読み出す。ブロック６０６において、ＷＳＤディスカバリスレッドが初期化される。ＷＳディスカバリスレッドはステップ６３０−６４６の実行を開始し、並行してメインスレッドがステップ６０２−６２８を実行する。ブロック６０８において、内部ディスパッチャスレッドを初期化する。内部ディスカバリスレッドはステップ６４８−６５８の実行を開始し、並行してメインスレッドがステップ６０２−６２８を実行する。ブロック６１０において、外部要求処理スレッドを初期化する。外部要求処理スレッドはメインスレッド及びその他のスレッドと並行して実行される。
【００６５】
ブロック６１２において、ＷＳＤマネージャがスタートする。ブロック６１４において、ＷＳＤマネージャはウェブサービスアプリケーションの登録または登録のタイムアウト（timeout）を待つ。ブロック６１６において、ＷＳＤマネージャはＷＳディスカバリにスタートするように命令する。ブロック６１８において、ＷＳＤマネージャはウェブサービスアプリケーションの登録（registration）またはメタデータの変更をチェックする。ブロック６２０において、終了信号を受信したか判断する。終了信号を受信したとき、制御がブロック６２２に渡る。そうでないときは、制御がブロック６１８に渡る。
【００６６】
ブロック６２２において、内部ディスパッチャスレッドを停止する。ブロック６２４において、外部要求処理スレッドを停止する。ブロック６２６において、ＷＳＤディスカバリスレッドを非初期化（un-initialized）する。ブロック６２８において、ＷＳＤマネージャを非初期化する。
【００６７】
ＷＳディスカバリスレッドはその他のスレッドと並行して実行される。ブロック６３０において、フラグ（信号）をチェックする。ブロック６３２において、（例えば、ＷＳＤマネージャによりブロック６１６で）「スタート」信号は設定されているか判断する。「スタート」信号が設定されているとき、制御がブロック６３４に渡る。そうでないときは、制御がブロック６３０に渡る。
【００６８】
ブロック６３４において、「Ｈｅｌｌｏ」メッセージを送信する。ブロック６３６において、ディスカバリ開始フラグ（discovery  starting  flag）をクリアする。ブロック６３８において、ＷＳＤディスカバリスレッドがネットワークを監視（listening）し始める。ブロック６４０において、（例えば、ネットワークから）入来する「Ｐｒｏｂｅ」及び「Ｒｅｓｏｌｖｅ」メッセージが処理され、それに応じて必要に応じて、「ＰｒｏｂｅＭａｔｃｈ」及び「ＲｅｓｏｌｖｅＭａｔｃｈ」メッセージが（例えば、ネットワークを介して）送信される。ブロック６４２において、他の信号をチェックして、必要に応じて処理する。ブロック６４４において、終了信号(termination  signal)を受信したか判断する。終了信号を受信したとき、制御がブロック６４６に渡る。そうでないときは、制御がブロック６４０に渡る。
【００６９】
ブロック６４６において、ＷＳＤディスカバリスレッドが終了する。
【００７０】
内部ディスパッチャスレッドはメインスレッド及びその他のスレッドと並行して実行される。ブロック６４８において、内部ディスパッチャスレッドはモジュール間通信（ＩＭＣ）メッセージを待つ。ＩＭＣメッセージはＭＦＰ内におけるＤＦＭとＷＳＡ間の通信である。ＩＭＣメッセージは内部ディスパッチャスレッドにより処理される。ブロック６５０において、ＩＭＣメッセージを処理する。ブロック６５２において、内部ディスパッチャスレッドは（１つ以上の）ＩＭＣメッセージに対する（１つ以上の）応答を取得する。ブロック６５４において、内部ディスパッチャスレッドその（１つ以上の）応答を、ＩＭＣメッセージを受け取った構成要素に返送する。ブロック６５６において、終了信号(termination  signal)を受信したか判断する。終了信号を受信したとき、制御がブロック６５８に渡る。そうでないときは、制御がブロック６４８に渡る。
【００７１】
ブロック６５８において、内部ディスパッチャスレッドが終了する。
【００７２】
外部要求処理スレッドはメインスレッド及びその他のスレッドと並行して実行される。ブロック６６０において、外部要求処理スレッドはＭＦＰの外部にあるクライアント（例えば、ウェブサービスクライアント２１８）からの要求メッセージを待つ。ブロック６６２において、メッセージタイプをチェックする。ブロック６６４において、メッセージは、そのタイプに応じて他のモジュールまたはスレッド（例えば、ＷＳＤマネージャ及び／または内部ディスパッチャスレッド）に送られる。ブロック６６６において、外部ディスパッチャスレッドは、メッセージが送られたモジュールまたはスレッドからメッセージに対する応答を取得する。ブロック６６８において、その応答を、メッセージを受け取ったクライアントに返送する。ブロック６７０において、終了信号(termination  signal)を受信したか判断する。終了信号を受信したとき、制御がブロック６７２に渡る。そうでないときは、制御がブロック６６０に渡る。
【００７３】
ブロック６７２において、外部要求処理スレッドを終了する。
【００７４】
３.０        マルチスレッドＤＦＭのディスカバリ機能の統合
一実施形態では、ＤＦＭ３２０等のＤＦＭは並行して実行されている複数のスレッド（threads）により実施される。上記の通り、マルチスレッドＤＦＭ（multi-threaded  DFM）は少なくとも４つのスレッドを含む。すなわち、（１）ＷＳＤマネージャスレッド、（２）ディスカバリスレッド、（３）内部ディスパッチャスレッド、（４）外部要求処理スレッドを含む。
【００７５】
本発明の一実施形態では、マルチスレッドＤＦＭにはＤＦＭ信号ハンドラスレッドも含まれる。一実施形態では、ＤＦＭ信号ハンドラスレッドは、特定の信号を検出したとき、マルチスレッドＤＦＭの他のスレッドに通知する役割を果たす。かかる信号には、マルチスレッドＤＦＭが実施されている装置のパワーを切るコマンドに関連する信号や、失われていたネットワーク接続が再確立されたとの判断に関連する信号等が含まれる。
【００７６】
一実施形態では、ディスカバリスレッドはディスカバリ機能の大部分を実行する。例えば、ＨｅｌｌｏメッセージやＢｙｅメッセージの送信、ＰｒｏｂｅメッセージやＲｅｓｏｌｖｅメッセージの監視（listening）、ＰｒｏｂｅＭａｔｃｈメッセージやＲｅｓｏｌｖｅＭａｔｃｈメッセージによるＰｒｏｂｅメッセージやＲｅｓｏｌｖｅメッセージに対する回答を実行する。ディスカバリスレッドが実行する動作をＷＳディスカバリプロトコルによるディスカバリ機能の実行と関連してここでは主に説明するが、考えられることとして、本発明の他の実施形態では、ＷＳディスカバリプロトコルの他に（１つ以上の）ディスカバリプロトコルによるディスカバリ機能を実行するディスカバリスレッドを利用してもよいし、他の実施形態では、ＷＳディスカバリプロトコル以外の（１つ以上の）ディスカバリによるディスカバリ機能を実行するディスカバリスレッドを利用してもよい。
【００７７】
一実施形態では、マルチスレッドＤＦＭのスレッドは一組のフラグを監視（monitor）してもよい。スレッドは、フラグが設定されたことを検出すると、応答動作を実行する。例えば、あるフラグがＤＦＭを実施する装置の能力の変化に関連し、そのフラグが設定されると、ディスカバリスレッドが、その装置のその新しい能力を反映した新しいＨｅｌｌｏメッセージをネットワークを介して送信する。このように、ＤＦＭのスレッドはフラグの設定と読み出しにより互いに通信でき、１つのスレッドが他のスレッドを待つ時間を最小化できる。ＤＦＭのスレッドがフラグの設定と読み出しをするプロセスは、図８と図９とを参照して以下に詳しく説明する。
【００７８】
装置メタデータをＭＦＰに格納するか、またはＭＦＰにアクセス可能にする。装置メタデータはＭＦＰを識別する情報を表すデータを含む。例えば、装置メタデータはＭＦＰのシリアルナンバやモデルに関する情報を含む。装置メタデータはＭＦＰの現在の能力を表す情報（「能力情報」）も含む。例えば、能力情報はＭＦＰが現在提供しているサービスに関する情報を含む。
【００７９】
本発明の一実施形態では、ディスカバリスレッドは、ＭＦＰ２０２の装置メタデータが変更されたことを示す通知を受信すると、それに応答してＭＦＰ２０２の装置メタデータが変更されたことを示すメッセージを（例えば、ネットワーク２０４を介して）ブロードキャストする。ディスカバリスレッドが送信したブロードキャストメッセージは、装置ディスカバリデータを全部または一部含んでいる。
【００８０】
一実施形態では、装置ディスカバリデータはＭＦＰの装置タイプと範囲（scope）に関する情報を含む。また、装置ディスカバリデータは、構成要素がＭＦＰといかに通信すべきかを示すアドレス情報を含む。例えば、アドレス情報はＭＦＰのＩＰアドレスを示すものである。また、装置ディスカバリデータはＭＦＰの装置メタデータと関連するメタデータバージョンを識別してもよい。例えば、メタデータバージョンは装置メタデータが変更されるたびにインクリメントされる。装置ディスカバリデータの受信者（装置）は、それが有するメタデータが装置ディスカバリデータにより識別されたメタデータバージョンより低いとき、装置メタデータが変更されたことを通知され、適当な動作をすることができる。一実施形態では、ディスカバリスレッドが送信するブロードキャストメッセージは、メタデータのバージョンを特定するものであり、他のタイプの装置ディスカバリデータは含まない。ＭＦＰの装置メタデータが変更されたことを構成要素に知らせるこの知らせ方は例示であり、他のアプローチを使うこともできる。
【００８１】
一実施形態では、マルチスレッドＤＦＭの動作は、ＤＦＭ中のディスカバリ機能の実行を統合することにより、より効率的になる。ディスカバリスレッドはＷＳＤマネージャスレッドとインターラクト（interact）する。ＷＳＤマネージャスレッドはディスカバリスレッドに装置ディスカバリデータと装置メタデータの変化の通知を提供する。このように、ディスカバリスレッドは、ＭＦＰ２０２に変化があったときに通知を受け、ＭＦＰ２０２の新しい能力（capabilities）を反映した装置ディスカバリを取得する。ＷＳＤマネージャスレッドとディスカバリスレッドとの間の通信により、ディスカバリスレッドに送られる情報は最新のものとなる。
【００８２】
一実施形態では、ＷＳＤマネージャスレッドは、ディスカバリスレッドのスタートと停止も制御する。ＷＳＤマネージャスレッドのディスカバリスレッドに対するこの制御は、フラグを用いて実施でき、２つのスレッド間の通信を効率的にして、ディスカバリスレッドと通信するためにフラグを設定するためになされたＡＰＩコールからＷＳＤマネージャスレッドを素早く戻らせる。
【００８３】
一実施形態では、ディスカバリスレッドはＤＦＭ信号ハンドラスレッドともインターラクトできる。かかるインターラクション（interaction）はＤＦＭ信号ハンドラスレッドが適当なフラグを設定し、ディスカバリスレッドがそれを監視することにより達成できる。ディスカバリスレッドは、フラグが設定されたことを検知すると、適当な動作を行う。例えば、ＷＳディスカバリＨｅｌｌｏメッセージを送信したり、ディスカバリスレッドを終了させたりする。
【００８４】
一実施形態では、ディスカバリスレッドは、インスタンスメンバデータやメンバー関数を持たないスタティック（static）クラスを用いて実施できる。かかるアプローチは有利であるが、それはインスタンス化されたオブジェクトへのポインタを管理する複雑性を回避できるからである。
【００８５】
マルチスレッドＤＦＭのスレッド間のインターラクションをさらに例示するために、図８と図９を検討する。図８は、本発明の一実施形態による、ＤＦＭのモジュール間の通信を示す第１のシーケンス図である。説明を容易にするため、例示したマルチスレッドＤＦＭのスレッドの説明では、図１のＭＦＰ１０２上での実装を参照する。
【００８６】
図８に示したように、ＤＦＭメインスレッドはディスカバリスレッドを初期化する。一実施形態では、ＤＦＭメインスレッドはスタティック（static）クラスを使用してディスカバリスレッドを初期化する。ＤＦＭメインスレッドは、ディスカバリスレッドを初期化する時、ＤＦＭが実装されている装置のネットワークアドレス等の情報をそのスタティッククラスに提供する。
【００８７】
ディスカバリスレッドを生成すると、ＤＦＭメインスレッドはＷＳＤマネージャスレッドにスタートするように命令する。それに応答して、ＷＳＤマネージャはＤＦＭ２０２の装置メタデータをフェッチ（fetch）する。装置データを読み出すと、ＷＳＤマネージャスレッドはディスカバリスレッドに装置ディスカバリデータを提供する。ディスカバリスレッドは、次に、装置ディスカバリデータを格納する。装置ディスカバリデータを格納する前に、ディスカバリスレッドはその装置ディスカバリデータを解析し、確認し、またはさらに処理して、その正しさを確認する。
【００８８】
ディスカバリスレッドが装置ディスカバリデータを格納すると、ＷＳＤマネージャスレッドはＡＰＩをコールして、ディスカバリスレッドにその仕事を開始させる命令に関連するフラグ（「スタートフラグ」）を設定する。一実施形態では、ディスカバリスレッドは、生成されるとこのフラグを監視する。結果として、スタートフラグが設定されると、ディスカバリスレッドはそのスタートフラグが設定されたことを検知して、そのスタートフラグをクリアし、ディスカバリスレッドの仕事（duties）の実行を開始する。例えば、ディスカバリスレッドの仕事には、ＰｒｏｂｅメッセージやＲｅｓｏｌｖｅメッセージの監視（listening）、他のスレッドとの通信に使用するフラグの監視、Ｈｅｌｌｏメッセージの送信、必要に応じてＰｒｏｂｅＭａｔｃｈメッセージやＲｅｓｏｌｖｅＭａｔｃｈメッセージの送信等がある。ディスカバリスレッドが送信するメッセージ（Ｈｅｌｌｏメッセージ、ＰｒｏｂｅＭａｔｃｈメッセージ、ＲｅｓｏｌｖｅＭａｔｃｈメッセージ等）には、ＤＦＭを実施している装置が何のサービスをサポートしているかに関する情報が含まれる。例えば、ＨｅｌｌｏメッセージはＤＦＭ２０２においてどのＤＣＰがアクティブであるか示している。
【００８９】
一実施形態では、ＷＳＤマネージャスレッドは後で装置メタデータ及び／または装置ディスカバリデータの変更を検知する。例えば、１つのＤＣＰが利用できなくなったことやＭＦＰのＩＰアドレスが変更されたことをＷＳＤマネージャスレッドが検知する。ＷＳＤマネージャスレッドは、装置メタデータ及び／または装置ディスカバリデータの変化を検知すると、それに応答してディスカバリスレッドにその変化を通知し、ディスカバリスレッドにその変更を反映して更新されたディスカバリデータを提供する。ディスカバリスレッドは、次に、装置ディスカバリデータを格納する。前述のように、装置ディスカバリデータを格納する前に、ディスカバリスレッドはその装置ディスカバリデータを解析し、確認し、またはさらに処理して、その正しさを確認する。
【００９０】
一実施形態では、ＷＳＤマネージャスレッドは、ディスカバリスレッドにメタデータが更新されたことを通知するためのフラグ（「変更フラグ」）を設定する。ディスカバリスレッドはこのフラグを監視する。結果として、変更フラグが設定されると、ディスカバリスレッドはその変更フラグをクリアし、ネットワーク２０４を介して新しいＨｅｌｌｏメッセージを送信し、ＭＦＰの装置メタデータが変更されたことを構成要素（listening  entities）に通知し、構成要素に更新された装置ディスカバリデータを通知する。こうして、ＭＦＰにおける変更が効率的かつ即時的に広報され、ＭＦＰの装置メタデータにおける変更が関係者（interested  parties）にすみやかに通知される。
【００９１】
図９は、本発明の一実施形態による、マルチスレッドＤＦＭのスレッド間の通信を示す第２のシーケンス図である。図９の実施形態に示したように、ＤＦＭ信号ハンドラスレッドは後で「ネットワークリセット」が生じたことを検知する。ネットワークリセットが生じるのは、ネットワークに対する装置の接続が失われたり再取得されたりした時である。例えば、ＭＦＰ１０２がネットワークリセットを経験するのは、ローカルエリアネットワーク１０４のルータがリブートされた時や、ＭＦＰ１０２が失っていたネットワーク接続を再取得した時である。
【００９２】
ＤＦＭ信号ハンドラスレッドは、「ネットワークリセット」が生じたことを検知すると、ディスカバリスレッドに再接続処理をするように命令する。一実施形態では、ＤＦＭ信号ハンドラスレッドはディスカバリスレッドがアクセスできるフラグ（「ネットワークリセットフラグ」）を設定して、ディスカバリスレッドに再接続処理をする（to  handle  the  reconnection）ように命令する。ディスカバリスレッドは、ネットワークリセットフラグが設定されたことを検知すると、そのネットワークリセットフラグをクリアして、ネットワーク２０４上に新しいＨｅｌｌｏメッセージを送信する。このように、ネットワーク上の他の装置（図２のウェブサービスクライアント２１８等）にＭＦＰ２０２がオンラインで利用可能であることを通知する。ディスカバリスレッドは、その新しいＨｅｌｌｏメッセージを送信すると、継続的にＰｒｏｂｅメッセージとＲｅｓｏｌｖｅメッセージを監視（listen）するとともに、他のスレッドとの通信に使用するフラグを監視（monitor）する。
【００９３】
図９の実施形態に示したように、ＤＦＭ信号ハンドラスレッドはいつかの時点で「装置シャットダウン信号」の受信を検知する。装置シャットダウン信号はＭＦＰをシャットダウンすることを命じるそのＭＦＰが受け取ったコマンドに対応するものである。例えば、管理者（装置）は図２のＭＦＰ２０２に装置シャットダウン信号を送信して、ＭＦＰ２０２をパワーダウンさせる。
【００９４】
ＤＦＭ信号ハンドラスレッドは、装置シャットダウン信号を受信すると、ＷＳＤマネージャスレッドに停止を命じる。ＷＳＤマネージャスレッドは、次に、ディスカバリスレッドに停止を命じる。図８に示した実施形態では、ＷＳＤマネージャスレッドはスタートフラグを設定してディスカバリスレッドに処理の開始を命じる。同様に、図９に示した実施形態では、ＷＳＤマネージャスレッドはストップフラグを設定してディスカバリスレッドに処理の停止を命じる。このように、ＷＳＤマネージャスレッドは、ディスカバリスレッドの処理の開始と終了を制御できる。
【００９５】
ディスカバリスレッドは、ストップフラグが設定されたことを検知すると、そのストップフラグをクリアして処理を停止する。例えば、ディスカバリスレッドはネットワーク２０４上にＢｙｅメッセージを送信して処理を停止し、ＭＦＰ２０２がもう利用できないことをすべてのウェブサービスクライアントに通知し、その後、メッセージの監視（listening）を停止する。
【００９６】
ＤＦＭ信号ハンドラスレッドは、ＷＳＤマネージャスレッドにストップコマンドを送信した後いつかの時点において、ＤＦＭメインスレッドにストップコマンドを送信する。ＤＦＭメインスレッドは、ＤＦＭ信号ハンドラスレッドからストップコマンドを受信すると、ディスカバリスレッドに非初期化コマンド（un-initialize  command）を送信する。一実施形態では、ＤＦＭメインスレッドは、ディスカバリスレッドがアクセスできるクリーンアップフラグ（clean  up  flag）を設定して非初期化コマンドを送る。
【００９７】
一実施形態では、ディスカバリスレッドは、クリーンアップフラグが設定されたことを検知すると、そのクリーンアップコマンドをクリアして、クリーンアップ機能を実行する。ディスカバリスレッドが実行するクリーンアップ機能には、ディスカバリスレッドに関連するすべてのデータ構造のクリーンアップや割り当て解除が含まれる。
【００９８】
一実施形態では、ＭＦＰは、それが提供していたウェブサービスに変更があることを検知すると、ネットワーク上に新しいＨｅｌｌｏメッセージを送信する。しかし、その変更が一時的なものであり、例えばスキャナサービスが一時的に停止しているような場合であれば、ＭＦＰはネットワーク上に新しいＨｅｌｌｏメッセージを送信する必要はないと判断してもよい。かかる実施形態において、サービスの変更が一時的なものではないとＭＦＰが判断すると、ディスカバリスレッドはネットワーク２０４上にＨｅｌｌｏメッセージ（ＷＳディスカバリＨｅｌｌｏメッセージ等）を送信させる。サービスの変更が一時的なものであるとＭＦＰが判断すると、ディスカバリスレッドはネットワーク２０４上にＨｅｌｌｏメッセージを送信すべきでないと判断する。
【００９９】
４.０        実施メカニズム
図７は、本発明の一実施形態を実装するコンピュータシステム７００を示すブロック図である。コンピュータシステム７００は、情報をやりとりするバス７０２その他の通信メカニズムと、バス７０２に結合した情報を処理するプロセッサ７０４とを有する。コンピュータシステム７００は、さらに、ランダムアクセスメモリ（ＲＡＭ）またはその他のダイナミック記憶デバイス等のメインメモリ７０６を含む。このメインメモリは、バス７０２に結合しており、情報と、プロセッサ７０４により実行される命令とを格納する。メインメモリ７０６は、プロセッサ７０４による命令の実行中に、一時的変数やその他の中間情報を記憶するために使用することもできる。コンピュータシステム７００は、さらに、読み出し専用メモリ（ＲＯＭ）７０８その他の静的記憶デバイスを含む。この読出専用メモリは、バス７０２に結合されており、静的な情報とプロセッサ７０４の命令とを格納する。記憶装置７１０（磁気ディスクや光ディスク等）が設けられ、バス７０２に結合されており、情報と命令を格納する。
【０１００】
コンピュータシステム７００は、バス７０２を介して、ディスプレイ７１２（陰極線管（ＣＲＴ）等）に結合されており、コンピュータユーザに情報を表示する。入力装置７１４は、英数字その他のキーを含み、バス７０２に結合されており、情報とコマンド選択をプロセッサ７０４に伝送する。他のタイプのユーザ入力装置はカーソル制御部７１６であり、マウス、トラックボール、またはカーソル方向キー等である。これらは、プロセッサ７０４に方向情報とコマンド選択を伝送し、ディスプレイ７１２上のカーソルの動きを制御する。この入力装置は典型的には２つの軸、すなわち第１の軸（例えばｘ軸）と第２の軸（例えばｙ軸）で２自由度を有し、これによりデバイスが平面内の点を特定することができる。
【０１０１】
本発明は、ここに説明した方法を実施するためのコンピュータシステム７００の使用方法にも関する。本発明の一実施形態によると、これらの方法のコンピュータシステム７００による実行は、メインメモリ７０６に含まれる１つ以上の命令の１つ以上のシーケンスをプロセッサ７０４が実行することにより行われる。かかる命令は、他の機械読み取り可能媒体（記憶装置７１０等）からメインメモリ７０６に読み込まれる。メインメモリ７０６に含まれる命令シーケンスの実行により、プロセッサ７０４はここに説明したプロセスステップを実行する。他の実施形態では、ソフトウェア命令に替えて、またはソフトウェア命令と組み合わせて、ハードワイヤー回路（hard-wired  circuitry）を使用して本発明を実施することもできる。このように、本発明の実施形態は、ハードウェア回路とソフトウェアの特定の組み合わせに限定はされない。
【０１０２】
ここで、「機械読み取り可能媒体」との用語は、機械に特定のやり方で動作させるデータを提供するいかなる媒体も指す。コンピュータシステム７００を用いて実施する一実施形態では、様々な機械読み取り可能媒体を使用して、例えば、プロセッサ７０４が実行する命令を提供する。かかる媒体は、多数の形式をとることができ、例えば、不揮発性媒体、揮発性媒体、伝送媒体等を含むが、これらに限定はされない。不揮発媒体は、例えば光ディスクまたは磁気ディスクを含み、記憶装置７１０等である。揮発性媒体は、ダイナミックメモリを含み、メインメモリ７０６等である。伝送媒体は、同軸ケーブル、銅線、光ファイバを含み、バス７０２を含むワイヤも含む。伝送媒体は、音波や光波であって、無線通信や赤外線データ通信で生成されるものの形態を取ることもできる。
【０１０３】
機械読み取り可能媒体の一般的な形態には次のものが含まれる。例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、その他の磁気媒体、ＣＤ−ＲＯＭその他の光媒体、パンチカード、紙テープ、その他の穴のパターンを有する物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、フラッシュＥＰＲＯＭ、その他のメモリチップまたはカートリッジ、以下に説明する搬送波、コンピュータが読み取れるその他のいかなる媒体。
【０１０４】
機械読み取り可能媒体の様々な形態を使用して、１つ以上の命令の１つ以上のシーケンスをプロセッサ７０４に搬送し、実行させる。例えば、命令は最初にリモートコンピュータの磁気ディスク上にあってもよい。リモートコンピュータは、その命令をそのダイナミックメモリにロードして、モデムを用いて電話回線を介してその命令を送信することができる。コンピュータシステム７００にあるモデムが、電話回線上のデータを受信し、赤外トランスミッタを用いてそのデータを赤外信号に変換することができる。赤外検出器が赤外信号で搬送されたそのデータを受信して、適当な回路がそのデータをバス７０２に載せることができる。バス７０２はそのデータをメインメモリ７０６に送り、プロセッサ７０４はその命令を読み出して実行する。メインメモリ７０６が受け取った命令は、任意的に記憶装置７１０に記憶され、その前または後にプロセッサ７０４により実行される。
【０１０５】
コンピュータシステム７００は、バス７０２に結合した通信インターフェイス７１８も含む。通信インターフェイス７１８は、ネットワークリンク７２０との双方向データ通信カップリングを提供する。ネットワークリンクはローカルネットワーク７２２に接続されている。例えば、通信インターフェイス７１８は、統合デジタルサービスネットワーク（ＩＳＤＮ）カードまたはモデムであって、対応するタイプの電話回線へのデータ通信接続を提供する。他の例として、通信インターフェイス７１８は、ローカルエリアネットワーク（ＬＡＮ）カードであって、互換性のあるＬＡＮへのデータ通信接続を提供してもよい。無線リンクを実施してもよい。かかる実施では、通信インターフェイス７１８は、いろいろなタイプの情報を表すデジタルデータストリームを搬送する電気的、電磁気的、または光学的信号を送受信する。
【０１０６】
ネットワークリンク７２０は、一般的には、１つ以上のネットワークを介して他のデータデバイスとのデータ通信を提供する。例えば、ネットワークリンク７２０は、ローカルネットワーク７２２により、ホストコンピュータ７２４またはインターネットサービスプロバイダ（ＩＳＰ）７２６により運営されているデータ機器への通信を提供する。ＩＳＰ７２６は、これに対して、現在は一般的に「インターネット」７２８と呼ばれている、世界規模のパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク７２２とインターネット７２８は、両方とも、デジタルデータストリームを担う電気的、電磁気的、または光学的信号を使用する。様々なネットワーク中の信号やネットワークリンク７２０と通信インターフェイス７１８上の信号は、コンピュータシステム７００との間でデジタルデータを担い、情報を伝送する搬送波の例である。
【０１０７】
コンピュータシステム７００は、ネットワーク、ネットワークリンク７２０、及び通信インターフェイス７１８により、メッセージを送信しプログラムコードを含むデータを受信することができる。インターネットの例では、サーバ７３０は、インターネット７２８、ＩＳＰ７２６、ローカルネットワーク７２２、及び通信インターフェイス７１８を介して、要求されたアプリケーションプログラムのコードを送信してもよい。
【０１０８】
受信するコードは、受信しつつプロセッサ７０４により実行されてもよいし、後で実行するために記憶装置７１０またはその他の不揮発性記憶装置に記憶されてもよい。このように、コンピュータシステム７００は、搬送波の形態でアプリケーションコードを取得してもよい。
【０１０９】
上記の通り明細書では、実施ごとに変わり得る多数の詳細を参照して本発明の実施形態を説明した。このように、本発明であり、出願人が本発明であると考えているものを示すのは、願書に添付した特許請求の範囲であり、特許後の訂正も含め特許された請求項である。かかる請求項に含まれる用語についてここで明示的に記載した定義は、請求項で使用されるかかる用語の意味を司るものである。よって、請求項中に明示的に含まれていない限定、要素、特性、特徴、利益、または属性は、いかなる方法によっても、かかる請求項の範囲を限定するものではない。したがって、明細書と図面は例示であって限定ではないと考えるべきである。
【図面の簡単な説明】
【０１１０】
【図１】本発明の一実施形態による、ネットワーク環境にある多機能機（ＭＦＰ）の一例を示すブロック図である。
【図２】本発明の一実施形態による、ＭＦＰのウェブサービスアプリケーションの一例を示すブロック図である。
【図３】本発明の一実施形態による、ＭＦＰ上で実行される相異なる複数のウェブサービスアプリケーションとＤＦＭの一例を示すブロック図である。
【図４】本発明の一実施形態による、マルチスレッドＤＦＭを有するＭＦＰのアーキテクチャの一例を示すブロック図である。
【図５】本発明の一実施形態による、並列実行されたＤＦＭの複数のスレッドを示すシーケンス図である。
【図６】本発明の一実施形態によるＤＦＭの並列実行されたスレッドのいくつかにより実行されるステップを示すフロー図である。
【図７】本発明の一実施形態を実施するコンピュータシステムを示すブロック図である。
【図８】本発明の一実施形態による、ＤＦＭの複数のスレッド間の通信を示す第１のシーケンス図である。
【図９】本発明の一実施形態による、ＤＦＭの複数のスレッド間の通信を示す第２のシーケンス図である。
【符号の説明】
【０１１１】
１０２  MFP
１０４  ローカルエリアネットワーク
１０６  ファイアウォール
１０８  インターネット
１１０  CPU
１１２  ネットワークインターフェイス
１１４  メモリ
１１６  記憶装置
１１８  ディスプレイ
１２０  フロントパネル入力装置
１２２  ファックスエンジン
１２４  スキャンエンジン
１２６  印刷エンジン
２０２  MFP
２０４  ネットワーク
２０６  ウェブサービスアプリケーション
２０８  SOAP  SDK
２１０  ウェブサービスプロトコル
２１６  プラットフォーム
２１８  ウェブサービスクライアント
２２０  DFM
３０２  MFP
３０４  ネットワーク
３０６  ウェブサービスアプリケーション
３０８  SOAP  SDK
３１０  ウェブサービスプロトコル
３１２  抽象API
３２０  DFM
３２２  一般API
３１４  抽象API実装
３１６  プラットフォーム
３１８  一般API実装
４００  アーキテクチャ
４０２  クライアント
４０４  管理者
４０６  装置ファシリティマネージャ
４０８  ウェブサービスアプリケーション
４１０  WSDマネージャ
４１２  WSディスカバリ
４１４  WSトランスファ
４１６  WS−MeX
４１８  WSセキュリティ
４２０  一般API
４２２  WSイベンティング
４２４  抽象API
４３０  レガシープラットフォーム
４３２  一般API実装
４３４  抽象API実装
４４０  リナックスベースプラットフォーム
４４２  一般API実装
４４４  抽象API実装
４５０  VxWorksベースプラットフォーム
４５２  一般API実装
４５４  抽象API実装
７０２  バス
７０４  プロセッサ
７０６  メインメモリ
７０８  ＲＯＭ
７１０  記憶装置
７１２  ディスプレイ
７１４  入力装置
７１６  カーソル制御
７１８  通信インターフェイス
７２０  ネットワークリンク
７２２  ローカルネットワーク
７２４  ホスト
７２６  ＩＳＰ
７２８  インターネット
７３０  サーバ
【図１】
2008181487.tif 000003
【図２】
2008181487.tif 000004
【図３】
2008181487.tif 000005
【図４】
2008181487.tif 000006
【図５】
2008181487.tif 000007
【図６】
2008181487.tif 000008
【図７】
2008181487.tif 000009
【図８】
2008181487.tif 000010
【図９】
2008181487.tif 000011