デバイスインタラクションツリー及び技術
【課題】デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用する方法、装置及び非一時的コンピュータ可読記憶媒体が開示される。
【解決手段】デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。中間ノードは、クエリ及びテストを規定し、リーフノードは、デバイスの状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介しリーフノードまでデバイスインタラクションツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストが、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動から得られるリーフノードによって特定される。
【解決手段】デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。中間ノードは、クエリ及びテストを規定し、リーフノードは、デバイスの状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介しリーフノードまでデバイスインタラクションツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストが、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動から得られるリーフノードによって特定される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、デバイスとやりとりするためのデバイスインタラクションツリーに関する。
【背景技術】
【0002】
中規模から大規模な企業はしばしば、パーソナルコンピュータに加えてアタッチされた各種デバイスを有する多様なコンピュータネットワークを有している。プリンタや複合機などのデバイスが入力されるリクエストを処理するのに十分な用紙やトナーを備えてオンラインのワーキング状態に維持されるとき、企業は最も効率的に機能する。限られた予算とスタッフを有するIT(Information Technology)部門は、典型的には、これらのデバイスを利用可能にし続けるために、これらをメンテナンス及び修繕する。例えば、プリンタや複合機などのデバイスは、用紙やトナーレベルが低いとき、用紙やトナーを補充することによってメンテナンスされる。他の例として、デバイスは、紙詰まりを取り除いたり、開放されたままのデバイスのカバーを閉じることによって修復される。リクエストを処理することができないデバイスは、企業の効率的な運営を妨げ、IT部門に対して影響を及ぼす可能性がある。
【0003】
デバイスを物理的にチェックする代わりに、ITスタッフは、ネットワークを介しデバイスと遠隔的にやりとりするよう設計されたカスタマイズされたマネージメントアプリケーションを利用するかもしれない。各種のデバイスが、各種のカスタマイズされたデバイスマネージメント命令に応答する。各種デバイスが企業によって利用されるため、ITスタッフは、企業により利用されるすべてのデバイスとやりとりすることが可能な単一のマネージメントアプリケーションを有していない可能性がある。さらに、マネージメントアプリケーションはネットワークに現在あるすべてのデバイスとやりとりすることが可能であったとしても、サポートされていないデバイスがネットワークに追加される可能性がある。新たなデバイスをサポートするためカスタマイズされたマネージメントアプリケーション更新することは大変であり、カスタマイズされたマネージメントアプリケーションの複雑さのため高いレベルのスキルを必要とする。さらに、セキュリティのため、カスタマイズされたマネージメントアプリケーションの更新は、高い権限のユーザを必要とするかもしれない。更新されたマネージメントアプリケーションが信頼されたソースからのものであったとしても、更新されたマネージメントアプリケーションにおけるバグは、マネージメントアプリケーションを実行するマシーンと共に、マネージメントアプリケーションにより管理されるデバイスに対して予期せぬ影響を与える可能性がある。
【0004】
ここで説明されたアプローチは、追求可能なアプローチであるが、必ずしも以前に想到又は追求されたアプローチであるとは限らない。従って、特段の指摘がない場合、ここで説明されたアプローチはここに記載されたことによって従来技術とみなされるべきでない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の課題は、デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための技術を提供することである。
【課題を解決するための手段】
【0006】
デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。デバイスインタラクションツリーの具体例として、デバイス状態決定ツリー、デバイスコンフィギュレーションツリー、デバイスアクションツリーなどがあげられる。デバイス状態決定ツリーの中間ノードはクエリとテストとを規定し、リーフノードはデバイス状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介してリーフノードまでデバイス状態決定ツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストは、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動先となるリーフノードにより規定される。
【発明の効果】
【0007】
本発明によると、デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための技術を提供することができる。
【図面の簡単な説明】
【0008】
【図1A】図1Aは、ネットワーク内の複数のデバイスをモニタリングするための一例となるデバイスモニタシステムを示す。
【図1B】図1Bは、既知のクラスのデバイスがネットワークに追加されたことを検出する一例となるデバイスモニタシステムを示す。
【図1C】図1Cは、未知のクラスのデバイスがネットワークに追加されたことを検出する一例となるデバイスモニタシステムを示す。
【図2】図2は、デバイスインタラクションツリーセットのための一例となるクラス図である。
【図3】図3は、デバイスとやりとりするためのツリーセットにおける一例となるコンポーネントを示す。
【図4】図4は、3レベルの一例となるツリーを示す。
【図5】図5は、デバイスのクラスを決定し、複数のデバイスインタラクションツリーの1つを選択するための一例となるデバイス分類を示す。
【図6】図6は、デバイスのベンダIDを取得するための一例となるツリーを示す。
【図7A】図7Aは、デバイスを単一のクラスに分類するための一例となるツリーを示す。
【図7B】図7Bは、デバイスを複数のクラスの1つに分類するための一例となるツリーを示す。
【図8A】図8Aは、クエリレスポンスディクショナリの一例となる構造を示す。
【図8B】図8Bは、8個のクエリを有する一例となるクエリレスポンスディクショナリを示す。
【図8C】図8Cは、4個のクエリがIDクエリである11個のクエリを有する一例となるクエリレスポンスディクショナリを示す。
【図9A】図9Aは、新たなデバイスをサポートするためツリーを自動的に更新するための一例となる処理を示す。
【図9B】図9Bは、新たなデバイスをサポートするためツリーを手動により更新するための一例となる処理を示す。
【図10A】図10Aは、ツリーへの更新が中央サーバから受信される実施例を示す。
【図10B】図10Bは、ツリーへの更新がユーザ入力に基づく実施例を示す。
【図11】図11は、デバイスマネージメントアプリケーションがツリーを利用及び更新する実施例を示すフローチャートである。
【図12】図12は、デバイスマネージメントアプリケーションが一時的にツリーにノードを追加し、ノードが永続的なものになる前にクライアントがノードを有効にすることを可能にする実施例を示すフローチャートである。
【図13】図13は、デバイスマネージメントアプリケーションが中央サーバから受信したクエリレスポンスディクショナリに基づきツリーを更新する実施例を示す。
【図14A】図14Aは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図14B】図14Bは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図14C】図14Cは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図15】図15は、開示された各種実施例を実行する一例となるコンピュータシステムを示す。
【発明を実施するための形態】
【0009】
以下の説明では、本発明の完全な理解を提供するため、説明のための多数の具体的詳細が提供される。しかしながら、本発明はこれらの具体的詳細なしに実現されてもよいことは明らかであろう。他の例では、本発明を不必要に不明りょうにすることを避けるため、周知の構成及び装置はブロック図の形式により示される。
[全体概略]
デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための方法、装置及び非一時的なコンピュータ可読記憶媒体が開示される。デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。デバイスインタラクションツリーの具体例として、デバイス状態決定ツリー、デバイスコンフィギュレーションツリー、デバイスアクションツリーなどがあげられる。デバイス状態決定ツリーの中間ノードはクエリとテストとを規定し、リーフノードはデバイス状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介してリーフノードまでデバイス状態決定ツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストは、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動先となるリーフノードにより規定される。
【0010】
デバイスインタラクションツリーの具体例の詳細な理解を提供するため、デバイス状態決定ツリーの各種具体例が示される。これらの具体例の多くは、デバイスの状態を決定する代わりに又は加えて、デバイスのパラメータを変更するよう構成されるデバイスコンフィギュレーションツリーに関して適用されてもよい。例えば、デバイスコンフィギュレーションツリーは、デバイスの名前を変更するのに利用されてもよい。あるいは、これらの具体例の多くは、デバイスの状態を決定する代わりに又は加えて、デバイスに特定のアクションを実行させるよう構成されるデバイスアクションツリーに関して適用されてもよい。例えば、デバイスアクションツリーは、デバイスに指定された設定に従って文書を印刷させるのに利用されてもよい。
[状態決定ツリー]
1つの状態決定ツリーが、複数のデバイスの状態を決定するのに利用されてもよい。サポートされるデバイスは、様々な機能を備えたデバイス、様々な構成を備えたデバイス、様々なメーカーからのデバイス、及び/又は同じクエリに異なって応答する同一の状態を備えたデバイスを含むものであってもよい。デバイスインタラクションツリーは、デバイスインタラクションツリーを移動するため構成されたソフトウェアを修正することなく、生成又は修正されてもよい。一実施例では、デバイスインタラクションツリーの生成、修正、置換及び/又はテストは、より少数のセキュリティ権限を要求し、特殊化されたデバイスマネージメントソフトウェアをインストール、コンパイル又は修正するよりも、ネットワーク上のデバイスに対してより低いセキュリティリスクしか有さない。
【0011】
ここに開示される技術は、何れかのタイプのデバイス状態に適用されてもよい。デバイス状態の具体例として、限定することなく、アイドル、スリープ中、処理中又は印刷中、印刷準備完了、ウォーミングアップ、トナー交換、調整、ジョブ中止、カバーオープン、トナー切れ、フューザ切れ、又は紙詰まりがあげられる。デバイス状態は、デバイスの動作状態を記述するものであってもよい。一実施例では、動作状態は、デバイスによって現在実行中のアクションのタイプ又はアクションがないことを含む。他の実施例では、動作状態は、デバイスがアクションを実行することを阻害しているエラーを含む。他の実施例では、デバイス状態は、用紙トレーサイズ、3穴パンチ、2穴パンチ又はステープラなどのデバイス設定を含む。他の実施例では、デバイス状態は、トナーレベル(75%など)、用紙残量(50頁など)、又はバッテリ残量(60%又は3時間など)などの供給状態を含む。各種実施例では、各種タイプの状態が同一のツリーにより表現されてもよい。例えば、単一の状態決定ツリーは、エラー、動作状態、デバイスの設定及び/又は供給状態に関する情報を提供するものであってもよい。一実施例では、デバイスの状態に対するリクエストは、要求されるタイプの情報を指定する。例えば、1つのリクエストは、デバイスの動作状態に対するものであり、他のリクエストは、デバイスが3穴パンチャを備えるよう構成されているかを決定するためのものであってもよい。
【0012】
一実施例では、デバイスマネージメントアプリケーションは、デバイスの状態に対するリクエストを受信する。一例では、リクエストは、アドレスによってデバイスを特定する。デバイスマネージメントアプリケーションは、アドレスに送信するクエリを選択するため、状態決定ツリーにアクセスし、当該アドレスにおいてデバイスからレスポンスが受信される。デバイスマネージメントアプリケーションは、デバイスからのレスポンスに基づき1以上の中間ノードを介しリーフノードまで状態決定ツリーを移動することによって、デバイスの状態を決定する。リーフノードはデバイスの状態を示し、デバイスマネージメントアプリケーションは、デバイス状態のリクエストに応答して、デバイス状態をユーザインタフェース上に表示するようにしてもよい。ツリーの移動中、デバイスマネージメントアプリケーションは、単にクエリを利用し、状態決定ツリーにより規定されるテストを適用する。従って、デバイスマネージメントアプリケーションが状態決定ツリーなどのデバイスインタラクションツリーを移動するよう構成されると、デバイスインタラクションツリーは、デバイスマネージメントアプリケーションのコードを修正することなく更新されるようにしてもよい。
【0013】
一実施例では、デバイスマネージメントアプリケーションはネットワーク上のデバイスをモニタし、状態決定ツリーがネットワーク内のあるデバイスの状態を提供することができないことを検出したことに応答して、状態決定ツリーが更新される。一実施例では、この更新は、更新されたデバイスインタラクションツリーを提供するサーバから要求される。この更新は、デバイスマネージメントアプリケーションのコードを修正することなく、既存のデバイスインタラクションツリーの置換、新たなデバイスインタラクションツリーの生成、及び/又は既存のデバイスのノードの追加、削除又は変更を行うものであってもよい。
【0014】
一実施例では、デバイスマネージメントアプリケーションは、クエリ及びレスポンス情報に関連付けされた受信した状態情報に基づき、状態決定ツリーを生成又は修正する。一実施例では、この情報は、新たな関連付けが検出されると、デバイスマネージメントアプリケーションに通知するサーバから受信される。関連付けされた状態情報、クエリ情報及びレスポンス情報は、新たな状態決定ツリーを生成するため、デバイスマネージメントアプリケーションのコードを修正することなく既存の状態決定ツリーのノードを追加、削除又は修正するのに利用されてもよい。
【0015】
他の実施例では、ツリーを生成又は修正するのに利用される情報の一部又はすべてが、ユーザインタフェースを介しユーザにより提供されるようにしてもよい。一例では、ユーザは、ネットワーク上のあるデバイスのある状態が観察されたことを示す。これに応答して、デバイスマネージメントアプリケーションは、あるレスポンスを導くため、当該デバイスにあるクエリを送信する。特定の状態、クエリ及びレスポンスの指示は、デバイスマネージメントアプリケーションのコードを変更することなく、新たな状態決定ツリーを生成するため、及び/又は既存の状態決定ツリーについてノードを追加、削除若しくは修正するのに利用されてもよい。
【0016】
図1Aは、ネットワーク108を介しデバイス110A,110B,110Cと通信する一例となるデバイスモニタシステム100を示す。例えば、デバイスモニタシステム100は、1以上の状態決定ツリーを用いてネットワーク108のデバイス110A,110B,110Cの状態を決定するデバイスマネージメントアプリケーション(図示せず)を有してもよい。図示されるように、デバイスモニタシステム100は、クエリ及びテストを指定する実行可能コード及び状態決定ツリー102のファンクションライブラリ106を有する。ファンクションライブラリ106は、デバイス110A,110B,110Cに関して汎用的であって、任意的にはデバイスのクラスに関しても汎用的なファンクションを有する。すなわち、これらのファンクションは、何れかの状態決定ツリーと何れかのデバイス情報セットとにより機能する。一実施例では、デバイスマネージメントアプリケーションは、状態決定ツリー102を構成、実行又は更新するため、ファンクションライブラリ106からファンクションを呼び出す。ファンクションライブラリ106からのConstructQTreeファンクションは、状態決定ツリーを構成する。ファンクションライブラリ106からのExecuteQTreeファンクションは、デバイスに送信するため状態決定ツリー102からクエリを選択し、デバイスから結果を受信し、当該結果に状態決定ツリー102からのテストを適用し、デバイスの状態を決定する。
【0017】
図示されるように、デバイスモニタシステムはまた、デバイスインタラクションツリー102が構成されるデバイス情報104を有する。デバイス情報104は、各デバイス110A,110B,110Cに固有の情報を有する。デバイスインタラクションツリー102は、デバイスモニタシステム100がデバイス110A,110B,110Cに関する新たな情報を受信すると、UpdateQTreeファンクションにより修正されてもよい。
[クエリ及びレスポンス]
デバイス状態は、当該デバイスに対するクエリ系列へのレスポンスに基づき決定されてもよい。例えば、第1クエリに対する第1レスポンスは、デバイスが属するデバイスのクラスを決定するのに十分な情報を提供し、第2クエリに対する第2レスポンスは、デバイスの状態を決定するのに十分な情報を提供するものであってもよい。他の例では、第2クエリに対する第3レスポンスと、おそらく第4クエリに対する第4レスポンスとが、状態が決定可能になる前に求められる。
【0018】
ここに開示される技術は、デバイスから情報を抽出するための何れかのタイプのクエリに適用されてもよい。クエリのタイプの具体例として、SNMP(Simple Network Management Protocol)クエリ、PJL(Printer Job Language)クエリ、PostScriptクエリ、HTTP(Hypertext Transfer Protocol)クエリがあげられる。開示される各種実現形態は、これらクエリのタイプの具体例のすべて、1つ又は組み合わせを利用するものであってもよいし、又は何れを利用しなくてもよい。一実施例では、状態決定ツリーのクエリ及びテストは、何れかのデバイスの状態又は設定を変更不可であり、又はネットワーク内のデバイス上で実行されるソフトウェアを変更不可である。このようにして、状態決定ツリーに対する更新は、ツリーのソースが未知であったとしても、又はソースの評判が未知であったとしても、大きなセキュリティリスクなくテストされてもよい。
【0019】
テーブル1は、各種メーカーにより製造される各種デバイスについて、hrDeviceDescr、hrPrinterStatus、hrDeviceStatus、hrPrinterDetectedErrorState、prtAlertCode、prtAlertCode、prtAlertGroup、prtAlertLocation、prtAlertSeverityLevel、及びprtAlertTransiningLevelを含むSNMPクエリに対する一例となるデバイスレスポンスを示す。すべてのプリンタがアイドル又はスリープ状態にあり、3つが低トナー状態を報告していた(Samsung770,OKI MC360及びRicoh Aficio C420)。テーブル1は、Appendix Aに含まれている。
【0020】
図示されるように、IPアドレス172.30.4.55のデバイスは、“HP LaserJet P4014”によりhrDeviceDescrクエリに応答し、“idle”によりhrPrinterStatusクエリに応答し、“running”によりhrDevice Statusに応答し、“00”によりhrPrinterDetected Error Stateクエリに応答し、“subunitPowerSaver”によりprtAlertCodeクエリに応答し、“generalPrinter”によりprtAlertGroupクエリに応答し、“35078”によりprtAlertLocationクエリに応答し、“other”によりprtAlertSeverityLevelクエリに応答し、“untrained”によりprtAlertTraniningLevelクエリに応答した。この情報は、当該デバイス及び他のデバイスに関する他の情報と共に、デバイスの状態を確実に決定するため、状態決定ツリーを構成するのに利用されてもよい。一実施例では、状態決定ツリーの利用は、デバイスがアイドルであることを決定する前に、これらのクエリのすべてではないが一部をデバイスに送信する。
【0021】
172.30.4.55のデバイスが“idle”によりhrPrinterStatusに応答したが、他のアイドル状態のデバイスは、“idle”により同じクエリに応答しなかった。例えば、172.30.4.61のデバイスは、“other”によりhrPrinterStatusクエリに応答した。従って、デバイスのアドレスを超えた情報がない場合、hrPrinterStatusクエリは、デバイスの実際の状態を決定するのに不十分であるかもしれない。
【0022】
実際、異なるデバイスモデル、異なる設定を備えた同一モデル、及び異なるインストールされたファームウェアを備えた同一モデルが、同一のクエリに異なって応答するようにしてもよい。一実施例では、状態決定ツリーは、ネットワーク内の各デバイスについて、デバイスの状態を決定するため、デバイスに対する問題へのクエリを指定する。デバイスはクエリに応答し、レスポンスに基づき、状態決定ツリーはデバイスの状態を特定するリーフノードに移動する。
【0023】
テーブル1の具体例を再び参照して、hrPrinterDetectedErrorStateクエリに対するレスポンスは、低トナーの3つのプリンタについて非ゼロとなる(また、その他のプリンタがゼロを表現する方法の数に留意されたい)。Host Resources MIB(RFC2790)は、ビット#2が低トナーを示し、ビット#0が第1バイトの最上位ビットである、タイプOCTET STRINGを有する当該値のビットとしてエラー状態が符号化されることを述べている。RicohとOkiは、これを32(2の5乗)又は16進数の0x20に対応する左から3番目のビットを意味するものとして解釈し、それは生の値としてリターンされる(スペース文字)。しかしながら、Ricoh Aficioを含む他のすべてのプリンタは、コロン文字によりセパレートされたASCII数字により表現されるようなOCTET STRINGの値をリターンし(OCTET STRINGがいくつかの文書において示される)、すなわち、ゼロを示すのにヌルの代わりに49(ASCIIの“0”)をリターンする。また、Samsungのエンジニアは、自らの規格の解釈において重要な相違を有しているようであり、左の代わりに右からビットをカウントしているようである。すなわち、ビット#0がビット#2を4(2の2乗)に対応させる最下位ビットであり、低トナーは“04”として報告される。
【0024】
さらなる状況の複雑化は、複数のプリンタ状態が可能であるという事実であり、SNMPレスポンスの異なる組み合わせは、関係するプリンタモデルに応じて同じプリンタ状態を示すものであってもよいし、そうでなくてもよい。1つのアプローチは、すべてのプリンタモデルについてSNMPレスポンスのデータベースを構築することである。対象となるデバイスがネットワーク上において特定され、それのモデル名が決定されると、対象となるデバイスの予想されるSNMPレスポンスが、データベースのモデル名を検索することによって決定できる。しかしながら、このアプローチは、利用可能なすべてのプリンタモデルを表す極めて大きなデータベースの構築及び継続的な更新を必要とする。すべての既知のベンダからのすべての既知のプリンタの信頼でき、一貫したデータセットを維持するタスクは、ベンダの協力なしには、開発チームに対して大きな負担となりうる。
【0025】
テーブル2は、各種状態にある単一のデバイスのデバイスレスポンスの具体例を示す。テーブル2は、Appendix Aに含まれる。図示されるように、デバイスは、異なる状態にあるとき、異なってクエリに応答する。従って、クエリの一部又はすべてに対するレスポンスに基づきデバイスの状態を決定することができる。
【0026】
テーブル2に参照されるデバイスのケースでさえ、hrPrinterDetectedErrorStateがどのように報告されるかについていくつかの変形がある。カバーがオープンされているとき、生のバイトである0xoBがリターンされ、ASCIIの“11”であり、8+2+1に等しい。MIB規格によると、これは、coverOpen(8)、offline(2)及びservice requested(1)を示す。しかしながら、紙詰まりなどの他の状態に応答して(プリンタが落ち着き、一貫して同じ値をリターンした数秒後)、ストリング“07”がリターンされ、それはASCIIバイトの48及び55を含む。ASCII数字として解釈された場合、“07”は数字の7を示し、それはjammed(4)、offline(2)及びservice requsted(1)に対応する。従って、プリンタは、生のバイトとしてhrPrinterDetectedErrorStateとリターンするときもあり、ASCII数字の文字列としてリターンするときもある。
【0027】
ネットワーク内のデバイスのデバイス状態を取得する複雑さのため、カスタムデバイスマネージメントソフトウェアに対する更新は、極めて時間と費用のかかるものとなる可能性があり、ソフトウェアの頻繁な更新は、セキュリティリスクをもたらし、予期せぬソフトウェアバグのリスクを高める。コンパイルされたソフトウェアがパッチされると、新たなバイナリの配布がクライアントにされる。これらのクライアントは、ソフトウェアをインストールする前にウィルス感染や他のセキュリティ問題のためにこの新たなバイナリ配布をチェックする必要がある。
【0028】
一実施例では、カスタムデバイスマネージメントソフトウェアを更新する代わりに、サイトに固有の状態決定ツリーが、ネットワーク内のデバイスの状態を決定するため構成される。一実施例では、汎用的なデバイスマネージメントソフトウェアが、何れかのデバイスインタラクションツリーを利用するため構成され、デバイスマネージメントソフトウェアは、ツリーの変更による更新を要求しない。
【0029】
一実施例では、デバイスインタラクションツリーは、ネットワーク内にあるすべてのプリンタタイプのブランチを含む。ツリー構造は、デバイスマネージメントソフトウェアを修正することなく容易に置換及び更新されてもよい。従って、ツリー構造は、維持するのにより効率的であり、ネットワーク上のモニタ対象のプリンタセットと共に拡大するようにしてもよい。ツリーは、一般的なテーブルより容易に特有なデバイス動作を処理することが可能である。例えば、hrPrinterDetectedErrorStateの異なる解釈のため、ブランチがツリーに追加されてもよい。一実施例では、ツリーは、プリンタが複数の状態の何れにあるか決定するため、複数のプリンタタイプの複数のSNMPオブジェクトを抽出するためのクエリを格納する。
【0030】
状態決定ツリーのノードは、デバイスに対して実行されるクエリを規定する。一実施例では、ツリーは、デバイスの状態を決定するのに十分な情報を有する前に、デバイスに送信される平均的なクエリ数を最小化するよう構成される。一例では、ツリーの高さを最小化するため、又はルートノードと各リーフノードとの間の平均ノード数を最小化するためのツリー最適化技術が利用される。クエリはデバイスからのレスポンスをトリガーし、レスポンスに基づき、状態決定ツリーがリーフノードに向かって移動される。リーフノードは、デバイスの状態を特定する。
[テスト及びアサインメント]
デバイスに対して送信されるクエリを規定することに加えて、状態決定ツリーはまた、1以上の値に対してデバイスからのレスポンスを評価するテストを規定する。一実施例では、デバイスマネージメントアプリケーションは、デバイスに送信されるクエリを決定するため、状態決定ツリーのノードにアクセスする。クエリはデバイスに送信され、レスポンスがデバイスから受信される。レスポンスは、デバイスの状態を規定するリーフノードに向かうツリーの移動において次のノードを決定するため、1以上の値に対して処理及びテストされてもよい。ノードは、処理されたレスポンスに適用されるテストを規定する。例えば、規定されたテストは、レスポンスがある文字列を有するか否かのテストであってもよい。
【0031】
テスト前、レスポンスはアサインメント段階において処理されてもよい。開示される技術は何れかのタイプのアサインメントに限定されるものでない。一実施例では、何れのアサインメントも必要とされない。図3において、StripPrefix、StripPrefixStartsWith、StripSuffix、StripSuffixStartsWith、Prepend、Appendなどのアサインメントの具体例が提供される。他のタイプのアサインメントは、これらのアサインメント例に加えて又は代わりに利用されてもよい。アサインメントは、処理済みレスポンスを生成するため、レスポンス又は他の格納されているデータに対して実行されてもよい。
【0032】
処理済みレスポンスが、1以上の値に対してテストされる。開示される技術は、何れか特定のタイプのテストに限定されるものでない。テストは、リターンされるパラメータ名やリターンされるパラメータの値など、テストされるアイテムを規定するものであってもよい。テストはまた、処理済みレスポンスをテストするため実行される処理又は比較を規定するものであってもよい。処理の具体例として、IsNull、Equals、Contains、GreaterThanなどがあげられ、図3に提供される。IsNull処理は、Nullという値と等しいという演算との双方を規定する点で特有なものである。ある具体例では、処理済みレスポンスは、処理“Equals”と“Other”の値とを用いてテストされる。その後、レスポンスが“Other”であるとき、テストの結果は“true”である。そうでない場合、テストの結果は“false”である。他のタイプのテストが、テスト例に加えて又は代わりに利用されてもよい。
【0033】
一実施例では、アサインメントがテスト段階の結果として適用される。例えば、状態変数は、当該状態がアイドルであることを結論付けるテストの結果として“idle”に割り当てられてもよい。アサインメントはまた、状態決定ツリーの以降のノードによる利用のため情報を処理及び格納するのに利用されてもよい。
【0034】
一実施例では、状態決定ツリーの中間ノードは、2つのチャイルドノードを有する。中間ノードは、デバイスに送信するクエリ、クエリの結果に適用されるアサインメント、及び処理済みの結果に適用される真偽テストを規定する。テストの結果が真である場合、デバイスマネージメントアプリケーションは、真のブランチを下って2つのチャイルドノードの1つに状態決定ツリーを移動する。テストの結果が偽である場合、デバイスマネージメントアプリケーションは、偽のブランチを下って2つのチャイルドノードの他方に状態決定ツリーを移動する。他の実施例では、ノードは他の個数のチャイルドを有してもよく、テストは単なる真偽テスト以外のものであってもよい。
【0035】
他の実施例では、中間ノードは3つのチャイルドノードを有し、ある値の範囲の2つの値に対してテストが実行される。処理済みレスポンスが第1の値以下である場合、状態決定ツリーは3つのチャイルドノードの第1ノードに移動される。処理済みレスポンスが2つの値の間にある場合、状態決定ツリーは、3つのチャイルドノードの第2ノードに移動される。処理済みレスポンスが第2の値以上である場合、状態決定ツリーは、3つのチャイルドノードの第3ノードに移動される。さらなる他の実施例では、3つのチャイルドノードによる中間ノードは、一方が他方のチャイルドである2つのバイナリ中間ノードとしてモデル化することが可能である。
【0036】
さらなる他の実施例では、2以上の他の値に対してテストが実行される。例えば、テストは、レスポンスが“idle”、“running”又は“other”であるか決定可能である。テストの結果として、他のブランチがツリーにおいて移動される。一実施例では、状態決定ツリーのいくつかのノードは、テスト又はサブテストを規定し、クエリを規定しない。クエリがデバイスに送信されると、クエリに対するレスポンスがツリーの異なる複数のレベルにおいて異なる複数の方法によりテストされてもよい。
[デバイスクラス]
各種実施例では、デバイスは、各デバイスをクエリに対して同様に応答させるメーカー、年、機能又は他の何れかのファクタに基づきクラスに分類されてもよい。各クラスは、クラス内のデバイスの状態を決定するため別々の状態決定ツリーを有するようにしてもよい。一実施例では、クラス決定ツリーは、デバイスが属するクラスを決定する。デバイスのクラスがクラス決定ツリーにより決定されると、当該クラスの状態決定ツリーが、デバイスの状態を決定するのに利用されてもよい。
【0037】
テーブル43.18.1は、デバイスが同一状態にあるときに同じクエリに対して同じように応答するデバイスを含むよう規定されるデバイスのクラスを示す。テーブル43.18.1は、Appendix Aに提供される。
【0038】
図示されるように、クラスA,B,C,D,F,Gの各デバイスは、トナーが低レベルであるとき(Low:Toner)、同じSNMPクエリに対して同じように応答する。また図示されるように、クラスEのデバイスは、ブラックトナーが低く、シアントナーが低く、マゼンタトナーが低く、イエロートナーが低いとき、同じSNMPクエリに対して同じように応答する。個別のデバイス又はデバイスのクラスがサンプルクエリに対してどのように応答するかに関する情報が、図示されるようなテーブル又は他の何れかの機構により格納されてもよい。一実施例では、デバイスインタラクションツリーが、テーブル2などのテーブルに格納される情報に基づき構成される。
【0039】
一実施例では、クラスA,B,C,D,F,Gの何れかのデバイスが、warning(3)によりhrDeviceStatusクエリと、20hによりhrPrinterDetectedErrorStateクエリとに応答するとき、“Low:Toner”の状態を有すると決定されてもよい。他の実施例では、markerTonerAlmostEmpty(1104)のレスポンスによる追加的なprtAlertCodeクエリが、デバイスの状態を決定するのに利用される。他のデバイス状態を有する他のデバイスについて、異なる個数のクエリがデバイス状態を決定するため実行されてもよい。
【0040】
図1Aの例では、デバイスモニタシステム100は、3つのクラスA,B,Cに属する5つのデバイスとやりとりする。各クラスの状態決定ツリーは、クラス内のデバイスを分類するのに利用されるクエリとテストとを有する。状態決定ツリー102は、個々のツリーに分割されるか、又は1つのツリーとして合成されてもよい。一実施例では、クラス決定ツリーとクラスA,B,Cの状態決定ツリーとは、一緒になってネットワーク108内の何れかのデバイスの状態決定ツリーを構成する。
【0041】
図1Bの例では、既知のクラスCの新たなデバイスがネットワークに追加される。既知のクラスCの状態決定ツリーは、当該デバイスを分類するための機能をすでに有している。従って、状態決定ツリー102は、本例では更新されない。ファンクション“ExecuteTree”は、既知のクラスCの既存の状態決定ツリーにより新たなデバイスに関する情報を取得するのに利用可能である。
【0042】
図1Cの例では、未知のクラスDの新たなデバイスがネットワークに追加される。デバイスモニタシステム100は、既存の状態決定ツリー102により新たなデバイスがサポートされていないことを検出する。これに応答して、デバイスモニタシステム100は、ファンクション“UpdateTree”を用いて状態決定ツリー102を更新する。例えば、デバイスモニタシステム100は、図10Aに示されるように、サーバから未知のクラスのためのツリー又は他の情報をダウンロードしてもよい。デバイスモニタシステムが未知のクラスDの他の情報を受信する場合、他の情報は、ファンクションライブラリ106のConstructTreeファンクションを用いてクラスDのツリーを構成するのに利用されてもよい。
【0043】
図5は、デバイスの状態を決定するためデバイスマネージメントアプリケーションにより利用可能な複数のツリーの具体例を示す。第1ツリー500は、デバイスを複数のデバイスクラスの1つに分類する。第1ツリー500のリーフノードは、デバイスクラスの識別子を規定する。この識別子は、第2ツリー502〜506の1つを選択するのに利用される。第2ツリー502〜506のそれぞれは、1以上のデバイスクラスのグループに属するデバイスに送信するクエリ及びテストのセットを規定する。第2ツリー502〜506のそれぞれは、第2ツリーによりカバーされるクラスのグループのデバイスのデバイス状態を規定するリーフノードを有する。図5に図示されない実施例では、第1ツリーと第2ツリーとは、1つのツリーに合成される。
【0044】
一実施例では、デバイスのベンダの身元を決定するツリーは、デバイスの他の状態情報を決定するより大きなツリーの一部である。例えば、ベンダの身元は、デバイスが属するクラスの決定の一部であってもよい。
【0045】
図6は、デバイスのベンダを決定するためのツリーの実現形態を示す。デバイスマネージメントアプリケーションは、デバイスのvendorIDのリクエストを受信する。ノード600は、デバイスのアドレスがNULLであるかテストする。NULLである場合、vendorIDは決定されず、ツリーの移動はノード604において終了する。NULLでない場合、ノード602は、vendorIDパラメータがNULLであるかテストする。vendorIDパラメータがNULLである場合、vendorIDパラメータは決定されず、ツリーの移動はノード608において終了する。vendorIDパラメータがNULLでない場合、ノード606は、vendorIDパラメータの値を決定する。各種実施例では、複数のパラメータが、ベンダの身元を決定するためチェックされる必要があってもよい。例えば、いくつかのプリンタは“vendorID”などのベンダの身元を格納せず、他のパラメータがこれらのデバイスから抽出される必要がある可能性がある。
【0046】
図7Aは、シングルステップデバイス分類ツリーを示す。ノード700Aは、特定のデバイスクラスをテストする。例えば、ノード700Aは、1以上のクエリと1以上のテストとを有してもよい。デバイスがクラスにある場合、ツリーの移動はノード704Aに続く。そうでない場合、移動は702Aに続く。図7Bは、第2デバイスクラスをサポートするため更新されるデバイス分類ツリーを示す。図示されるように、ノード702Bは、第2デバイスクラスのテストを含む。デバイスが何れのクラスのメンバーでもない場合、移動はノード706Bに続き、デバイスが第2デバイスクラスのメンバーであるとき、移動はノード708Bに続く。
[デバイスインタラクションツリーの生成、修正及び置換]
一実施例では、デバイスのクラスに対するデバイスインタラクションツリーは、当該デバイスのクラスを製造したメーカーにより生成される。デバイスインタラクションツリーは、クライアントに配布されてもよい。例えば、異なるバージョンの状態ツリーが、ウェブサーバ上で利用可能とされてもよい。クライアントは、前のバージョンのツリーを新たなバージョンと置換し、又は異なるタイプのデバイスによる利用のために双方のバージョンを格納するようにしてもよい。
【0047】
他の実施例では、デバイスマネージメントアプリケーションは、デバイス状態、クエリ及びレスポンスとの間の格納されている関連付けに基づき状態決定ツリーを生成する。モニタ対象の選択された各デバイスの選択された各状態について、デバイスマネージメントアプリケーションは、デバイス状態を特定する一意的なパラメータの1以上のセットを決定する。複数のデバイスのデバイス状態のパラメータセットは合成されてもよく、最も頻繁に利用されるセットが、状態決定ツリーの上位レベルの基礎を形成してもよい。このようにして、状態を決定するため最も頻繁にクエリされる情報は、状態決定ツリーの移動中の早期の段階でクエリされてもよい。1つ又は少数の特定のデバイスに対してのみクエリされる情報は、状態決定ツリーの移動中の以降の段階でクエリされるようにしてもよい。ある実施例では、デバイスマネージメントアプリケーションは、あるネットワーク上のプリンタセットの関連するクエリとレスポンス情報とを含むクエリレスポンスディクショナリのコレクションを用いて、最小の又は最適化された状態決定ツリーを自動構成する。
【0048】
図2は、状態決定ツリーのセットの一例となるクラス図である。図示されるように、状態決定ツリーセット200は、状態決定ツリー202のアレイを含む。各状態決定ツリー202は、1以上のクエリ208、アサインメント及びテスト210を含む1以上の状態決定ユニット204を有する。この例では、各テストは、真のチャイルドノード又は偽のチャイルドノードにナビゲートするブールタイプ206の結果をもたらす。図示されるように、テストは、主部と、主部自体の値又は主部に一致する名前を有する変数の値をテストするか決定する主部演算子214とを含む。さらに図示されるように、テストは、述部と、主部のテスト方法を規定する述部演算子216とを含む。この例では、テスト210は、主部が述部を含む、述部に等しい又は述部より大きいか決定することが可能である。一例となるクエリ208は文字列によって応答され、一例となるテスト210は文字列に対して処理する。他の実現形態によると、クエリレスポンスは何れかのフォーマットにより値を規定し、テストは何れかのフォーマットの値に対して実行されてもよい。状態決定ツリーの結果218は、デバイスの状態のテキスト記述を規定するノードを特定する。
【0049】
図3は、デバイス状態を決定するためのデータ構造の図である。図示されるように、ツリー300のセットは、1以上の個々のツリー302を有する。各ツリー302はノード304又はツリーユニットを有し、各ノードは1以上のクエリ312、アサインメント314及びテスト316を有する。一実施例では、少なくとも1つのクエリと少なくとも1つのテストとを含むツリーユニットのコレクションは、単一のノードとして一緒にグループ化される。他の実施例では、すべての非リーフノードは、少なくとも1つのクエリと少なくとも1つのテストとを含む。
【0050】
クエリは、1以上の規定されたプロトコルを用いてモニタされているデバイスに送信される。アサインメントは、クエリのレスポンスにおいて規定されたものなど、StripPrefix、StripPrefixStartsWith、StripSuffix、StripSuffixStartsWith、Prepend及び/又はAppendなどの値に対する演算を実行するための1以上の値修飾子318を含む。1以上のアサインメント314により処理されたレスポンスは、テスト316を受ける。図示された例では、テスト316は、主部自体がテストされている値であるか、又は主部がテストされている値を規定するパラメータの名前であるかなど、主部演算320を規定する。例えば、アサインメントは、レスポンスが値を規定するとき、キー値ペアの値に適用されてもよい。アサインメントはまた、他のノードによる以降の抽出のため、デバイスマネージメントアプリケーションによりキー値ペアを格納するようにしてもよい。他の例では、アサインメントは、状態決定ツリーの移動中に以前に規定された“CyanPageCount”などのキーに基づき格納されている値に適用されてもよい。この場合、状態決定ツリーを移動するデバイスマネージメントアプリケーションは、“CyanPageCount”と呼ばれるパラメータの格納されている値を検索する。一実施例では、アサインメントが状態決定ツリーのノード間でわたされる。他の実施例では、アサインメントはグローバルに定義される。
【0051】
テスト316はまた、主部に適用する1以上の述部の値と1以上の述部演算322とを有する。一実施例では、述部演算は、主部と述部とを比較するための比較演算である。例えば、テストは、クエリに対する処理済みレスポンスの値が“idle”に等しいか、又は値が02hより大きいかを決定するものであってもよい。他の述部演算の具体例として、IsNull、Contains及びstartsWithがあげられる。レスポンスはまた、具体例に示されない他の述部演算を用いて処理されてもよい。
【0052】
テスト316の結果に基づき、デバイスマネージメントアプリケーションは、ノード304の真のチャイルドノード又は偽のチャイルドノードへのポインタを用いてツリー302を移動する。一実施例では、チャイルドノードは、デバイスの状態を規定するリーフノードである。他の実施例では、チャイルドノードは、デバイス状態の決定前に行われる1以上の他のクエリと1以上の他のテストとを規定する。状態決定ツリー302の移動は、デバイスの状態を規定するリターン310をもたらす。
【0053】
図4は、3レベルの一例となる状態決定ツリーの構成を示す。この例では、ルート400とユニット402とは、ツリーの第1レベルを規定する。ユニット402は、0以上のクエリ、0以上のアサインメント及び1以上のテストを有する。この例では、テストは、真偽テストである。テスト結果が偽である場合、ツリーの移動はユニット402からユニット404に続く。テスト結果が真である場合、ツリーの移動はユニット402からユニット406に続く。ユニット404と406はそれぞれ、0以上のクエリ、0以上のアサインメント及び1以上のテストを規定する。状態決定ツリーの移動は、リーフノード408〜414の1つへのナビゲートを生じさせる。結果として得られたリーフノードは、デバイスの状態を規定する。
【0054】
Appendix Bは、DIT.XMLにより規定されるより複雑な状態決定ツリーの一例を示す。状態決定ツリーのノード(<QNode>)は、クエリ(<Queries>)、アサインメント(<Assignments>)及びテスト(<Test>)を規定する。クエリノードに移動すると、デバイスマネージメントアプリケーションは、クエリノードに関連付けされた1以上のクエリを実行する。アサインメントノードに移動すると、デバイスマネージメントアプリケーションは、アサインメントノードに関連付けされた何れかのアサインメントを適用する。テストノードに移動すると、デバイスマネージメントアプリケーションは、テストノードに関連付けされた何れかのテストを適用する。状態決定ツリーは、ルートノードから、クエリ及びテストを規定する中間ノードを介しデバイス状態を規定するリーフノードまで移動される。
【0055】
一実施例では、デバイスマネージメントアプリケーションは、中央サーバからクエリ及びレスポンスに関連する状態に関する情報を受信する。例えば、当該情報は、サーバからデバイスマネージメントアプリケーションに通信されるテーブルに格納されてもよい。
【0056】
図8Aは、状態決定ツリーの構成及び更新に利用されるクエリレスポンスディクショナリの全体構成を示す。クエリレスポンスディクショナリは、デバイスへのクエリとデバイスからのレスポンスとに関連するデバイスの状態に関する情報を格納する。レスポンスは、デバイスが規定された状態にあって、規定されたクエリによりクエリされる場合にデバイスが実行するであろう実際のレスポンスである。クエリレスポンスディクショナリは、デバイスが構成又は修正中にアクセス可能であることが不要となるように、ツリーの構成又は修正中にデバイスをエミュレートするのに利用されてもよい。一実施例では、クエリレスポンスディクショナリは、デバイスのモデルに関する情報を必要としない。状態がクエリ及びレスポンスに関連付けされる限り、関連付けされた情報は状態決定ツリーを構成するのに利用されてもよい。
【0057】
図8Bは、SNMP(Simple Network Management Protocol)のための3つのクエリ、PJL(Printer Job Language)のための2つのクエリ、PostScriptのための1つのクエリ、及びHTTP(Hypertext Transfer Protocol)のための1つのクエリを有する一例となるクエリレスポンスディクショナリを示す。一例では、HTTPクエリは、レスポンスを導くためにデバイスによって、提供されるウェブサーバに対して発行される。
【0058】
図8Cは、クエリのうちの4つがデバイスクラスへのデバイスの分類に利用可能な“IDクエリ”又はクエリである11個のクエリを有する一例となるクエリレスポンスディクショナリを示す。デバイスの分類は、選択されたデバイスのクラスに特化したデバイスインタラクションツリーの選択を可能にするものであってもよい。
【0059】
他の実施例では、デバイスマネージメントアプリケーションは、デバイス上で観察された状態に関する情報をユーザから受信する。例えば、ユーザは、デバイスに関する識別情報を、デバイスについて観察された状態と共にユーザインタフェースを介し送信してもよい。これに応答して、デバイスマネージメントアプリケーションは、1以上のクエリによってデバイスに照会し、1以上のレスポンスを受信する。デバイスマネージメントアプリケーションは、状態情報に関連付けてクエリレスポンスペアを格納する。
【0060】
状態決定ツリーを自動生成するための開示される技術は、ツリーのノードを決定するため、関連付けされた状態、クエリ及びレスポンスに関する既知の情報を組み合わせるための特定の技術に限定されるものでない。2つの可能な状態を備えた3デバイスシステムのシンプルな例では、パラメータXが1であって、パラメータYが10であるとき、第1デバイスが状態Aにあり、パラメータXが1であって、パラメータYが20であるとき、第2デバイスが状態Aにあり、パラメータXが2であって、パラメータYが10であるとき、第3デバイスが状態Aにある。パラメータXが2であって、パラメータYが20であるとき、すべてのデバイスが状態Bにあると仮定する。一例となる状態決定ツリーは、まずデバイスにXを照会し、Xが1であるかテストし、その後にデバイスにYを照会し、Yが10であるかテストする。これら2つのクエリとテストとの結果は、何れのデバイスがテストされているに関係なく、デバイスが状態A又はBにあるか決定するのに利用可能である。
【0061】
さらに、類似情報の大文字、プリフィックス、サフィックス、値フォーマット及び他の表現の相違がツリーの同じノードにより表現されるように、クエリ及びパラメータのセットが一般化されてもよい。例えば、1つのノードは、パラメータの処理値が“idle”であるか、実際に受信したパラメータが“idle”であったか、“Idle”又は“idle”にマップされる他の文字列を決定するものであってもよい。
【0062】
開示される技術によると、状態決定ツリーは、有用なものにするため、完全に最適化される必要はなく、又はまったく最適化される必要もない。例えば、1つのツリーは、2つのツリーが開示された技術を含むものであったとしても、他のツリーと同じデバイスの同一状態を決定するのに平均してより多くのクエリ及び/又はテストを必要とするものであってもよい。一実施例では、デバイスマネージメントアプリケーションは、平均的により少数のクエリ及び/又はテストによって、又はより小さなツリーを用いて、同じデバイスの同一状態を管理する他のバージョンのツリーをサーバ上で検出する。これに応答して、デバイスマネージメントアプリケーションは、他のバージョンのツリーをダウンロードし、前のバージョンのツリーを置換してもよい。他のバージョンは、デバイスの状態を決定するために他のツリーがまた正確であると判断されるまで、アクティブなツリーとして一時的に指定されてもよい。
【0063】
他の実施例では、デバイスマネージメントアプリケーションのユーザは、他のバージョンのツリーを求めてもよい。ユーザは、他のバージョンのツリーをダウンロードし、ソフトウェアをコンパイル及びインストールし、又はデバイスマネージメントアプリケーションを実行するマシーンへの登録を更新する権限を有することなく、前のバージョンのツリーを置換してもよい。
【0064】
一実施例では、デバイスマネージメントアプリケーションは、状態決定ツリーがネットワーク内のデバイスの状態を提供できないことを検出したことに応答して、状態決定ツリーを更新する。例えば、デバイスマネージメントアプリケーションは、サポートされていないデバイスがネットワークに追加されたこと、又は要求されたタイプの状態情報が状態決定ツリーにすでに表現されるデバイスについてサポートされていないことを検出するようにしてもよい。更新された状態決定ツリーは、デバイスマネージメントアプリケーションのコードを修正することなく、以前には未サポートのデバイスをサポートする。
【0065】
図9A及び9Bは、状態決定ツリーへの更新をトリガするための他の一例となる技術であり、1つは自動的なものであり、1つは手動によるものを示す。図9Aの一例となる自動更新技術に示されるように、ツリー900〜904の少なくとも1つの実行906は、未知のクラスの新たなデバイス910Aの状態を提供することができない。この失敗を検出したことに応答して、デバイスマネージメントアプリケーションは、状態決定ツリーへの更新908Aを要求する。図9Bにおいて、人間によるオペレータ912が、未知のクラスの新たなデバイス910Aの存在を検出する。新たなデバイス910Aの存在を検出することに基づき、オペレータは状態決定ツリーへの更新を要求する。
【0066】
図10A及び10Bは、状態決定ツリーへの更新を取得するための他の一例となる技術を示す。図10Aにおいて、デバイスモニタシステム1000Aは、新たなデバイスをサポートする更新を取得するため、デバイス記述1002を中央サーバ1004に送信する。図示されるように、中央サーバ1004は、クエリレスポンスディクショナリ1006などのクエリ及びレスポンスに関連する状態に関する情報を提供することによって、リクエストに応答する。図示しない実施例では、中央サーバは、状態決定ツリーをデバイスモニタシステム1000Aに直接提供する。中央サーバから新たに提供された情報は、デバイスモニタシステム1000Aが以前にサポートされていたクラスのデバイスと新たなデバイスとを区別することを可能にする。
【0067】
図10Bの例では、人間のオペレータ1010に、状態情報1008を提供するためのインタフェースが示される。人間のオペレータ1010は、状態情報1012をデバイスモニタシステム1000Bに提供するため、インタフェースとやりとりする。デバイスモニタシステムは、デバイスにクエリを送信し、送信されたクエリとデバイスから受信したレスポンスとに関連付けて状態を格納する。他の実施例では、ユーザはまた、ユーザに既知の関連付けされたクエリ及びレスポンス情報を入力する。
【0068】
図11は、状態決定ツリーの処理に関する一例となるステップを示すフローチャートである。未サポートのデバイスのために失敗すると、失敗前のノードの身元が、以前にはサポートされていないデバイスをサポートする新たな状態決定データによって状態決定ツリーを更新するのに利用可能である。図11に示されるように、クライアントは、ステップ1102において、デバイスモニタから新たなデバイスに関するデータをリクエストする。ステップ1104において、デバイスモニタは、状態決定ツリーを処理し、リクエストされたデータを取得するため、ツリー移動ファンクションを呼び出す。判定ステップ1106において、実行が成功したか判断される。実行が成功しなかった場合、ステップ1108において、失敗したノードの身元がクライアントにリターンされる。これに応答して、ステップ1110において、クライアントは、ツリーに追加すべきノードをリターンする。デバイスモニタは、ステップ1112において、ツリーの失敗したノードの前に新たな状態決定ノードを追加し、ステップ1114において、配置された新たなノードによりツリーを再実行する。
【0069】
ステップ1106において判定されるように、実行が成功した場合、ステップ1116において、リクエストされたデータはクライアントにリターンされる。クライアントは、ステップ1118において、リターンされたデータを検証する。データが正確でない場合、失敗したノードの身元がクライアントにリターンされ、処理はステップ1110に進む。そうでない場合、データはツリーから良好に抽出され、クライアントにより検証され、当該処理はステップ1122において終了する。
【0070】
図12は、一時的更新機能を備えた一例となるデバイスクエリ処理を示す。ステップ1202において、クライアントは、デバイスモニタ1202から新たなデバイスに関するデータをリクエストする。デバイスモニタは、ステップ1204において、リクエストされたデータを取得するため、Treeを実行する。ステップ1206において、実行が成功したか判断される。実行が成功しなかった場合、ステップ1208〜1210に反映されるように、失敗したノードの身元がクライアントにリターンされ、クライアントはツリーに追加すべきノードをリターンする。デバイスモニタは、ステップ1212において、前の実行から残っている一時的ノードを破棄し、ステップ1214において、ツリーの失敗したノードの前に新たなノードを一時的に追加する。ステップ1216において、現在配置された一時的なノードによって、ツリーが再実行される。
【0071】
ステップ1206において実行が成功した場合、ステップ1218において、リクエストされたデータはクライアントにリターンされる。ステップ1220において、クライアントは、リターンされたデータを検証する。データが検証され、ステップ1224において判断されるように、ツリーに一時的ノードがあった場合、ステップ1226において、デバイスモニタは、一時的ノードを永続的なものにする。
【0072】
図13は、サーバから配布されたクエリレスポンスディクショナリに基づく他の一例となる更新処理を示す。ステップ1302において、クライアントは、新たなデバイスのモデルやメーカー名などの識別情報を中央サーバに送信する。ステップ1304において、中央サーバは、クエリレスポンスディクショナリ(QRD)をクライアントに送り返す。クライアントは、ステップ1306において、デバイスモニタのAddDeviceメソッドを実行し、提供されたQRDを用いてデバイスをツリーに追加する。ステップ1308において、デバイスモニタは、新たなデバイスのQRDからのデータによって状態決定ツリーを更新する。
[デバイスインタラクションツリーの利用]
一実施例では、デバイスの状態に対するリクエストが、1以上の計算装置とのインタフェースにより受信される。当該リクエストは、デバイスの1以上の属性を特定するものであってもよい。他の実施例では、リクエストは、デバイスが属するワークグループと名前とによってデバイスを特定する。1以上の計算装置上のデバイスインタラクションロジックは、デバイスインタラクションツリーを用いて、ツリーのスタートノードに関連付けされたクエリとテストとを決定するよう構成される。クエリはデバイスに送信され、レスポンスがデバイスから受信される。一実施例では、テスト段階前に、レスポンスは、スタートノードに関連付けされた1以上のアサインメントに従って、デバイスインタラクションロジックによって処理される。他の実施例では、レスポンスは、処理することなく受信されたままテストされる。レスポンスは、ツリーのスタートノードに関連付けされたテストを用いてテストされる。当該テストは、レスポンスを評価するため、1以上の値と1以上の演算とを規定する。一実施例では、1以上のアサインメントは、テストの結果として以降のノードのために値を格納又は準備するため実行されてもよい。テストの結果に基づき、デバイスモニタリングロジックツリーは、リーフノードに向かって移動される。一例では、リーフノードは、デバイスの状態を表す。各種実施例では、スタートノードは、複数のブランとの何れがツリーにおいて移動されるか決定するため、クエリとテストの系列とによるノードの集合によって表されてもよい。
【0073】
ツリーの次のノードがリーフノードである場合、リーフノードにより規定される状態がデバイスの状態となる。一実施例では、次のノードは、移動における第2ノードである。第2ノードがリーフノードでない場合、第2クエリと第2テストとがツリーの第2ノードから決定される。デバイスは、第2レスポンスを導くため次のクエリにより照会される。第2レスポンスは、ツリーの第2ノードに関連付けされた何れかのアサインメントに従って処理されてもよい。レスポンスは、ツリーの移動における次の又は第3ノードを決定するため、第2テストに対して評価される。一実施例では、第3ノードは、スタートノードと第2ノードと同様にして処理される。他のノードが移動のパス上にあってもよく、デバイスの状態を規定するリーフノードへの移動をもたらす。
【0074】
状態決定ロジックは、リクエストに応答してデバイスの状態を提供する。例えば、状態決定ロジックは、ユーザインタフェース上でデバイスの状態をリクエストするユーザに、デバイスの状態のテキスト及び/又は画像説明又は表現を表示する。例えば、状態決定ロジックは、アイドル状態に関連付けされたアイコンと共に、“idle”を表示するようにしてもよい。
【0075】
一実施例では、ツリーを移動するためのデバイスインタラクションロジックは、ツリーのコンテンツに関して汎用的なものである。すなわち、デバイスインタラクションロジックは、あるネットワーク上の特定のデバイスについて特別に構成される必要はない。例えば、状態決定ロジックは、あるネットワーク上のデバイスの状態を決定するため特別に構成される必要はない。一実施例では、デバイスインタラクションロジックは、ツリーを移動するため1以上の計算装置により実行される格納されている命令を含む。他の実施例では、デバイスインタラクションロジックは、1以上の計算装置にツリーを移動させる1以上の特殊なハードウェアコンポーネントを用いて構成されてもよい。
【0076】
Appendix Bは、ツリーのDIT.XML.Nodes(<QNode>)により規定される一例となる状態決定ツリーがクエリ(<Queries>)、アサインメント(<Assignments>)及びテスト(<Test>)を規定することを示す。ノードに移動すると、デバイスマネージメントアプリケーションは、ノードに関連付けされた1以上のクエリを実行し、ノードに関連付けされた何れかのアサインメントを適用し、ノードに関連付けされたテストによってクエリへのレスポンスをテストする。
【0077】
DIT.XMLによる一例では、デバイスマネージメントアプリケーションは、ユーザからデバイス状態に対するリクエストを受信し、“<Query protocol=”snmp“ message=”prtAlertCode“ responseKey=”AlertCode“/>”によるクエリを規定し、“<Test subject=”AlertCode“ subjectOp=”valueOf“ predicate=”subunitMissing“ predicateOp=“equals”/>“のテストにより結果をテストするQNodeに状態決定ツリーを移動する。すなわち、デバイスマネージメントアプリケーションは、メッセージ”prtAlertCode“によってSNMPクエリをデバイスに送信する。デバイスマネージメントアプリケーションは、”AlterCode“としてデバイスからのレスポンスを保存する。その後、デバイスマネージメントアプリケーションは、AlertCodeの値が”subunitMIssing“に等しいか評価するためテストを利用する。
【0078】
テストの結果が真である場合、デバイスマネージメントアプリケーションは、他のQNodeのブランチへのデバイスインタラクションツリーの移動を続ける。移動におけるこのポイントにおいて、デバイスマネージメントアプリケーションは、PrinterStatusが“idle”であり、DeviceStatusが“warning”であり、AlertCodeが“subunitMissing”であると決定した。デバイスマネージメントアプリケーションは、“prtAlertGroup”のメッセージによるSNMPクエリによって再びデバイスに照会する。レスポンスは、“AlertGroup”として保存される。この結果は、“<Test subject=”AlertCode“ subjectOp=”valueOf“ predicate=”input“ predicateOp=“equals”/>“によりテストされる。すなわち、デバイスマネージメントアプリケーションは、結果の値が”input“に等しいか判断する。等しい場合、デバイスマネージメントアプリケーションは、アサインメント”<Set key=“StatusName” value=“error”/>“及び”<Set key=“ErrorName” value=“Noinputtray”/>“に基づき、デバイスの状態を決定する。従って、デバイスマネージメントアプリケーションは、”Error:No Input Tray“によりデバイス状態に対するリクエストに応答する。
【0079】
図14は、一例となる状態決定ツリーを移動する一例となる処理を示すフローチャートである。当該処理は、1以上の格納されている状態決定ツリーを用いてネットワーク上のデバイスの状態を取得するデバイスマネージメントアプリケーションにより実行される。デバイスマネージメントアプリケーションは、状態決定ツリーのクエリ、アサインメント及びテスト及びテストにより規定されるルールに従うよう一般に構成されてもよい。図示されないアサインメントステートメントは、デバイスから受信されたレスポンスに基づき、パラメータに値を割り当てるためデバイスインタラクションツリーに含まれる。割り当てられた値は、図示されるような比較ステップにおいて利用される。デバイスマネージメントアプリケーションは、所与のネットワーク又は所与のデバイスインタラクションツリーについて特別に構成される必要はない。当該処理を進めるデバイスインタラクションツリーは、ソフトウェアをインストールしたり、デバイスのレジストリを修正するためのセキュリティ権限を有さないユーザによって、生成、更新及び置換されてもよい。一実施例では、状態決定ツリーなどのデバイスインタラクションツリーは自ら実行するソフトウェアを有さないため、デバイスインタラクションツリーは、それらが保存されるシステムのセキュリティを危険にさらすものでない。
[デバイスコンフィギュレーションツリー]
一実施例では、デバイスインタラクションツリーはデバイスコンフィギュレーションツリーである。デバイスマネージメントアプリケーションなどのデバイスインタラクションロジックは、デバイスを設定するためデバイスコンフィギュレーションツリーを移動するよう構成される。一実施例では、ユーザは、デバイスに関するパラメータを設定するためのリクエストを送信する。デバイスインタラクションロジックは、このリクエストを受信し、デバイスセットの何れかのデバイスに関するパラメータを設定するため、デバイスコンフィギュレーションツリーを選択する。デバイスインタラクションロジックは、ロートノードからクエリ及びテストを規定する中間ノードまでデバイスコンフィギュレーションツリーを移動する。デバイスインタラクションロジックは、デバイスに送信するコンフィギュレーションコマンドを規定するリーフノードに到達するため、クエリの結果に対してテストを適用する。デバイスコンフィギュレーションツリーは、コンフィギュレーションコマンドがデバイスに良好に送信されたか判断するため、1以上のさらなるコマンドを規定してもよい。
【0080】
例えば、ユーザは、デバイスの名前を変更するようリクエストしてもよい。当該リクエストは、IPアドレスによりデバイスを特定し、またデバイスの新たな名前を規定してもよい。リクエストに基づき、デバイスインタラクションロジックは、デバイスの名前を変更するため、デバイスコンフィギュレーションツリーを選択する。デバイスインタラクションロジックは、デバイスコンフィギュレーションツリーを移動し、1以上のクエリを送信し、クエリの1以上のレスポンスに1以上のテストを適用する。デバイスコンフィギュレーションツリーを移動すると、デバイスインタラクションロジックは、デバイスの名前を変更するためのコマンドを規定するリーフノードに到達する。デバイスインタラクションロジックは、当該コマンドをデバイスに送信する。任意的には、デバイスコンフィギュレーションツリーは、デバイスの名前がコマンドによって良好に変更されたか判断するため、1以上の他のクエリと1以上の他のテストとを規定する。コマンドを送信するか、又はコマンドがデバイスに関するパラメータを良好に変更したことを確認したことに応答して、デバイスインタラクションロジックは、デバイスの名前が変更されたという表示をユーザに示す。
【0081】
他の各種設定変更が、デバイスコンフィギュレーションツリーを用いてデバイスになされてもよい。例えば、デバイスコンフィギュレーションツリーは、デバイスのタイムアウト値を変更するためのコマンド、又はデバイスがスタートアップするとテストページが印刷されるか指示する設定を変更するためのコマンドを規定してもよい。デバイスコンフィギュレーションツリーを生成及び利用するための技術は、何れか特定タイプの設定変更に限定されず、各種コンフィギュレーションツリーが、デバイスに送信する設定コマンドを決定するのに利用されてもよい。一実施例では、デバイスコンフィギュレーションツリーは、自己実行可能なコードを含まない。また、デバイスインタラクションロジックは、何れかのデバイスのパラメータを変更するため特別に構成されることなく、デバイスコンフィギュレーションツリーを移動するよう汎用的に構成されてもよい。一実施例では、コンフィギュレーションツリーは、異なるタイプのデバイス、異なる機能を備えたデバイス、及び/又は同一の設定変更を実現するため異なる設定コマンドを要求する異なるメーカーからのデバイスを設定するためのクエリ、テスト及び設定コマンドを規定する。
[デバイスアクションツリー]
一実施例では、デバイスインタラクションツリーは、デバイスアクションツリーである。デバイスマネージメントアプリケーションなどのデバイスインタラクションロジックは、デバイスにアクションを実行させるためデバイスアクションツリーを移動するよう構成される。一実施例では、ユーザは、デバイスにアクションを実行させるためのリクエストを送信する。デバイスインタラクションロジックは、当該リクエストを受信し、デバイスセットの何れかのデバイス上でアクションを実行させるためのデバイスアクションツリーを選択する。デバイスインタラクションロジックは、ルートノードからクエリ及びテストを規定する中間ノードまでデバイスアクションツリーを移動する。デバイスインタラクションロジックは、デバイスに送信するアクションコマンドを規定するリーフノードに到達するため、クエリの結果にテストを適用する。デバイスコンフィギュレーションツリーは、アクションコマンドがデバイスによって良好に実行されたか判断するため1以上のさらなるコマンドを規定してもよい。
【0082】
例えば、ユーザは、指定されたフォーマットに従って文書を印刷するようリクエストしてもよい。当該リクエストは、IPアドレスによりデバイスを特定し、また文書及び所望のフォーマットを指定してもよい。当該リクエストに基づき、デバイスインタラクションロジックは、デバイス上で文書を印刷するためのデバイスアクションツリーを選択する。デバイスインタラクションロジックは、デバイスアクションツリーを移動し、1以上のクエリを送信し、クエリの1以上のレスポンスに1以上のテストを適用する。デバイスアクションツリーを移動すると、デバイスインタラクションロジックは、指定されたフォーマットに従って文書を印刷するためのコマンドを規定するリーフノードに到達する。デバイスインタラクションロジックは、コマンドをデバイスに送信する。任意的には、デバイスコンフィギュレーションツリーは、デバイスが指定されたフォーマットにより文書を印刷するのに成功したか判断するため、1以上の他のクエリと1以上の他のテストとを規定する。アクションコマンドを送信するか、又はアクションコマンドが良好に実行されたことを確認したことに応答して、デバイスインタラクションロジックは、デバイスが指定されたフォーマットにより文書を印刷したという表示をユーザに示す。
【0083】
他の各種アクションコマンドが、デバイスアクションツリーを利用してデバイスに送信されてもよい。例えば、デバイスアクションツリーは、デバイスにファックス、電子メール又はテキストメッセージを送信させるためのコマンド、又はデバイスにコピーさせ、テストページを印刷させ、又はクリーニング処理を実行させるためのコマンドを規定してもよい。デバイスアクションツリーを生成及び利用するための技術は、何れか特定タイプのアクションに限定されず、各種アクションツリーが、デバイスに送信するアクションコマンを決定するのに利用されてもよい。一実施例では、デバイスアクションツリーは、自己実行可能なコードを含まない。また、デバイスインタラクションロジックは、何れかのデバイス上でアクションを実行させるよう特別に構成されることなく、デバイスアクションツリーを移動するよう汎用的に構成されてもよい。一実施例では、アクションツリーは、異なるタイプのデバイス、異なる機能を備えたデバイス、及び/又は同一のアクションを実行するため異なるアクションコマンドを要求する異なるメーカーからのデバイスによってアクションを実行させるためのクエリ、テスト及び設定コマンドを規定する。
[実現機構]
一実施例によると、開示された技術は1以上の特定用途計算装置により実現される。特定用途計算装置は、当該技術を実行するため配線が組み込まれ、又は当該技術を実行するため永続的にプログラムされた1以上のASIC(Application−Specific Integrated Circuit)又はFPGA(Field Programmable Gate Array)などのデジタル電子デバイスを有し、又はファームウェア、メモリ、他のストレージ若しくは組み合わせのプログラム命令に従って当該技術を実行するようプログラムされた1以上の汎用ハードウェアプロセッサを有してもよい。このような特定用途計算装置はまた、カスタム配線論理、ASIC又はFPGAを当該技術を実現するためのカスタムプログラミングと組み合わせるようにしてもよい。特定用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯デバイス、ネットワーキングデバイス又は当該技術を実現するための配線及び/又はプログラム論理を搭載した他の何れかのデバイスであってもよい。
【0084】
例えば、図15は、本発明の実施例が実現されるコンピュータシステム1500を示すブロック図である。コンピュータシステム1500は、情報を通信するためのバス1502又は他の通信機構と、情報を処理するためバス1502に接続されたハードウェアプロセッサ1504とを有する。ハードウェアプロセッサ1504は、例えば、汎用マイクロプロセッサであってもよい。
【0085】
コンピュータシステム1500はまた、プロセッサ1504により実行される命令及び情報を格納するため、バス1502に接続されたRAM(Random Access Memory)や他のダイナミックストレージデバイスなどのメインメモリ1506を有する。メインメモリ1506はまた、プロセッサ1504により実行される命令の実行中に一時的変数や他の中間情報を格納するのに利用されてもよい。このような命令は、プロセッサ1504にアクセス可能な非一時的記憶媒体に格納されると、コンピュータシステム1500を命令に指示される処理を実行するようカスタマイズされた特定用途マシーンに変換する。
【0086】
コンピュータシステム1500はさらに、プロセッサ1504のための静的情報及び命令を格納するため、バス1502に接続されたROM(Read Only Memory)1508や他のスタティックストレージデバイスを有する。磁気ディスクや光ディスクなどの記憶装置1510が設けられ、情報及び命令を格納するためバス1502に接続される。
【0087】
コンピュータシステム1500は、コンピュータユーザに情報を表示するため、バス1502を介しCRT(Cathode Ray Tube)などのディスプレイ1512に接続されてもよい。英数字及び他のキーを含む入力装置1514が、プロセッサ1504に情報及びコマンド選択を通信するため、バス1502に接続される。他のタイプのユーザ入力装置は、指示情報及びコマンド選択をプロセッサ1504に通信し、ディスプレイ1512上のカーソルの動きを制御するため、マウス、トラックボール又はカーソル方向キーなどのカーソル制御1516である。この入力装置は、典型的には、デバイスが平面上の位置を指定することを可能にする第1軸(xなど)と第2軸(yなど)の2つの軸の2つの自由度を有する。
【0088】
コンピュータシステム1500は、コンピュータシステム1500を特定用途マシーンにする又はプログラムする、カスタマイズされた配線論理、1以上のASIC又はFPGA、ファームウェア及び/又はプログラムロジックを用いて、開示された技術を実現してもよい。一実施例によると、当該技術は、プロセッサ1504がメインメモリ1506に含まれる1以上の命令の1以上のシーケンスを実行することに応答して、コンピュータシステム1500により実行される。このような命令は、ストレージデバイス1510などの他の記憶媒体からメインメモリ1506に読み込まれてもよい。メインメモリ1506に含まれる命令シーケンスの実行は、プロセッサ1504に開示された方法の各ステップを実行させる。他の実施例では、配線回路が、ソフトウェア命令の代わりに又は一緒に利用されてもよい。
【0089】
ここで用いられる“記憶媒体”という用語は、マシーンを特定の方法で実行させるデータ及び/又は命令を格納する何れかの非一時的媒体を表す。このような記憶媒体は、不揮発性媒体及び/又は揮発性媒体から構成されてもよい。不揮発性媒体は、例えば、ストレージデバイス1510などの光又は磁気ディスクなどを含む。揮発性媒体は、メインメモリ1506などのダイナミックメモリを含む。記憶媒体の通常形態は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、他の何れかの磁気データ記憶媒体、CD−ROM、他の何れかの光データ記憶媒体、ホールパターンによる何れかの物理媒体、RAM、PROM、EPROM、FLASH−EPROM、NVRAM、他の何れかのメモリチップ又はカートリッジなどを含む。
【0090】
記憶媒体は、伝送媒体と異なるものであるが、これと共に利用されてもよい。伝送媒体は、記憶媒体の間の情報の伝送に用いられる。例えば、伝送媒体は、バス1502を構成する配線を含む同軸ケーブル、銅線及び光ファイバを含む。伝送媒体はまた、無線波及び赤外線データ通信中に生成されるものなど、音響波又は光波の形態をとることも可能である。
【0091】
各種形態の媒体が、実行のためプロセッサ1504に1以上の命令の1以上のシーケンスを担持することに関する。例えば、これらの命令は、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上に初期的には担持されてもよい。リモートコンピュータは、それのダイナミックメモリに命令をロードし、モデムを用いて電話線により命令を送信することが可能である。コンピュータシステム1500にローカルなモデムは、電話線によりデータを受信し、データを赤外線信号に変換するため、赤外線送信機を利用することができる。赤外線検出装置が、赤外線信号により搬送されたデータを受信し、適切な回路が、当該データをバス1502に配置することができる。バス1502は、データをメインメモリ1506に搬送し、そこからプロセッサ1504は命令を抽出及び実行する。メインメモリ1506により受信された命令は、任意的には、プロセッサ1504による実行前後にストレージデバイス1510に格納されてもよい。
【0092】
コンピュータシステム1500はまた、バス1502に接続された通信インタフェース1518を有する。通信インタフェース1518は、ローカルネットワーク1522に接続されるネットワークリンク1520との双方向データ通信接続を提供する。例えば、通信インタフェース1518は、ISDN(Integrated Services Digital Network)カード、ケーブルモデム、衛星モデム、又は対応するタイプの電話線とのデータ通信接続を提供するモデムであってもよい。他の例として、通信インタフェース1518は、互換性のあるLANとのデータ通信接続を提供するためのLAN(Local Area Network)カードであってもよい。無線リンクがまた実装されてもよい。このような何れかの実現形態では、通信インタフェース1518は、各種タイプの情報を表すデジタルデータストリームを搬送する電気、電磁気又は光信号を送受信する。
【0093】
ネットワークリンク1520は、典型的には、1以上のネットワークを介し他のデータデバイスとのデータ通信を提供する。例えば、ネットワークリンク1520は、ローカルネットワーク1522を介しISP(Internet Service Provider)1526により運営されるデータ機器又はホストコンピュータ1524との接続を提供するものであってもよい。さらに、ISP1526は、“インターネット”1528として一般に参照されるワールドワイドパケットデータ通信ネットワークを介しデータ通信サービスを提供する。ローカルネットワーク1522とインターネット1528とは共に、デジタルデータストリームを搬送する電気、電磁気又は光信号を利用する。各種ネットワークを介した信号と、ネットワークリンク1520及び通信インタフェース1518を介した信号とは、コンピュータシステム1500に対してデジタルデータを搬送し、伝送媒体の一例となる形態である。
【0094】
コンピュータシステム1500は、ネットワーク、ネットワークリンク1520及び通信インタフェース1518を介し、プログラムコードを含むデータ及びメッセージを送受信することができる。インターネットの例では、サーバ1530は、インターネット1528、ISP1526、ローカルネットワーク1522及び通信インタフェース1518を介しアプリケーションプログラムのためのリクエストされたコードを送信してもよい。
【0095】
受信されたコードは、そのままプロセッサ1504により実行されてもよく、以降の利用のためストレージデバイス1510や他の不揮発性ストレージに格納されてもよい。
【0096】
上述した明細書において、実現形態毎に可変的な多数の具体的詳細を参照して本発明の実施例が説明された。明細書及び図面は、限定的なものでなく例示的なものとしてみなされるべきである。本発明の範囲及び出願人が本発明の範囲であると意図するものは、何れか以降の補正を含む請求項に記載された特定の形態による請求項の文言上及び均等の範囲である。
【0097】
【表1−1】
【表1−2】
【表2−1】
【表2−2】
【表3−1】
【表3−2】
【表3−3】
【表3−4】
【表3−5】
【表3−6】
【表3−7】
【表4−1】
【表4−2】
【表4−3】
【表4−4】
【表4−5】
【表4−6】
【表4−7】
【表4−8】
【表4−9】
【表4−10】
【表4−11】
【表4−12】
【表4−13】
【表4−14】
【表4−15】
【表4−16】
【表4−17】
【表4−18】
【表4−19】
【表4−20】
【表4−21】
【表4−22】
【0098】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0099】
100 デバイスモニタシステム
102 状態決定ツリー
104 デバイス情報
106 ファンクションライブラリ
108 ネットワーク
110 デバイス
【技術分野】
【0001】
本発明は、デバイスとやりとりするためのデバイスインタラクションツリーに関する。
【背景技術】
【0002】
中規模から大規模な企業はしばしば、パーソナルコンピュータに加えてアタッチされた各種デバイスを有する多様なコンピュータネットワークを有している。プリンタや複合機などのデバイスが入力されるリクエストを処理するのに十分な用紙やトナーを備えてオンラインのワーキング状態に維持されるとき、企業は最も効率的に機能する。限られた予算とスタッフを有するIT(Information Technology)部門は、典型的には、これらのデバイスを利用可能にし続けるために、これらをメンテナンス及び修繕する。例えば、プリンタや複合機などのデバイスは、用紙やトナーレベルが低いとき、用紙やトナーを補充することによってメンテナンスされる。他の例として、デバイスは、紙詰まりを取り除いたり、開放されたままのデバイスのカバーを閉じることによって修復される。リクエストを処理することができないデバイスは、企業の効率的な運営を妨げ、IT部門に対して影響を及ぼす可能性がある。
【0003】
デバイスを物理的にチェックする代わりに、ITスタッフは、ネットワークを介しデバイスと遠隔的にやりとりするよう設計されたカスタマイズされたマネージメントアプリケーションを利用するかもしれない。各種のデバイスが、各種のカスタマイズされたデバイスマネージメント命令に応答する。各種デバイスが企業によって利用されるため、ITスタッフは、企業により利用されるすべてのデバイスとやりとりすることが可能な単一のマネージメントアプリケーションを有していない可能性がある。さらに、マネージメントアプリケーションはネットワークに現在あるすべてのデバイスとやりとりすることが可能であったとしても、サポートされていないデバイスがネットワークに追加される可能性がある。新たなデバイスをサポートするためカスタマイズされたマネージメントアプリケーション更新することは大変であり、カスタマイズされたマネージメントアプリケーションの複雑さのため高いレベルのスキルを必要とする。さらに、セキュリティのため、カスタマイズされたマネージメントアプリケーションの更新は、高い権限のユーザを必要とするかもしれない。更新されたマネージメントアプリケーションが信頼されたソースからのものであったとしても、更新されたマネージメントアプリケーションにおけるバグは、マネージメントアプリケーションを実行するマシーンと共に、マネージメントアプリケーションにより管理されるデバイスに対して予期せぬ影響を与える可能性がある。
【0004】
ここで説明されたアプローチは、追求可能なアプローチであるが、必ずしも以前に想到又は追求されたアプローチであるとは限らない。従って、特段の指摘がない場合、ここで説明されたアプローチはここに記載されたことによって従来技術とみなされるべきでない。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の課題は、デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための技術を提供することである。
【課題を解決するための手段】
【0006】
デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。デバイスインタラクションツリーの具体例として、デバイス状態決定ツリー、デバイスコンフィギュレーションツリー、デバイスアクションツリーなどがあげられる。デバイス状態決定ツリーの中間ノードはクエリとテストとを規定し、リーフノードはデバイス状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介してリーフノードまでデバイス状態決定ツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストは、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動先となるリーフノードにより規定される。
【発明の効果】
【0007】
本発明によると、デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための技術を提供することができる。
【図面の簡単な説明】
【0008】
【図1A】図1Aは、ネットワーク内の複数のデバイスをモニタリングするための一例となるデバイスモニタシステムを示す。
【図1B】図1Bは、既知のクラスのデバイスがネットワークに追加されたことを検出する一例となるデバイスモニタシステムを示す。
【図1C】図1Cは、未知のクラスのデバイスがネットワークに追加されたことを検出する一例となるデバイスモニタシステムを示す。
【図2】図2は、デバイスインタラクションツリーセットのための一例となるクラス図である。
【図3】図3は、デバイスとやりとりするためのツリーセットにおける一例となるコンポーネントを示す。
【図4】図4は、3レベルの一例となるツリーを示す。
【図5】図5は、デバイスのクラスを決定し、複数のデバイスインタラクションツリーの1つを選択するための一例となるデバイス分類を示す。
【図6】図6は、デバイスのベンダIDを取得するための一例となるツリーを示す。
【図7A】図7Aは、デバイスを単一のクラスに分類するための一例となるツリーを示す。
【図7B】図7Bは、デバイスを複数のクラスの1つに分類するための一例となるツリーを示す。
【図8A】図8Aは、クエリレスポンスディクショナリの一例となる構造を示す。
【図8B】図8Bは、8個のクエリを有する一例となるクエリレスポンスディクショナリを示す。
【図8C】図8Cは、4個のクエリがIDクエリである11個のクエリを有する一例となるクエリレスポンスディクショナリを示す。
【図9A】図9Aは、新たなデバイスをサポートするためツリーを自動的に更新するための一例となる処理を示す。
【図9B】図9Bは、新たなデバイスをサポートするためツリーを手動により更新するための一例となる処理を示す。
【図10A】図10Aは、ツリーへの更新が中央サーバから受信される実施例を示す。
【図10B】図10Bは、ツリーへの更新がユーザ入力に基づく実施例を示す。
【図11】図11は、デバイスマネージメントアプリケーションがツリーを利用及び更新する実施例を示すフローチャートである。
【図12】図12は、デバイスマネージメントアプリケーションが一時的にツリーにノードを追加し、ノードが永続的なものになる前にクライアントがノードを有効にすることを可能にする実施例を示すフローチャートである。
【図13】図13は、デバイスマネージメントアプリケーションが中央サーバから受信したクエリレスポンスディクショナリに基づきツリーを更新する実施例を示す。
【図14A】図14Aは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図14B】図14Bは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図14C】図14Cは、一例となるデバイスインタラクションツリーの移動を示すフローチャートである。
【図15】図15は、開示された各種実施例を実行する一例となるコンピュータシステムを示す。
【発明を実施するための形態】
【0009】
以下の説明では、本発明の完全な理解を提供するため、説明のための多数の具体的詳細が提供される。しかしながら、本発明はこれらの具体的詳細なしに実現されてもよいことは明らかであろう。他の例では、本発明を不必要に不明りょうにすることを避けるため、周知の構成及び装置はブロック図の形式により示される。
[全体概略]
デバイスの状態を決定するためのデバイスインタラクションツリーを生成及び利用するための方法、装置及び非一時的なコンピュータ可読記憶媒体が開示される。デバイスインタラクションツリーは、ルートノード、中間ノード及びリーフノードを有する。デバイスインタラクションツリーの具体例として、デバイス状態決定ツリー、デバイスコンフィギュレーションツリー、デバイスアクションツリーなどがあげられる。デバイス状態決定ツリーの中間ノードはクエリとテストとを規定し、リーフノードはデバイス状態を規定する。所与のデバイスの状態は、ルートノードから1以上の中間ノードを介してリーフノードまでデバイス状態決定ツリーを移動することによって決定される。移動中、ツリーの現在ノードに関連付けされたクエリが、レスポンスを取得するため所与のデバイスに送信される。現在ノードに関連付けされたテストは、1以上の値に対してレスポンスを評価するのに利用される。テストの結果は、ツリーのリーフノードに向かうパス上の次のノードを決定する。デバイスの状態は、ツリーの移動先となるリーフノードにより規定される。
【0010】
デバイスインタラクションツリーの具体例の詳細な理解を提供するため、デバイス状態決定ツリーの各種具体例が示される。これらの具体例の多くは、デバイスの状態を決定する代わりに又は加えて、デバイスのパラメータを変更するよう構成されるデバイスコンフィギュレーションツリーに関して適用されてもよい。例えば、デバイスコンフィギュレーションツリーは、デバイスの名前を変更するのに利用されてもよい。あるいは、これらの具体例の多くは、デバイスの状態を決定する代わりに又は加えて、デバイスに特定のアクションを実行させるよう構成されるデバイスアクションツリーに関して適用されてもよい。例えば、デバイスアクションツリーは、デバイスに指定された設定に従って文書を印刷させるのに利用されてもよい。
[状態決定ツリー]
1つの状態決定ツリーが、複数のデバイスの状態を決定するのに利用されてもよい。サポートされるデバイスは、様々な機能を備えたデバイス、様々な構成を備えたデバイス、様々なメーカーからのデバイス、及び/又は同じクエリに異なって応答する同一の状態を備えたデバイスを含むものであってもよい。デバイスインタラクションツリーは、デバイスインタラクションツリーを移動するため構成されたソフトウェアを修正することなく、生成又は修正されてもよい。一実施例では、デバイスインタラクションツリーの生成、修正、置換及び/又はテストは、より少数のセキュリティ権限を要求し、特殊化されたデバイスマネージメントソフトウェアをインストール、コンパイル又は修正するよりも、ネットワーク上のデバイスに対してより低いセキュリティリスクしか有さない。
【0011】
ここに開示される技術は、何れかのタイプのデバイス状態に適用されてもよい。デバイス状態の具体例として、限定することなく、アイドル、スリープ中、処理中又は印刷中、印刷準備完了、ウォーミングアップ、トナー交換、調整、ジョブ中止、カバーオープン、トナー切れ、フューザ切れ、又は紙詰まりがあげられる。デバイス状態は、デバイスの動作状態を記述するものであってもよい。一実施例では、動作状態は、デバイスによって現在実行中のアクションのタイプ又はアクションがないことを含む。他の実施例では、動作状態は、デバイスがアクションを実行することを阻害しているエラーを含む。他の実施例では、デバイス状態は、用紙トレーサイズ、3穴パンチ、2穴パンチ又はステープラなどのデバイス設定を含む。他の実施例では、デバイス状態は、トナーレベル(75%など)、用紙残量(50頁など)、又はバッテリ残量(60%又は3時間など)などの供給状態を含む。各種実施例では、各種タイプの状態が同一のツリーにより表現されてもよい。例えば、単一の状態決定ツリーは、エラー、動作状態、デバイスの設定及び/又は供給状態に関する情報を提供するものであってもよい。一実施例では、デバイスの状態に対するリクエストは、要求されるタイプの情報を指定する。例えば、1つのリクエストは、デバイスの動作状態に対するものであり、他のリクエストは、デバイスが3穴パンチャを備えるよう構成されているかを決定するためのものであってもよい。
【0012】
一実施例では、デバイスマネージメントアプリケーションは、デバイスの状態に対するリクエストを受信する。一例では、リクエストは、アドレスによってデバイスを特定する。デバイスマネージメントアプリケーションは、アドレスに送信するクエリを選択するため、状態決定ツリーにアクセスし、当該アドレスにおいてデバイスからレスポンスが受信される。デバイスマネージメントアプリケーションは、デバイスからのレスポンスに基づき1以上の中間ノードを介しリーフノードまで状態決定ツリーを移動することによって、デバイスの状態を決定する。リーフノードはデバイスの状態を示し、デバイスマネージメントアプリケーションは、デバイス状態のリクエストに応答して、デバイス状態をユーザインタフェース上に表示するようにしてもよい。ツリーの移動中、デバイスマネージメントアプリケーションは、単にクエリを利用し、状態決定ツリーにより規定されるテストを適用する。従って、デバイスマネージメントアプリケーションが状態決定ツリーなどのデバイスインタラクションツリーを移動するよう構成されると、デバイスインタラクションツリーは、デバイスマネージメントアプリケーションのコードを修正することなく更新されるようにしてもよい。
【0013】
一実施例では、デバイスマネージメントアプリケーションはネットワーク上のデバイスをモニタし、状態決定ツリーがネットワーク内のあるデバイスの状態を提供することができないことを検出したことに応答して、状態決定ツリーが更新される。一実施例では、この更新は、更新されたデバイスインタラクションツリーを提供するサーバから要求される。この更新は、デバイスマネージメントアプリケーションのコードを修正することなく、既存のデバイスインタラクションツリーの置換、新たなデバイスインタラクションツリーの生成、及び/又は既存のデバイスのノードの追加、削除又は変更を行うものであってもよい。
【0014】
一実施例では、デバイスマネージメントアプリケーションは、クエリ及びレスポンス情報に関連付けされた受信した状態情報に基づき、状態決定ツリーを生成又は修正する。一実施例では、この情報は、新たな関連付けが検出されると、デバイスマネージメントアプリケーションに通知するサーバから受信される。関連付けされた状態情報、クエリ情報及びレスポンス情報は、新たな状態決定ツリーを生成するため、デバイスマネージメントアプリケーションのコードを修正することなく既存の状態決定ツリーのノードを追加、削除又は修正するのに利用されてもよい。
【0015】
他の実施例では、ツリーを生成又は修正するのに利用される情報の一部又はすべてが、ユーザインタフェースを介しユーザにより提供されるようにしてもよい。一例では、ユーザは、ネットワーク上のあるデバイスのある状態が観察されたことを示す。これに応答して、デバイスマネージメントアプリケーションは、あるレスポンスを導くため、当該デバイスにあるクエリを送信する。特定の状態、クエリ及びレスポンスの指示は、デバイスマネージメントアプリケーションのコードを変更することなく、新たな状態決定ツリーを生成するため、及び/又は既存の状態決定ツリーについてノードを追加、削除若しくは修正するのに利用されてもよい。
【0016】
図1Aは、ネットワーク108を介しデバイス110A,110B,110Cと通信する一例となるデバイスモニタシステム100を示す。例えば、デバイスモニタシステム100は、1以上の状態決定ツリーを用いてネットワーク108のデバイス110A,110B,110Cの状態を決定するデバイスマネージメントアプリケーション(図示せず)を有してもよい。図示されるように、デバイスモニタシステム100は、クエリ及びテストを指定する実行可能コード及び状態決定ツリー102のファンクションライブラリ106を有する。ファンクションライブラリ106は、デバイス110A,110B,110Cに関して汎用的であって、任意的にはデバイスのクラスに関しても汎用的なファンクションを有する。すなわち、これらのファンクションは、何れかの状態決定ツリーと何れかのデバイス情報セットとにより機能する。一実施例では、デバイスマネージメントアプリケーションは、状態決定ツリー102を構成、実行又は更新するため、ファンクションライブラリ106からファンクションを呼び出す。ファンクションライブラリ106からのConstructQTreeファンクションは、状態決定ツリーを構成する。ファンクションライブラリ106からのExecuteQTreeファンクションは、デバイスに送信するため状態決定ツリー102からクエリを選択し、デバイスから結果を受信し、当該結果に状態決定ツリー102からのテストを適用し、デバイスの状態を決定する。
【0017】
図示されるように、デバイスモニタシステムはまた、デバイスインタラクションツリー102が構成されるデバイス情報104を有する。デバイス情報104は、各デバイス110A,110B,110Cに固有の情報を有する。デバイスインタラクションツリー102は、デバイスモニタシステム100がデバイス110A,110B,110Cに関する新たな情報を受信すると、UpdateQTreeファンクションにより修正されてもよい。
[クエリ及びレスポンス]
デバイス状態は、当該デバイスに対するクエリ系列へのレスポンスに基づき決定されてもよい。例えば、第1クエリに対する第1レスポンスは、デバイスが属するデバイスのクラスを決定するのに十分な情報を提供し、第2クエリに対する第2レスポンスは、デバイスの状態を決定するのに十分な情報を提供するものであってもよい。他の例では、第2クエリに対する第3レスポンスと、おそらく第4クエリに対する第4レスポンスとが、状態が決定可能になる前に求められる。
【0018】
ここに開示される技術は、デバイスから情報を抽出するための何れかのタイプのクエリに適用されてもよい。クエリのタイプの具体例として、SNMP(Simple Network Management Protocol)クエリ、PJL(Printer Job Language)クエリ、PostScriptクエリ、HTTP(Hypertext Transfer Protocol)クエリがあげられる。開示される各種実現形態は、これらクエリのタイプの具体例のすべて、1つ又は組み合わせを利用するものであってもよいし、又は何れを利用しなくてもよい。一実施例では、状態決定ツリーのクエリ及びテストは、何れかのデバイスの状態又は設定を変更不可であり、又はネットワーク内のデバイス上で実行されるソフトウェアを変更不可である。このようにして、状態決定ツリーに対する更新は、ツリーのソースが未知であったとしても、又はソースの評判が未知であったとしても、大きなセキュリティリスクなくテストされてもよい。
【0019】
テーブル1は、各種メーカーにより製造される各種デバイスについて、hrDeviceDescr、hrPrinterStatus、hrDeviceStatus、hrPrinterDetectedErrorState、prtAlertCode、prtAlertCode、prtAlertGroup、prtAlertLocation、prtAlertSeverityLevel、及びprtAlertTransiningLevelを含むSNMPクエリに対する一例となるデバイスレスポンスを示す。すべてのプリンタがアイドル又はスリープ状態にあり、3つが低トナー状態を報告していた(Samsung770,OKI MC360及びRicoh Aficio C420)。テーブル1は、Appendix Aに含まれている。
【0020】
図示されるように、IPアドレス172.30.4.55のデバイスは、“HP LaserJet P4014”によりhrDeviceDescrクエリに応答し、“idle”によりhrPrinterStatusクエリに応答し、“running”によりhrDevice Statusに応答し、“00”によりhrPrinterDetected Error Stateクエリに応答し、“subunitPowerSaver”によりprtAlertCodeクエリに応答し、“generalPrinter”によりprtAlertGroupクエリに応答し、“35078”によりprtAlertLocationクエリに応答し、“other”によりprtAlertSeverityLevelクエリに応答し、“untrained”によりprtAlertTraniningLevelクエリに応答した。この情報は、当該デバイス及び他のデバイスに関する他の情報と共に、デバイスの状態を確実に決定するため、状態決定ツリーを構成するのに利用されてもよい。一実施例では、状態決定ツリーの利用は、デバイスがアイドルであることを決定する前に、これらのクエリのすべてではないが一部をデバイスに送信する。
【0021】
172.30.4.55のデバイスが“idle”によりhrPrinterStatusに応答したが、他のアイドル状態のデバイスは、“idle”により同じクエリに応答しなかった。例えば、172.30.4.61のデバイスは、“other”によりhrPrinterStatusクエリに応答した。従って、デバイスのアドレスを超えた情報がない場合、hrPrinterStatusクエリは、デバイスの実際の状態を決定するのに不十分であるかもしれない。
【0022】
実際、異なるデバイスモデル、異なる設定を備えた同一モデル、及び異なるインストールされたファームウェアを備えた同一モデルが、同一のクエリに異なって応答するようにしてもよい。一実施例では、状態決定ツリーは、ネットワーク内の各デバイスについて、デバイスの状態を決定するため、デバイスに対する問題へのクエリを指定する。デバイスはクエリに応答し、レスポンスに基づき、状態決定ツリーはデバイスの状態を特定するリーフノードに移動する。
【0023】
テーブル1の具体例を再び参照して、hrPrinterDetectedErrorStateクエリに対するレスポンスは、低トナーの3つのプリンタについて非ゼロとなる(また、その他のプリンタがゼロを表現する方法の数に留意されたい)。Host Resources MIB(RFC2790)は、ビット#2が低トナーを示し、ビット#0が第1バイトの最上位ビットである、タイプOCTET STRINGを有する当該値のビットとしてエラー状態が符号化されることを述べている。RicohとOkiは、これを32(2の5乗)又は16進数の0x20に対応する左から3番目のビットを意味するものとして解釈し、それは生の値としてリターンされる(スペース文字)。しかしながら、Ricoh Aficioを含む他のすべてのプリンタは、コロン文字によりセパレートされたASCII数字により表現されるようなOCTET STRINGの値をリターンし(OCTET STRINGがいくつかの文書において示される)、すなわち、ゼロを示すのにヌルの代わりに49(ASCIIの“0”)をリターンする。また、Samsungのエンジニアは、自らの規格の解釈において重要な相違を有しているようであり、左の代わりに右からビットをカウントしているようである。すなわち、ビット#0がビット#2を4(2の2乗)に対応させる最下位ビットであり、低トナーは“04”として報告される。
【0024】
さらなる状況の複雑化は、複数のプリンタ状態が可能であるという事実であり、SNMPレスポンスの異なる組み合わせは、関係するプリンタモデルに応じて同じプリンタ状態を示すものであってもよいし、そうでなくてもよい。1つのアプローチは、すべてのプリンタモデルについてSNMPレスポンスのデータベースを構築することである。対象となるデバイスがネットワーク上において特定され、それのモデル名が決定されると、対象となるデバイスの予想されるSNMPレスポンスが、データベースのモデル名を検索することによって決定できる。しかしながら、このアプローチは、利用可能なすべてのプリンタモデルを表す極めて大きなデータベースの構築及び継続的な更新を必要とする。すべての既知のベンダからのすべての既知のプリンタの信頼でき、一貫したデータセットを維持するタスクは、ベンダの協力なしには、開発チームに対して大きな負担となりうる。
【0025】
テーブル2は、各種状態にある単一のデバイスのデバイスレスポンスの具体例を示す。テーブル2は、Appendix Aに含まれる。図示されるように、デバイスは、異なる状態にあるとき、異なってクエリに応答する。従って、クエリの一部又はすべてに対するレスポンスに基づきデバイスの状態を決定することができる。
【0026】
テーブル2に参照されるデバイスのケースでさえ、hrPrinterDetectedErrorStateがどのように報告されるかについていくつかの変形がある。カバーがオープンされているとき、生のバイトである0xoBがリターンされ、ASCIIの“11”であり、8+2+1に等しい。MIB規格によると、これは、coverOpen(8)、offline(2)及びservice requested(1)を示す。しかしながら、紙詰まりなどの他の状態に応答して(プリンタが落ち着き、一貫して同じ値をリターンした数秒後)、ストリング“07”がリターンされ、それはASCIIバイトの48及び55を含む。ASCII数字として解釈された場合、“07”は数字の7を示し、それはjammed(4)、offline(2)及びservice requsted(1)に対応する。従って、プリンタは、生のバイトとしてhrPrinterDetectedErrorStateとリターンするときもあり、ASCII数字の文字列としてリターンするときもある。
【0027】
ネットワーク内のデバイスのデバイス状態を取得する複雑さのため、カスタムデバイスマネージメントソフトウェアに対する更新は、極めて時間と費用のかかるものとなる可能性があり、ソフトウェアの頻繁な更新は、セキュリティリスクをもたらし、予期せぬソフトウェアバグのリスクを高める。コンパイルされたソフトウェアがパッチされると、新たなバイナリの配布がクライアントにされる。これらのクライアントは、ソフトウェアをインストールする前にウィルス感染や他のセキュリティ問題のためにこの新たなバイナリ配布をチェックする必要がある。
【0028】
一実施例では、カスタムデバイスマネージメントソフトウェアを更新する代わりに、サイトに固有の状態決定ツリーが、ネットワーク内のデバイスの状態を決定するため構成される。一実施例では、汎用的なデバイスマネージメントソフトウェアが、何れかのデバイスインタラクションツリーを利用するため構成され、デバイスマネージメントソフトウェアは、ツリーの変更による更新を要求しない。
【0029】
一実施例では、デバイスインタラクションツリーは、ネットワーク内にあるすべてのプリンタタイプのブランチを含む。ツリー構造は、デバイスマネージメントソフトウェアを修正することなく容易に置換及び更新されてもよい。従って、ツリー構造は、維持するのにより効率的であり、ネットワーク上のモニタ対象のプリンタセットと共に拡大するようにしてもよい。ツリーは、一般的なテーブルより容易に特有なデバイス動作を処理することが可能である。例えば、hrPrinterDetectedErrorStateの異なる解釈のため、ブランチがツリーに追加されてもよい。一実施例では、ツリーは、プリンタが複数の状態の何れにあるか決定するため、複数のプリンタタイプの複数のSNMPオブジェクトを抽出するためのクエリを格納する。
【0030】
状態決定ツリーのノードは、デバイスに対して実行されるクエリを規定する。一実施例では、ツリーは、デバイスの状態を決定するのに十分な情報を有する前に、デバイスに送信される平均的なクエリ数を最小化するよう構成される。一例では、ツリーの高さを最小化するため、又はルートノードと各リーフノードとの間の平均ノード数を最小化するためのツリー最適化技術が利用される。クエリはデバイスからのレスポンスをトリガーし、レスポンスに基づき、状態決定ツリーがリーフノードに向かって移動される。リーフノードは、デバイスの状態を特定する。
[テスト及びアサインメント]
デバイスに対して送信されるクエリを規定することに加えて、状態決定ツリーはまた、1以上の値に対してデバイスからのレスポンスを評価するテストを規定する。一実施例では、デバイスマネージメントアプリケーションは、デバイスに送信されるクエリを決定するため、状態決定ツリーのノードにアクセスする。クエリはデバイスに送信され、レスポンスがデバイスから受信される。レスポンスは、デバイスの状態を規定するリーフノードに向かうツリーの移動において次のノードを決定するため、1以上の値に対して処理及びテストされてもよい。ノードは、処理されたレスポンスに適用されるテストを規定する。例えば、規定されたテストは、レスポンスがある文字列を有するか否かのテストであってもよい。
【0031】
テスト前、レスポンスはアサインメント段階において処理されてもよい。開示される技術は何れかのタイプのアサインメントに限定されるものでない。一実施例では、何れのアサインメントも必要とされない。図3において、StripPrefix、StripPrefixStartsWith、StripSuffix、StripSuffixStartsWith、Prepend、Appendなどのアサインメントの具体例が提供される。他のタイプのアサインメントは、これらのアサインメント例に加えて又は代わりに利用されてもよい。アサインメントは、処理済みレスポンスを生成するため、レスポンス又は他の格納されているデータに対して実行されてもよい。
【0032】
処理済みレスポンスが、1以上の値に対してテストされる。開示される技術は、何れか特定のタイプのテストに限定されるものでない。テストは、リターンされるパラメータ名やリターンされるパラメータの値など、テストされるアイテムを規定するものであってもよい。テストはまた、処理済みレスポンスをテストするため実行される処理又は比較を規定するものであってもよい。処理の具体例として、IsNull、Equals、Contains、GreaterThanなどがあげられ、図3に提供される。IsNull処理は、Nullという値と等しいという演算との双方を規定する点で特有なものである。ある具体例では、処理済みレスポンスは、処理“Equals”と“Other”の値とを用いてテストされる。その後、レスポンスが“Other”であるとき、テストの結果は“true”である。そうでない場合、テストの結果は“false”である。他のタイプのテストが、テスト例に加えて又は代わりに利用されてもよい。
【0033】
一実施例では、アサインメントがテスト段階の結果として適用される。例えば、状態変数は、当該状態がアイドルであることを結論付けるテストの結果として“idle”に割り当てられてもよい。アサインメントはまた、状態決定ツリーの以降のノードによる利用のため情報を処理及び格納するのに利用されてもよい。
【0034】
一実施例では、状態決定ツリーの中間ノードは、2つのチャイルドノードを有する。中間ノードは、デバイスに送信するクエリ、クエリの結果に適用されるアサインメント、及び処理済みの結果に適用される真偽テストを規定する。テストの結果が真である場合、デバイスマネージメントアプリケーションは、真のブランチを下って2つのチャイルドノードの1つに状態決定ツリーを移動する。テストの結果が偽である場合、デバイスマネージメントアプリケーションは、偽のブランチを下って2つのチャイルドノードの他方に状態決定ツリーを移動する。他の実施例では、ノードは他の個数のチャイルドを有してもよく、テストは単なる真偽テスト以外のものであってもよい。
【0035】
他の実施例では、中間ノードは3つのチャイルドノードを有し、ある値の範囲の2つの値に対してテストが実行される。処理済みレスポンスが第1の値以下である場合、状態決定ツリーは3つのチャイルドノードの第1ノードに移動される。処理済みレスポンスが2つの値の間にある場合、状態決定ツリーは、3つのチャイルドノードの第2ノードに移動される。処理済みレスポンスが第2の値以上である場合、状態決定ツリーは、3つのチャイルドノードの第3ノードに移動される。さらなる他の実施例では、3つのチャイルドノードによる中間ノードは、一方が他方のチャイルドである2つのバイナリ中間ノードとしてモデル化することが可能である。
【0036】
さらなる他の実施例では、2以上の他の値に対してテストが実行される。例えば、テストは、レスポンスが“idle”、“running”又は“other”であるか決定可能である。テストの結果として、他のブランチがツリーにおいて移動される。一実施例では、状態決定ツリーのいくつかのノードは、テスト又はサブテストを規定し、クエリを規定しない。クエリがデバイスに送信されると、クエリに対するレスポンスがツリーの異なる複数のレベルにおいて異なる複数の方法によりテストされてもよい。
[デバイスクラス]
各種実施例では、デバイスは、各デバイスをクエリに対して同様に応答させるメーカー、年、機能又は他の何れかのファクタに基づきクラスに分類されてもよい。各クラスは、クラス内のデバイスの状態を決定するため別々の状態決定ツリーを有するようにしてもよい。一実施例では、クラス決定ツリーは、デバイスが属するクラスを決定する。デバイスのクラスがクラス決定ツリーにより決定されると、当該クラスの状態決定ツリーが、デバイスの状態を決定するのに利用されてもよい。
【0037】
テーブル43.18.1は、デバイスが同一状態にあるときに同じクエリに対して同じように応答するデバイスを含むよう規定されるデバイスのクラスを示す。テーブル43.18.1は、Appendix Aに提供される。
【0038】
図示されるように、クラスA,B,C,D,F,Gの各デバイスは、トナーが低レベルであるとき(Low:Toner)、同じSNMPクエリに対して同じように応答する。また図示されるように、クラスEのデバイスは、ブラックトナーが低く、シアントナーが低く、マゼンタトナーが低く、イエロートナーが低いとき、同じSNMPクエリに対して同じように応答する。個別のデバイス又はデバイスのクラスがサンプルクエリに対してどのように応答するかに関する情報が、図示されるようなテーブル又は他の何れかの機構により格納されてもよい。一実施例では、デバイスインタラクションツリーが、テーブル2などのテーブルに格納される情報に基づき構成される。
【0039】
一実施例では、クラスA,B,C,D,F,Gの何れかのデバイスが、warning(3)によりhrDeviceStatusクエリと、20hによりhrPrinterDetectedErrorStateクエリとに応答するとき、“Low:Toner”の状態を有すると決定されてもよい。他の実施例では、markerTonerAlmostEmpty(1104)のレスポンスによる追加的なprtAlertCodeクエリが、デバイスの状態を決定するのに利用される。他のデバイス状態を有する他のデバイスについて、異なる個数のクエリがデバイス状態を決定するため実行されてもよい。
【0040】
図1Aの例では、デバイスモニタシステム100は、3つのクラスA,B,Cに属する5つのデバイスとやりとりする。各クラスの状態決定ツリーは、クラス内のデバイスを分類するのに利用されるクエリとテストとを有する。状態決定ツリー102は、個々のツリーに分割されるか、又は1つのツリーとして合成されてもよい。一実施例では、クラス決定ツリーとクラスA,B,Cの状態決定ツリーとは、一緒になってネットワーク108内の何れかのデバイスの状態決定ツリーを構成する。
【0041】
図1Bの例では、既知のクラスCの新たなデバイスがネットワークに追加される。既知のクラスCの状態決定ツリーは、当該デバイスを分類するための機能をすでに有している。従って、状態決定ツリー102は、本例では更新されない。ファンクション“ExecuteTree”は、既知のクラスCの既存の状態決定ツリーにより新たなデバイスに関する情報を取得するのに利用可能である。
【0042】
図1Cの例では、未知のクラスDの新たなデバイスがネットワークに追加される。デバイスモニタシステム100は、既存の状態決定ツリー102により新たなデバイスがサポートされていないことを検出する。これに応答して、デバイスモニタシステム100は、ファンクション“UpdateTree”を用いて状態決定ツリー102を更新する。例えば、デバイスモニタシステム100は、図10Aに示されるように、サーバから未知のクラスのためのツリー又は他の情報をダウンロードしてもよい。デバイスモニタシステムが未知のクラスDの他の情報を受信する場合、他の情報は、ファンクションライブラリ106のConstructTreeファンクションを用いてクラスDのツリーを構成するのに利用されてもよい。
【0043】
図5は、デバイスの状態を決定するためデバイスマネージメントアプリケーションにより利用可能な複数のツリーの具体例を示す。第1ツリー500は、デバイスを複数のデバイスクラスの1つに分類する。第1ツリー500のリーフノードは、デバイスクラスの識別子を規定する。この識別子は、第2ツリー502〜506の1つを選択するのに利用される。第2ツリー502〜506のそれぞれは、1以上のデバイスクラスのグループに属するデバイスに送信するクエリ及びテストのセットを規定する。第2ツリー502〜506のそれぞれは、第2ツリーによりカバーされるクラスのグループのデバイスのデバイス状態を規定するリーフノードを有する。図5に図示されない実施例では、第1ツリーと第2ツリーとは、1つのツリーに合成される。
【0044】
一実施例では、デバイスのベンダの身元を決定するツリーは、デバイスの他の状態情報を決定するより大きなツリーの一部である。例えば、ベンダの身元は、デバイスが属するクラスの決定の一部であってもよい。
【0045】
図6は、デバイスのベンダを決定するためのツリーの実現形態を示す。デバイスマネージメントアプリケーションは、デバイスのvendorIDのリクエストを受信する。ノード600は、デバイスのアドレスがNULLであるかテストする。NULLである場合、vendorIDは決定されず、ツリーの移動はノード604において終了する。NULLでない場合、ノード602は、vendorIDパラメータがNULLであるかテストする。vendorIDパラメータがNULLである場合、vendorIDパラメータは決定されず、ツリーの移動はノード608において終了する。vendorIDパラメータがNULLでない場合、ノード606は、vendorIDパラメータの値を決定する。各種実施例では、複数のパラメータが、ベンダの身元を決定するためチェックされる必要があってもよい。例えば、いくつかのプリンタは“vendorID”などのベンダの身元を格納せず、他のパラメータがこれらのデバイスから抽出される必要がある可能性がある。
【0046】
図7Aは、シングルステップデバイス分類ツリーを示す。ノード700Aは、特定のデバイスクラスをテストする。例えば、ノード700Aは、1以上のクエリと1以上のテストとを有してもよい。デバイスがクラスにある場合、ツリーの移動はノード704Aに続く。そうでない場合、移動は702Aに続く。図7Bは、第2デバイスクラスをサポートするため更新されるデバイス分類ツリーを示す。図示されるように、ノード702Bは、第2デバイスクラスのテストを含む。デバイスが何れのクラスのメンバーでもない場合、移動はノード706Bに続き、デバイスが第2デバイスクラスのメンバーであるとき、移動はノード708Bに続く。
[デバイスインタラクションツリーの生成、修正及び置換]
一実施例では、デバイスのクラスに対するデバイスインタラクションツリーは、当該デバイスのクラスを製造したメーカーにより生成される。デバイスインタラクションツリーは、クライアントに配布されてもよい。例えば、異なるバージョンの状態ツリーが、ウェブサーバ上で利用可能とされてもよい。クライアントは、前のバージョンのツリーを新たなバージョンと置換し、又は異なるタイプのデバイスによる利用のために双方のバージョンを格納するようにしてもよい。
【0047】
他の実施例では、デバイスマネージメントアプリケーションは、デバイス状態、クエリ及びレスポンスとの間の格納されている関連付けに基づき状態決定ツリーを生成する。モニタ対象の選択された各デバイスの選択された各状態について、デバイスマネージメントアプリケーションは、デバイス状態を特定する一意的なパラメータの1以上のセットを決定する。複数のデバイスのデバイス状態のパラメータセットは合成されてもよく、最も頻繁に利用されるセットが、状態決定ツリーの上位レベルの基礎を形成してもよい。このようにして、状態を決定するため最も頻繁にクエリされる情報は、状態決定ツリーの移動中の早期の段階でクエリされてもよい。1つ又は少数の特定のデバイスに対してのみクエリされる情報は、状態決定ツリーの移動中の以降の段階でクエリされるようにしてもよい。ある実施例では、デバイスマネージメントアプリケーションは、あるネットワーク上のプリンタセットの関連するクエリとレスポンス情報とを含むクエリレスポンスディクショナリのコレクションを用いて、最小の又は最適化された状態決定ツリーを自動構成する。
【0048】
図2は、状態決定ツリーのセットの一例となるクラス図である。図示されるように、状態決定ツリーセット200は、状態決定ツリー202のアレイを含む。各状態決定ツリー202は、1以上のクエリ208、アサインメント及びテスト210を含む1以上の状態決定ユニット204を有する。この例では、各テストは、真のチャイルドノード又は偽のチャイルドノードにナビゲートするブールタイプ206の結果をもたらす。図示されるように、テストは、主部と、主部自体の値又は主部に一致する名前を有する変数の値をテストするか決定する主部演算子214とを含む。さらに図示されるように、テストは、述部と、主部のテスト方法を規定する述部演算子216とを含む。この例では、テスト210は、主部が述部を含む、述部に等しい又は述部より大きいか決定することが可能である。一例となるクエリ208は文字列によって応答され、一例となるテスト210は文字列に対して処理する。他の実現形態によると、クエリレスポンスは何れかのフォーマットにより値を規定し、テストは何れかのフォーマットの値に対して実行されてもよい。状態決定ツリーの結果218は、デバイスの状態のテキスト記述を規定するノードを特定する。
【0049】
図3は、デバイス状態を決定するためのデータ構造の図である。図示されるように、ツリー300のセットは、1以上の個々のツリー302を有する。各ツリー302はノード304又はツリーユニットを有し、各ノードは1以上のクエリ312、アサインメント314及びテスト316を有する。一実施例では、少なくとも1つのクエリと少なくとも1つのテストとを含むツリーユニットのコレクションは、単一のノードとして一緒にグループ化される。他の実施例では、すべての非リーフノードは、少なくとも1つのクエリと少なくとも1つのテストとを含む。
【0050】
クエリは、1以上の規定されたプロトコルを用いてモニタされているデバイスに送信される。アサインメントは、クエリのレスポンスにおいて規定されたものなど、StripPrefix、StripPrefixStartsWith、StripSuffix、StripSuffixStartsWith、Prepend及び/又はAppendなどの値に対する演算を実行するための1以上の値修飾子318を含む。1以上のアサインメント314により処理されたレスポンスは、テスト316を受ける。図示された例では、テスト316は、主部自体がテストされている値であるか、又は主部がテストされている値を規定するパラメータの名前であるかなど、主部演算320を規定する。例えば、アサインメントは、レスポンスが値を規定するとき、キー値ペアの値に適用されてもよい。アサインメントはまた、他のノードによる以降の抽出のため、デバイスマネージメントアプリケーションによりキー値ペアを格納するようにしてもよい。他の例では、アサインメントは、状態決定ツリーの移動中に以前に規定された“CyanPageCount”などのキーに基づき格納されている値に適用されてもよい。この場合、状態決定ツリーを移動するデバイスマネージメントアプリケーションは、“CyanPageCount”と呼ばれるパラメータの格納されている値を検索する。一実施例では、アサインメントが状態決定ツリーのノード間でわたされる。他の実施例では、アサインメントはグローバルに定義される。
【0051】
テスト316はまた、主部に適用する1以上の述部の値と1以上の述部演算322とを有する。一実施例では、述部演算は、主部と述部とを比較するための比較演算である。例えば、テストは、クエリに対する処理済みレスポンスの値が“idle”に等しいか、又は値が02hより大きいかを決定するものであってもよい。他の述部演算の具体例として、IsNull、Contains及びstartsWithがあげられる。レスポンスはまた、具体例に示されない他の述部演算を用いて処理されてもよい。
【0052】
テスト316の結果に基づき、デバイスマネージメントアプリケーションは、ノード304の真のチャイルドノード又は偽のチャイルドノードへのポインタを用いてツリー302を移動する。一実施例では、チャイルドノードは、デバイスの状態を規定するリーフノードである。他の実施例では、チャイルドノードは、デバイス状態の決定前に行われる1以上の他のクエリと1以上の他のテストとを規定する。状態決定ツリー302の移動は、デバイスの状態を規定するリターン310をもたらす。
【0053】
図4は、3レベルの一例となる状態決定ツリーの構成を示す。この例では、ルート400とユニット402とは、ツリーの第1レベルを規定する。ユニット402は、0以上のクエリ、0以上のアサインメント及び1以上のテストを有する。この例では、テストは、真偽テストである。テスト結果が偽である場合、ツリーの移動はユニット402からユニット404に続く。テスト結果が真である場合、ツリーの移動はユニット402からユニット406に続く。ユニット404と406はそれぞれ、0以上のクエリ、0以上のアサインメント及び1以上のテストを規定する。状態決定ツリーの移動は、リーフノード408〜414の1つへのナビゲートを生じさせる。結果として得られたリーフノードは、デバイスの状態を規定する。
【0054】
Appendix Bは、DIT.XMLにより規定されるより複雑な状態決定ツリーの一例を示す。状態決定ツリーのノード(<QNode>)は、クエリ(<Queries>)、アサインメント(<Assignments>)及びテスト(<Test>)を規定する。クエリノードに移動すると、デバイスマネージメントアプリケーションは、クエリノードに関連付けされた1以上のクエリを実行する。アサインメントノードに移動すると、デバイスマネージメントアプリケーションは、アサインメントノードに関連付けされた何れかのアサインメントを適用する。テストノードに移動すると、デバイスマネージメントアプリケーションは、テストノードに関連付けされた何れかのテストを適用する。状態決定ツリーは、ルートノードから、クエリ及びテストを規定する中間ノードを介しデバイス状態を規定するリーフノードまで移動される。
【0055】
一実施例では、デバイスマネージメントアプリケーションは、中央サーバからクエリ及びレスポンスに関連する状態に関する情報を受信する。例えば、当該情報は、サーバからデバイスマネージメントアプリケーションに通信されるテーブルに格納されてもよい。
【0056】
図8Aは、状態決定ツリーの構成及び更新に利用されるクエリレスポンスディクショナリの全体構成を示す。クエリレスポンスディクショナリは、デバイスへのクエリとデバイスからのレスポンスとに関連するデバイスの状態に関する情報を格納する。レスポンスは、デバイスが規定された状態にあって、規定されたクエリによりクエリされる場合にデバイスが実行するであろう実際のレスポンスである。クエリレスポンスディクショナリは、デバイスが構成又は修正中にアクセス可能であることが不要となるように、ツリーの構成又は修正中にデバイスをエミュレートするのに利用されてもよい。一実施例では、クエリレスポンスディクショナリは、デバイスのモデルに関する情報を必要としない。状態がクエリ及びレスポンスに関連付けされる限り、関連付けされた情報は状態決定ツリーを構成するのに利用されてもよい。
【0057】
図8Bは、SNMP(Simple Network Management Protocol)のための3つのクエリ、PJL(Printer Job Language)のための2つのクエリ、PostScriptのための1つのクエリ、及びHTTP(Hypertext Transfer Protocol)のための1つのクエリを有する一例となるクエリレスポンスディクショナリを示す。一例では、HTTPクエリは、レスポンスを導くためにデバイスによって、提供されるウェブサーバに対して発行される。
【0058】
図8Cは、クエリのうちの4つがデバイスクラスへのデバイスの分類に利用可能な“IDクエリ”又はクエリである11個のクエリを有する一例となるクエリレスポンスディクショナリを示す。デバイスの分類は、選択されたデバイスのクラスに特化したデバイスインタラクションツリーの選択を可能にするものであってもよい。
【0059】
他の実施例では、デバイスマネージメントアプリケーションは、デバイス上で観察された状態に関する情報をユーザから受信する。例えば、ユーザは、デバイスに関する識別情報を、デバイスについて観察された状態と共にユーザインタフェースを介し送信してもよい。これに応答して、デバイスマネージメントアプリケーションは、1以上のクエリによってデバイスに照会し、1以上のレスポンスを受信する。デバイスマネージメントアプリケーションは、状態情報に関連付けてクエリレスポンスペアを格納する。
【0060】
状態決定ツリーを自動生成するための開示される技術は、ツリーのノードを決定するため、関連付けされた状態、クエリ及びレスポンスに関する既知の情報を組み合わせるための特定の技術に限定されるものでない。2つの可能な状態を備えた3デバイスシステムのシンプルな例では、パラメータXが1であって、パラメータYが10であるとき、第1デバイスが状態Aにあり、パラメータXが1であって、パラメータYが20であるとき、第2デバイスが状態Aにあり、パラメータXが2であって、パラメータYが10であるとき、第3デバイスが状態Aにある。パラメータXが2であって、パラメータYが20であるとき、すべてのデバイスが状態Bにあると仮定する。一例となる状態決定ツリーは、まずデバイスにXを照会し、Xが1であるかテストし、その後にデバイスにYを照会し、Yが10であるかテストする。これら2つのクエリとテストとの結果は、何れのデバイスがテストされているに関係なく、デバイスが状態A又はBにあるか決定するのに利用可能である。
【0061】
さらに、類似情報の大文字、プリフィックス、サフィックス、値フォーマット及び他の表現の相違がツリーの同じノードにより表現されるように、クエリ及びパラメータのセットが一般化されてもよい。例えば、1つのノードは、パラメータの処理値が“idle”であるか、実際に受信したパラメータが“idle”であったか、“Idle”又は“idle”にマップされる他の文字列を決定するものであってもよい。
【0062】
開示される技術によると、状態決定ツリーは、有用なものにするため、完全に最適化される必要はなく、又はまったく最適化される必要もない。例えば、1つのツリーは、2つのツリーが開示された技術を含むものであったとしても、他のツリーと同じデバイスの同一状態を決定するのに平均してより多くのクエリ及び/又はテストを必要とするものであってもよい。一実施例では、デバイスマネージメントアプリケーションは、平均的により少数のクエリ及び/又はテストによって、又はより小さなツリーを用いて、同じデバイスの同一状態を管理する他のバージョンのツリーをサーバ上で検出する。これに応答して、デバイスマネージメントアプリケーションは、他のバージョンのツリーをダウンロードし、前のバージョンのツリーを置換してもよい。他のバージョンは、デバイスの状態を決定するために他のツリーがまた正確であると判断されるまで、アクティブなツリーとして一時的に指定されてもよい。
【0063】
他の実施例では、デバイスマネージメントアプリケーションのユーザは、他のバージョンのツリーを求めてもよい。ユーザは、他のバージョンのツリーをダウンロードし、ソフトウェアをコンパイル及びインストールし、又はデバイスマネージメントアプリケーションを実行するマシーンへの登録を更新する権限を有することなく、前のバージョンのツリーを置換してもよい。
【0064】
一実施例では、デバイスマネージメントアプリケーションは、状態決定ツリーがネットワーク内のデバイスの状態を提供できないことを検出したことに応答して、状態決定ツリーを更新する。例えば、デバイスマネージメントアプリケーションは、サポートされていないデバイスがネットワークに追加されたこと、又は要求されたタイプの状態情報が状態決定ツリーにすでに表現されるデバイスについてサポートされていないことを検出するようにしてもよい。更新された状態決定ツリーは、デバイスマネージメントアプリケーションのコードを修正することなく、以前には未サポートのデバイスをサポートする。
【0065】
図9A及び9Bは、状態決定ツリーへの更新をトリガするための他の一例となる技術であり、1つは自動的なものであり、1つは手動によるものを示す。図9Aの一例となる自動更新技術に示されるように、ツリー900〜904の少なくとも1つの実行906は、未知のクラスの新たなデバイス910Aの状態を提供することができない。この失敗を検出したことに応答して、デバイスマネージメントアプリケーションは、状態決定ツリーへの更新908Aを要求する。図9Bにおいて、人間によるオペレータ912が、未知のクラスの新たなデバイス910Aの存在を検出する。新たなデバイス910Aの存在を検出することに基づき、オペレータは状態決定ツリーへの更新を要求する。
【0066】
図10A及び10Bは、状態決定ツリーへの更新を取得するための他の一例となる技術を示す。図10Aにおいて、デバイスモニタシステム1000Aは、新たなデバイスをサポートする更新を取得するため、デバイス記述1002を中央サーバ1004に送信する。図示されるように、中央サーバ1004は、クエリレスポンスディクショナリ1006などのクエリ及びレスポンスに関連する状態に関する情報を提供することによって、リクエストに応答する。図示しない実施例では、中央サーバは、状態決定ツリーをデバイスモニタシステム1000Aに直接提供する。中央サーバから新たに提供された情報は、デバイスモニタシステム1000Aが以前にサポートされていたクラスのデバイスと新たなデバイスとを区別することを可能にする。
【0067】
図10Bの例では、人間のオペレータ1010に、状態情報1008を提供するためのインタフェースが示される。人間のオペレータ1010は、状態情報1012をデバイスモニタシステム1000Bに提供するため、インタフェースとやりとりする。デバイスモニタシステムは、デバイスにクエリを送信し、送信されたクエリとデバイスから受信したレスポンスとに関連付けて状態を格納する。他の実施例では、ユーザはまた、ユーザに既知の関連付けされたクエリ及びレスポンス情報を入力する。
【0068】
図11は、状態決定ツリーの処理に関する一例となるステップを示すフローチャートである。未サポートのデバイスのために失敗すると、失敗前のノードの身元が、以前にはサポートされていないデバイスをサポートする新たな状態決定データによって状態決定ツリーを更新するのに利用可能である。図11に示されるように、クライアントは、ステップ1102において、デバイスモニタから新たなデバイスに関するデータをリクエストする。ステップ1104において、デバイスモニタは、状態決定ツリーを処理し、リクエストされたデータを取得するため、ツリー移動ファンクションを呼び出す。判定ステップ1106において、実行が成功したか判断される。実行が成功しなかった場合、ステップ1108において、失敗したノードの身元がクライアントにリターンされる。これに応答して、ステップ1110において、クライアントは、ツリーに追加すべきノードをリターンする。デバイスモニタは、ステップ1112において、ツリーの失敗したノードの前に新たな状態決定ノードを追加し、ステップ1114において、配置された新たなノードによりツリーを再実行する。
【0069】
ステップ1106において判定されるように、実行が成功した場合、ステップ1116において、リクエストされたデータはクライアントにリターンされる。クライアントは、ステップ1118において、リターンされたデータを検証する。データが正確でない場合、失敗したノードの身元がクライアントにリターンされ、処理はステップ1110に進む。そうでない場合、データはツリーから良好に抽出され、クライアントにより検証され、当該処理はステップ1122において終了する。
【0070】
図12は、一時的更新機能を備えた一例となるデバイスクエリ処理を示す。ステップ1202において、クライアントは、デバイスモニタ1202から新たなデバイスに関するデータをリクエストする。デバイスモニタは、ステップ1204において、リクエストされたデータを取得するため、Treeを実行する。ステップ1206において、実行が成功したか判断される。実行が成功しなかった場合、ステップ1208〜1210に反映されるように、失敗したノードの身元がクライアントにリターンされ、クライアントはツリーに追加すべきノードをリターンする。デバイスモニタは、ステップ1212において、前の実行から残っている一時的ノードを破棄し、ステップ1214において、ツリーの失敗したノードの前に新たなノードを一時的に追加する。ステップ1216において、現在配置された一時的なノードによって、ツリーが再実行される。
【0071】
ステップ1206において実行が成功した場合、ステップ1218において、リクエストされたデータはクライアントにリターンされる。ステップ1220において、クライアントは、リターンされたデータを検証する。データが検証され、ステップ1224において判断されるように、ツリーに一時的ノードがあった場合、ステップ1226において、デバイスモニタは、一時的ノードを永続的なものにする。
【0072】
図13は、サーバから配布されたクエリレスポンスディクショナリに基づく他の一例となる更新処理を示す。ステップ1302において、クライアントは、新たなデバイスのモデルやメーカー名などの識別情報を中央サーバに送信する。ステップ1304において、中央サーバは、クエリレスポンスディクショナリ(QRD)をクライアントに送り返す。クライアントは、ステップ1306において、デバイスモニタのAddDeviceメソッドを実行し、提供されたQRDを用いてデバイスをツリーに追加する。ステップ1308において、デバイスモニタは、新たなデバイスのQRDからのデータによって状態決定ツリーを更新する。
[デバイスインタラクションツリーの利用]
一実施例では、デバイスの状態に対するリクエストが、1以上の計算装置とのインタフェースにより受信される。当該リクエストは、デバイスの1以上の属性を特定するものであってもよい。他の実施例では、リクエストは、デバイスが属するワークグループと名前とによってデバイスを特定する。1以上の計算装置上のデバイスインタラクションロジックは、デバイスインタラクションツリーを用いて、ツリーのスタートノードに関連付けされたクエリとテストとを決定するよう構成される。クエリはデバイスに送信され、レスポンスがデバイスから受信される。一実施例では、テスト段階前に、レスポンスは、スタートノードに関連付けされた1以上のアサインメントに従って、デバイスインタラクションロジックによって処理される。他の実施例では、レスポンスは、処理することなく受信されたままテストされる。レスポンスは、ツリーのスタートノードに関連付けされたテストを用いてテストされる。当該テストは、レスポンスを評価するため、1以上の値と1以上の演算とを規定する。一実施例では、1以上のアサインメントは、テストの結果として以降のノードのために値を格納又は準備するため実行されてもよい。テストの結果に基づき、デバイスモニタリングロジックツリーは、リーフノードに向かって移動される。一例では、リーフノードは、デバイスの状態を表す。各種実施例では、スタートノードは、複数のブランとの何れがツリーにおいて移動されるか決定するため、クエリとテストの系列とによるノードの集合によって表されてもよい。
【0073】
ツリーの次のノードがリーフノードである場合、リーフノードにより規定される状態がデバイスの状態となる。一実施例では、次のノードは、移動における第2ノードである。第2ノードがリーフノードでない場合、第2クエリと第2テストとがツリーの第2ノードから決定される。デバイスは、第2レスポンスを導くため次のクエリにより照会される。第2レスポンスは、ツリーの第2ノードに関連付けされた何れかのアサインメントに従って処理されてもよい。レスポンスは、ツリーの移動における次の又は第3ノードを決定するため、第2テストに対して評価される。一実施例では、第3ノードは、スタートノードと第2ノードと同様にして処理される。他のノードが移動のパス上にあってもよく、デバイスの状態を規定するリーフノードへの移動をもたらす。
【0074】
状態決定ロジックは、リクエストに応答してデバイスの状態を提供する。例えば、状態決定ロジックは、ユーザインタフェース上でデバイスの状態をリクエストするユーザに、デバイスの状態のテキスト及び/又は画像説明又は表現を表示する。例えば、状態決定ロジックは、アイドル状態に関連付けされたアイコンと共に、“idle”を表示するようにしてもよい。
【0075】
一実施例では、ツリーを移動するためのデバイスインタラクションロジックは、ツリーのコンテンツに関して汎用的なものである。すなわち、デバイスインタラクションロジックは、あるネットワーク上の特定のデバイスについて特別に構成される必要はない。例えば、状態決定ロジックは、あるネットワーク上のデバイスの状態を決定するため特別に構成される必要はない。一実施例では、デバイスインタラクションロジックは、ツリーを移動するため1以上の計算装置により実行される格納されている命令を含む。他の実施例では、デバイスインタラクションロジックは、1以上の計算装置にツリーを移動させる1以上の特殊なハードウェアコンポーネントを用いて構成されてもよい。
【0076】
Appendix Bは、ツリーのDIT.XML.Nodes(<QNode>)により規定される一例となる状態決定ツリーがクエリ(<Queries>)、アサインメント(<Assignments>)及びテスト(<Test>)を規定することを示す。ノードに移動すると、デバイスマネージメントアプリケーションは、ノードに関連付けされた1以上のクエリを実行し、ノードに関連付けされた何れかのアサインメントを適用し、ノードに関連付けされたテストによってクエリへのレスポンスをテストする。
【0077】
DIT.XMLによる一例では、デバイスマネージメントアプリケーションは、ユーザからデバイス状態に対するリクエストを受信し、“<Query protocol=”snmp“ message=”prtAlertCode“ responseKey=”AlertCode“/>”によるクエリを規定し、“<Test subject=”AlertCode“ subjectOp=”valueOf“ predicate=”subunitMissing“ predicateOp=“equals”/>“のテストにより結果をテストするQNodeに状態決定ツリーを移動する。すなわち、デバイスマネージメントアプリケーションは、メッセージ”prtAlertCode“によってSNMPクエリをデバイスに送信する。デバイスマネージメントアプリケーションは、”AlterCode“としてデバイスからのレスポンスを保存する。その後、デバイスマネージメントアプリケーションは、AlertCodeの値が”subunitMIssing“に等しいか評価するためテストを利用する。
【0078】
テストの結果が真である場合、デバイスマネージメントアプリケーションは、他のQNodeのブランチへのデバイスインタラクションツリーの移動を続ける。移動におけるこのポイントにおいて、デバイスマネージメントアプリケーションは、PrinterStatusが“idle”であり、DeviceStatusが“warning”であり、AlertCodeが“subunitMissing”であると決定した。デバイスマネージメントアプリケーションは、“prtAlertGroup”のメッセージによるSNMPクエリによって再びデバイスに照会する。レスポンスは、“AlertGroup”として保存される。この結果は、“<Test subject=”AlertCode“ subjectOp=”valueOf“ predicate=”input“ predicateOp=“equals”/>“によりテストされる。すなわち、デバイスマネージメントアプリケーションは、結果の値が”input“に等しいか判断する。等しい場合、デバイスマネージメントアプリケーションは、アサインメント”<Set key=“StatusName” value=“error”/>“及び”<Set key=“ErrorName” value=“Noinputtray”/>“に基づき、デバイスの状態を決定する。従って、デバイスマネージメントアプリケーションは、”Error:No Input Tray“によりデバイス状態に対するリクエストに応答する。
【0079】
図14は、一例となる状態決定ツリーを移動する一例となる処理を示すフローチャートである。当該処理は、1以上の格納されている状態決定ツリーを用いてネットワーク上のデバイスの状態を取得するデバイスマネージメントアプリケーションにより実行される。デバイスマネージメントアプリケーションは、状態決定ツリーのクエリ、アサインメント及びテスト及びテストにより規定されるルールに従うよう一般に構成されてもよい。図示されないアサインメントステートメントは、デバイスから受信されたレスポンスに基づき、パラメータに値を割り当てるためデバイスインタラクションツリーに含まれる。割り当てられた値は、図示されるような比較ステップにおいて利用される。デバイスマネージメントアプリケーションは、所与のネットワーク又は所与のデバイスインタラクションツリーについて特別に構成される必要はない。当該処理を進めるデバイスインタラクションツリーは、ソフトウェアをインストールしたり、デバイスのレジストリを修正するためのセキュリティ権限を有さないユーザによって、生成、更新及び置換されてもよい。一実施例では、状態決定ツリーなどのデバイスインタラクションツリーは自ら実行するソフトウェアを有さないため、デバイスインタラクションツリーは、それらが保存されるシステムのセキュリティを危険にさらすものでない。
[デバイスコンフィギュレーションツリー]
一実施例では、デバイスインタラクションツリーはデバイスコンフィギュレーションツリーである。デバイスマネージメントアプリケーションなどのデバイスインタラクションロジックは、デバイスを設定するためデバイスコンフィギュレーションツリーを移動するよう構成される。一実施例では、ユーザは、デバイスに関するパラメータを設定するためのリクエストを送信する。デバイスインタラクションロジックは、このリクエストを受信し、デバイスセットの何れかのデバイスに関するパラメータを設定するため、デバイスコンフィギュレーションツリーを選択する。デバイスインタラクションロジックは、ロートノードからクエリ及びテストを規定する中間ノードまでデバイスコンフィギュレーションツリーを移動する。デバイスインタラクションロジックは、デバイスに送信するコンフィギュレーションコマンドを規定するリーフノードに到達するため、クエリの結果に対してテストを適用する。デバイスコンフィギュレーションツリーは、コンフィギュレーションコマンドがデバイスに良好に送信されたか判断するため、1以上のさらなるコマンドを規定してもよい。
【0080】
例えば、ユーザは、デバイスの名前を変更するようリクエストしてもよい。当該リクエストは、IPアドレスによりデバイスを特定し、またデバイスの新たな名前を規定してもよい。リクエストに基づき、デバイスインタラクションロジックは、デバイスの名前を変更するため、デバイスコンフィギュレーションツリーを選択する。デバイスインタラクションロジックは、デバイスコンフィギュレーションツリーを移動し、1以上のクエリを送信し、クエリの1以上のレスポンスに1以上のテストを適用する。デバイスコンフィギュレーションツリーを移動すると、デバイスインタラクションロジックは、デバイスの名前を変更するためのコマンドを規定するリーフノードに到達する。デバイスインタラクションロジックは、当該コマンドをデバイスに送信する。任意的には、デバイスコンフィギュレーションツリーは、デバイスの名前がコマンドによって良好に変更されたか判断するため、1以上の他のクエリと1以上の他のテストとを規定する。コマンドを送信するか、又はコマンドがデバイスに関するパラメータを良好に変更したことを確認したことに応答して、デバイスインタラクションロジックは、デバイスの名前が変更されたという表示をユーザに示す。
【0081】
他の各種設定変更が、デバイスコンフィギュレーションツリーを用いてデバイスになされてもよい。例えば、デバイスコンフィギュレーションツリーは、デバイスのタイムアウト値を変更するためのコマンド、又はデバイスがスタートアップするとテストページが印刷されるか指示する設定を変更するためのコマンドを規定してもよい。デバイスコンフィギュレーションツリーを生成及び利用するための技術は、何れか特定タイプの設定変更に限定されず、各種コンフィギュレーションツリーが、デバイスに送信する設定コマンドを決定するのに利用されてもよい。一実施例では、デバイスコンフィギュレーションツリーは、自己実行可能なコードを含まない。また、デバイスインタラクションロジックは、何れかのデバイスのパラメータを変更するため特別に構成されることなく、デバイスコンフィギュレーションツリーを移動するよう汎用的に構成されてもよい。一実施例では、コンフィギュレーションツリーは、異なるタイプのデバイス、異なる機能を備えたデバイス、及び/又は同一の設定変更を実現するため異なる設定コマンドを要求する異なるメーカーからのデバイスを設定するためのクエリ、テスト及び設定コマンドを規定する。
[デバイスアクションツリー]
一実施例では、デバイスインタラクションツリーは、デバイスアクションツリーである。デバイスマネージメントアプリケーションなどのデバイスインタラクションロジックは、デバイスにアクションを実行させるためデバイスアクションツリーを移動するよう構成される。一実施例では、ユーザは、デバイスにアクションを実行させるためのリクエストを送信する。デバイスインタラクションロジックは、当該リクエストを受信し、デバイスセットの何れかのデバイス上でアクションを実行させるためのデバイスアクションツリーを選択する。デバイスインタラクションロジックは、ルートノードからクエリ及びテストを規定する中間ノードまでデバイスアクションツリーを移動する。デバイスインタラクションロジックは、デバイスに送信するアクションコマンドを規定するリーフノードに到達するため、クエリの結果にテストを適用する。デバイスコンフィギュレーションツリーは、アクションコマンドがデバイスによって良好に実行されたか判断するため1以上のさらなるコマンドを規定してもよい。
【0082】
例えば、ユーザは、指定されたフォーマットに従って文書を印刷するようリクエストしてもよい。当該リクエストは、IPアドレスによりデバイスを特定し、また文書及び所望のフォーマットを指定してもよい。当該リクエストに基づき、デバイスインタラクションロジックは、デバイス上で文書を印刷するためのデバイスアクションツリーを選択する。デバイスインタラクションロジックは、デバイスアクションツリーを移動し、1以上のクエリを送信し、クエリの1以上のレスポンスに1以上のテストを適用する。デバイスアクションツリーを移動すると、デバイスインタラクションロジックは、指定されたフォーマットに従って文書を印刷するためのコマンドを規定するリーフノードに到達する。デバイスインタラクションロジックは、コマンドをデバイスに送信する。任意的には、デバイスコンフィギュレーションツリーは、デバイスが指定されたフォーマットにより文書を印刷するのに成功したか判断するため、1以上の他のクエリと1以上の他のテストとを規定する。アクションコマンドを送信するか、又はアクションコマンドが良好に実行されたことを確認したことに応答して、デバイスインタラクションロジックは、デバイスが指定されたフォーマットにより文書を印刷したという表示をユーザに示す。
【0083】
他の各種アクションコマンドが、デバイスアクションツリーを利用してデバイスに送信されてもよい。例えば、デバイスアクションツリーは、デバイスにファックス、電子メール又はテキストメッセージを送信させるためのコマンド、又はデバイスにコピーさせ、テストページを印刷させ、又はクリーニング処理を実行させるためのコマンドを規定してもよい。デバイスアクションツリーを生成及び利用するための技術は、何れか特定タイプのアクションに限定されず、各種アクションツリーが、デバイスに送信するアクションコマンを決定するのに利用されてもよい。一実施例では、デバイスアクションツリーは、自己実行可能なコードを含まない。また、デバイスインタラクションロジックは、何れかのデバイス上でアクションを実行させるよう特別に構成されることなく、デバイスアクションツリーを移動するよう汎用的に構成されてもよい。一実施例では、アクションツリーは、異なるタイプのデバイス、異なる機能を備えたデバイス、及び/又は同一のアクションを実行するため異なるアクションコマンドを要求する異なるメーカーからのデバイスによってアクションを実行させるためのクエリ、テスト及び設定コマンドを規定する。
[実現機構]
一実施例によると、開示された技術は1以上の特定用途計算装置により実現される。特定用途計算装置は、当該技術を実行するため配線が組み込まれ、又は当該技術を実行するため永続的にプログラムされた1以上のASIC(Application−Specific Integrated Circuit)又はFPGA(Field Programmable Gate Array)などのデジタル電子デバイスを有し、又はファームウェア、メモリ、他のストレージ若しくは組み合わせのプログラム命令に従って当該技術を実行するようプログラムされた1以上の汎用ハードウェアプロセッサを有してもよい。このような特定用途計算装置はまた、カスタム配線論理、ASIC又はFPGAを当該技術を実現するためのカスタムプログラミングと組み合わせるようにしてもよい。特定用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯デバイス、ネットワーキングデバイス又は当該技術を実現するための配線及び/又はプログラム論理を搭載した他の何れかのデバイスであってもよい。
【0084】
例えば、図15は、本発明の実施例が実現されるコンピュータシステム1500を示すブロック図である。コンピュータシステム1500は、情報を通信するためのバス1502又は他の通信機構と、情報を処理するためバス1502に接続されたハードウェアプロセッサ1504とを有する。ハードウェアプロセッサ1504は、例えば、汎用マイクロプロセッサであってもよい。
【0085】
コンピュータシステム1500はまた、プロセッサ1504により実行される命令及び情報を格納するため、バス1502に接続されたRAM(Random Access Memory)や他のダイナミックストレージデバイスなどのメインメモリ1506を有する。メインメモリ1506はまた、プロセッサ1504により実行される命令の実行中に一時的変数や他の中間情報を格納するのに利用されてもよい。このような命令は、プロセッサ1504にアクセス可能な非一時的記憶媒体に格納されると、コンピュータシステム1500を命令に指示される処理を実行するようカスタマイズされた特定用途マシーンに変換する。
【0086】
コンピュータシステム1500はさらに、プロセッサ1504のための静的情報及び命令を格納するため、バス1502に接続されたROM(Read Only Memory)1508や他のスタティックストレージデバイスを有する。磁気ディスクや光ディスクなどの記憶装置1510が設けられ、情報及び命令を格納するためバス1502に接続される。
【0087】
コンピュータシステム1500は、コンピュータユーザに情報を表示するため、バス1502を介しCRT(Cathode Ray Tube)などのディスプレイ1512に接続されてもよい。英数字及び他のキーを含む入力装置1514が、プロセッサ1504に情報及びコマンド選択を通信するため、バス1502に接続される。他のタイプのユーザ入力装置は、指示情報及びコマンド選択をプロセッサ1504に通信し、ディスプレイ1512上のカーソルの動きを制御するため、マウス、トラックボール又はカーソル方向キーなどのカーソル制御1516である。この入力装置は、典型的には、デバイスが平面上の位置を指定することを可能にする第1軸(xなど)と第2軸(yなど)の2つの軸の2つの自由度を有する。
【0088】
コンピュータシステム1500は、コンピュータシステム1500を特定用途マシーンにする又はプログラムする、カスタマイズされた配線論理、1以上のASIC又はFPGA、ファームウェア及び/又はプログラムロジックを用いて、開示された技術を実現してもよい。一実施例によると、当該技術は、プロセッサ1504がメインメモリ1506に含まれる1以上の命令の1以上のシーケンスを実行することに応答して、コンピュータシステム1500により実行される。このような命令は、ストレージデバイス1510などの他の記憶媒体からメインメモリ1506に読み込まれてもよい。メインメモリ1506に含まれる命令シーケンスの実行は、プロセッサ1504に開示された方法の各ステップを実行させる。他の実施例では、配線回路が、ソフトウェア命令の代わりに又は一緒に利用されてもよい。
【0089】
ここで用いられる“記憶媒体”という用語は、マシーンを特定の方法で実行させるデータ及び/又は命令を格納する何れかの非一時的媒体を表す。このような記憶媒体は、不揮発性媒体及び/又は揮発性媒体から構成されてもよい。不揮発性媒体は、例えば、ストレージデバイス1510などの光又は磁気ディスクなどを含む。揮発性媒体は、メインメモリ1506などのダイナミックメモリを含む。記憶媒体の通常形態は、例えば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、他の何れかの磁気データ記憶媒体、CD−ROM、他の何れかの光データ記憶媒体、ホールパターンによる何れかの物理媒体、RAM、PROM、EPROM、FLASH−EPROM、NVRAM、他の何れかのメモリチップ又はカートリッジなどを含む。
【0090】
記憶媒体は、伝送媒体と異なるものであるが、これと共に利用されてもよい。伝送媒体は、記憶媒体の間の情報の伝送に用いられる。例えば、伝送媒体は、バス1502を構成する配線を含む同軸ケーブル、銅線及び光ファイバを含む。伝送媒体はまた、無線波及び赤外線データ通信中に生成されるものなど、音響波又は光波の形態をとることも可能である。
【0091】
各種形態の媒体が、実行のためプロセッサ1504に1以上の命令の1以上のシーケンスを担持することに関する。例えば、これらの命令は、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上に初期的には担持されてもよい。リモートコンピュータは、それのダイナミックメモリに命令をロードし、モデムを用いて電話線により命令を送信することが可能である。コンピュータシステム1500にローカルなモデムは、電話線によりデータを受信し、データを赤外線信号に変換するため、赤外線送信機を利用することができる。赤外線検出装置が、赤外線信号により搬送されたデータを受信し、適切な回路が、当該データをバス1502に配置することができる。バス1502は、データをメインメモリ1506に搬送し、そこからプロセッサ1504は命令を抽出及び実行する。メインメモリ1506により受信された命令は、任意的には、プロセッサ1504による実行前後にストレージデバイス1510に格納されてもよい。
【0092】
コンピュータシステム1500はまた、バス1502に接続された通信インタフェース1518を有する。通信インタフェース1518は、ローカルネットワーク1522に接続されるネットワークリンク1520との双方向データ通信接続を提供する。例えば、通信インタフェース1518は、ISDN(Integrated Services Digital Network)カード、ケーブルモデム、衛星モデム、又は対応するタイプの電話線とのデータ通信接続を提供するモデムであってもよい。他の例として、通信インタフェース1518は、互換性のあるLANとのデータ通信接続を提供するためのLAN(Local Area Network)カードであってもよい。無線リンクがまた実装されてもよい。このような何れかの実現形態では、通信インタフェース1518は、各種タイプの情報を表すデジタルデータストリームを搬送する電気、電磁気又は光信号を送受信する。
【0093】
ネットワークリンク1520は、典型的には、1以上のネットワークを介し他のデータデバイスとのデータ通信を提供する。例えば、ネットワークリンク1520は、ローカルネットワーク1522を介しISP(Internet Service Provider)1526により運営されるデータ機器又はホストコンピュータ1524との接続を提供するものであってもよい。さらに、ISP1526は、“インターネット”1528として一般に参照されるワールドワイドパケットデータ通信ネットワークを介しデータ通信サービスを提供する。ローカルネットワーク1522とインターネット1528とは共に、デジタルデータストリームを搬送する電気、電磁気又は光信号を利用する。各種ネットワークを介した信号と、ネットワークリンク1520及び通信インタフェース1518を介した信号とは、コンピュータシステム1500に対してデジタルデータを搬送し、伝送媒体の一例となる形態である。
【0094】
コンピュータシステム1500は、ネットワーク、ネットワークリンク1520及び通信インタフェース1518を介し、プログラムコードを含むデータ及びメッセージを送受信することができる。インターネットの例では、サーバ1530は、インターネット1528、ISP1526、ローカルネットワーク1522及び通信インタフェース1518を介しアプリケーションプログラムのためのリクエストされたコードを送信してもよい。
【0095】
受信されたコードは、そのままプロセッサ1504により実行されてもよく、以降の利用のためストレージデバイス1510や他の不揮発性ストレージに格納されてもよい。
【0096】
上述した明細書において、実現形態毎に可変的な多数の具体的詳細を参照して本発明の実施例が説明された。明細書及び図面は、限定的なものでなく例示的なものとしてみなされるべきである。本発明の範囲及び出願人が本発明の範囲であると意図するものは、何れか以降の補正を含む請求項に記載された特定の形態による請求項の文言上及び均等の範囲である。
【0097】
【表1−1】
【表1−2】
【表2−1】
【表2−2】
【表3−1】
【表3−2】
【表3−3】
【表3−4】
【表3−5】
【表3−6】
【表3−7】
【表4−1】
【表4−2】
【表4−3】
【表4−4】
【表4−5】
【表4−6】
【表4−7】
【表4−8】
【表4−9】
【表4−10】
【表4−11】
【表4−12】
【表4−13】
【表4−14】
【表4−15】
【表4−16】
【表4−17】
【表4−18】
【表4−19】
【表4−20】
【表4−21】
【表4−22】
【0098】
以上、本発明の実施例について詳述したが、本発明は上述した特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0099】
100 デバイスモニタシステム
102 状態決定ツリー
104 デバイス情報
106 ファンクションライブラリ
108 ネットワーク
110 デバイス
【特許請求の範囲】
【請求項1】
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を1以上の計算装置に実行させる命令を格納する非一時的コンピュータ可読記憶媒体。
【請求項2】
前記特定のクエリは、前記1以上のクエリの第1クエリであり、
前記特定のレスポンスは、前記1以上のレスポンスの第1レスポンスであり、
前記特定のテストは、前記1以上のテストの第1テストであり、
前記1以上の値は、1以上の第1の値であり、
前記特定のノードは、前記デバイスインタラクションツリーの第1ノードであり、
前記第1テストを前記第1レスポンスに適用した結果として、前記第1ノードから前記デバイスインタラクションツリーを移動するステップは、前記デバイスインタラクションツリーの第2ノードに向かって前記デバイスインタラクションツリーを移動することからなり、
前記命令は、
前記第2ノードに関連付けされた、第2クエリと1以上の第2の値を規定する第2テストとを決定するステップであって、前記クエリの1以上が前記第2クエリを含み、前記1以上のレスポンスが前記第2クエリに対する第2レスポンスを含む、前記決定するステップと、
前記1以上の第2の値に対する前記第2レスポンスを評価する前記第2テストを前記第2レスポンスに適用するステップと、
前記第2テストを前記第2レスポンスに適用した結果として、前記第2ノードから前記特定のリーフノードに向かって前記デバイスインタラクションツリーを移動するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項3】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項4】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項5】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出するステップと、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出することに応答して、前記デバイスマネージメントアプリケーションのコードを修正することなく前記特定のデバイスをサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項6】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、
クエリ及びレスポンス情報に関連付けされた状態情報を受信するステップと、
前記デバイスマネージメントアプリケーションのコードを修正することなく前記クエリ及びレスポンス情報に関連付けされた状態情報をサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項7】
前記命令は、
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項8】
前記デバイスインタラクションツリーは、前記複数のデバイスの所与のデバイスについて、前記所与のデバイスの状態を規定するリーフノードを含み、
前記複数のデバイスは、異なる機能を備えた少なくとも2つのデバイス、異なる設定を備えた少なくとも2つのデバイス、異なるメーカーからの少なくとも2つのデバイス及び同一のクエリに異なって応答する同一のデバイスの状態を備えた少なくとも2つのデバイスを含む、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項9】
1以上のプロセッサと、
複数のデバイスへの1以上のインタフェース及び前記複数のデバイスからの1以上のインタフェースと、
前記1以上のプロセッサ、前記複数のデバイスへの1以上のインタフェース及び前記複数のデバイスからの1以上のインタフェースと接続される計算論理と、
を有する計算装置であって、
前記計算論理は、
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を実行するよう構成される計算装置。
【請求項10】
前記特定のクエリは、前記1以上のクエリの第1クエリであり、
前記特定のレスポンスは、前記1以上のレスポンスの第1レスポンスであり、
前記特定のテストは、前記1以上のテストの第1テストであり、
前記1以上の値は、1以上の第1の値であり、
前記特定のノードは、前記デバイスインタラクションツリーの第1ノードであり、
前記第1テストを前記第1レスポンスに適用した結果として、前記第1ノードから前記デバイスインタラクションツリーを移動するステップは、前記デバイスインタラクションツリーの第2ノードに向かって前記デバイスインタラクションツリーを移動することからなり、
前記計算論理はさらに、
前記第2ノードに関連付けされた、第2クエリと1以上の第2の値を規定する第2テストとを決定するステップであって、前記クエリの1以上が前記第2クエリを含み、前記1以上のレスポンスが前記第2クエリに対する第2レスポンスを含む、前記決定するステップと、
前記1以上の第2の値に対する前記第2レスポンスを評価する前記第2テストを前記第2レスポンスに適用するステップと、
前記第2テストを前記第2レスポンスに適用した結果として、前記第2ノードから前記特定のリーフノードに向かって前記デバイスインタラクションツリーを移動するステップと、
を実行するよう構成される、請求項9記載の計算装置。
【請求項11】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項9記載の計算装置。
【請求項12】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを実行するよう構成させる、請求項9記載の計算装置。
【請求項13】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出するステップと、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出することに応答して、前記デバイスマネージメントアプリケーションのコードを修正することなく前記特定のデバイスをサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項14】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、
クエリ及びレスポンス情報に関連付けされた状態情報を受信するステップと、
前記デバイスマネージメントアプリケーションのコードを修正することなく前記クエリ及びレスポンス情報に関連付けされた状態情報をサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項15】
前記計算論理はさらに、
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項16】
前記デバイスインタラクションツリーは、前記複数のデバイスの所与のデバイスについて、前記所与のデバイスの状態を規定するリーフノードを含み、
前記複数のデバイスは、異なる機能を備えた少なくとも2つのデバイス、異なる設定を備えた少なくとも2つのデバイス、異なるメーカーからの少なくとも2つのデバイス及び同一のクエリに異なって応答する同一のデバイスの状態を備えた少なくとも2つのデバイスを含む、請求項9記載の計算装置。
【請求項17】
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を有する、1以上の計算装置によって実行される方法。
【請求項18】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項17記載の方法。
【請求項19】
デバイスマネージメントアプリケーションが、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
当該方法はさらに、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを有する、請求項17記載の方法。
【請求項20】
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
をさらに有する、請求項17記載の方法。
【請求項1】
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を1以上の計算装置に実行させる命令を格納する非一時的コンピュータ可読記憶媒体。
【請求項2】
前記特定のクエリは、前記1以上のクエリの第1クエリであり、
前記特定のレスポンスは、前記1以上のレスポンスの第1レスポンスであり、
前記特定のテストは、前記1以上のテストの第1テストであり、
前記1以上の値は、1以上の第1の値であり、
前記特定のノードは、前記デバイスインタラクションツリーの第1ノードであり、
前記第1テストを前記第1レスポンスに適用した結果として、前記第1ノードから前記デバイスインタラクションツリーを移動するステップは、前記デバイスインタラクションツリーの第2ノードに向かって前記デバイスインタラクションツリーを移動することからなり、
前記命令は、
前記第2ノードに関連付けされた、第2クエリと1以上の第2の値を規定する第2テストとを決定するステップであって、前記クエリの1以上が前記第2クエリを含み、前記1以上のレスポンスが前記第2クエリに対する第2レスポンスを含む、前記決定するステップと、
前記1以上の第2の値に対する前記第2レスポンスを評価する前記第2テストを前記第2レスポンスに適用するステップと、
前記第2テストを前記第2レスポンスに適用した結果として、前記第2ノードから前記特定のリーフノードに向かって前記デバイスインタラクションツリーを移動するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項3】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項4】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項5】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出するステップと、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出することに応答して、前記デバイスマネージメントアプリケーションのコードを修正することなく前記特定のデバイスをサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項6】
前記命令が前記1以上の計算装置により実行されると、デバイスマネージメントアプリケーションは、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
前記命令は、
クエリ及びレスポンス情報に関連付けされた状態情報を受信するステップと、
前記デバイスマネージメントアプリケーションのコードを修正することなく前記クエリ及びレスポンス情報に関連付けされた状態情報をサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項7】
前記命令は、
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
を前記1以上の計算装置に実行させる、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項8】
前記デバイスインタラクションツリーは、前記複数のデバイスの所与のデバイスについて、前記所与のデバイスの状態を規定するリーフノードを含み、
前記複数のデバイスは、異なる機能を備えた少なくとも2つのデバイス、異なる設定を備えた少なくとも2つのデバイス、異なるメーカーからの少なくとも2つのデバイス及び同一のクエリに異なって応答する同一のデバイスの状態を備えた少なくとも2つのデバイスを含む、請求項1記載の非一時的コンピュータ可読記憶媒体。
【請求項9】
1以上のプロセッサと、
複数のデバイスへの1以上のインタフェース及び前記複数のデバイスからの1以上のインタフェースと、
前記1以上のプロセッサ、前記複数のデバイスへの1以上のインタフェース及び前記複数のデバイスからの1以上のインタフェースと接続される計算論理と、
を有する計算装置であって、
前記計算論理は、
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を実行するよう構成される計算装置。
【請求項10】
前記特定のクエリは、前記1以上のクエリの第1クエリであり、
前記特定のレスポンスは、前記1以上のレスポンスの第1レスポンスであり、
前記特定のテストは、前記1以上のテストの第1テストであり、
前記1以上の値は、1以上の第1の値であり、
前記特定のノードは、前記デバイスインタラクションツリーの第1ノードであり、
前記第1テストを前記第1レスポンスに適用した結果として、前記第1ノードから前記デバイスインタラクションツリーを移動するステップは、前記デバイスインタラクションツリーの第2ノードに向かって前記デバイスインタラクションツリーを移動することからなり、
前記計算論理はさらに、
前記第2ノードに関連付けされた、第2クエリと1以上の第2の値を規定する第2テストとを決定するステップであって、前記クエリの1以上が前記第2クエリを含み、前記1以上のレスポンスが前記第2クエリに対する第2レスポンスを含む、前記決定するステップと、
前記1以上の第2の値に対する前記第2レスポンスを評価する前記第2テストを前記第2レスポンスに適用するステップと、
前記第2テストを前記第2レスポンスに適用した結果として、前記第2ノードから前記特定のリーフノードに向かって前記デバイスインタラクションツリーを移動するステップと、
を実行するよう構成される、請求項9記載の計算装置。
【請求項11】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項9記載の計算装置。
【請求項12】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを実行するよう構成させる、請求項9記載の計算装置。
【請求項13】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出するステップと、
前記デバイスインタラクションツリーが前記複数のデバイスの特定のデバイスの特定の状態を提供できないことを検出することに応答して、前記デバイスマネージメントアプリケーションのコードを修正することなく前記特定のデバイスをサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項14】
前記計算論理はさらに、デバイスマネージメントアプリケーションに、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを実行させ、
前記計算論理はさらに、
クエリ及びレスポンス情報に関連付けされた状態情報を受信するステップと、
前記デバイスマネージメントアプリケーションのコードを修正することなく前記クエリ及びレスポンス情報に関連付けされた状態情報をサポートするよう前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項15】
前記計算論理はさらに、
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
を実行するよう構成させる、請求項9記載の計算装置。
【請求項16】
前記デバイスインタラクションツリーは、前記複数のデバイスの所与のデバイスについて、前記所与のデバイスの状態を規定するリーフノードを含み、
前記複数のデバイスは、異なる機能を備えた少なくとも2つのデバイス、異なる設定を備えた少なくとも2つのデバイス、異なるメーカーからの少なくとも2つのデバイス及び同一のクエリに異なって応答する同一のデバイスの状態を備えた少なくとも2つのデバイスを含む、請求項9記載の計算装置。
【請求項17】
複数のデバイスのデバイスの状態に対するリクエストを受信するステップと、
デバイスインタラクションツリーの特定のノードにより規定される特定のクエリと1以上の値を規定する特定のテストとを決定するステップであって、前記デバイスインタラクションツリーは、クエリとテストとを規定する中間ノードとデバイスの状態を規定するリーフノードとを有する、前記決定するステップと、
前記デバイスに前記特定のクエリを含む前記クエリの1以上を送信するステップと、
前記デバイスから前記特定のクエリに対する特定のレスポンスを含む前記1以上のクエリに対する1以上のレスポンスを受信するステップと、
前記1以上の値に対して前記特定のレスポンスを評価する前記特定のテストを前記特定のレスポンスに適用するステップと、
前記特定のテストを前記特定のレスポンスに適用した結果として、前記特定のノードから前記リーフノードの1以上に向かって前記デバイスインタラクションツリーを移動するステップと、
前記テストの1以上を前記1以上のレスポンスに適用し、前記デバイスインタラクションツリーのリーフノードの前記デバイスの状態を規定する特定のリーフノードに到達することによって、前記デバイスの状態を決定するステップと、
前記デバイスの状態に対するリクエストに応答して、前記デバイスの状態を提供するステップと、
を有する、1以上の計算装置によって実行される方法。
【請求項18】
前記リクエストは、前記デバイスのアドレスを指定し、
前記1以上のクエリが、前記アドレスに送信され、
前記デバイスの状態は、動作状態、デバイス設定、又はデバイスエラーの1以上を含み、
前記クエリの1以上は、SNMPクエリ、PJLクエリ、PostScriptクエリ又はHTTPクエリの1以上を含む、請求項17記載の方法。
【請求項19】
デバイスマネージメントアプリケーションが、前記リクエストを受信するステップと、前記特定のクエリと前記特定のテストとを決定するステップと、前記1以上のクエリを送信するステップと、前記1以上のレスポンスを受信するステップと、前記特定のテストを適用するステップと、前記デバイスインタラクションツリーを移動するステップと、前記デバイスの状態を決定するステップと、前記デバイスの状態を提供するステップとを前記1以上の計算装置に実行させ、
当該方法はさらに、前記デバイスマネージメントアプリケーションのコードを修正することなく前記デバイスインタラクションツリーを更新するステップを有する、請求項17記載の方法。
【請求項20】
ユーザインタフェース上で特定の状態が特定のデバイスについて観察されたという指示を受信するステップと、
前記特定のデバイスに特定のクエリを送信するステップと、
前記特定のクエリに対して特定のレスポンスを受信するステップと、
前記指示、前記特定のクエリ及び前記特定のレスポンスを有する情報セットに少なくとも部分的に基づき前記デバイスインタラクションツリーを更新するステップと、
をさらに有する、請求項17記載の方法。
【図1A】
【図1B】
【図1C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図8C】
【図9A】
【図9B】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図14C】
【図15】
【図1B】
【図1C】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7A】
【図7B】
【図8A】
【図8B】
【図8C】
【図9A】
【図9B】
【図10A】
【図10B】
【図11】
【図12】
【図13】
【図14A】
【図14B】
【図14C】
【図15】
【公開番号】特開2012−160186(P2012−160186A)
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願番号】特願2012−17794(P2012−17794)
【出願日】平成24年1月31日(2012.1.31)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
【公開日】平成24年8月23日(2012.8.23)
【国際特許分類】
【出願日】平成24年1月31日(2012.1.31)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】
[ Back to top ]