(57)【特許請求の範囲】
【請求項１】
データセンタのコンピュータネットワークにおいて、複数のノードコンピュータをコントローラから制御する方法であって、
前記コントローラにおいて、複数の特有のセットを保持することであって、各特有のセットは、ジョブを処理するように構成された少なくとも１つのノードコンピュータのグループを特定することと、
前記コントローラにおいて、前記特有のセットの少なくとも１つに属するノードコンピュータから、該ノードコンピュータに割り当てられた前記ジョブの一部を終了したことを示す第１のメッセージを受信することと、
前記コントローラが、前記複数の特有のセットに属するノードコンピュータ上で行われる少なくとも１つのオペレーションに対応する新しいジョブを提供することと、
前記コントローラが、前記割り当てられたジョブの一部を終了したノードコンピュータを、新しい特有のセットに割り当て、前記新しい特有のセットの中の各ノードコンピュータへ第２のメッセージを送信することであって、前記第２のメッセージには、前記第２のメッセージを受信する各ノードコンピュータに、前記新しいジョブを実行させるためのデータが格納されていることと、
前記コントローラにおいて、前記各ノードコンピュータから、前記新しいジョブの実行結果を含む第３のメッセージを受信することであって、前記実行結果は、前記各ノードコンピュータにおいて、前記第２のメッセージに格納されたデータがエージェントプログラムの実行により解析されて、前記オペレーションに対応する前記新しいジョブが実行された結果であることと、
前記コントローラにおいて、前記各ノードコンピュータからの前記第３のメッセージに含まれる実行結果を格納することと
を備えることを特徴とする方法。
【請求項２】
前記第２のメッセージには、前記新しい特有のセット上で実行されるスクリプトに対応するデータが格納されていることを特徴とする請求項１に記載の方法。
【請求項３】
前記第２のメッセージには、前記新しい特有のセット上で実行される２進プログラムに対応するデータが格納されていることを特徴とする請求項１に記載の方法。
【請求項４】
前記２進プログラムに対応する前記データは、ネットワークアドレスを備えることを特徴とする請求項３に記載の方法。
【請求項５】
前記第２のメッセージに応答して前記新しいジョブを実行することは、スクリプトを実行することを備えることを特徴とする請求項３に記載の方法。
【請求項６】
前記第２のメッセージに応答して前記新しいジョブを実行することは、２進プログラムを実行することを備えることを特徴とする請求項３に記載の方法。
【請求項７】
前記２進プログラムを実行することは、前記第２のメッセージの中のネットワークアドレスに基づいて前記２進プログラムを取り出すことを備えることを特徴とする請求項６に記載の方法。
【請求項８】
前記各ノードコンピュータが前記コントローラによって制御されるようにオペレーション可能であることを示す発見情報を前記コントローラで受信することをさらに備えることを特徴とする請求項１に記載の方法。
【請求項９】
前記発見情報を受信することに基づいて、前記各ノードコンピュータの制御を確立することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１０】
データセンタのコンピュータネットワークにおいて、複数のノードコンピュータをコントローラから制御するシステムであって、
複数の特有のセットを保持するように構成されたコントローラであって、各特有のセットは、ジョブを処理するように構成された少なくとも１つのノードコンピュータのグループを特定することと、
前記コントローラ上のコントローラソフトウェアとの通信のために接続されたエージェントソフトウェアを含む、前記特有のセットに属するノードコンピュータとを備え、
前記コントローラの前記コントローラソフトウェアは、前記複数の特有のセットに属するノードコンピュータ上で行われる少なくとも１つのオペレーションに対応する新しいジョブを提供し、
前記コントローラは、前記特有のセットの少なくとも１つに属するノードコンピュータから、該ノードコンピュータに割り当てられた前記ジョブの一部を終了したことを示す第１のメッセージを受信し、前記割り当てられたジョブの一部を終了したノードコンピュータを、新しい特有のセットに割り当て、前記新しい特有のセットの中の各ノードコンピュータのエージェントソフトウェアへ第２のメッセージを送信し、前記第２のメッセージは、前記第２のメッセージを受信する各ノードコンピュータに、前記新しいジョブを実行するためのデータが格納されており、
前記ノードコンピュータの前記エージェントソフトウェアは、前記第２のメッセージに格納されたデータを解析して、前記オペレーションに対応する前記新しいジョブを実行し、前記新しいジョブの実行結果を含む第３のメッセージを前記コントローラに送信し、
前記コントローラは、前記各エージェントソフトウェアからの前記第３のメッセージに含まれる実行結果をデータストアに格納することを特徴とするシステム。
【請求項１１】
前記コントローラは、前記データストアの中の情報に対するアクセスを提供するように構成されたスキーマインターフェースをさらに備えたことを特徴とする請求項１０に記載のシステム。
【請求項１２】
スクリプトエンジンを含む実行エンジンをさらに備え、前記エージェントソフトウェアが、前記実行エンジンと通信してスクリプトを実行することを特徴とする請求項１０に記載のシステム。
【請求項１３】
前記実行エンジンは、２進プログラムを実行し、前記エージェントソフトウェアは、前記実行エンジンと通信して前記２進プログラムを実行することを特徴とする請求項１２に記載のシステム。
【請求項１４】
前記コントローラによって要求された少なくとも１つの特別オペレーションのセットを行う前記ノードコンピュータ上のソフトウェアをさらに備え、前記特別オペレーションは、リブートオペレーション、サスペンドオペレーション、またはシャットダウンオペレーションのいずれかであることを特徴とする請求項１０に記載のシステム。
【請求項１５】
前記ネットワーク上の前記各ノードコンピュータによって提供される発見情報を検出する前記コントローラにおける発見リスニングプロセスをさらに備えたことを特徴とする請求項１０に記載のシステム。
【請求項１６】
前記コントローラは、前記発見情報を提供するノードココンピュータの制御を確立するためのソフトウェアを含むことを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記各ノードコンピュータは、前記発見情報を、前記コントローラに提供するための発見コンポーネントを含むことを特徴とする請求項１５に記載のシステム。
【請求項１８】
前記各ノードコンピュータは、自身のリブートに続いて、前記発見情報を、前記コントローラに提供することを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上に配置された複数のコンピュータ装置を管理するための方法およびシステムに関する。
【背景技術】
【０００２】
本出願は、２００１年６月１１日出願の米国仮特許出願、出願番号６０／２９７４７３に対する優先権を主張する。
【０００３】
データセンタは、企業、ならびにストーレッジサービスプロバイダ、ホスティングサービスプロバイダ、およびアプリケーションサービスプロバイダなどの様々なインターネット関連サービスプロバイダを含む多くのタイプの組織に対してコンピュータリソースを提供する。通常のデータセンタは、様々な目的で様々な役割を果たす数百ないし数千のコンピュータを含む。
【０００４】
多数のコンピュータを管理することには、費用がかかり、時間が消費され、誤りが生じやすい可能性がある。例えば、多くのサービスプロバイダは、データセンタを運営するのは、多数のルーチンが手作業で行われるため、労働集約型ビジネスであると認識している。例として、新規の顧客のために新しいサーバをオンラインにすることは、新規の顧客の注文を印刷し、オペレーティングシステムをインストールし、あらゆるアプリケーションをインストールし、オペレーティングシステムおよびアプリケーションを構成し、サーバ装置をデータセンタ内に移動させてネットワークおよび電源に接続することを技術者に行わせることからなる。したがって、新しいサーバをオンラインにすることは、長い時間と高い費用がかかるプロセスであり、また誤りが起こりやすい。
【０００５】
ソフトウェアを介して新規の顧客のために既存のサーバ構成を「再設定」するとき、同様の手作業のプロセスが使用される。実際、再設定のコストは、余りにも高いので、それを行わない方が安上がりであると考えるサービスプロバイダも存在するほどである。費用の一部は、高い費用のかかる手作業でのデータセンタの監査を介してそのような未使用のシステムを配備（ｌｏｃａｔｅ）することに費やされる。同様に、もはや不必要となったコンピュータを再配備するのではなく、データセンタ内にサーバコンピュータを放置する（オペレーションし、電力を消費しながら）、または再配備しようと試みるのではなく、コンピュータを完全に解体する方が安上がりである可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
要するに、データセンタを運営するには、実際的な目的では必要であるが、あまり望ましくないいくつかの妥協をすることが必要とされる。例えば、コンピュータを再配備する代りに、そうしない方が安上がりである可能性があるが、このことは、コンピュータシステムがもはや不必要であるときさえ、データセンタが、そのコンピュータシステムをオペレーションさせている（電力、空調、およびネットワークポートを使用しながら）ことを意味する。
【０００７】
別の例として、高い費用がかかるが、様々なサーバを手作業で構成することが、やはり、データセンタのやり方である。しかし、自動化を介してそのような費用を削減することは、これまで、あまり成功していない重要な取り組みである。これが成功していないのは、とりわけ、そのような試みは、複数の外部製品の統合を必要とするという困難があるからである。
【０００８】
簡単に言えば、本発明は、複数装置管理の方法およびシステムを提供し、この方法およびシステムは、とりわけ、１つのコントローラコンピュータ上で単一のコマンドを実行し、ノードと呼ばれる１つまたは複数の他の制御されるコンピュータ上の処理（オペレーション）を開始するメカニズムを提供する。オペレーションは、スクリプト記述された１組のコマンドの実行、２進プログラムの実行、またはいくつかの他のタイプのオペレーションを含むことが可能である。メカニズムは、数セットのコンピュータとともに、あたかもそれらのコンピュータが単一のコンピュータであるかのように機能し、これにより、例えば、コンピュータ装置の管理が大幅に単純化され、データセンタ内でコンピュータ装置を管理する費用が、相当に削減される。
【課題を解決するための手段】
【０００９】
一実施形態では、本発明は、複数の他のコンピュータを管理する１つのコンピュータ上にコントローラ（例えば、プロセス等）を含むアーキテクチャを提供し、複数の他のコンピュータのそれぞれは、コントローラによって管理可能にするエージェントソフトウェアを含む。一般に、コントローラは、自らの管理する複数のノードの中心的表現を提供し、個々に、またはノードが割り当てられることが可能なセットごとに選択されたノードに対して、この中心的表現から処理を開始することができる。コントローラは、ネットワーク通信に関する基礎の置換可能なトランスポート層を使用して、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）から導出されたフォーマットなどのメッセージ交換フォーマットを使用してノードと通信する。
【００１０】
コントローラは、データセンタ内で利用可能なノードを表現する規定の仕方、セットへの利用可能なノードの編成、および進行中のオペレーションおよび完了したオペレーションの結果を提供する。例えば、スキーマを使用して利用可能なノードおよびノードのセット（例えば、通常、管理の都合、オペレーション目的、またはその他の基準などの何らかの基準に従い、管理者によってグループ化された）の表現を継続させる。また、スキーマを使用して待ち状態のオペレーションおよびジョブならびに実行されたオペレーションおよびジョブとともに、コントローラにとってアクセス可能な記憶装置上に各処理の結果のレコードを記憶することができる。
【００１１】
その他の利点は、以下の詳細な説明を図面と併せて考慮することにより、明白となる。
【発明の効果】
【００１２】
本発明によれば、複数装置管理の方法およびシステムを提供し、この方法およびシステムは、とりわけ、１つのコントローラコンピュータ上で単一のコマンドを実行し、ノードと呼ばれる１つまたは複数の他の制御されるコンピュータ上の処理（オペレーション）を開始するメカニズムを提供する。オペレーションは、スクリプト記述された１組のコマンドの実行、２進プログラムの実行、またはいくつかの他のタイプのオペレーションを含むことが可能である。メカニズムは、数セットのコンピュータとともに、あたかもそれらのコンピュータが単一のコンピュータであるかのように機能し、これにより、例えば、コンピュータ装置の管理が大幅に単純化され、データセンタ内でコンピュータ装置を管理する費用が、相当に削減される。
【図面の簡単な説明】
【００１３】
【図１】本発明を組み込むことができるコンピュータシステムを表すブロック図である。
【図２】本発明の態様による複数のノードを管理するためのネットワークに接続されたコントローラコンピュータを表すブロック図である。
【図３】本発明の態様によるコントローラコンピュータの中の様々な例としての構成要素、および当該のコントローラコンピュータによって管理されるノードの１つ内部の様々な例としての構成要素を表すブロック図である。
【図４】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図５】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図６】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図７】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図８】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図９】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図１０】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図１１】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図１２】本発明の態様による利用可能なノード、セット、オペレーション、および／またはジョブ等の表現を継続させるための適切な定義されたスキーマを表す図である。
【図１３】本発明の態様による１つまたは複数の選択されたノード上でオペレーションを行うための一般的論理を説明する流れ図である。
【図１４】本発明の態様によるノード上で要求された処理を行うための一般的論理を説明する流れ図である。
【図１５】本発明の態様による、得られるオペレーションの結果、ならびにオペレーションの結果を決定するコントローラ上のオペレーションを開始したユーザ・インターフェース、スクリプト、またはプロセスを一般的に表す流れ図である。
【発明を実施するための形態】
【００１４】
例としてのオペレーション環境
図１は、本発明を実装することができる適切なコンピュータシステム環境１００の例を示している。コンピュータシステム環境１００は、適切なコンピュータ環境の一例に過ぎず、本発明の使用または機能性の範囲に関するいかなる限定を示唆するものでもない。また、コンピュータ環境１００は、例としてのオペレーション環境１００に示す構成要素にいずれか１つまたはその組み合わせに関連するいかなる依存関係または要件を有するものとしても解釈されるべきではない。
【００１５】
本発明は、他の多くの汎用または専用のコンピュータシステム環境またはコンピュータシステム構成でオペレーションする。本発明とともに使用するのに適する可能性のある周知のコンピュータシステム、コンピュータ環境、および／またはコンピュータ構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド型装置またはラップトップ型装置、タブレット型装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、ルータ、以上のシステムまたは装置のどれかを含む分散コンピュータ環境等が含まれるが、それらには限定されない。
【００１６】
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的コンテキストにおいて説明することができる。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。本発明は、一般に、通信網を介してリンクされた遠隔処理装置によってタスクが行われる分散コンピュータ環境において実施されるものとする。分散コンピュータ環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよび／または遠隔のコンピュータ記憶媒体の中にあることが可能である。
【００１７】
図１を参照すると、本発明を実施するための例としてのシステムが、コンピュータ１１０の形態で汎用コンピュータ装置を含み、コンピュータ１１０は、ノードを制御するための図２のコントローラコンピュータ２１０としてオペレーションすることができる。コンピュータ１１０の構成要素には、処理装置１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステム構成要素を処理装置１２０に結合するシステムバス１２１が含まれることが可能であるが、それらには限定されない。システムバス１２１は、様々なバスアーキテクチャのどれかを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプバス構造のどれであることも可能である。例として、限定としてではなく、そのようなアーキテクチャには、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、およびＭｅｚｚａｎｉｎｅバスとしても知られるＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスが含まれる。
【００１８】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０がアクセスすることの可能な任意の利用可能な媒体であることが可能であり、揮発性媒体と不揮発性媒体、ならびに取外し可能の媒体と取外し不可能の媒体をともに含む。例として、限定としてではなく、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことが可能である。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を記憶するための任意の方法または任意の技術で実装される揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタルバーサタイルディスク（ＤＶＤ）または他の光ディスクストーレッジ、磁気カセット、磁気テープ、磁気ディスクストーレッジまたは他の磁気記憶装置、または所望の情報を記憶するのに使用することができ、コンピュータ１１０がアクセスすることのできる他の任意の媒体を含むが、それらには限定されない。通信媒体は、通常、搬送波などの変調されたデータ信号または他のトランスポートメカニズムでコンピュータ可読命令、データ構造、プログラム・モジュール、または他のデータを実現し、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、その特性セットの１つまたは複数を有する、または信号の中に情報を符号化するように変化させられた信号を意味する。例として、限定としてではなく、通信媒体は、有線網または直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線などの無線媒体および他の無線媒体を含む。また、以上のいずれかの組み合わせも、コンピュータ可読媒体の範囲内に含まれる。
【００１９】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１およびランダムアクセスメモリ（ＲＡＭ）１３２などの揮発性および／または不揮発性メモリの形態でコンピュータ記憶装置を含む。始動中などに、コンピュータ１１０内の要素間における情報の転送を助ける基本ルーチンを含む基本入力／出力システム１３３（ＢＩＯＳ）が、通常、ＲＯＭ１３１の中に記憶されている。ＲＡＭ１３２は、通常、処理装置１２０にとって即時にアクセス可能であり、かつ／または処理装置１２０によって現在、演算が行われているデータおよび／またはプログラム・モジュールを含む。例として、限定としてではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を示す。
【００２０】
また、コンピュータ１１０は、他の取外し可能／取外し不可能の揮発性／不揮発性コンピュータ記憶媒体も含むことが可能である。単に例として、図１は、取外し不可能の不揮発性磁気媒体に対して読取りまたは書込みを行うハードディスクドライブ１４１、取外し可能の不揮発性磁気ディスク１５２に対して読取りおよび書込みを行う磁気ディスクドライブ１５１、およびＣＤ  ＲＯＭまたは他の光媒体などの取外し可能の不揮発性光ディスク１５６に対して読取りおよび書込みを行う光ディスクドライブ１５５を示している。例としてのオペレーション環境で使用することのできる他の取外し可能／取外し不可能の揮発性／不揮発性のコンピュータ記憶装置には、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭ等が含まれるが、それらには限定されない。ハードディスクドライブ１４１は、通常、インターフェース１４０などの取外し不可能のメモリインターフェースを介してシステムバス１２１に接続され、また磁気ディスクドライブ１５１および光ディスクドライブ１５５は、通常、インターフェース１５０などの取外し可能メモリインターフェースでシステムバス１２１に接続される。
【００２１】
前述し、図１に示したドライブおよび関連するコンピュータ記憶媒体は、コンピュータ１１０に対してコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータのストーレッジを提供する。図１では、ハードディスクドライブ１４１が、記憶オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７として示されている。以上の構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、およびプログラムデータ１３７と同じ、またはそれらとは異なることが可能である。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、およびプログラムデータ１４７には、少なくとも異なるコピーであることを示すため、本明細書では、異なる番号を付している。ユーザは、一般にマウス、トラックボール、またはタッチパッドと呼ばれるタブレット、または電子デジタイザ１６４、マイクロホン１６３、キーボード１６２、およびポインティングデバイス１６１などの入力装置を介してコマンドおよび情報をコンピュータ２０に入力することができる。図１に示していないその他の入力装置には、ジョイステック、ゲームパッド、サテライトディッシュ、スキャナ等が含まれる可能性がある。以上およびその他の入力は、しばしば、システムバスに結合されたユーザ入力インターフェース１６０を介して処理装置１２０に接続されるが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースおよびバス構造で接続されることも可能である。また、モニタ１９１またはその他のタイプの表示装置も、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。また、モニタ１９１は、タッチスクリーンパネル等と統合することも可能である。モニタおよび／またはタッチスクリーンパネルは、タブレット型パーソナルコンピュータの中など、コンピュータ装置１１０が組み込まれたハウジングに物理的に結合することができる。さらに、コンピュータ装置１１０などのコンピュータは、出力周辺インターフェース１９４等を介して接続することが可能なスピーカ１９５およびプリンタ１９６などの他の周辺出力装置を含むことも可能である。
【００２２】
コンピュータ１１０は、一般に、ネットワーク化された環境の中でオペレーションして、ノード２０４あるいはノード２０４1〜２０４nと呼ぶいくつかの遠隔サーバコンピュータ１８０を制御する（図２および３）。通常、そのようなノードは、前述したコンピュータ１１０の構成要素のいくつか、またはそのすべてを含む。ノードは、キーボード、マウス、ディスプレイなどのユーザインターフェースメカニズムを含まない可能性がある。そのようなノードは、ネットワーク化された環境の中の他のコンピュータ、またはユーザにサービスを通常、提供する様々なプログラムを実行することができる。そのようなプログラムの例には、Ｗｅｂページを提供する、またはデータベースを管理するプログラムが含まれる。例として、限定としてではなく、図１は、遠隔アプリケーションプログラム１８５が、メモリ装置１８１上に常駐しているのを示している。示したネットワーク接続は、例としてのものであり、コンピュータ間において通信リンクを確立する他の手段も使用できることが理解されよう。
【００２３】
複数装置管理
図２は、コントローラコンピュータ２０２（図１のコンピュータシステム１１０に該当することが可能である）、およびノード２０４1〜２０４nと呼ばれる複数の管理されたコンピュータ装置（図１の遠隔コンピュータ１８０に該当することが可能である）を含むアーキテクチャ２００を一般的に表すブロック図である。ただし、本発明の態様は、データセンタ内で使用するのに適するが、そのような態様は、１つまたは複数のコンピュータ上で１つまたは複数のタスクを行う必要がある任意の環境において適用可能であることに留意されたい。例えば、複数のコンピュータおよびサービス（ＰＤＡ、モバイルコンピュータ、デスクトップシステム、ホームメディアセンタシステムなどの）を有するユーザが、本発明を使用してそのような複数の装置にわたるオペレーションを実行することが可能である。したがって、データセンタ環境の中で一般的に説明しているが、本発明は、特定の１つまたは複数の構成に限定されるべきものではなく、以上に提示したコンピュータ装置の実質的にあらゆる構成、ならびにパーソナルコンピュータ、サーバ、ルータ、および様々な記憶装置とともに使用することが企図される。
【００２４】
通常のデータセンタは、多数の異なるコンピュータを含む。データセンタの管理をより容易にするため、管理者等が、コンピュータのどれかをコントローラコンピュータ２０２（またはコントローラ２０２）として指定する。とりわけ、本発明の一態様に即して、コントローラコンピュータ２０２は、データセンタ内のコンピュータ、コンピュータがどのように構成されているか、またコンピュータ上でどのようなオペレーションを行うことができるかについてのマスタレコードを保持する。コントローラは、ローカルで接続されたデータスストア（例えば、図３に一般的に表すとおりの）の中に、または遠隔データストア上にこのデータを記憶することができる。ノード２０４1〜２０４nは、コントローラ２０２によって管理されていることが可能であるデータセンタ内のコンピュータを含む。ノードは、Ｗｅｂページを提供すること、またはデータベースを管理することなどのデータセンタの実際の作業を行うノードプログラム２０６1〜２０６nを含む。
【００２５】
本発明の一態様によれば、データセンタ内の数百または数千のコンピュータを操作するため、管理者は、コンピュータに論理的オーガニゼーションを適用する。つまり、管理者は、データセンタ内のすべてのノードの単なるリストの代りに、論理構造としてノードを表すセットに様々なノード２０４1〜２０４nをグループ化する。単一のデータセンタに関してコンピュータの複数のそのような構造が、例えば、顧客または機能ごとにグループ化されて存在することが可能であり、またノードは、複数のセットに属することが可能である。セット情報は、コンピュータを、例えば、Ｕｎｉｃｏｄｅ文字で命名されたセットに配置することにより、コントローラによって維持されるデータストア３０２（図３）の中に、コントローラサービス２０８等によって記憶される。セットを介して、管理者は、論理的に編成されたグループのコンピュータをあたかも単一のコンピュータであるかのように操作することができる。データセンタ内に複数のコントローラが存在する場合、コントローラをグループ化することも実施可能であることに留意されたい。
【００２６】
セットを確立し、維持するため、１つまたは複数のアプリケーション、プロセス、スレッド、オブジェクト、および／またはその他のソフトウェア構成要素を含む管理プログラム２１０等は、１つまたは複数のユーザインターフェースを介するなどして、管理者が、コントローラサービス２０８と対話できるようにする。管理プログラム２１０により、管理者は、セットを作成し、ノードをセットに追加し、セットからノードを除去し、セットを削除し、セットの中の現在のノードをリストし、ノードが属するセットをリストすることができるようになる。
【００２７】
例えば、データセンタ管理は、ノードコンピュータの構成に様々な概念上の構造、ノードコンピュータが、データセンタ内の物理的位置（例えば、ケージ、ラック、およびスロットロケーション）によって識別される物理レイアウトに対応する構成などの構造を適用することができる。データセンタのこの見方により、管理部門は、例えば、ノードを取り替えることが必要な場合、ノードの物理ロケーションを探し出すことができる。あるいは、物理レイアウトセットにより、管理部門は、新しく購入されたコンピュータ（ノード）の設置場所を指定することができる。
【００２８】
各ノードを使用する顧客ごとにノードを編成する論理構造を含め、データセンタ内のノードを編成する他のやり方が存在する。これにより、管理者は、顧客と、その顧客によって現在、使用されている１つまたは複数のノードの間でマッピングを行い、特定の顧客の使用を追跡または監視する、またはその顧客のすべてのノードに変更を加えるようにすることができるようになる。データセンタの別の論理的な見方は、機能ごとにノードを編成することであり、機能とは、ノード上で実行されるアプリケーションである。例えば、特定のノードを、それらがＷｅｂサーバ、メディアサーバ、またはデータベースであるという理由でグループ化することができる。機能ごとにデータセンタを見ることにより、管理部門は、ある処理（特定のアプリケーションにパッチを適用するなどの）を、それ必要とするノードだけに対して行うことができる。以上は単なる例であることに留意されたい。というのは、例えば、ネットワークトポロジ（特定のスイッチに接続されたノードまたは負荷平衡）による、ＶＬＡＮによる、顧客サービスレベルによる、マシン機能による、および／またはインストールされたＯＳおよびサービスパッチレベルによって編成するというように、データセンタの管理部門が、自らのデータセンタ内のノードを編成するのを望む可能性があるやり方には、他の様々なものが存在するからである。次の例としてのテーブルで提示するとおり、任意の所与のノードを任意の数のセットにグループ化することができることに留意されたい。
【００２９】
【表１】
0005394123.tif 000002
【００３０】
本発明のこの態様に即して、ノードをセット（例えば、簡単な名前で区別される）にグループ化できることは、様々なオペレーションのパフォーマンスを単純化する。例えば、セットは、ある顧客によって使用中のノードコンピュータを、その顧客が問題を報告したときに識別することができ、したがって、それらのノードコンピュータのステータスに迅速にアクセスし、問題を解決することができる。ノードから収集された監視情報は、特定の顧客のためにＷｅｂサイトを介して閲覧可能な形態などに集約して、顧客が、自らのマシンのステータスをアクセスして見ることができるようにするのが可能である。ノードは、リソース消耗（例えば、ディスク空間が不足する）について監視し、マシンを使用して顧客のための警報を生成することができる。警報は、顧客に報告され（例えば、電子メールで）、かつ／または顧客に接触して、例えば、よりよいハードウェアまたは追加のサーバに構成をアップグレードするように勧めるため、販売スタッフによって使用可能である。
【００３１】
本発明の別の態様によれば、データセンタを管理するため、開始プロセス３０４を介するなどして、コントローラサーバ２０８上でオペレーションを開始することにより、データセンタ内の１つまたは複数のノードに対してオペレーションが行われる。図３で、開始プロセス３０４は、管理プログラム２１０の一環として表されているが、理解されようが、開始プロセスと管理プログラムは別々であることが可能であり、実際、開始プロセスは、スクリプトまたはその他の実行可能コードとすることが可能であることに留意されたい。さらに、簡明にするため、図３は、１つのノード２０４だけを示しているが、理解されるとおり、コントローラ２０２は、例えば、一度に、または何らかの順序で、複数のノードを制御できることに留意されたい。
【００３２】
図３に一般的に表すとおり、コントローラコンピュータ２０２上で、本発明のコントローラサービス２０４のコントローラプログラム３０６は、スキーマインターフェース３１０を介してアクセスされ、実行される。このスキーマ（図４〜図１２で一般的に示す）は、データセンタ内の利用可能なノード、セット、利用可能なオペレーション、および各オペレーションを実行することの結果の表現を提供する。一般に、コントローラコンピュータ２０２上で、コントローラサービス２０８は、スキーマインターフェース３１０、コントローラプログラム３０６、およびデータストア３０２を含むものと見なすことができる。コントローラサービス２０８にアクセスするのを望むどのプロセス、スクリプト、またはユーザインターフェースも、スキーマインターフェース３１０を介してそれを行う。コントローラプログラム３０６は、行うべき処理を決定する。この処理は、データストア３０２にアクセスすること、および／またはトランスポート層２１２を介して１つまたは複数のノード（ノード２０４などの）と通信することが含まれる。例えば、結果データ、および表現（ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）を管理者に提供するのに必要とされるその他の情報は、一般に、データストア３０２の中に保持される。データストアには、管理者が、スキーマインターフェース３１０を介してアクセスすることができる。通常の実施形態では、スキーマインターフェースは、本発明の譲受人に譲渡された米国特許第出願番号０９／０２０１４６に記載されるような、コンピュータプロセスおよびコンピュータ装置を表現するためのＣｏｍｍｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｍｏｄｅｌ（ＣＩＭ）標準から導出することが可能である。
【００３３】
一般に、オペレーションを行うためには、まず、管理プログラム２１０を介するなどして、そのオペレーションが行われる１つまたは複数のノードまたはノードのセットが選択される。その選択は、単一のコンピュータ、セットの中のすべてのコンピュータ、いくつかのセットの中のすべてのコンピュータ、または個々のコンピュータとセットの中のコンピュータが混合したものを指定することができる。選択からは、例えば、２つ以上の選択されたセットを介して同一のノードが指定されている場合、あらゆる重複を取り除くことができる。セットが、データセンタのオーガニゼーションの管理者によって選択された表現であるのに対し、選択は、一般に、少なくとも１つのオペレーションがそれに対して行われるように一時的に指定されたコンピュータの集合である。このため、選択は、セットとは異なっていることに留意されたい。言い換えれば、セットメンバ（およびセット自体）は、時間の経過とともに変化する可能性があるが、コンピュータノードのオーガニゼーションの継続する表現であるのに対し、選択は、特定のオペレーションの意図的な目標を表すコンピュータノードの一時的セットである。選択は、所与の集められた数のコンピュータに対してオペレーションまたは一連のオペレーションを行う必要があるときに作成される。オペレーションまたは一連のオペレーションが完了すると、選択の表現は、データセンタ内のコンピュータのオーガニゼーションに関する情報を失うことなしに、削除することができる。選択は、「一時的」セットと見なすことができる。いくつかの実施形態では、選択は、選択が、単一のセットまたは単一のノードだけを含むことができる縮退（ｄｅｇｅｎｅｒａｔｅ）ケースに限定することができる。
【００３４】
管理者が行うことができる特定のオペレーション（例えば、管理プログラム２１０を介して）には、選択を作成すること、選択を削除すること、および選択中のコンピュータをリストすることが含まれる。一実施形態では、選択は、コントローラ２０２上に記憶され、各選択は、選択が作成されたときに割振られた固有のシリアル番号で識別される。選択は、数千のコンピュータを含むデータセンタ内のオペレーションをサポートすることができ、各選択は、１つからデータセンタ内のメンバの総数まで、任意の数のコンピュータを含むことが可能である。どのオペレーションがどの装置上で実行されるかを追跡するため、レコードが保持され、これにより、何が実行されたかの監査を提供する。この監査は、通常、定期的にアーカイブされ、消去される。
【００３５】
データセンタ環境においては、コントローラ２０２は、データセンタ（少なくともその一部分の）の制御ポイントであり、データセンタに関する情報のリポジトリであることに留意されたい。この結果、そのような環境においては、コントローラは、災害が生じた場合、高度に使用可能であり回復可能である必要がある。可用性に関して、コントローラは、複数のクラスタ化されたマシンの共用ディスククラスタ環境を含むことができ、この環境では、いくつかのクラスタ化されたコンピュータに障害が起きても、コントローラ２０２のオペレーションに影響を与えないことが可能である。災害時回復に関して、グループ、スクリプト、スクリプトコード、ならびに前に完了したジョブおよび処理中のジョブの結果の詳細を含め、コントローラの状態をバックアップすることができる。バックアッププロセスは文書化して、管理者または他のサービスが、バックアップを定期的に行うために使用することができるスクリプトにカプセル化することができる。バックアップの後、コントローラ状態は新しいコントローラ上で復元する必要があり、またさらに、新しいコントローラは、前のコントローラによって前に制御されていたノードを管理下におく必要がある。同時に、不正コントローラがノードを管理下におくことができないよう、セキュリティが提供される。
【００３６】
ノード上で実行できるスクリプトは、コントローラ２０２上で（例えば、データストア３０２内のスクリプトデータベースの中、または別の場所に）記憶する。スクリプトは、目標ノード上で利用可能である任意のスクリプトホストを使用するように書くことが可能である。スクリプトデータベースは、遠隔ノード上で実行するのに利用可能なスクリプトに関する情報を含み、スクリプト自体は、コントローラのファイルシステム上に記憶することができ、データベースが、スクリプトに対するパスを含む。一実施形態では、スクリプトは、コントローラのファイルシステム上のいずれかの場所に置かれる。管理プログラム２１０等により、ファイルシステム上のスクリプトの作成および編集、スクリプトデータベースの中のスクリプトエントリの作成、スクリプトエントリの編集、スクリプトエントリの削除、スクリプトを使用する可能性のあるジョブ（以下に説明する）の作成、ジョブの削除、ジョブの編集、ジョブの実行、ジョブのステータスおよび結果の検索が可能になる。
【００３７】
本発明の一態様によれば、１つまたは複数の選択されたノード上でオペレーションまたは一連のオペレーションを行うため、選択が終わると、コントローラサービス２０８が、実行されるべきジョブを含むあるメッセージ（または複数のメッセージ）を作成する。メッセージは、好ましくは、ＸＭＬを使用してフォーマットされ、コントローラ上のメッセージ交換プロトコルおよびトランスポート層プロトコル２１２、ならびに選択中で指定された１つまたは複数のノードのそれぞれの上の対応するプロトコル２１４1〜２１４nを使用して、各選択された目標ノード（例えば、図３のノード２０４）に送信される。簡明にするため、コントローラプログラム３０６は、定義されたＸＭＬメッセージ交換プロトコル３１４（図３）を使用して、ノードコンピュータ２０４上のエージェントプログラム３１２を含むエージェントサービス２１８と直接に通信するものと見なすことができ、一方、コントローラ２０２上のトランスポート層２１２は、トランスポートプロトコル３１６（図３）を使用してノード２０４上のトランスポート層２１４と直接に通信するものと見なすことができる。トランスポート層２１２は、コントローラから複数のノード２０４1〜２０４nにメッセージを確実に送信することができ、ノード２０４が、メッセージをコントローラ２０２に送信するために使用することができる任意のシステムを含む。例えば、コントローラから複数のノードにメッセージを送信するために、マルチキャストを使用することができる。マルチキャストが利用可能ではない場合、またはターゲットが、単一のノードである場合、ユニキャストを使用することができる。代替のトランスポート層としては、メッセージを含めるのに標準のＨＴＴＰプロトコルを使用し、ユニキャストを使用することである。
【００３８】
一実施形態では、コントローラ２０２とノード２０４の間における通信は、Ｍｕｌｔｉｐｌｅ  Ｄｅｖｉｃｅ  Ｍａｎａｇｅｍｅｎｔ（ＭＤＭ）プロトコルを使用してスクリプトをエージェントサービス２１８に送信し、スクリプトを実行した結果を戻し、２進実行可能コードを実行するようにエージェントサービス２１８に告げ、エージェントサービス２１８を介してノード２０４上で他のオペレーションを実行し、エージェントサービス２１８からコントローラ２０２に警報およびイベント情報を送信する。この実施形態では、ＭＤＭプロトコルは、Ｓｅｎｄｅｒ−ｓｉｄｅ  Ｇｕａｒａｎｔｅｅｄ  Ｍｕｌｔｉｃａｓｔ（ＳＧＭ）を使用することなどにより、コントローラと１つまたは複数のエージェントの間においてネットワーク通信を確実に提供するトランスポート層プロトコル上でオペレーションする。本発明は、メッセージ交換プロトコルおよび／またはトランスポートプロトコルを介する論理通信によって主に説明するが、基礎となる物理ネットワーク２１６（有線であれ、無線であれ）がコントローラ２０２とノード２０４1〜２０４nを接続するものと理解されることに留意されたい。
【００３９】
１つの一般的タイプのオペレーションの例として、管理者は、コントローラコンピュータ２０２を介して、１つまたは複数の選択されたノード上で１組のコマンド（例えば、スクリプト）を実行する。これは、一般に、ノードの選択、およびメッセージを選択したノードに送信することによって達せられる。スクリプトに加えて、メッセージ交換プロトコル３１４は、事前コンパイルされたプログラム、またはその他のあるオペレーションの実行などの代替のタイプのオペレーションを可能にするように拡張可能である。
【００４０】
本発明のその他の態様によれば、ノード２０４は、エージェントプログラム３１２を含むエージェントサービス２１８を含む。一般に、エージェントサービス２１８は、コントローラ２０２の要求時に処理を行うこと、ならびに警報およびイベントをコントローラ２０２に送信することを担う。この目的で、エージェントプログラム３１２は、コントローラ２０２から通信（メッセージ）を受信し、メッセージの中で指定された要求される１つまたは複数の処理をどのように行うかを決定し（存在する場合）、また必要に応じて、処理を任意の引数（パラメータ）とともに適切な実行エンジン３２０に渡す。例として、コントローラ２０２が、エージェントプログラム３１８にスクリプトを送信する場合、実行エンジン３２０は、通常、対応するスクリプトインタープリタである。また、エージェントプログラムは、ノード２０４上における２進実行可能コードの実行などの、コントローラとコンピュータの間におけるプロトコルの一環である何らかの他のオペレーションも可能にしている。２進実行可能コードを送信する代りに、コントローラ２０２は、好ましくは、ノード２０４のためにそのコードに関するネットワークアドレスを送信して、そのコードをそのロケーションから実行するか、またはそのコードをダウンロードして実行することに留意されたい。完全にするため、ノードオペレーティングシステム２２０、ならびにコントローラオペレーティングシステム２２２を示している。
【００４１】
スクリプトおよびプログラムの実行に加えて、リブート、シャットダウン、またはサスペンド（低電力状態に移行する）などの他のオペレーションが、制御されるノードに要求される可能性がある。そのようなオペレーションが、即時に行われた場合（スクリプトを介するなどして）、ノード２０４は、結果をコントローラに提供できない可能性があるからである。代りに、そのようなオペレーションは、コマンドメッセージが受信され、理解されたことを基本的に明言する結果をコントローラ２０２にまず通信する特別機能取扱い構成要素３２２によって行われる。結果を送信した後、ノードは、要求を満たす適切な処理を行う。
【００４２】
要するに、ＭＤＭプロトコルにより、コントローラ２０２は、エージェント上でスクリプトを実行すること、標準のスクリプト記述ホストを使用すること、またはエージェント上で２進コードを実行することなどの特定のオペレーションを実行するように１つまたは複数のノードに要求することができる。プロトコルは、実行されるオペレーションの理解はしておらず、これにより、プロトコルが単純なままに保たれ、特別ケースオペレーションが回避される。ただし、いくつかのオペレーションは、プロトコル自体のオペレーションに対する影響を有し、したがって、プロトコルの中で表現される。そのような特別オペレーションには、ノードコンピュータをリブートすること、サスペンドすること、またはシャットダウンすることが含まれる可能性がある。また、ＭＤＭプロトコルは、コントローラが、ノードを制御するために最初にノードと通信するときなどの、管理情報を交換することを可能にする。
【００４３】
また、ＭＤＭプロトコルは、スクリプトまたはバイナリ、あるいは特別オペレーションを実行した結果をコントローラ２０２に送り返すのに使用される。ノード警報およびノードイベントをＭＤＭプロトコルならびにハートビートを介して送信して、ノードが適切にオペレーションしていることをコントローラに定期的に知らせることができる。間隔情報は、構成可能であり、またコントローラ２０２は、ＭＤＭプロトコルを介して間隔情報をノードに送信することができる。
【００４４】
オペレーションの結果を受信すると、コントローラ２０２は、オペレーションのレコードを保持する。この目的で、ノード２０４1〜２０４nから結果が入ってくるにつれ、結果は、戻されたメッセージから抽出されて、データベース３０２の中に記憶される。これは、各ノードごとに各オペレーションの継続中の完全なレコードを提供する。管理者またはプロセス（スクリプトなどの）は、コントローラ２０２上でこの情報を問い合わせて、各ノード上のオペレーションの成功を判定することができ、必要な場合、障害を調査または解決することができる。メッセージフォーマットは、ノード上のあらゆる警報のステータスを含め、各ノードの状態に関する情報をコントローラが保持するための手立ても提供する。
【００４５】
理解されようが、スクリプトの実行およびその他の処理の実行を含む、様々なエージェントサービスオペレーションが、データセンタ内のサーバに対して任意の操作を行う相当な柔軟性を管理者に与える。例えば、多くの通常の管理オペレーションでは、既成の試験済みのスクリプトを、事前構成されたサーバであることが可能なコントローラまたはノードコンピュータとともに提供する。そのようなスクリプトは、データセンタの管理者に、一般のオペレーションのためにデータセンタ内のサーバを管理する能力を与え、使用の準備のできたコントローラ２０２とともに提供する。さらなるスクリプトが、特定の機器サーバ等（キャッシュ機器などの新しいタイプの機器を含む）とともに提供される。そのような場合、管理者は、コントローラ２０２にスクリプトをロードし、この新しいスクリプトに関して知るためにコントローラプログラム３０６を構成するだけでよい。さらに、ノードコンピュータは、例えば、機能に基づき、関係のあるスクリプトを搭載して出荷し、このスクリプトをコントローラ２０２に自動的に提供することが可能である。特別な状況に関して、カスタムスクリプトを書き、試験して、新しいスクリプトに関して知るためにコントローラを構成することによってコントローラ２０２に追加することができる。
【００４６】
前述したとおり、各ノードコンピュータは、エージェントサービス２１８を含む。任意の所与のコントローラと同様に、エージェントのインストールは、ノードとともに提供される、例えば、コンピュータは、インストールを全く必要としない機器として出荷されることが可能である。あるいは、エージェントサービスは、管理されるべき各コンピュータに対してインストールを行う供給されたインストールスクリプトを介するなどして、インストールする必要のある別個のソフトウェアを含むことが可能である。
【００４７】
データセンタの処理の負担を単純化するため、エージェントサービス２１８を含むコンピュータをブートしたとき、エージェントサービス３１８が、Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ−ｎ−Ｐｌａｙ（ネットワーク上の自動検出コンピュータ装置に関する標準であるｕＰｎＰ）によって提供されるような自動検出プロトコルを介するなどして、検出構成要素３３０を介して自らの存在をネットワーク上で自動的に同報通信することが可能である。複数のネットワークインターフェースカード（ＮＩＣ）を有するノード上では、同報通信を行うのに使用されるＮＩＣを制限することができ、例えば、複数のＮＩＣが使用される場合には、次のリブートまで、応答するコントローラを含む最初ののＮＩＣだけが使用される。
【００４８】
コントローラ２０２は、検出リスニングプロセス３３２を介して同報通信を認識し、コンピュータが、コントローラが知っているコンピュータに関するコントローラの表現の中に既に存在していない場合、同報通信を行うコンピュータが追加され、コントローラは、そのコンピュータをノードとして参照する。この目的で、コントローラ２０２は、自動検出同報通信を認識したとき、自らが、そのノードについて既に知っているかどうかを判定する。既に知っている場合、そのノードは、データセンタ内で前にブートされたことがあり、制御されないノードまたは制御されるノードのリストの中にある。それが制御されるノードである場合、コントローラ２０２は、そのノードの制御を再確立する。どちらの場合も、コントローラは、ノードレコードにマークを付けて、ノードがネットワーク上でブートされたことを示す。ノードが、コントローラによって知られていない場合、コントローラ２０２は、それに応答して、そのノードに関する情報を自らの内部データベース３０２に追加する。コントローラ２０２によって獲得される情報は、ノードの固有識別子（ネットワークインターフェースカードのＢＩＯＳ  ＧＵＩＤまたはＭＡＣアドレスなどの大域的に固有のハードウェア識別子など）。ノードは、新しく検出されたとき、まず、制御されないノードと見なされ、管理者は、そのノードをコントローラ２０２によって制御されるノードにするかどうかの決定を行うことができる。
【００４９】
制御を単純化することに加えて、自動検出は、新しいマシンの自動構成の使用方法をさらに提供する。例えば、管理者は、すべての新しいマシンに対して、所与の１組のコマンド、例えば、新しいシステムをインベントリに記入するか、または現在、必要とされるホストフィックスを適用するか、あるいは所与の顧客に合せてそのマシンを構成するコマンドを実行するかを指定することができる。次に、管理者は、新しいコンピュータがコントローラ上に追加されたときに生じたイベントを消費するスクリプトを書き、適切な処理を行うことができる。検出の後、管理者は、データセンタ内のすべての新しいノードをリストすることができ、必要に応じてそれらのノードをセットに追加する、またはそれらのノードに対するオペレーションを行うことができる。容易に理解できるとおり、データセンタ内で新しいコンピュータを探し出すための自動検出メカニズムを使用することにより、すべての新しいコンピュータに関して情報（例えば、名前、シリアル情報およびＩＰ情報）を手作業で入力しなければならないことがなくなり、したがって、可能なデータエントリの誤りが回避される。このようにして、管理者は、データセンタ内容に関するインベントリ情報を保持するのを助ける、利用可能なコンピュータノードのオンライン参照リストを保有する。
【００５０】
セキュリティを提供するため、本発明は、データセンタの管理者によって許可されていないコントローラソフトウェアおよびエージェントソフトウェア（それぞれ、「不正コントローラ」および「不正エージェント」）に対して防御を行う。データセンタの管理者の管理下にあるコントローラおよびエージェントは、それぞれ、「承認されたコントローラ」および「承認されたエージェント」と呼ばれる。この目的で、いくつかのコントローラが存在する可能性があるネットワーク上に自動検出情報を同報通信するノードは、最初に応答するコントローラからの応答だけを受け入れるように構成される。ノードは、公開キー、秘密キー技術を使用して応答を受信すると、以降、そのコントローラおよび他の承認されたコントローラからの制御情報だけを受け入れる。通常、これは、ノードを最初に制御したコントローラだけとなるが、コントローラに障害が起き、取り替える必要があることが予期される。ただし、そのような取替え用コントローラは、秘密キーを介して承認される。応答する最初のコントローラが、不正コントローラである可能性があり、その場合、ノードは、データセンタの制御から失われることになるが、これは、エージェントを最初にブートする前にエージェントの上に適切な証明書データを配備することによって回避できることに留意されたい。新しいノードが、不正コントローラに取られた場合、データセンタの管理者にとってリソースの損失が生じる可能性があるが、不正コントローラは、ノード上の顧客情報に対するアクセスを全く有さない。
【００５１】
コントローラとノードの間で承認が確立されると、そのノードは、制御されるようになり、承認されたコントローラは、ノードの制御を引き継ぐことができる（例えば、元のコントローラに取って代るため）が、不正コントローラは、ノードの制御を引き継ぐことができない。不正コンピュータは、ネットワークをスニフィングすることもできるので、機密情報は、暗号化されずにネットワーク上で渡されることはなく、暗号化は、セキュリティ確保されたメッセージの目標ノードだけが、そのメッセージを暗号化解除できるようになっている。オペレーションは、呼び出されたとき、通信を暗号化する必要があるかどうかを指定することができる。これは、開始プロセスの要求で行われる、またはスクリプトデータベースの中で暗号化を必要とするものとしてスクリプトにマークが付けられているために行われる可能性がある。
【００５２】
コントローラ２０２によって保持されるデータストア３０２は、定義されたスキーマとして構成される。一般に、コントローラは、データセンタ内のノードの詳細、セット情報、利用可能なオペレーション、現在、進行中のオペレーション、および完了したオペレーションの結果を保持する。必要ではないが、便宜のため、このデータベーススキーマは、管理プログラム３０４がそれを介してコントローラプログラム３０６およびデータストア３０２とインターフェースを取る（スキーマインターフェース３１０を介して）オブジェクトモデルスキーマと同様に構成される。一実施形態では、オブジェクトモデルスキーマは、定義されたオブジェクトの形態で情報を表現するが、一般には、データベーススキーマは、照会されたときにオブジェクトを構築するのに使用されるレコード等を保持することに留意されたい。スキーマを一般的に図４〜図１２に表しており、また、付録Ａでさらに説明している。ただし、説明するスキーマは、一例に過ぎず、本発明は、データを保持または提示する特定のやり方は、全く対象としていない。
【００５３】
したがって、コントローラ２０２は、データベースの中に各ノードに関するある量の情報を保持する。例えば、各ノードは、通信関連データ（例えば、ＴＣＰ−ＩＰホストネーム）、固有識別子、およびその他の各種データを含む装置データ構造で表現される。この情報のほとんどは、ノードの名前などの、ノードの状態のキャッシュされた表現である。キャッシュされた情報には、次のテーブルに提示する項目が含まれる可能性があり、このテーブルは、ノード上で情報が変化した場合、どのようにその情報がコントローラ上で更新されるかに関する詳細も含む。
【００５４】
【表２】
0005394123.tif 000003
【００５５】
コントローラ上で保持されるノードに関する情報のその他の項目には、以下が含まれる。
【００５６】
【表３】
0005394123.tif 000004
【００５７】
ノードは、ノード名（ノードの名前の短縮形、例えば、「ｓｅｒｖｅｒ０７」）やノード上のＮＩＣカードのＭＡＣアドレスなどの様々な情報によってコントローラ上で識別される。ノード名は、コントローラ上のノードレコードに関する固有識別子として使用することができる。ノードがブートするたびに毎回、自動検出を使用して、これら両方の情報がノードからコントローラに送信される。自動検出が、ネットワーク上において利用可能ではない場合には、管理者は、少なくともノード名を含むノードレコードを手作業で追加する必要がある。
【００５８】
また、ノード名は、ノードと通信するためにコントローラ２０２によって使用されることも可能である。一実施形態では、コントローラは、ＤＮＳを使用して名前をＩＰアドレスにまで解決する。これは、ノード名を管理ＮＩＣ上のＩＰアドレスにマップするＤＮＳサーバに対するアクセスをコントローラが有するのを管理者が確実にする必要があることを意味する。ＤＮＳサーバは、静的データに基づき、または動的ＤＮＳを使用して現在のサーバ名およびＩＰアドレスを把握していることが可能である。管理ネットワークが、現在、ＤＮＳサーバを有さない場合には、コントローラ自体をＤＮＳサーバとして使用できることに留意されたい。ノード上のＩＰ変更を見張り、コントローラに更新を送信するプロセスなどの動的ＤＮＳに対する同様のプロセスも使用することができる。ノードが制御されるようになると、コントローラは、ノードに対する永久接続を確立する。
【００５９】
自動検出は、ノードと、マルチキャスト検出パケットの転送をサポートするコントローラの間のネットワークに基づき、例えば、パケットは、事前定義された（固定）マルチキャストＩＰアドレスおよびポートに対してノードによって送信される。すべてのデータセンタ環境が、マルチキャスト転送をサポートするわけではないので（例えば、ルータの限界またはポリシーのため）、データセンタは、マルチキャストドメインごとにコントローラを使用するように（通常、サブネットごとに１つのコントローラ）、または自動検出なしにオペレーションするように、その他のモードでオペレーションすることが可能である。その場合、そうでなければ自動であるいくつかのオペレーションが、手作業で行われる。
【００６０】
管理されるノードがリブートするとき、コントローラは、ノードに対するあらゆる永久接続を解く。現在の実施形態で、コントローラ２０２は、通信を自動的に再確立しようと試みるのではなく、ノードからの自動検出パケットを待つ。コントローラ２０２は、このパケットを受信したとき、ノードが利用可能であることを知り、そのノードとの接続を再確立する。自動検出が作業上、利用可能でない場合、管理者は、適切なメソッド、例えば、Ｃｏｎｔｒｏｌｌｅｒ．ＲｅｃｏｖｅｒＭａｎａｇｅｄＮｏｄｅメソッドを介するなどして、コントローラとリブートされたノードの間の通信を手作業で再確立する。一般に、メソッドは、値を戻さず、したがって、所望される場合、付録Ａに説明するとおり、呼出し元は、言語別メソッドを使用して、メソッド（または他のオペレーション）が失敗したかどうかを判定する必要があることに留意されたい。
【００６１】
スキーマを実装するオブジェクトモデルは、３つの主な特徴、つまりセット、装置、およびジョブを含む。セットは、装置のグループを表す。各セットは、固有名を有し、装置を全く含まない、あるいは１つまたは複数の装置を含むことが可能である。所与の装置は、複数のセットの中にあることが可能である。セットは、コントローラ上だけで表され、一実施形態では、装置は、どのセットに自らが入っているかについて、全く知識を有しておらず、セットに追加されたとき、またはセットから削除されたとき、通知を受けない。セットは、オブジェクト「セット（Ｓｅｔｓ）」として実装される。一実施形態では、装置だけが、セットのメンバであることが可能であるが、他の実施形態では、セットが、他のセットのメンバであることが可能であることに留意されたい。
【００６２】
装置は、コントローラが管理することのできるデータセンタ内の個々のサーバである。１つの現行の実施形態では、管理できる装置は、エージェントソフトウェアがインストールされたコンピュータだけである。装置は、その名前によって識別され、コントローラは、装置と通信するため、ＤＮＳを使用してこの名前をＩＰアドレスにまで解決する。
【００６３】
装置情報は、いくつかのオブジェクトの中に記憶される。デバイス（Ｄｅｖｉｃｅｓ）オブジェクトが、名前を含む基本情報を記憶し、一方、ＭＡＣアドレスは、ＤｅｖｉｃｅｓオブジェクトにリンクされるＤｅｖｉｃｅＨＷＡｄｄｒｓオブジェクトの中に記憶される。他のハードウェア情報（ＳＭＢＩＯＳ  ＧＵＩＤおよびディスクドライブ署名など）も、このオブジェクトのインスタンスの中に記憶することができる。異なるタイプの情報の区別をするため、ＤｅｖｉｃｅＴｙｐｅｓオブジェクトが、異なるタイプのハードウェアアドレスの定義を保持する。ＤｅｖｉｃｅＨＷＡｄｄｒｓの各インスタンスは、デバイスタイプ（ＤｅｖｉｃｅＴｙｐｅｓ）の対応するインスタンスにリンクされる。また、特定のＭＡＣアドレスに関連するＩＰアドレスも、特定のＭＡＣアドレスを表すＤｅｖｉｃｅＨＷＡｄｄｒｓインスタンスに関連するＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓのインスタンスの中に記憶することができる。現在、ＩＰアドレス情報は、ＭＡＣアドレスに関しては記憶されない。
【００６４】
ジョブとは、一般に、２つのタイプのジョブ情報、すなわち、実行される準備のできているジョブであるジョブテンプレート、および前に実行されたジョブであるジョブ履歴を指す。ジョブテンプレートは、ジョブインスタンス（ＪｏｂＩｎｓｔａｎｃｅｓ）オブジェクトの中に記憶される。このＪｏｂＩｎｓｔａｎｃｅｓオブジェクトのインスタンスは、２つのプロパティ、ジョブ名とジョブ識別子の組み合わせで識別される。ジョブテンプレートは、ゼロのジョブ識別子、およびゼロのジョブ識別子を有するジョブ呼び出し（ＪｏｂＩｎｖｏｃａｔｉｏｎｓ）の中で固有の名前とともに記憶される。ジョブテンプレートのプロパティは（ジョブ識別子を別にして）、ユーザが編集することができる。現行の実施形態では、ジョブテンプレートを記憶するのに、他のオブジェクトは全く使用されない。
【００６５】
ジョブ履歴は、いくつかのオブジェクトの中に記憶される。ＪｏｂＩｎｖｏｃａｔｉｏｎｓオブジェクトが、名前、ジョブ識別子、およびジョブが実行された時刻を含む基本情報を記憶する。ジョブ識別子は、ゼロ以外の値である。名前は、ブランクであることが可能であり、また他のＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスと同一であることが可能である（ジョブ識別子が、ジョブ履歴を一意的に識別するため）。ジョブ履歴を表す各ＪｏｂＩｎｖｏｃａｔｉｏｎは、Ｊｏｂｓオブジェクトのインスタンスにリンクされる。これは、ジョブが実行された装置の数にかかわらず、ジョブのステータスを表す。これは、個々の装置のそれぞれにおけるジョブのステータスに対する「親」であると見なすことができる。各装置上のジョブに関する実際のステータスは、装置ごとに１つのＪｏｂｓクラスのさらなるインスタンスの中に記憶される。これらのインスタンスのそれぞれは、親Ｊｏｂｓインスタンスにリンクされ、親インスタンスの「子」と見なすことができる。これにより、２つのレベルの親−子関係が形成され、この関係をさらなるレベルに拡張することができる。ジョブが、どの装置上でも実行されない場合（ジョブが実行されるセットが空であるため）には、親Ｊｏｂｓインスタンスは、どの子Ｊｏｂｓインスタンスにもリンクされないことに留意されたい。
【００６６】
個別の装置上のジョブのステータスに対応するＪｏｂｓインスタンスは、ジョブの実際の出力を記憶しない。代りに、出力は、ジョブログ（ＪｏｂＬｏｇｓ）オブジェクトの１つまたは複数のインスタンスの中に記憶される。ＪｏｂＬｏｇｓの各インスタンスは、ジョブの出力の一部を記憶する。部分的出力を順番に配置するようにこのオブジェクトのシーケンスプロパティを使用することにより、完全な出力を再構成することができる。ＪｏｂＬｏｇｓは、標準の誤り出力、標準の出力、およびジョブが実際にエグジットしたときのエグジットステータスを含む３つのタイプの出力を記憶する。ＪｏｂＬｏｇｓインスタンスは、ジョブからの出力がコントローラに入る際、作成される。ジョブが装置上で開始しなかったため（その場合、Ｊｏｂｓレコードは誤り指示を含む）、または出力ステータスまたはエグジットステータスが、まだ全く装置から受信されていないため、所与の（子）Ｊｏｂｓレコードに関連するＪｏｂＬｏｇｓが存在しないのが可能であることに留意されたい。
【００６７】
図４〜図１２から理解されるとおり、付録Ａ、および本発明の以上の説明、アーキテクチャ、構造、およびプロトコルにより、データセンタを管理する際に相当な柔軟性および効率が可能になる。第１の例をいくつかのコンピュータ上にアップグレードまたはパッチをインストールする際に見ることができる。管理者に各コンピュータのところに行かせて（場合により、遠隔式に）、アップグレードパッケージを実行する代りに、本発明のアーキテクチャおよび構造では、管理者は、コントローラのところに行き（場合により、遠隔式に）、コントローラ上に保持されるセットおよびノードリストから目標ノードを選択し、アップグレードを開始することができ、将来は、これを一度に行うことができる可能性がある。アップグレードが開始された後、管理者は、コントローラ上の結果を検査し、どのノードが更新を完了するのに失敗したか（存在する場合）を調べる。これは、アップグレードを行うのに必要とされる労力を相当に低減させ、アップグレードを行った結果の監査可能なログを自動的に保持し、また、（例えば、）アップグレードが、以前には手作業で各コンピュータに入力されなければならなかった特定の処理を必要とする場合、誤りの可能性も抑える。さらに、本発明の態様を使用して、オペレーションをコントローラの中に記憶し、実動システム上で同一のオペレーションを行う前に試験システム上で試験することができる。
【００６８】
この柔軟性および効率の第２の例を新しいホスティング顧客のために新しいサーバを追加する際に見ることができる。オペレーティングシステムを手作業でインストールし、次に、顧客に合せてコンピュータを構成する代りに、本発明の様々な態様で、管理者は、電源オンになっているが、実際に使用されていないいくつかの利用可能な「予備の」コンピュータを維持することができる。新しい顧客が契約したとき、１組のオペレーションを開始して（自動的または手作業で）、予備のコンピュータの１つを選択し、特定の顧客に合せてそれを構成することができる。また、この構成には、その顧客にサービスを提供するのに必要なあらゆるさらなる装置（スイッチまたは負荷平衡器）を構成することも含まれる。構成ステップは、手作業によってではなく、スクリプトによって行われるため、誤りのリスクが相当に低減される。さらに、構成ステップは、自動的に行われることが可能であり、（例えば、）顧客がデータセンタのＷｅｂサイト上で購入要求を完了した後、顧客に合せてシステムを自動的に構成するように、データセンタの管理者がシステムを構成するのを可能にする。
【００６９】
第３の例を一群のコンピュータのステータスに関するデータを監視し、収集する際に見ることができる。収集システムを手作業でセットアップすることにより、いくつかのコンピュータからデータを収集しなければならないのではなく、オペレーションをいくつかのコンピュータのそれぞれにおいて自動的に実行することができる。オペレーションは、コントローラに使用情報を定期的に報告することが可能であり、コントローラは、データストアまたは他の適切なメモリなどのストーレッジの中にその情報を記憶する。情報は、どのようにコンピュータがオペレーションしているかを理解するため、サービスにおける障害の理由を調査するため、または別の適切な目的で、管理者が後の時点で分析することができる。
【００７０】
図１３〜図１５を特に参照して本発明のオペレーションの説明に移ると、いくつかのノード上でオペレーションを行うため、ステップ５００で表すとおり、目標ノードが、まず選択され、行われるべきオペレーションを含むジョブがそのノードのために作成される。選択は、個別のノード、複数の個々のノード、セット、複数のセット、または以上の任意の組み合わせを選択することを含む可能性がある。行われるべきオペレーションは、スクリプト、２進プログラム、または他のタイプのタスクであることが可能である。開始プロセス３０４（これは、アプリケーション、Ｗｅｂ  ＵＩ、またはコマンドラインを介するユーザ、またはスクリプトまたは規則の中の自動化されたポリシーであることが可能である）が、選択を行ってオペレーションを選択することに留意されたい。ジョブ４０４が、選択上のこのオペレーションのためにデータストアの中で作成される。
【００７１】
ジョブは、実行される時点で、ステップ５０４で表されるとおり、提供される任意の引数で開始される。開始されたとき、ステップ５０６で、コントローラ２０２が、タスクに関する情報（例えば、スクリプトの場合、スクリプト自体および任意のパラメータ）を含むメッセージを作成する。次に、このメッセージが、コントローラ２０２上で、目標ノードに関連付けられる。
【００７２】
目標ノードのメッセージおよび表現がコントローラによって使用されてオペレーションが開始され、オペレーションは、一実施形態では、ステップ５０８で適切なＸＭＬメッセージを作成し、ステップ５１０でトランスポート層を使用してそのメッセージを目標ノードに送信することによって達せられる。この時点で、コントローラ２０２上のトランスポート層２１２には、目標ノードに関する情報、およびそのノードに送信されるべきメッセージが与えられている。制御は、開始プロセス３０４（コントローラ２０２上でオペレーションを開始したユーザインターフェース、スクリプト、またはプロセス）に戻されており、開始プロセスは、すべてのノード上でオペレーションが完了するのを待つ必要がないことに留意されたい。これにより、開始プロセス３０４が、所望どおり複数のオペレーションを開始し、これらのオペレーションの結果を後に収集するのが可能になる。
【００７３】
メッセージは、トランスポート層に渡され、トランスポート層は、例えば、ＴＣＰ／ＩＰネットワークを介して正しいノードにメッセージが届くのを確実にすることを担う。目標ノードで受け取られたとき、ステップ５１２で表されるとおり、ジョブが開始する。
【００７４】
図１４は、一般に、メッセージが受信されるステップ６００で開始する、ノード２０４などのノード上で実行されるジョブを表す。図１４では、垂直バーの左側が、ノード上のエージェントプログラムまたはエージェントサービスによって行われる処理を示し、一方、右側が、ノードのオペレーティングシステムによって行われる処理を示している。ノード上で、エージェントのトランスポート層が、メッセージを受信し、解釈のためにエージェントサービス２１８までメッセージを渡す。一般に、エージェントサービス２１８は、どのように処理を行うかを決定し、処理を実行し、結果が、トランスポート層を介してコントローラに戻される。
【００７５】
より詳細には、ステップ６０２は、メッセージからオペレーションを抽出することを表し、またステップ６０４は、使用する実行エンジンを決定することを表す。例えば、異なるタイプのスクリプトは、異なる実行エンジンを必要とし、実行の前に２進コードをダウンロードする必要がある。いずれにしても、ステップ６０６は、決定された実行エンジンにオペレーションおよびメッセージの中で渡されるあらゆる引数を送信することを表し、一方、ステップ６０８は、オペレーションを実行するオペレーティングシステムを表す。
【００７６】
ステップ６１０は、収集され、かつ／または別の仕方で記憶されたオペレーションの出力を表し、出力は、簡単な成功または失敗から、オペレーションによって要求されたデータの集合に至るまで、あらゆるものであることが可能である。ステップ６１２が、メッセージ（例えば、ＸＭＬフォーマットにおけるＭＤＭプロトコルの）を作成し、ステップ６１４が、トランスポート層を介してそのメッセージをコントローラ２０２に戻す。この方式では、オペレーションのあらゆる結果（スクリプトまたはプログラムからの出力などの）が、メッセージにフォーマットされ、トランスポート層を使用してコントローラに戻される。
【００７７】
図１５は、コントローラ２０２上でオペレーションを開始した開始プロセス３０４が、各ノード上でオペレーションの結果を判定できるやり方を表す。一般に、ステップ７００〜７０４を介して、コントローラは、オペレーションのレコードを保持する。例えば、ステップ７００で、ノードから結果が入って来るにつれ、ステップ７０２で、オペレーションごとに戻されたメッセージから結果が抽出され、ステップ７０４で、コントローラ２０２上のデータストア３０２（または他の適切なストーレッジ）の中に記憶される。この活動は、各ノードごとにオペレーションの進行中の完全なレコードを提供する。
【００７８】
ステップ７０８〜７１２を介して表すとおり、必ずしも開始プロセス３０４ではない管理者またはプロセス（スクリプトなどの）が、コントローラ２０２からこの情報を問い合わせて、各ノード上のオペレーションの成功を判定し、他のデータを照会し、必要な場合、障害を調査または解決することができる。
【００７９】
以上の詳細な説明から理解することができるとおり、データセンタ内などにおけるコンピュータ装置の管理を円滑にする複数装置管理の方法およびシステムが提供される。本方法および本システムは、非常に柔軟性があり、効率的で、複数のコンピュータ装置を管理することに関する費用を相当に削減する。
【００８０】
本発明は、様々な変更および代替の構成が可能であるが、本発明のいくつかの例示としての実施形態を図面で示し、以上に詳細に説明してきた。ただし、本発明を開示した特定の形態に限定する意図はなく、反対に、本発明は、本発明の趣旨および範囲の中に入るすべての変更形態、代替構成、および等価形態をカバーするものとする。
【００８１】
付録Ａ
１つの通常のＭＤＭ（Ｍｕｌｔｉｐｌｅ  Ｄｅｖｉｃｅ  Ｍａｎａｇｅｍｅｎｔ）実施形態では、コンピュータプロセスおよびコンピュータ装置を表現するためのＣｏｍｍｏｎ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｍｏｄｅｌ（ＣＩＭ）標準からスキーマインターフェースを導出することができる。例えば、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム上のそのような実施形態が、ＷＭＩスキーマと呼ばれる。本明細書における様々な情報は、そのような適切なスキーマおよびその他の関連データを説明するが、単に例であると考えられたい。
【００８２】
識別子の定義
セット名
セット名は、セットを一意的に識別する。セット名は、Ｓｅｔｓ．Ｎａｍｅプロパティの中に記憶され、最大で２５６のＵｎｉｃｏｄｅ文字であることが可能である。どの文字も有効であるが、印刷不可能な文字は、推奨されない。名前は、ケースインセンシティブ（ｃａｓｅ−ｉｎｓｅｎｓｉｔｉｖｅ）であるが、ケースは、保存される。セット名は、すべてのセット名のなかで固有である必要がある。
【００８３】
装置名
装置名は、装置を一意的に識別し、装置との通信を行うために装置のＩＰアドレスを探し出すのに使用される。装置名は、Ｄｅｖｉｃｅｓ．Ｎａｍｅプロパティの中に記憶される。装置名は、最大で２５６のＵｎｉｃｏｄｅ文字であることが可能である。どの文字も有効であるが、印刷不可能な文字は、推奨されない。名前は、ケースインセンシティブであるが、ケースは、保存される。セット名は、すべての装置名の中で固有である必要がある。装置名およびセット名は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓオブジェクトの中の単一のフィールド内に記憶されるため、同数の文字を有することに留意されたい。
【００８４】
ジョブ名
ジョブ名は、ジョブテンプレートを一意的に識別するのに使用され、ジョブ履歴レコードに関する１つの識別情報として使用される。ジョブ名は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓ．ＮａｍｅプロパティおよびＪｏｂｓ．Ｎａｍｅプロパティの中に記憶される。ジョブ名は、最大で５０のＵｎｉｃｏｄｅ文字であることが可能である。どの文字も有効であるが、印刷不可能な文字は、推奨されない。名前は、ケースインセンシティブであるが、ケースは、保存される。ジョブテンプレート（ジョブ識別子がゼロであるジョブ）に関して、ジョブ名は、固有である必要がある。ただし、ジョブ履歴レコードの中で、場合によっては複数回、同一の名前を使用することも可能である。
【００８５】
装置タイプ名
装置タイプ名は、装置のタイプを識別するのに使用される。装置タイプ名は、Ｄｅｖｉｃｅｓ．Ｔｙｐｅプロパティの中に記憶され、ＤｅｖｉｃｅＴｙｐｅｓ．Ｎａｍｅプロパティの値において定義される。装置タイプ名は、最大で５０のＵｎｉｃｏｄｅ文字であることが可能である。すべての文字が有効であるが、印刷不可能な文字は、推奨されない。名前は、ケースインセンシティブであるが、ケースは、保存される。装置タイプ名は、ＤｅｖｉｃｅＴｙｐｅｓのすべてのインスタンスのなかで固有である必要がある。
【００８６】
記述
記述は、通常、２５６のＵｎｉｃｏｄｅ文字である（ただし、特定の値に関しては、個々のオブジェクトの定義を参照すること）。キャリッジリターン（ｃａｒｒｉａｇｅ  ｒｅｔｕｒｎ）および改行文字を含め、どのＵｎｉｃｏｄｅ文字も有効である。
【００８７】
オブジェクト
各オブジェクトは、プロパティおよびメソッドを含むことが可能であり、また他のオブジェクトとの関連を有することが可能である。一実施形態では、オブジェクト、プロパティ、メソッド、および関連は、ＷＭＩを介して露出される。以下に説明するとおり、関連を実施するのに追加の関連クラスが使用される。
【００８８】
各オブジェクトの定義は、要約で始まり、その後に以下の形式の定義が続く。
【００８９】
【表４】
0005394123.tif 000005
【００９０】
クラスを作成することができる条件およびクラスを削除することができる条件を以下に説明し、このクラスが関連するその他のクラスに関する情報も説明している。クラスの各プロパティも、以下の形式でリストする。
【００９１】
【表５】
0005394123.tif 000006
【００９２】
各メソッドは、以下のとおり記述される。
【００９３】
【表６】
0005394123.tif 000007
【００９４】
セット
基本的に、セットは、複数装置管理の構成要素であり、何らかの論理グループ化または物理グループ化に従って装置をグループ化するオブジェクトを含む。ＳｅｔｓオブジェクトとＤｅｖｉｃｅｓオブジェクトの間には、１対多関係が存在する。Ｅｘｅｃｕｔｅメソッドにより、Ｓｅｔｓオブジェクトの各メンバ上でコマンドを実行することができる。
【００９５】
【表７】
0005394123.tif 000008
【００９６】
Ｓｅｔｓクラスのインスタンスは、ユーザ（または他のプロセス）によって作成される。一実施形態では、インスタンスは、決して他のモデルによって自動的に作成されることはない。Ｓｅｔｓクラスの新しいインスタンスのために必要な唯一のプロパティは、Ｎａｍｅである。Ｎａｍｅの値は、コントローラ上のＳｅｔｓのインスタンスのなかで固有である必要がある。Ｓｅｔｓクラスのインスタンスは、ユーザ（または他のプロセス）によって削除されることが可能である。インスタンスは、説明する実施形態では、決してオブジェクトモデルによって自動的に削除されることはない。あるインスタンスが削除されるとき、他のインスタンス（削除されるクラスを参照するインスタンスも含め）には、全く変更が行われない。
【００９７】
Ｓｅｔｓのインスタンスは、Ｄｅｖｉｃｅｓのインスタンスに対する関連を有することが可能である。Ｓｅｔｓのインスタンスは、セットのメンバであるＤｅｖｉｃｅｓの各インスタンスに対する関連を有する。Ｓｅｔｓの各インスタンスは、Ｄｅｖｉｃｅｓのゼロ、１つ、または複数のインスタンスに関連していることが可能である。また、Ｓｅｔｓのインスタンスは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに対する関連を有することも可能である。ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスがテンプレートである（ＪｏｂＩｎｖｏｃａｔｉｏｎｓのＲｏｏｔＪｏｂＩＤプロパティがゼロである）場合には、関連は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスによって表されるジョブテンプレートが、関連セット上で実行されるべきことを表す。ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスが、履歴レコードである（ＲｏｏｔＪｏｂＩＤがゼロではない）場合には、関連は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓの中のジョブが、関連セット上で実行されたという事実を表す。
【００９８】
セットプロパティ
Ｎａｍｅ
【００９９】
【表８】
0005394123.tif 000009
【０１００】
このプロパティの値は、Ｒｅｎａｍｅメソッドを使用して変更することができる。値は、システム上のＳｅｔｓインスタンスのなかで固有でなければならない。
Ｄｅｓｃｒｉｐｔｉｏｎ
【０１０１】
【表９】
0005394123.tif 000010
【０１０２】
これは、セットの自由テキスト記述である。この記述は、ＮＵＬＬつまり空であることが可能であり、更新することができる。
【０１０３】
未使用のプロパティ
Ｃａｐｔｉｏｎプロパティ、ＩｎｓｔａｌｌＤａｔｅプロパティ、およびＳｔａｔｕｓプロパティが、親クラスから継承されるが、現行の実施形態では、現在、未使用である。
【０１０４】
メソッド
ＡｄｄＤｅｖｉｃｅ
ＡｄｄＤｅｖｉｃｅを使用して、セットに制御された装置または制御されない装置を追加する。
【０１０５】
【表１０】
0005394123.tif 000011
【０１０６】
ＲｅｍｏｖｅＤｅｖｉｃｅ
【０１０７】
【表１１】
0005394123.tif 000012
【０１０８】
Ｒｅｎａｍｅ
【０１０９】
【表１２】
0005394123.tif 000013
【０１１０】
Ｅｘｅｃｕｔｅ
【０１１１】
【表１３】
0005394123.tif 000014
【０１１２】
このメソッドは、ジョブが実行されるセットのメンバに対してジョブが実行されるようにする。ジョブは、うまく作成された場合、そのジョブに対してＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスが作成されることを引き起こす。新しいＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスのＲｏｏｔＪｏｂＩＤプロパティの値が、このメソッドの戻り値として戻される。ジョブ実行は、非同期であり、したがって、このメソッドの成功は、ジョブ自体がエージェント上でうまくいくことを意味するのではないことに留意されたい。
【０１１３】
ＣｏｍｍａｎｄＴｙｐｅ引数は、ＣｏｍｍａｎｄフィールドおよびＰａｒａｍｅｔｅｒフィールドがどのように解釈されるべきかを指定する。
【０１１４】
【表１４】
0005394123.tif 000015
【０１１５】
これは、新しいＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスのＣｏｍｍａｎｄプロパティに書き込まれる。Ｐｒａｍｅｔｅｒｓ引数フィールドの値は、ＣｏｍｍａｎｄＴｙｐｅが３である場合、暗黙に無視される。Ｄｅｓｃｒｉｐｔｉｏｎ引数の最大長は、２５６のＵｎｉｃｏｄｅ文字である。これは、新しいＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスのＤｅｓｃｒｉｐｔｉｏｎプロパティの中に記憶される。これは、セットが空であることに関する誤りではない。この場合、ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスは、親Ｊｏｂｓインスタンスとともに通常どおり作成される。ただし、子Ｊｏｂｓインスタンスは存在しない。オブジェクトモデルのユーザは、この状況に備えていなければならない。
【０１１６】
特別コマンド
ＣｏｍｍａｎｄＴｙｐｅが３である場合には、Ｃｏｍｍａｎｄ引数は、以下の値のどれかを含む。
【０１１７】
【表１５】
0005394123.tif 000016
【０１１８】
テキストは、ケースインセンシティブである（つまり、例えば、「Ｒｅｂｏｏｔ」、「ＲＥＢＯＯＴ」、および「ｒｅｂｏｏｔ」はすべて、サーバをリブートさせる）。Ｃｏｍｍａｎｄ引数の値が、以上のどれかではない場合、メソッドは、誤りを戻す。
【０１１９】
Ｄｅｖｉｃｅｓ
Ｄｅｖｉｃｅｓは、セットのメンバである。セットは、装置のグループである。Ｄｅｖｉｃｅｓは、例えば、通常、サーバ機器である物理コンピュータシステムを表す。複数装置管理では、１つの目標は、複数のマシンに対して同時に管理を行うことである。それでも、装置オブジェクトでコマンドも実行することができる。
【０１２０】
【表１６】
0005394123.tif 000017
【０１２１】
作成
Ｄｅｖｉｃｅｓのインスタンスは、ユーザまたは他のプロセスの要求時に作成されること、またはエージェントからの自動検出パケットの受領に基づき、コントローラによって自動的に作成されることが可能である。Ｄｅｖｉｃｅｓクラスのインスタンスは、ユーザによって手作業で、または他のプロセスによって作成されることが可能である。新しいインスタンスは、少なくとも、Ｎａｍｅプロパティに対する値を必要とし、この値は、システム上のＤｅｖｉｃｅｓクラスの別のインスタンスのＮａｍｅとして既存であることはできない。Ｎａｍｅプロパティの値は、装置自体の上の管理インターフェースのＩＰアドレスにまで、コントローラ上で解決されることが可能な名前である必要がある。通常、この解決は、ＤＮＳサーバを使用して行われる。
【０１２２】
新しいインスタンスは、１つまたは複数のＭＡＣアドレスに関連していることが可能であり、また各ＭＡＣアドレスは、１つまたは複数のＩＰアドレスに関連していることが可能である。これは、Ｄｅｖｉｃｅｓクラスの新しいインスタンスをＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに関連付け、またＤｅｖｉｃｅＨＷＡｄｄｒｓをＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓに関連付けることによって示される。ただし、マシンと通信を行うには、名前だけがあればよい。コントローラは、ＤＮＳを使用して名前をＩＰアドレスにまで解決する。ＭＡＣおよびＩＰは、通信には使用されず、基本的に、コントローラ上の情報としてだけ使用される。インスタンスが作成された際、コントローラは、要求をエージェントに送り、ＩＰアドレスおよびＭＡＣアドレスを含むノード情報を獲得する。手作業で作成されたすべてのＤｅｖｉｃｅｓインスタンスに関して、ＬａｓｔＤｉｓｃｏｖｅｒｙＴｉｍｅは、ＮＵＬＬである。いつか後の時点で、このＤｅｖｉｃｅｓインスタンスにマッチする自動検出パケットが受領された場合、このフィールドは、パケットが受領された時刻で更新される。
【０１２３】
別法では、ＳＭＢＩＯＳ  ＧＵＩＤをコントローラの中に記憶し、装置を一意的に識別するのに使用することができる。これは、オブジェクトモデルに全く変更を加えずに行うことができる。というのは、ＳＭＢＩＯＳ  ＧＵＩＤは、新しい装置タイプ（ＳＭＢＩＯＳ  ＧＵＩＤを表すＤｅｖｉｃｅＴｙｐｅｓにリンクされたＤｅｖｉｃｅＨＷＡｄｄｒｓの中の）として記憶することができるからである。
【０１２４】
削除
Ｄｅｖｉｃｅｓクラスのインスタンスは、ユーザまたは他のプロセスによって削除されることが可能である。インスタンスは、Ｃｏｎｔｒｏｌｌｅｒ．ＲｅｆｒｅｓｈＤｅｖｉｃｅＬｉｓｔ（）メソッドが呼び出された場合、システムによって削除されることが可能である。Ｄｅｖｉｃｅｓのインスタンスが削除されるとき、当該の装置を参照するＤｅｖｉｃｅＨＷＡｄｄｒｓのあらゆるインスタンスも削除される（これは、リンクされたＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓの削除も引き起こす可能性がある）。
【０１２５】
関連
Ｄｅｖｉｃｅｓのインスタンスは、以下のクラスに対する関連を有することが可能である。
【０１２６】
・Ｓｅｔｓのインスタンスに対して
Ｄｅｖｉｃｅｓのインスタンスは、自らがメンバであるＳｅｔｓの各インスタンスに対する関連を有する。Ｄｅｖｉｃｅｓの各インスタンスは、Ｓｅｔｓのゼロ、１つ、または複数のインスタンスに関連していることが可能である。
【０１２７】
・ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに対して
Ｄｅｖｉｃｅｓのインスタンスは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓに対する関連を有する。ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスが、テンプレートである（ＪｏｂＩｎｖｏｃａｔｉｏｎｓのＲｏｏｔＪｏｂＩＤがゼロである）場合には、関連は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスによって表されるジョブテンプレートが、関連装置上で実行されるべきことを表す。ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスが履歴レコードである（ＲｏｏｔＪｏｂＩＤがゼロでない）場合には、関連は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓの中のジョブが、関連装置上で実行されたことを表す。
【０１２８】
・Ｊｏｂｓのインスタンスに対する
Ｄｅｖｉｃｅのインスタンスは、その装置上で実行される各ジョブの親ジョブを表すＪｏｂｓのインスタンスに対する関連を有する。
【０１２９】
・ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに対する
Ｄｅｖｉｃｅのインスタンスは、コントローラが知識を有する装置上の各ハードウェアアドレスごとのＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに対する関連を有する。現行のバージョンでは、コントローラ上に記憶されたハードウェアアドレスは、ＮＩＣカードのＭＡＣアドレスだけである。
【０１３０】
・ＤｅｖｉｃｅＴｙｐｅｓの単一のインスタンスに対する
Ｄｅｖｉｃｅｓのインスタンスは、装置タイプを与えるＤｅｖｉｃｅＴｙｐｅｓのインスタンスに対する関連を有する。現行のバージョンでは、単一の装置タイプだけがサポートされ、したがって、すべてのＤｅｖｉｃｅｓのインスタンスは、ＤｅｖｉｃｅＴｙｐｅｓの単一のインスタンスに関連する。
【０１３１】
プロパティ
Ｎａｍｅ
これは、親クラスから継承される。
【０１３２】
【表１７】
0005394123.tif 000018
【０１３３】
このプロパティの値は、Ｒｅｎａｍｅメソッドを使用して変更することができる。
【０１３４】
Ａｌｉｖｅ
【０１３５】
【表１８】
0005394123.tif 000019
【０１３６】
装置が制御されていない場合、このプロパティは、常に偽である。それ以外の場合、このプロパティは、装置が制御されるようになったとき、装置からハートビート（ｈｅａｒｔｂｅａｔ）が受け取られるたびに毎回、真に設定される（現在、偽に設定されている場合）。ハートビート期間は、コントローラに関するグローバルな設定である。エージェントは、ハートビート期間のたびに毎回、ハートビートパケットを送らなければならない。コントローラは、ハートビート期間の１．５倍の期間中に装置からハートビートを受け取らなかった場合、このプロパティを偽に設定する。使用されるハートビート期間は、コントローラ上で現在、設定されている期間である。この期間は、装置のハートビート期間とは異なる可能性がある。
【０１３７】
Ｃｏｎｔｒｏｌｌｅｄ
【０１３８】
【表１９】
0005394123.tif 000020
【０１３９】
このプロパティの値は、Ｍａｎａｇｅメソッドを使用して装置の制御を開始する、または終了することによって設定される。
【０１４０】
ＨｅａｒｔＢｅａｔＴｉｍｅ
【０１４１】
【表２０】
0005394123.tif 000021
【０１４２】
装置が制御されていない、または制御されなくなった場合、これはＮＵＬＬである。それ以外の場合、装置が制御されるようになったとき、これは、装置が制御されるようになった時刻に設定される。装置が制御されている間、これは、装置から最新のハートビートが受領された時刻に設定される。
【０１４３】
ＡｌｅｒｔＳｔａｔｕｓ
【０１４４】
【表２１】
0005394123.tif 000022
【０１４５】
装置が制御されていない、または制御されなくなった場合、これは、常にＵｎａｖａｉｌａｂｌｅに設定される。それ以外の場合、装置が制御されるようになったとき、これは、Ｓｔａｔｕｓ  ｎｏｔ  Ｋｎｏｗｎに初期設定される。ＥｎａｂｌｅＡｌｅｒｔｓ（）に対するコールが行われた後、これは、Ｕｎａｖａｉｌａｂｌｅ、Ｅｎａｂｌｅｄ、またはＤｉｓａｂｌｅｄであることが可能なエージェントから戻された値に設定される。
【０１４６】
Ｔｙｐｅ
【０１４７】
【表２２】
0005394123.tif 000023
【０１４８】
Ｄｅｓｃｒｉｐｔｉｏｎ
【０１４９】
【表２３】
0005394123.tif 000024
【０１５０】
ＬａｓｔＤｉｓｃｏｖｅｒｙＴｉｍｅ
【０１５１】
【表２４】
0005394123.tif 000025
【０１５２】
このＤｅｖｉｃｅｓのインスタンスにマッチする自動検出パケットが受領されるたびに毎回、その日付が現在の日付に更新される。これを使用して今までにネットワーク上になかった手作業で入力されたレコードを識別することができる。
【０１５３】
以下のプロパティは、親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、ＣｒｅａｔｉｏｎＣｌａｓｓＮａｍｅ、ＩｎｉｔｉａｌＬｏａｄＩｎｆｏ、ＩｎｓｔａｌｌＤａｔｅ、ＬａｓｔＬｏａｄＩｎｆｏ、ＮａｍｅＦｏｒｍａｔ  ＰｏｗｅｒＭａｎａｇｅｍｅｎｔＳｕｐｐｏｒｔｅｄ、ＰｏｗｅｒＭａｎａｇｅｍｅｎｔＣａｐａｂｉｌｉｔｉｅｓ、ＰｏｗｅｒＳｔａｔｅ、ＰｒｉｍａｒｙＯｗｎｅｒＣｏｎｔａｃｔ、ＰｒｉｍａｒｙＯｗｎｅｒＮａｍｅ、ＲｅｓｅｔＣａｐａｂｉｌｉｔｙ、Ｒｏｌｅｓ、Ｓｔａｔｕｓ、およびＴｉｍｅ。
【０１５４】
メソッド
ＥｎａｂｌｅＡｌｅｒｔｓ
【０１５５】
【表２５】
0005394123.tif 000026
【０１５６】
この呼出しは、同期である。警報が装置上でイネーブルにされる場合、装置は、現在の警報を戻す。警報がディセーブルにされている場合、コントローラは、この装置に関する警報の詳細を削除する。
【０１５７】
ＲｅｃｏｖｅｒＭａｎａｇｅＤｅｖｉｃｅ
【０１５８】
【表２６】
0005394123.tif 000027
【０１５９】
装置上の構成が破壊されているとユーザが考える場合、このメソッドを呼び出すことができる。コントローラは、以下の情報を装置に送る。
【０１６０】
・装置情報の要求
・この装置を管理する制御要求
・現行のハートビート構成情報（ハートビート間隔）
・この装置に関する現行の警報ステータス（イネーブルにされている、またはイネーブルにされていない）
この呼出しは、以上のすべてが処理された後、戻り、したがって、多少の時間がかかる可能性がある。
【０１６１】
Ｍａｎａｇｅ
【０１６２】
【表２７】
0005394123.tif 000028
【０１６３】
これは、装置に関する制御の状態を変更し、変更が完了したときに戻る。ＣｏｎｔｒｏｌＦｌａｇの値は、装置に対して行うオペレーションを指定する。
【０１６４】
【表２８】
0005394123.tif 000029
【０１６５】
プロトコルバージョンの誤りのために装置を制御しようとする試みが失敗した場合、Ｅｒｒｏｒが戻される。
【０１６６】
Ｅｘｅｃｕｔｅ
【０１６７】
【表２９】
0005394123.tif 000030
【０１６８】
ＳｅｔＰｏｗｅｒＳｔａｔｅメソッドは、親クラスから継承されるが、本実施形態では、現在、未使用である。
【０１６９】
ＤｅｖｉｃｅＴｙｐｅｓ
一実施形態では、装置は、同一の装置タイプ、「Ｍｉｃｒｏｓｏｆｔ  Ｓｅｒｖｅｒ  Ａｐｐｌｉａｎｃｅ」を報告する。
【０１７０】
【表３０】
0005394123.tif 000031
【０１７１】
ＤｅｖｉｃｅＴｙｐｅｓのインスタンスは、手作業で、または自動的に作成されることが可能である。手作業で作成されるとき、Ｎａｍｅは、既存のＤｅｖｉｃｅＴｙｐｅｓインスタンス全体のなかで固有である必要がある。手作業による作成は、自動検出が機能しないネットワーク上で利用することができる。
【０１７２】
ＤｅｖｉｃｅＴｙｐｅｓのインスタンスは、着信する自動検出パケットに基づき、またはＤｅｖｉｃｅｓのインスタンスの作成に基づいて自動的に作成されることが可能である。ＤｅｖｉｃｅｓＴｙｐｅｓのインスタンスが作成される別ののやり方は、Ｄｅｖｉｃｅｓのインスタンスの作成に基づく。各Ｄｅｖｉｃｅｓインスタンスは、ＤｅｖｉｃｅＴｙｐｅのストリングを含む。上記のストリングに対応するＤｅｖｉｃｅＴｙｐｅｓのインスタンスが存在しない場合、そのＮａｍｅとして上記のストリングを有し、ブランク（ｂｌａｎｋ）のＤｅｓｃｒｉｐｔｉｏｎを有するＤｅｖｉｃｅＴｙｐｅｓの新しいインスタンスが作成される。
【０１７３】
削除
ＤｅｖｉｃｅＴｙｐｅｓのインスタンスは、削除することができるが、削除することができるのは、削除されるインスタンスと同一タイプのストリングを有するＤｅｖｉｃｅｓのインスタンスが全く存在しない場合だけである。この理由の削除が失敗した場合、ＷＭＩ  ＤｅｌｅｔｅＩｎｓｔａｎｃｅメソッドは、誤りＷＢＥＭ＿Ｅ＿ＦＡＩＬＥＤを伴って戻らなければならない。
【０１７４】
関連
ＤｅｖｉｃｅＴｙｐｅｓのインスタンスは、同一タイプのＤｅｖｉｃｅｓの各インスタンスに関連している。
【０１７５】
プロパティ
Ｎａｍｅ
【０１７６】
【表３１】
0005394123.tif 000032
【０１７７】
デバイスタイプの名前は、変更することができない。
【０１７８】
Ｄｅｓｃｒｉｐｔｉｏｎ
【０１７９】
【表３２】
0005394123.tif 000033
【０１８０】
Ｃａｐｔｉｏｎプロパティ、ＩｎｓｔａｌｌＤａｔｅプロパティ、およびＳｔａｔｕｓプロパティが、親クラスから継承されるが、現行の実施形態では、現在、未使用である。このオプションに関するメソッドは存在しない。
【０１８１】
ＨＷＡＤＤＲＴＹＰＥＳ
すべての装置は、通常、多数の個々に識別可能なハードウェア部分を含む。各ハードウェア部分は、アドレス、つまり固有識別子を含むことが可能である。
【０１８２】
【表３３】
0005394123.tif 000034
【０１８３】
１つのバージョンでは、内部で使用されるアドレスタイプは、「ＭＡＣ」だけである。これは、装置のＭＡＣアドレスを記憶するのに使用される。ＨＷＡｄｄｒＴｙｐｅｓのインスタンスは、手作業で、または自動的に作成されることが可能である。インスタンスは、Ｔｙｐｅプロパティ値が、既存のＨＷＡｄｄｒＴｙｐｅｓインスタンスのＮａｍｅプロパティにマッチしないときにＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスが作成される場合、自動的に作成される。この場合、ＨＷＡｄｄｒＴｙｐｅｓの新しいインスタンスは、ＤｅｖｉｃｅＨＷＡｄｄｒｓ  Ｔｙｐｅプロパティの中の値と同じ値を有するＮａｍｅプロパティを伴って作成され、Ｄｅｓｃｒｉｐｔｉｏｎプロパティは、ブランクになる。
【０１８４】
削除
ＨＷＡｄｄｒＴｙｐｅｓのインスタンスは、削除することができる。削除は、Ｄｅｖｉｃｅｓのインスタンスのどれかが、削除されるインスタンス上のＮａｍｅプロパティと同じＴｙｐｅプロパティを含む場合、失敗する。
【０１８５】
関連
ＨＷＡｄｄｒＴｙｐｅｓのインスタンスは、このタイプのハードウェアに関するハードウェアアドレス情報を含むＤｅｖｉｃｅＨＷＡｄｄｒｓのすべてのインスタンスに関連している。
【０１８６】
プロパティ
Ｎａｍｅ
【０１８７】
【表３４】
0005394123.tif 000035
【０１８８】
Ｄｅｓｃｒｉｐｔｉｏｎ
【０１８９】
【表３５】
0005394123.tif 000036
【０１９０】
Ｃａｐｔｉｏｎプロパティ、ＩｎｓｔａｌｌＤａｔｅプロパティ、およびＳｔａｔｕｓプロパティが、親クラスから継承されるが、現行の実施形態では、現在、未使用である。このオブジェクトに関するメソッドは存在しない。
【０１９１】
ＤＥＶＩＣＥＨＷＡＤＤＲＳ
装置ハードウェアアドレスは、ＮＩＣなどのハードウェア部品を一意的に識別する。
【０１９２】
【表３６】
0005394123.tif 000037
【０１９３】
１つの現行の実施形態では、内部で使用されるハードウェアアドレスのタイプは、「ＭＡＣ」だけである。これは、装置のＭＡＣアドレスを記憶するのに使用される。ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスは、自動的に、または手作業で作成されることが可能である。自動作成は、受領された自動検出パケットに基づいて行われる。パケットが、ハードウェアアドレス（タイプおよびアドレスを含む）を含む場合には、そのハードウェアアドレスに対してＤｅｖｉｃｅＨＷＡｄｄｒｓの新しいインスタンスが作成される（これには、ＨＷＡｄｄｒＴｙｐｅｓのインスタンスの作成も伴う可能性がある）。
【０１９４】
削除
ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスは、削除することができる。また、インスタンスは、対応するＤｅｖｉｃｅインスタンスが削除されたとき、自動的に削除される。
【０１９５】
関連
・Ｄｅｖｉｃｅｓの単一のインスタンスに対して
ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスが、ハードウェアアドレスを含むＤｅｖｉｃｅｓのインスタンスに関連している。
【０１９６】
・ＨＷＡｄｄｒＴｙｐｅｓの単一のインスタンスに対して
ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスが、このＤｅｖｉｃｅＨＷＡｄｄｒｓインスタンスの中に記憶されたハードウェアアドレスのタイプを定義するＨＷＡｄｄｒＴｙｐｅｓのインスタンスに関連している。
【０１９７】
・ＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓのインスタンスに対して
ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスが、ＤｅｖｉｃｅＨＷＡｄｄｒｓのこのインスタンスに関連する各ＩＰアドレスごとにＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓのゼロまたはいくつかのインスタンスに関連している。この関連は、ＮＩＣハードウェアのアドレスを含むＤｅｖｉｃｅＨＷＡｄｄｒｓのためにだけ使用される。
【０１９８】
プロパティ
ＨＷＡｄｄｒ
【０１９９】
【表３７】
0005394123.tif 000038
【０２００】
ＤｅｖｉｃｅＮａｍｅ
【０２０１】
【表３８】
0005394123.tif 000039
【０２０２】
Ｔｙｐｅ
【０２０３】
【表３９】
0005394123.tif 000040
【０２０４】
未使用のプロパティ
Ｃａｐｔｉｏｎプロパティ、ＩｎｓｔａｌｌＤａｔｅプロパティ、ＮａｍｅおよびＳｔａｔｕｓプロパティが、親クラスから継承されるが、現行の実施形態では、現在、未使用である。このオブジェクトに関するメソッドは存在しない。
【０２０５】
ＤＥＶＩＣＥＨＷＩＰＡＤＤＲＳ
このオブジェクトは、現在、使用されない。
【０２０６】
ＪＯＢＩＮＶＯＣＡＴＩＯＮＳ
２つのカテゴリのＪｏｂｓ  Ｉｎｖｏｃａｔｉｏｎｓが存在する。第１のカテゴリは、テンプレートである。ゼロに等しいＲｏｏｔＪｏｂＩＤを有するＪｏｂｓ  Ｉｎｖｏｃａｔｉｏｎｓが存在する。つまり、これらは、単にテンプレートであり、特定の実行に関連していない。第２のカテゴリのＪｏｂｓ  Ｉｎｖｏｃａｔｉｏｎｓは履歴である。つまり、これらは、ジョブ呼出しの履歴レコードである。
【０２０７】
【表４０】
0005394123.tif 000041
【０２０８】
ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスは、手作業で、または自動的に作成されることが可能である。ジョブテンプレートは、手作業で作成され、一方、Ｊｏｂ履歴レコードは、自動的に作成される。ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスは、ユーザによって手作業で（または他のプロセスによって）作成されることが可能である。ジョブテンプレートだけを作成することができ（定義により、ＲｏｏｔＪｏｂＩＤがゼロであるＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンス）、ゼロ以外のＲｏｏｔＪｏｂＩＤを有するＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスを作成しようと試みるのは誤りである。ＪｏｂＩｎｖｏｃａｔｉｏｎｓの手作業で作成されたインスタンスは、その書込み可能なプロパティのどれも、後に変更することができる。
【０２０９】
自動作成（ジョブ履歴）
ジョブが実行されたとき（Ｄｅｖｉｃｅｓ．ＥｘｅｃｕｔｅまたはＳｅｔｓ．Ｅｘｅｃｕｔｅを使用して）、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスが作成される。これには、ＲｏｏｔＪｏｂＩＤの新しい固有の値（ゼロではない）が与えられる。新しいインスタンスのプロパティ、Ｎａｍｅ、Ｃｏｍｍａｎｄ、Ｐａｒａｍｅｔｅｒｓ、およびＤｅｓｃｒｉｐｔｉｏｎが、ジョブを作成したＤｅｖｉｃｅｓ．ＥｘｅｃｕｔｅメソッドまたはＳｅｔｓ．Ｅｘｅｃｕｔｅメソッドに対するＪｏｂＩｎｖｏｃａｔｉｏｎＮａｍｅ引数、Ｃｏｍｍａｎｄ引数、Ｐａｒａｍｅｔｅｒｓ引数、およびＤｅｓｃｒｉｐｔｉｏｎ引数の値でポピュレートされる。プロパティＴａｒｇｅｔＮａｍｅおよびＴａｒｇｅｔＴｙｐｅは、ジョブが実行されているセットまたは装置の名前、およびセットまたは装置のタイプで埋められる。自動的に作成されたＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスのプロパティは、変更することができない。ＷＭＩの中で、ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスのプロパティを変更しようと試みることにより、ＰｕｔＩｎｓｔａｎｃｅ（Ｐｕｔ＿ｆｒｏｍ  ｓｃｒｉｐｔ）メソッドがＷＢＥＭ＿Ｅ＿ＦＡＩＬＥＤ（ｓｃｒｉｐｔＯｎｌｙからのＷｂｅｍＥｒｒＦａｉｌｅｄを戻すことが引き起こされ、ジョブテンプレート（ＲｏｏｔＪｏｂＩＤがゼロであるインスタンス）とジョブ履歴（ＲｏｏｔＪｏｂＩＤがゼロではない場合）の両方を削除することができる。ジョブ履歴が削除された場合、すべての関連するＪｏｂｓインスタンスおよびＪｏｂＬｏｇｓインスタンスも削除される。これは、ＷＭＩの中で実施される。
【０２１０】
関連
・Ｄｅｖｉｃｅｓの単一のインスタンスに対して
ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスは、ジョブテンプレートがその装置上で実行されるように定義されている場合、またはジョブ履歴がその装置上で実行された場合、Ｄｅｖｉｃｅｓのインスタンスに関連している。この関連は、ＴａｒｇｅｔＴｙｐｅの値がＤｅｖｉｃｅｓである場合にだけ存在し、そうである場合、関連は、ＴａｒｇｅｔＮａｍｅプロパティの中で与えられているのと同じ名前を有するＤｅｖｉｃｅｓインスタンスに対するものである。
【０２１１】
・Ｓｅｔｓの単一のインスタンスに対して
ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスは、ジョブテンプレートがそのセット上で実行されるように定義されている場合、またはジョブ履歴がそのセット上で実行された場合、Ｓｅｔｓのインスタンスに関連している。この関連は、ＴａｒｇｅｔＴｙｐｅの値がＳｅｔｓである場合にだけ存在し、そうである場合、関連は、ＴａｒｇｅｔＮａｍｅプロパティの中で与えられているのと同じ名前を有するＳｅｔｓインスタンスに対するものである。
【０２１２】
・Ｊｏｂｓの単一のインスタンスに対して
ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓによって表されるジョブを実行した結果を与えるＪｏｂｓのインスタンスに関連している。この関連は、ＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスが履歴レコードである（つまり、ＲｏｏｔＪｏｂＩＤがゼロではない）場合にだけ存在する。
【０２１３】
プロパティ
ＲｏｏｔＪｏｂＩＤ
【０２１４】
【表４１】
0005394123.tif 000042
【０２１５】
ルートジョブ固有識別子。これは、任意の６４ビットの値であることが可能である。この値は、ゼロである場合、このＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンスが、前に実行されたジョブに関する履歴レコードではなく、テンプレートであることを示す。この値がゼロ以外である場合には、このインスタンスは、履歴レコードである。
【０２１６】
Ｎａｍｅ
【０２１７】
【表４２】
0005394123.tif 000043
【０２１８】
これは、Ｄｅｖｉｃｅｓ．ＥｘｅｃｕｔｅまたはＳｅｔｓ．ＥｘｅｃｕｔｅにＪｏｂＩｎｖｏｃａｔｉｏｎＮａｍｅ引数として渡されたジョブの名前を記憶する。
【０２１９】
ＴａｒｇｅｔＮａｍｅ
【０２２０】
【表４３】
0005394123.tif 000044
【０２２１】
ジョブがそこで実行されたターゲット名、ＤｅｖｉｃｅｓまたはＳｅｔｓ
ＴａｒｇｅｔＴｙｐｅ
【０２２２】
【表４４】
0005394123.tif 000045
【０２２３】
Ｃｏｍｍａｎｄ
【０２２４】
【表４５】
0005394123.tif 000046
【０２２５】
ターゲット上で呼び出されるコマンド。
【０２２６】
Ｐａｒａｍｅｔｅｒｓ
【０２２７】
【表４６】
0005394123.tif 000047
【０２２８】
呼び出されるコマンドに対するパラメータ
Ｄｅｓｃｒｉｐｔｉｏｎ
【０２２９】
【表４７】
0005394123.tif 000048
【０２３０】
未使用のプロパティ
以下のプロパティが親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、ＥｌａｐｓｅＴｉｍｅ、ＩｎｓｔａｌｌＤａｔｅ、Ｎｏｔｉｆｙ、Ｏｗｎｅｒ、Ｐｒｉｏｒｉｔｙ、ＳｔａｒｔＴｉｍｅ、Ｓｔａｔｕｓ、ＴｉｍｅＳｕｂｍｉｔｔｅｄ、ＵｎｔｉｌＴｉｍｅ。
【０２３１】
メソッド
Ｒｅｎａｍｅ
【０２３２】
【表４８】
0005394123.tif 000049
【０２３３】
ＪＯＢＳ
Ｊｏｂｓオブジェクトは、Ｊｏｂ  Ｉｎｖｏｃａｔｉｏｎのトポロジをキャプチャする。例えば、ユーザが、セットオブジェクトを有し、そのセット上でＥｘｅｃｕｔｅを呼び出した場合には、Ｒｏｏｔ  Ｊｏｂとして作成された１つのＪｏｂｓ  Ｏｂｊｅｃｔが存在し、またセットの各装置ごとに作成されたＪｏｂｓオブジェクトも存在する。Ｒｏｏｔ  Ｊｏｂｓオブジェクトは、Ｊｏｂｓのトポロジ構造に対するエントリとして使用される。一実施形態では、親子関係だけが使用されるが、モデルは、深さＮのツリーとしてインスタンス化することができる。
【０２３４】
【表４９】
0005394123.tif 000050
【０２３５】
Ｊｏｂｓは、ジョブが開始されたとき、システムによって自動的に作成される（例えば、メソッドＳｅｔｓ．ＥｘｅｃｕｔｅまたはＤｅｖｉｃｅｓ．Ｅｘｅｃｕｔｅにより）。
Ｊｏｂｓのインスタンスは、更新することができない。親ジョブを表すＪｏｂｓのインスタンスが削除された場合、以下もまた、削除される。
【０２３６】
・関連するＪｏｂＩｎｖｏｃａｔｉｏｎｓインスタンス
・Ｊｏｂｓインスタンスに関連するＪｏｂｓの子インスタンス
・子Ｊｏｂインスタンスのそれぞれに関連するＪｏｂＬｏｇｓインスタンス
これは、ジョブ呼出しのレコード、各装置上のジョブのステータス、および各装置上のジョブの結果を削除する。
現在、進行中のジョブを削除することが可能である。これが行われた場合、コントローラから受け取られたジョブからのさらなる出力は、全く記憶されず、誤りが全く報告されない。
【０２３７】
関連
・ＪｏｂＩｎｖｏｃａｔｉｏｎｓの単一のインスタンスに対して
Ｊｏｂｓのインスタンスは、ジョブを表すＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに関連している。
【０２３８】
・ＪｏｂＬｏｇｓのインスタンスに対して
Ｊｏｂｓのインスタンスは、特定の装置上におけるこのジョブの実行からの出力を含むＪｏｂＬｏｇｓのインスタンスに関連する。この関連は、Ｊｏｂｓのインスタンスが、親インスタンスではなく単一の装置を表す場合にだけ存在する。
【０２３９】
・Ｊｏｂｓのインスタンスに対して
Ｊｏｂｓのインスタンスは、親Ｊｏｂｓインスタンスの子プロセスを表す親Ｊｏｂｓのインスタンスに関連している。現行のバージョンでは、親が、複数の装置上で実行されるジョブを表し、子が、個々の装置からの結果を表す１つのレベルの親−子関係だけがサポートされている。
【０２４０】
・Ｄｅｖｉｃｅｓの単一のインスタンスに対して
Ｊｏｂｓのインスタンスは、Ｊｏｂｓインスタンスが、単一の装置上でジョブを実行した結果を保持する場合、Ｄｅｖｉｃｅｓのインスタンスに関連している。この関連は、ジョブが実行されている装置を与える。
【０２４１】
プロパティ
ＪｏｂＩＤ
【０２４２】
【表５０】
0005394123.tif 000051
【０２４３】
ＰａｒｅｎｔＪｏｂＩＤ
【０２４４】
【表５１】
0005394123.tif 000052
【０２４５】
ＤｅｖｉｃｅＮａｍｅ
【０２４６】
【表５２】
0005394123.tif 000053
【０２４７】
ＳｔａｒｔＴｉｍｅ
【０２４８】
【表５３】
0005394123.tif 000054
【０２４９】
ＥｎｄＴｉｍｅ
【０２５０】
【表５４】
0005394123.tif 000055
【０２５１】
ＪｏｂＳｔａｔｕｓ
【０２５２】
【表５５】
0005394123.tif 000056
【０２５３】
Ｓｅｔｓ．ＥｘｅｃｕｔｅメソッドまたはＤｅｖｉｃｅｓ．Ｅｘｅｃｕｔｅメソッドが戻ったとき、ステータスの値は、２、３、または１１のうちの１つである。どの装置上でもジョブを開始できない場合、ステータスは、２に設定される。装置のいくつかでジョブを開始できない場合、ステータスは、１１に設定される。それ以外の場合、ジョブは、すべての装置上で開始されており、ステータスは、３に設定される。
【０２５４】
Ｅｘｅｃｕｔｅメソッドが戻った後、呼出し元は、親Ｊｏｂｓインスタンスに関するステータスの値をポーリングすることができる。ジョブが、少なくとも１つの装置上でまだ実行されている場合、ステータスは、３または１１である。ジョブが、すべての装置上で終了した場合、ステータスは、０または１である。どの装置上でもジョブが全く開始しなかった場合、ステータスは、２である。
【０２５５】
子ジョブに関して、有効な値は、０および３ないし１０である。値は、子Ｊｏｂｓオブジェクトが作成されたとき、３に初期設定される。ジョブ実行中に誤りが生じた場合、ＪｏｂＳｔａｔｕｓが、５または７ないし１０のどれかに更新される。ジョブが、装置にうまく伝送された場合、ＪｏｂＳｔａｔｕｓは、４に設定される。
Ｊｏｂｓ．Ｓｔｏｐを呼び出すユーザによってジョブが停止された場合、ＪｏｂＳｔａｔｕｓは、６に設定される。ジョブがうまく完了した場合、ＪｏｂＳｔａｔｕｓは、０に設定される。
【０２５６】
以下のプロパティが親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、Ｄｅｓｃｒｉｐｔｉｏｎ、ＩｎｓｔａｌｌＤａｔａ、Ｎａｍｅ、およびＳｔａｔｕｓ。
【０２５７】
メソッド
Ｓｔｏｐ
【０２５８】
【表５６】
0005394123.tif 000057
【０２５９】
このメソッドは、装置上で実行中のジョブを停止させる。このメソッドが、親ジョブを表すインスタンス上で実行された場合、まだ実行中のすべての子チルが停止される。ユーザによって停止させられたジョブは、「ユーザによりジョブ停止」のＳｔａｔｕｓプロパティ値を有する。
【０２６０】
ＧｅｔＯｕｔｐｕｔ
【０２６１】
【表５７】
0005394123.tif 000058
【０２６２】
ＯｕｔｐｕｔＴｙｐｅに関する値は、以下のとおりである。
【０２６３】
・０＝エグジット（ｅｘｉｔ）ステータスを獲得する
・１＝標準の出力を獲得する
・２＝標準の誤りを獲得する
・３＝すべての出力を獲得する（順次に）
このメソッドは、子Ｊｏｂインスタンスに対してだけ有効である。ＯｕｔｐｕｔＴｙｐｅが０である場合、エグジットステータスがＯｕｔｐｕｔストリングの中で戻される。例えば、３２のエグジットステータスは、Ｏｕｔｐｕｔの中でストリング「３２」として戻される。
【０２６４】
ＪＯＢＬＯＧＳ
ＪｏｂＬｏｇｓは、スクリプトまたは実行ファイルの実行の出力をキャプチャする。ジョブログは、Ｊｏｂｓに関連している。任意のＪｏｂｓに対してＮ個のＪｏｂＬｏｇｓが存在することが可能である。
【０２６５】
【表５８】
0005394123.tif 000059
【０２６６】
ＪｏｂＬｏｇｓは、ジョブが開始されたとき、システムによって常に自動作成される（例えば、メソッドＳｅｔｓ．ＥｘｅｃｕｔｅまたはメソッドＤｅｖｉｃｅｓ．Ｅｘｅｃｕｔｅによって）。
ＪｏｂＬｏｇｓクラスのインスタンスは、更新することができず、ＪｏｂＬｏｇｓのインスタンスは、ＷＭＩの中で削除することができない。関連は、Ｊｏｂｓの単一のインスタンスに対するものである。ＪｏｂＬｏｇｓのインスタンスは、この出力を生成した装置およびジョブを与えるＪｏｂｓのインスタンスに関連している。
【０２６７】
プロパティ
ＪｏｂＩＤ
【０２６８】
【表５９】
0005394123.tif 000060
【０２６９】
Ｓｅｑｕｅｎｃｅ
【０２７０】
【表６０】
0005394123.tif 000061
【０２７１】
１で開始して上昇する。ｓｔｄｏｕｔ、ｓｔｄｅｒｒ、エグジットステータスに関して使用されるのと同じ順序番号。
【０２７２】
ＬｏｇＴｉｍｅ
【０２７３】
【表６１】
0005394123.tif 000062
【０２７４】
ＯｕｔｐｕｔＴｙｐｅ
【０２７５】
【表６２】
0005394123.tif 000063
【０２７６】
ＯｕｔｐｕｔＤａｔａ
【０２７７】
【表６３】
0005394123.tif 000064
【０２７８】
以上のプロパティが親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、Ｄｅｓｃｒｉｐｔｉｏｎ、ＩｎｓｔａｌｌＤａｔｅ、Ｎａｍｅ、およびステータス。このオブジェクトに関するメソッドは存在しない。
【０２７９】
ＡＬＥＲＴＳ
装置ハードウェアアドレスは、ＮＩＣなどのハードウェア部品を一意的に識別する。
【０２８０】
【表６４】
0005394123.tif 000065
【０２８１】
警報オブジェクトは、コントローラに警報を報告する管理される装置からのすべての警報のコピーを保持する。装置が警報を報告するか否かは、Ｄｅｖｉｃｅｓ．ＥｎａｂｌｅＡｌｅｒｔｓ（）メソッドを使用して設定される。Ａｌｅｒｔｓ（アラート）オブジェクトの各インスタンスは、単一の装置からの単一の警報を表す。Ａｌｅｒｔインスタンスは、装置から提供される情報に基づいて常に自動的に作成される。Ａｌｅｒｔインスタンスは、手作業で作成することはできない（ＷＭＩの中で）。
このクラスのインスタンスは、更新することができず、Ａｌｌｅｒｔｓクラスのインスタンスを削除することにより、装置自体において警報が消去されることが生じる。
関連は、Ｄｅｖｉｃｅｓの単一のインスタンスに対するもの、警報が作成された装置を表すＤｅｖｉｃｅｓのインスタンスに対するものである。
【０２８２】
プロパティ
ＤｅｖｉｃｅＮａｍｅ
【０２８３】
【表６５】
0005394123.tif 000066
【０２８４】
これは、警報がそこで作成された装置の名前を含む。
【０２８５】
Ｃｏｏｋｉｅ
【０２８６】
【表６６】
0005394123.tif 000067
【０２８７】
ＡｌｅｒｔＴｙｐｅ
【０２８８】
【表６７】
0005394123.tif 000068
【０２８９】
ＡｌｅｒｔＩＤ
【０２９０】
【表６８】
0005394123.tif 000069
【０２９１】
ＡｌｅｒｔＬｏｇ
【０２９２】
【表６９】
0005394123.tif 000070
【０２９３】
ＡｌｅｒｔＳｏｕｒｃｅ
【０２９４】
【表７０】
0005394123.tif 000071
【０２９５】
ＡｌｅｒｔＲｅｐｌａｃｅＳｔｒｉｎｇ
【０２９６】
【表７１】
0005394123.tif 000072
【０２９７】
これは、装置から受け取られたフォーマットで記憶される。現在、これは、改行文字（文字コード１０進法１０）によって分けられた値のリストとしてのフォーマットである。値がコンマを含む場合、エスケープは全く行われない。
【０２９８】
ＲｅｃｅｉｖｅｄＴｉｍｅ
【０２９９】
【表７２】
0005394123.tif 000073
【０３００】
これは、コントローラが装置から警報通知を受け取った時刻である。
【０３０１】
以下のプロパティが親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、Ｄｅｓｃｒｉｐｔｉｏｎ、ＩｎｓｔａｌｌＤａｔｅ、Ｎａｍｅ、およびＳｔａｔｕｓ。このオブジェクトに関するメソッドは存在しない。
【０３０２】
ＣＯＮＴＲＯＬＬＥＲ
Ｃｏｎｔｒｏｌｌｅｒクラスが、コントローラを構成し、制御するために使用される。コントローラは、ハートビート間隔などのいくつかのグローバルな構成可能パラメータを有する。さらに、コントローラのサービスおよびサブサービスを開始および停止することができる。
【０３０３】
【表７３】
0005394123.tif 000074
【０３０４】
これは、作成および削除に関する単一要素のみからなるクラスであり、このインスタンスは、更新することができない。関連は、全く存在しない。
【０３０５】
プロパティ
ＨｅａｒｔｂｅａｔＩｎｔｅｒｖａｌ
【０３０６】
【表７４】
0005394123.tif 000075
【０３０７】
指定されない場合、値１２０秒（２分）が使用される。設定することができる最小値は、６０秒である。以下のプロパティが親クラスから継承されるが、現在、未使用である。Ｃａｐｔｉｏｎ、Ｄｅｓｃｒｉｐｔｉｏｎ、、およびＮａｍｅ。
【０３０８】
メソッド
ＲｅｆｒｅｓｈＤｅｖｉｃｅＬｉｓｔ
【０３０９】
【表７５】
0005394123.tif 000076
【０３１０】
リフレッシュ装置リストは、２つのステップを有するプロセスである。まず、制御されていない装置が、データストアから除去される。次に、「Ｍｉｃｒｏｓｏｆｔ  Ｓｅｒｖｅｒ  Ａｐｐｌｉａｎｃｅ」タイプを有する装置に関して請求された検出が開始される。その後、メソッドは戻る。この時点で、検出を開始したことの結果は、コントローラによって受け取られていない可能性があり、したがって、Ｄｅｖｉｃｅｓテーブルは、空または部分的に完成している可能性がある。
【０３１１】
ＳｅｔＨｅａｒｔｂｅａｔＩｎｔｅｒｖａｌ
【０３１２】
【表７６】
0005394123.tif 000077
【０３１３】
このメソッドは、Ｃｏｎｔｒｏｌｌｅｒ．ＨｅａｒｔｂｅａｔＩｎｔｅｒｖａｌプロパティの中のハートビート間隔を更新する。次に、このメソッドは、この更新された間隔をすべての管理される装置に送信する。その後、メソッドは戻る。メソッドは、更新されたハートビートを装置に送信することのステータスを待たない。この値は、秒数で与えられる。設定することのできる最小値は、６０である。値を６０を下回って設定しようとする試みがなされた場合、記憶された値は、一実施形態では、６０に設定される。
【０３１４】
この値が増加された場合、装置は、１．５*オールドハートビート間隔の後、活動状態にないように見える可能性がある（Ｄｅｖｉｃｅｓ．Ａｌｉｖｅプロパティは、偽に設定される）。ＷＭＩの中で、関連クラスと呼ばれる特別クラスが、オブジェクトのインスタンスをリンクするのに使用される。このセクションは、オブジェクトモデルを実装するＷＭＩクラスをリンクするのに使用される関連クラスを定義する。
関連クラスは、ＣＩＭ＿ＣｏｍｐｏｎｅｔまたはＣＩＭ＿Ｄｅｐｅｎｄｅｎｃｙから導出される。
【０３１５】
ＣＩＭ＿Ｃｏｍｐｏｎｅｎｔは、親インスタンスおよび子インスタンスをそれぞれ指定するプロパティＧｒｏｕｐＣｏｍｐｏｎｅｎｔおよびプロパティＰａｒｔＣｏｍｐｏｎｅｎｔを含む。ＣＩＭ＿Ｄｅｐｅｎｄｅｎｃｙは、依存関係を指定するプロパティＡｎｔｅｃｅｄｅｎｔおよびプロパティＤｅｐｅｎｄｅｎｔを含む。以下に説明するとおり、親クラスがリストされ、次に、プロパティ（ＧｒｏｕｐＣｏｍｐｏｎｅｎｔおよびＰａｒｔＣｏｍｐｏｎｅｎｔ、またはＡｎｔｅｃｅｄｅｎｔおよびＤｅｐｅｎｄｅｎｔ）の値が記述される。どのクラスも、追加のプロパティを追加すること、あるいは記述またはその他の属性を取り消すことをしない。
【０３１６】
ＤＥＶＩＣＥＨＷＡＤＤＲＴＯＤＥＶＩＣＥＨＷＩＰＡＤＤＲ
【０３１７】
【表７７】
0005394123.tif 000078
【０３１８】
ＧｒｏｕｐＣｏｍｐｏｎｅｎｔは、ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに対するリファレンスであり、ＰａｒｔＣｏｍｐｏｎｅｎｔは、ＤｅｖｉｃｅＨＷＩＰＡｄｄｒｓのインスタンスに対するリファレンスである。
【０３１９】
ＤＥＶＩＣＥＨＷＡＤＤＲＴＯＨＷＡＤＤＲＴＹＰＥ
【０３２０】
【表７８】
0005394123.tif 000079
【０３２１】
Ａｎｔｅｃｅｄｅｎｔは、ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、ＨＷＡｄｄｒＴｙｐｅｓのインスタンスに対するリファレンスである。
【０３２２】
ＤＥＶＩＣＥＴＯＡＬＥＲＴ
【０３２３】
【表７９】
0005394123.tif 000080
【０３２４】
Ａｎｔｅｃｅｄｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、Ａｌｅｒｔｓのインスタンスに対するリファレンスである。
【０３２５】
ＤＥＶＩＣＥＴＯＤＥＶＩＣＥＨＷＡＤＤＲ
【０３２６】
【表８０】
0005394123.tif 000081
【０３２７】
ＧｒｏｕｐＣｏｍｐｏｎｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスであり、ＰａｒｔＣｏｍｐｏｎｅｎｔは、ＤｅｖｉｃｅＨＷＡｄｄｒｓのインスタンスに対するリファレンスである。
【０３２８】
ＤＥＶＩＣＥＴＯＤＥＶＩＣＥＴＹＰＥ
【０３２９】
【表８１】
0005394123.tif 000082
【０３３０】
Ａｎｔｅｃｅｄｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、ＤｅｖｉｃｅＴｙｐｅｓのインスタンスに対するリファレンスである。
【０３３１】
ＤＥＶＩＣＥＴＯＪＯＢＩＮＶＯＣＡＴＩＯＮ
【０３３２】
【表８２】
0005394123.tif 000083
【０３３３】
Ａｎｔｅｃｅｄｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに対するリファレンスである。
【０３３４】
ＳＥＴＴＯＪＯＢＩＮＶＯＣＡＴＩＯＮ
【０３３５】
【表８３】
0005394123.tif 000084
【０３３６】
Ａｎｔｅｃｅｄｅｎｔは、Ｓｅｔｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに対するリファレンスである。
【０３３７】
ＤＥＶＩＣＥＴＯＪＯＢ
【０３３８】
【表８４】
0005394123.tif 000085
【０３３９】
Ａｎｔｅｃｅｄｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、Ｊｏｂｓのインスタンスに対するリファレンスである。
【０３４０】
ＪＯＢＴＯＪＯＢ
【０３４１】
【表８５】
0005394123.tif 000086
【０３４２】
ＧｒｏｕｐＣｏｍｐｏｎｅｎｔは、Ｊｏｂｓのインスタンス（親を表す）に対するリファレンスであり、ＰａｒｔＣｏｍｐｏｎｅｎｔは、Ｊｏｂｓのインスタンス（子に関する）に対するリファレンスである。
【０３４３】
ＪＯＢＩＮＶＯＣＡＴＩＯＮＴＯＪＯＢ
【０３４４】
【表８６】
0005394123.tif 000087
【０３４５】
Ａｎｔｅｃｅｄｅｎｔは、ＪｏｂＩｎｖｏｃａｔｉｏｎｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、Ｊｏｂｓのインスタンスに対するリファレンスである。
【０３４６】
ＪＯＢＴＯＪＯＢＬＯＧ
【０３４７】
【表８７】
0005394123.tif 000088
【０３４８】
Ａｎｔｅｃｅｄｅｎｔは、Ｊｏｂｓのインスタンスに対するリファレンスであり、Ｄｅｐｅｎｄｅｎｔは、ＪｏｂＬｏｇｓのインスタンスに対するリファレンスである。
【０３４９】
ＳＥＴＴＯＤＥＶＩＣＥ
【０３５０】
【表８８】
0005394123.tif 000089
【０３５１】
ＧｒｏｕｐＣｏｍｐｏｎｅｎｔは、Ｓｅｔｓのインスタンスに対するリファレンスであり、ＰａｒｔＣｏｍｐｏｎｅｎｔは、Ｄｅｖｉｃｅｓのインスタンスに対するリファレンスである。
【符号の説明】
【０３５２】
１００  コンピュータシステム環境
１１０  コンピュータ装置
１２０  処理装置
１２１  システムバス
１３０  システムメモリ
１３１  読取り専用メモリ
１３２  ランダムアクセスメモリ
１３３  基本入力／出力システム
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  他のプログラムモジュール
１３７  プログラムデータ
１４０  取外し不可能の不揮発性メモリインターフェース
１４１  ハードディスクドライブ
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能の不揮発性メモリインターフェース
１５１  磁気ディスクドライブ
１５２  取外し可能の不揮発性磁気ディスク
１５５  光ディスクドライブ
１５６  取外し可能の不揮発性光ディスク
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１６３  マイクロホン
１６４  タブレット
１７０  ネットワークインターフェース
１７１  ローカルエリアネットワーク
１７２  モデム
１７３  ワイドエリアネットワーク
１８０  遠隔コンピュータ
１８１  メモリ装置
１８５  遠隔アプリケーションプログラム
１９０  ビデオインターフェース
１９１  モニタ
１９４  出力周辺インターフェース
１９５  スピーカ
１９６  プリンタ
２００  アーキテクチャ
２０２  コントローラコンピュータ
２０４1、２０４2、２０４n  ノードコンピュータ
２０６1、２０６2、２０６n  ノードプログラム
２０８  コントローラサービス
２１０  管理プログラム
２１２  トランスポート層
２１４1、２１４2、２１４n  トランスポート層
２１６  物理ネットワーク
２１８1、２１８2、２１８n  エージェントサービス
２２０1、２２０2、２２０n  ノードオペレーティングシステム
２２２  オペレーティングシステム
３０２  データストア
３０４  開始プロセス
３０６  コントローラプログラム
３１０  スキーマインターフェース
３１２  エージェントプログラム
３１４  ＸＭＬメッセージ交換プロトコル
３１６  トランスポートプロトコル
３２０  スクリプト／実行エンジン
３２２  リブート／シャットダウン／サスペンド構成要素
３３０  検出構成要素（発見構成要素）
３３２  検出リスニング構成要素（検出聴取構成要素）
【図１】
0005394123.tif 000090
【図２】
0005394123.tif 000091
【図３】
0005394123.tif 000092
【図４】
0005394123.tif 000093
【図５】
0005394123.tif 000094
【図６】
0005394123.tif 000095
【図７】
0005394123.tif 000096
【図８】
0005394123.tif 000097
【図９】
0005394123.tif 000098
【図１０】
0005394123.tif 000099
【図１１】
0005394123.tif 000100
【図１２】
0005394123.tif 000101
【図１３】
0005394123.tif 000102
【図１４】
0005394123.tif 000103
【図１５】
0005394123.tif 000104