(57)【要約】【課題】  オブジェクト指向パイプラインをサポートするコンピューティング環境及びその方法を提供する。【解決手段】  コンピューティング環境は、ランタイムシェル、パーサ及び基本コマンドを含む。ランタイムシェルは、オブジェクト指向パイプラインを受信する。ランタイムシェルは、オブジェクト指向パイプラインをパーサに送出し、パーサは、オブジェクト指向パイプラインをパイプラインサブコンポーネントに解析する。各々のパイプラインサブコンポーネントは、オペレーティングシステムによって提供される基本コマンドまたはサードパーティデベロッパによって提供されるサードパーティコマンドなどのコマンドに関連付けられている。パーサは、第１パイプラインサブコンポーネントに関連付けられたメソッドを起動する。メソッドは、規定された入力から関連するオブジェクトを獲得する。【選択図】  図２
2004342107.tif 000002
【特許請求の範囲】
【請求項１】
パイプラインを使用するコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体であって、前記命令は、
オブジェクト指向パイプラインを受信すること、
前記オブジェクト指向パイプラインを複数のパイプラインサブコンポーネントに解析すること、
前記複数のパイプラインサブコンポーネントのうちの第１パイプラインサブコンポーネントに関連付けられたメソッドを起動することであって、該メソッドは、前記第１パイプラインサブコンポーネントにかかる少なくとも１つのオブジェクトを生成すること、および、
前記少なくとも１つのオブジェクトを処理目的で次段のパイプラインサブコンポーネントに送出することであって、該次段のパイプラインサブコンポーネントは、前記複数のパイプラインサブコンポーネントのうちの１つであること
を備えたことを特徴とするコンピュータ読み取り可能媒体。
【請求項２】
前記オブジェクト指向パイプラインを受信することは、コマンドラインを介することを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項３】
前記第１パイプラインサブコンポーネントは、オペレーティングシステムによって提供されている基本コマンドに対応することを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項４】
前記第１パイプラインサブコンポーネントは、サードパーティコマンドに対応することを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項５】
前記少なくとも１つのオブジェクトを前記次段のパイプラインサブコンポーネントに送出することは、前記次段のパイプラインサブコンポーネントに前記少なくとも１つのオブジェクトの各々にかかるハンドルを送出することを含むことを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項６】
前記少なくとも１つのオブジェクトを送出することは、前記少なくとも１つのオブジェクトを複数のパイプラインサブコンポーネントに送出することを含むことを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項７】
前記複数のオブジェクトを生成することは、リフレクションを介して前記オブジェクトにかかる属性名を獲得することを含むことを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項８】
前記複数のオブジェクトを生成することは、入力ソースからの情報に基づいていることを特徴とする請求項１に記載のコンピュータ読み取り可能媒体。
【請求項９】
前記入力ソースは、ＸＭＬベースドキュメントを含むことを特徴とする請求項８に記載のコンピュータ読み取り可能媒体。
【請求項１０】
オブジェクト指向パイプラインをサポートするデータ構造で符号化されたコンピュータ読み取り可能媒体であって、前記データ構造は、
コマンドが起動される際に供給される該コマンドにかかる少なくとも１つの予期されるパラメータの処理を規定する入力パラメータ構造と、
少なくとも１つのオブジェクトを生成し、該少なくとも１つのオブジェクトを前記オブジェクト指向パイプラインの次のコマンドに供給するスタティックメソッドと、
前記スタティックメソッドを、前記コマンドを起動するために供給される入力に関連付けるコマンド属性と
を備えたことを特徴とするコンピュータ読み取り可能媒体。
【請求項１１】
前記入力は、コマンドラインを含むことを特徴とする請求項１０に記載のコンピュータ読み取り可能媒体。
【請求項１２】
前記スタティックメソッドは、前記入力パラメータ構造内で情報を受け渡しすることを特徴とする請求項１０に記載のコンピュータ読み取り可能媒体。
【請求項１３】
パイプライン化されたコマンド間で通信するコンピュータ実装方法であって、
第１パイプライン化コマンドにより少なくとも１つのオブジェクトを生成すること、
前記第１パイプライン化コマンドから第２パイプライン化コマンドに、前記少なくとも１つのオブジェクトに対する参照を送出すること、および、
前記第２パイプライン化コマンドにより前記少なくとも１つのオブジェクトの処理を実行すること
を備えたことを特徴とするコンピュータ実装方法。
【請求項１４】
前記第１パイプライン化コマンドは、サードパーティデベロッパによって提供されたサードパーティコマンドであることを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１５】
前記第１パイプライン化コマンドは、オペレーティングシステムによって提供された基本コマンドであることを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１６】
前記第１および第２パイプライン化コマンドは、同一のプロセスにおいて実行されることを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１７】
前記少なくとも１つのオブジェクトに対する前記参照を、並列処理目的で第３パイプライン化コマンドに送出することをさらに備えたことを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１８】
前記第２パイプライン化コマンドは、前記少なくとも１つのオブジェクトのサブセットを第３パイプライン化コマンドに送出することを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１９】
パイプライン化コマンドを処理するシステムであって、
プロセッサと、
前記プロセッサにより実行するためにロードされた複数のコンピュータ実行可能命令が割り付けられたメモリとを備え、前記コンピュータ実行可能命令は、
パイプライン化コマンドの受信に応答して、該パイプライン化コマンドを複数のパイプラインサブコンポーネントに構文解析すること、
第１パイプラインサブコンポーネントに関連付けられたメソッドを起動することであって、該メソッドは、少なくとも１つの関連したオブジェクトを生成すること、および、
前記少なくとも１つのオブジェクトを処理目的で次段のパイプラインサブコンポーネントに送出すること
を備えた方法を実行することを特徴とするコマンド処理システム。
【請求項２０】
前記第１パイプラインサブコンポーネントは、オペレーティングシステムによって提供された基本コマンドに対応することを特徴とする請求項１９に記載のコマンド処理システム。
【請求項２１】
前記第１パイプラインサブコンポーネントは、サードパーティコマンドに対応することを特徴とする請求項１９に記載のコマンド処理システム。
【請求項２２】
前記パイプライン化コマンドは、コマンドラインを介して受信されることを特徴とする請求項１９に記載のコマンド処理システム。
【請求項２３】
前記少なくとも１つのオブジェクトを前記次段のパイプラインサブコンポーネントに送出することは、前記次段のパイプラインサブコンポーネントに各オブジェクトにかかるハンドルを送出することを含むことを特徴とする請求項１９に記載のコマンド処理システム。
【請求項２４】
パイプライン化コマンド間で通信するコンピュータシステムであって、
第１パイプライン化コマンドにより少なくとも１つのオブジェクトを生成する手段と、
前記第１パイプライン化コマンドから第２パイプライン化コマンドに、前記少なくとも１つのオブジェクトに対する参照を送出する手段と、
前記第２パイプライン化コマンドにより前記少なくとも１つのオブジェクトの処理を実行する手段と
を備えたことを特徴とするコンピュータシステム。
【請求項２５】
前記第１及び第２パイプライン化コマンドは、コマンドラインを介して入力されることを特徴とする請求項２４に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクト指向パイプラインを用いるシステム及び方法に関する。
【背景技術】
【０００２】
多くのオペレーティングシステムは、複数のアプリケーション（例えば、ユーティリティ）を互いに「ステッチング（stitching）」（すなわち、パイプライン化する）機構を提供し、オペレーティングシステムのコマンドラインに入力することができるカスタムのアドホックコマンドを生成する。典型的には、コマンドを、システム属性の管理などのためのシステム管理ツールで使用する。コマンドの「パイプライン化された」ユーティリティの各々は、テキストを転送することによって互いに通信する。従って、パイプライン内の各ユーティリティは、受信したテキストの構成要素を解析し、出力されるテキストをフォーマットする役割を担う。容易に想像できるように、非常に高級なコマンドが望まれる場合には、システム管理者は、高級な出力を生成するようにユーティリティをパイプライン化するために、種々のユーティリティを理解しなければならない。各ユーティリティの内部動作の詳細を理解すること及び複数のユーティリティを適切にパイプライン化することは、時間がかかり、システム管理者にとってやりがいがある。実際、ユーティリティの各々の詳細な知識を獲得する者は極めて少数である。すなわち、システム管理は非常に専門化されている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従って、システム管理者が、パイプライン化される各ユーティリティの詳細な動作を知ることを要求されることなく、カスタムのアドホックコマンドラインベースの管理ツールを生成することを可能にする機構が必要である。
【課題を解決するための手段】
【０００４】
本発明は、オブジェクト指向パイプラインをサポートするコンピューティング環境及びその方法を指向する。本発明にかかるコンピューティング環境は、ランタイムシェル、パーサ、及び基本コマンドを含む。ランタイムシェルは、オブジェクト指向パイプラインを（例えば、コマンドラインを介して）受信する。ラインタイムシェルは、受信したオブジェクト指向パイプラインをパーサ宛に送出し、パーサは、オブジェクト指向パイプラインをパイプラインサブコマンドに構文解析する。パイプラインサブコマンドは、オペレーティングシステムによって提供されている基本コマンド、サードパーティデベロッパによって書かれたサードパーティコマンドなどに関連付けられる。パーサは、パイプラインの第１サブコンポーネントに関連付けられたメソッドを起動する。メソッドは、特定の入力（例えば、ＸＭＬ）から関連するオブジェクトを獲得する。オブジェクトは、次の処理のために、次段のパイプラインサブコンポーネントに送出される。パイプラインサブコンポーネントの各々を、同一のプロセスで実行さすることができる。
【発明を実施するための最良の形態】
【０００５】
簡潔に述べれば、本発明は、オブジェクト指向パイプラインをサポートする環境及びオブジェクト指向パイプラインを生成して処理する機構を指向する。以下の説明より明らかなように、本発明は、サードパーティデベロッパが書く必要があるコードの量を最小化し、システム属性を管理するためにシステム管理者が知る必要のある知識の量を最小化する。従って、本発明は、システム管理タスクを大幅に簡略化する。
【０００６】
図１は、本発明の一実施形態において用いることができるコンピューティングデバイスの一例を示す。非常に基本的な構成において、コンピューティングデバイス１００は、典型的には、少なくとも１つの処理ユニット１０２及びシステムメモリ１０４を含む。コンピューティングデバイスの詳細な構成に依存して、システムメモリ１０４は、揮発性メモリ（例えば、ＲＡＭ）、不揮発性メモリ（ＲＯＭ、フラッシュメモリなど）またはそれら２種類の組み合わせとすることができる。システムメモリ１０４は、典型的には、オペレーティングシステム１０５、１または複数のプログラムモジュール１０６を含み、プログラムデータ１０７を含むことができる。オペレーティングシステム１０５は、オペレーティングシステムコマンドを実行するコマンドプロセッサ１３０を含む。コマンドプロセッ１３０は、オペレーティングシステムコマンドを受け入れるシェル１３１（すなわち、コマンドプロセッサインタフェース）を含む。シェルは、コマンドプロンプト、グラフィカルユーザインタフェース、または、ユーザ入力を入力して解釈する他のあらゆる手段を表示することができる。シェル１３１は、入力されたコマンドが有効であることを確認し、実行のために確認されたコマンドをコマンドプロセッサ１３０の別の部分に送出する。この基本的な構成は、図１において、破線１０８内の構成要素によって示されている。
【０００７】
コンピューティングデバイス１００は、他の特徴すなわち機能を有することができる。例えば、コンピューティングデバイス１００は、例えば、磁気ディスク、光学ディスク、またはテープなどの（リムーバブル及び／または非リムーバブル）付加データス記憶デバイスを含むことができる。このような付加ストレージは、図１において、リムーバブルストレージ１０９及び非リムーバブルストレージ１１０によって示されている。コンピュータ記憶媒体には、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、または他のデータなどの情報を蓄積するためのあらゆる方法または技術によって実現された、揮発性及び不揮発性の、リムーバブル及び非リムーバブルの媒体を含むことができる。システムメモリ１０４、リムーバブルストレージ１０９及び非リムーバブルストレージ１１０は、全てコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、これらに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリあるいは他のメモリテクノロジ、ＣＤ−ＲＯＭ、ＤＶＤあるいは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージあるいは他の磁気ストレージデバイス、または、所望の情報を格納するために利用され、コンピューティングデバイス１００によってアクセス可能な他のあらゆる媒体が含む。このような全てのコンピュータ記憶媒体は、コンピューティングデバイス１００の一部とすることができる。コンピューティングデバイス１００は、さらに、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス１１２を有することができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス１１４を含むこともできる。これらのデバイスは、当業者には既知であり、本明細書においては詳細には記述しない。
【０００８】
コンピューティングデバイス１００は、例えばネットワークを介して、他のコンピューティングデバイス１１８との通信を可能にする通信接続１１６を含むことができる。通信接続１１６は、通信媒体の一例である。通信媒体は、典型的には、搬送波または他の伝達機構などの変調されたデータ信号におけるコンピュータ読み取り可能命令、データ構造、プログラムモジュールまたは他のデータなどによって実現され、その他のあらゆる情報伝達媒体を含むことができる。「変調されたデータ信号」という用語は、情報を信号中に符号化する方法で、１または複数の特徴を有するようにまたは変化させられた信号を意味する。例えば限定ではなく、通信媒体は、有線ネットワークあるいは直接有線接続などの有線媒体、音波、ＲＦ、赤外線または他の無線媒体などの無線媒体を含む。本明細書において用いられているコンピュータ読み取り可能媒体という用語は、記憶媒体及び通信媒体の双方を含む。
【０００９】
図２は、本発明が機能しうる管理ツール環境の一実施形態の概略を示すブロック図である。管理ツール環境２００は、ランタイムシェル２０２、パーサ２０４及び基本コマンド２０６を含む。ランタイムシェル２０２、パーサ２０４及び基本コマンド２０６は、図１に示したオペレーティングシステム１０５の一部とすることもできる。管理ツール環境２００は、プラットフォームコマンド２０８、ホストコマンド２１０及び１または複数のサードパーティコマンド２１２を含むことができる。プラットフォームコマンド２０８及びホストコマンド２１０は、それぞれ、管理ツール環境２００がホスティングされているコンピュータの種類に固有のコマンド及びホストに特有のコマンドである。サードパーティコマンド２１２は、以下に図３に関連して詳述されているように、サードパーティデベロッパによって提供されるものであり、典型的には、管理システムあるいはサードパーティアプリケーションの属性を指向している。後に詳述されることであるが、本発明にかかる管理ツール環境２００は、システム管理者が、基本コマンド２０６、ホストコマンド２１０及びプラットフォームコマンド２０８の全てに詳細な理解を要求されることなく、システム属性を管理することを可能にする。むしろ、本発明にかかる管理ツール環境２００は、システム管理者が、比較的小量のコードによってサードパーティコマンド２１２を生成することを可能にする。後に記述されているように、サードパーティコマンド２１２は、それが比較的小量のコードしか有していない場合であっても、他のコマンドと容易にパイプライン化され、高度な管理機能及びそのためのツールを提供する。
【００１０】
管理ツール環境例２００をより詳細に記述する前に、図７に例示されているオブジェクト指向パイプラインの一例を議論する。図７は、３つのオブジェクト指向パイプライン７０２、７２２，７４２の例を示している。オブジェクト指向パイプライン７０２は、コマンドプロンプト７０４、パイプラインキャラクタ７０８及びパイプラインサブコンポーネント７０６，７１０を含む。一般的に、各パイプラインサブコンポーネントは、プラットフォームコマンド、ホストコマンド、サードパーティコマンド、基本コマンドとすることができる。以下に記述されるように、これらの型のコマンドの各々は、同一のメカニズムを用いて生成され、同一の方法で機能する。図７において、第１パイプラインサブコンポーネント７０６は、サードパーティコマンドを表わしている。
【００１１】
しかしながら、上述されているように、第１パイプラインサブコンポーネント７０６は、プラットフォームコマンド、ホストコマンドまたは基本コマンドでもよい。コマンドプロンプト７０４は、図示されているドル記号“＄”などの、いずれかの指示である。パイプラインキャラクタ７０８は、パイプラインサブコンポーネント７０６，７１０の各々を分離する。パイプラインキャラクタ７０８は、いろいろな形態を取ることができるが、典型的には、縦線“｜”によって表現される。オブジェクト指向パイプライン７０２は、それぞれパイプラインキャラクタ７０８によって分離された、あらゆる数のパイプラインコンポーネントを有することができる。典型的には、最終パイプラインサブコンポーネント（例えば、サブコンポーネント７１０）は、ディスプレイ上のテキストなどの情報を出力する役割を担う。パイプラインサブコンポーネント７０６，７１０は、パイプラインサブコンポーネント７１０として示されているようにパラメータを必要とするか、または、パイプラインサブコンポーネント７０６として示されているようにパラメータを必要としないかのいずれかである。各パイプラインサブコンポーネント７０６，７１０は、例えば“get/process”及び“format/table”のように、動詞／名詞対を表現する。動詞または名詞は、パイプラインサブコンポーネント７０６，７１０において暗示とすることができる。
【００１２】
図７に示されたオブジェクト指向パイプライン７０２は、文法的にはテキストベースのパイプラインと同様に見えるが、オブジェクト指向パイプライン７０２をパイプライン化して実行する基盤となる機構はかなり異なっている。例えば、テキストベースパイプラインにおいて、各々のパイプライン化されたコマンドは、個別のユーティリティであり、従って、スタンドアローンで実行可能なプログラムである。加えて、個別のユーティリティの各々は、テキストを出力し、各ユーティリティは、テキストに独自の処理を実行する前にテキストを解釈しなければならない。これに対して、本発明に従って、パイプラインサブコンポーネント７０６，７１０は、互いにオブジェクト（例えば、オブジェクトの集合）を交換する。本発明の一実施例においては、オブジェクトは、以降のパイプラインサブコンポーネント７０６，７１０に対してバッチ化されており、前のサブコンポーネントにおいて、後のサブコンポーネントがオブジェクトに対する処理を開始する前に、処理を完了することができる。別の実施形態においては、オブジェクトは、複数のパイプラインサブコンポーネントにストリーム化され、オブジェクトに対する処理を、並列して実行することができる。さらに別の実施形態においては、１または複数のパイプラインサブコンポーネントは、同一のプロセスで実行することができる。従って、パイプラインサブコンポーネント、及びサブコンポーネント間のオブジェクトは、異なったシステムから来てもよい。
【００１３】
図２に戻って、ランタイムシェル２０２は、オペレーティングシステムコマンド（例えば、オブジェクト指向パイプライン）を受け入れる。これらのオペレーティングシステムコマンドは、リッチコンソールホスト２５４、グラフィカルユーザインタフェース（ＧＵＩ）ホスト２５６またはサードパーティホスト（図示せず）を介して入力される。ランタイムシェル２０２が、オペレーティングシステムコマンドを受信すると、オペレーティングシステムコマンドが有効であることを確認する。確認されたコマンドがオブジェクト指向パイプラインである場合には、ランタイムシェル２０２は、当該コマンドをパーサ２０４宛に転送する。簡潔に述べれば、パーサ２０４は、オブジェクト指向パイプラインをパイプラインサブコンポーネントの構成要素を解析する。パーサ２０４は、第１パイプラインサブコンポーネントに関連付けられたメソッドを起動する。メソッドは、１または複数のオブジェクトを生成し、それらが、パーサ２０４によって識別されたそれ以降のパイプラインサブコンポーネントの各々による処理に用いられる。典型的には、最終パイプラインサブコンポーネントは、コンソールベースのホストに対するテキストなどの情報を出力する。
【００１４】
管理ツール環境２００は、正確に解析可能な入力２１６をアクセスするように構成された拡張された型リフレクタ２１４を含む。ランタイムシェル２０２、サードパーティコマンド２１２、基本コマンド２０６、リッチコンソールホスト２５４及びＧＵＩホスト２５６は、拡張された型リフレクタ２１４を介して、正確に解析可能な入力２１６にそれぞれアクセスする。以下の議論においては、正確に解析可能な入力２１６は、属性と値とを識別することができる入力として規定される。正確に解析可能な入力２１６のいくつかは、例えば、ＷＭＩ（Windows（登録商標）  Management  Instrumentation）２３２、ＡＤＯ（ActiveX  data  object）入力２３４、ＸＭＬ（eXtensible  Markup  Language）入力２３６、及び.NET  objectsなどのオブジェクト入力を含む。他の正確に解析可能な入力は、サードパーティデータフォーマット２４０を含むこともできる。
【００１５】
一般に、拡張された型リフレクタ２１４は、リフレクションベースの処理をサポートする。リフレクションベースの処理とは、実行可能なコードが、オブジェクトの特徴を理解する必要なく、そのオブジェクトの属性にアクセスすることができる機構である。オブジェクトそれ自体は、オブジェクトの有するどの属性かの要求側の実行コード、及び関連付けられた値を通知する。これは、実行可能コードが、オブジェクトとから独立する。加えて、本発明に従って、拡張された型リフレクタ２１４は、ＡＤＯ入力２３４などの非オブジェクト型入力に対するリフレクションも実現する。例えば、完全に解析可能な入力２１６が、ＡＤＯ入力２３４であると仮定すると、実行可能コードが、属性に対するＡＤＯ入力を要求した場合には、ＡＤＯ入力２３４は、２つの属性、すなわちカラム属性とロウ属性を返す。しかしながら、これら２つの属性は、ＡＤＯ入力２３４内の“オブジェクト”にかかる充分な詳細事項を提供しない。従って、本発明に従って、拡張された型リフレクタ２１４は、実行コードがＡＤＯ２３４を要求したことを認識し、ＡＤＯ入力２３４の属性ではなくカラム名を要求する。それに応答して、ＡＤＯ入力２３４は、カラム名を返し、これが実行コードに対して属性として返される。従って、拡張された型リフレクタ２１４は、正確に解析可能な入力２１６のあらゆる型から、「オブジェクト」を生成するように構成されている。
【００１６】
正確に解析可能な入力２１６からオブジェクトを生成するために、管理ツール環境２００は、型注釈・拡張子カタログ２１８を含む。型注釈・拡張子カタログ２１８は、拡張された型リフレクタ２１４が入力２１６の種々の型をどのように要求すべきかを記述し、特定の入力型にかかるオブジェクトを生成するための所望の属性を得る。従って、拡張された型リフレクタ２１４は、オブジェクトの全ての型に関するリフレクションを可能にするインダイレクションのレイヤを提供する。例えば、入力型がＸＭＬである場合には、ＸＭＬを記述する記述ファイルを使用して、ＸＭＬドキュメントからオブジェクトを生成する。
【００１７】
管理ツール環境２００は、さらに、ポリシーエンジン２５０及びウェブサービス２５２を含むこともできる。パーサ２０４及びランタイムシェル２０２は、プラットフォームコマンド２０８、ホストコマンド２１０及びサードパーティコマンド２１２などのあらゆる種類のコマンドを起動する際にポリシーエンジン２５０と通信することができる。ウェブサービス２５２は、管理ツール環境２００がネットワークを介して機能することを可能にする。ウェブサービス２５２は、パーサ２０４、ランタイムシェル２０２及び拡張された型リフレクタ２１４と通信する。加えて、基本コマンド２０６に、ウェブサービス２５２を介してアクセスすることができる。
【００１８】
図３は、パイプラインサブコンポーネント（すなわち、cmdlet）を生成する一実施形態である。完了すると、cmdletは、プラットフォームコマンド、ホストコマンド、サードパーティコマンドまたは基本コマンドとすることができる。以下の議論では、サードパーティデベロッパにより書くことのできるサードパーティコマンドの生成を記述する。このサードパーティコマンドは、図２に示した管理ツール環境において機能する。サードパーティコマンド３００は、ProcessCmdクラスなど、すなわちパブリッククラスのコマンドクラス３０２を含む。コマンドクラス３０２は、予期される入力パラメータにかかる文法を規定する文法機構３０３と、スタティックメソッド３１８と、cmdlet（すなわち、“get/process”）をスタティックメソッド３１８に関連付けるコマンド属性３１２とを含む。
【００１９】
本発明の一実施形態において、文法機構は、ProcessReqクラスなどの入力パラメータクラス３０４を含む。入力パラメータクラス３０４は、管理ツール環境によって供給されるRequestObjectクラス３０６から派生し、入力パラメータクラス３０４内において規定された予期されるパラメータに従って、コマンド（例えば、コマンドラインを介して）に対して入力されたパラメータを処理する。入力パラメータクラス３０４は、１または複数のメンバー宣言３１０を含む。メンバー宣言３１０は、サードパーティコマンドに対して予期される入力パラメータの１つに対応する。入力パラメータクラス３０６は、メンバー宣言３１０の１つに関連付けられた１または複数の命令３０８を含む。図３の入力パラメータクラス３０４において、命令３０８は、オブジェクト指向パイプラインコマンドにおける第１の予期されるパラメータとして“Name”を識別する。入力パラメータの処理が完了すると、入力パラメータは、パラメータ３２２としてスタティックメソッド３１８に供給される。スタティックメソッド３１８は、予期されたパラメータ（例えば、“req.Name”）を用いて、処理を実行する。この文法機構３０３の付加的な情報は、同一出願人によって同時に出願された「コマンドに対する入力パラメータのリフレクションベース処理」という表題の特許出願により得ることができ、本明細書に組み込まれる。
【００２０】
コマンド属性３１２は、サードパーティコマンド３００に関連付けられたオブジェクト指向パイプラインに出現するテキストパラメータ３１４，３１６を識別する。簡潔に述べれば、パーサ２０４（図２）は、オブジェクト指向パイプラインコマンドを解析する際に、テキストパラメータ３１４，３１６を認識する。テキストパラメータ３１４，３１６を識別すると、パーサ３０４は、スタティックメソッド３１８をロケートし、スタティックメソッド３１８を起動する。スタティックメソッド３１８内の処理は、パイプラインサブコンポーネント間で伝達されるオブジェクトまたはオブジェクトの集合の生成を担っている。スタティックメソッド３１８は、オペレーティングシステムにより提供され、図３に示したSystem.Diagnostics.Process３２０などのシステムメソッドを呼び出すことができ、サードパーティコードなどを呼び出すことができる。
【００２１】
図４は、図１に示したコンピューティングデバイス上への図３に示したサードパーティコマンドの実装を示すブロック図である。上述したように、サードパーティコマンドの実装は、本来、プラットフォームコマンド、ホストコマンド及び基本コマンドの実装と同様である。サードパーティコマンド３００がコード化されると、サードパーティコマンド３００は、コンパイラ４０２に入力されてコンパイルされる。コンパイラ４０２は、実行可能コード４０４と記述ファイル４０６とを出力する。システム管理者が、サードパーティコマンド３００が特定のコンピューティングデバイス上に実装されることを望むとき、実行可能コード４０４及び記述ファイル４０６は、（矢印によって示されているように）特定のコンピューティングデバイス（図示せず）にダウンロードされる。典型的には、特定のコンピューティングデバイスは、サードパーティコマンドが開発されたコンピューティングデバイスとは異なっている。実行可能コード４０４及び記述ファイル４０６がダウンロードされると、サードパーティコマンドにかかる情報をカタログ４１８に格納する。この情報は、図３に示されたテキストパラメータ３１４，３１６に関連付けられた実行可能コード４１４を読み出すためのロケーション及びサードパーティコマンドを実行するために重要な他のデータを識別する。特定のコンピューティングデバイス上のオペレーティングシステムは、テキストパラメータ３１４，３１６を認識し、カタログ４１８に規定されているように、スタティックメソッド３１８を起動する。
【００２２】
図５は、本発明にかかるオブジェクト指向パイプラインを実行するプロセスを示す論理的流れ図である。このプロセスは、ランタイムシェルがコマンドラインに入力されたオブジェクト指向パイプラインを認識した時に開始する。処理は、ブロック５０２に進む。
【００２３】
ブロック５０２において、オブジェクト指向パイプラインが解析され、１または複数のパイプラインサブコンポーネント及びそれぞれに関連付けられた入力パラメータが識別される。上述の「コマンドに対する入力パラメータのリフレクションベース処理」という表題の特許出願は、オブジェクト指向パイプラインの解析にかかる実施形態を記載している。オブジェクト指向パイプラインが解析されると、処理はブロック５０４へ進む。
【００２４】
ブロック５０４において、パーサは、第１パイプラインサブコンポーネントに関連付けられたメソッドを識別する。本発明の一実施形態においては、この識別を、カタログ内のテキストパラメータを検索することにより実行する。カタログは、関連付けられたメソッドのロケーションを提供する。処理は、ブロック５０６へ進む。
【００２５】
ブロック５０６において、識別されたメソッド（例えば、図３に示したGetProcessメソッド３１８）が起動される。ブロック５０８では、メソッドは、次段のパイプラインサブコンポーネントに渡されるオブジェクトを獲得する。ある場合には、オブジェクトの獲得は、オブジェクトを直接得ることを含む。このことは、情報が既に.NET  objectsなどのオブジェクトの形態である場合に起こる。別の場合には、図６に関連して記述するように、オブジェクトの獲得は、複数の入力型のうちの１つからオブジェクトを構成することを含む。オブジェクトまたは複数のオブジェクトが得られると、処理は、ブロック５１０へ進む。
【００２６】
ブロック５１０において、オブジェクト指向パイプラインが他のパイプラインサブコンポーネントを含むか否かの決定がなされる。図７に関連して記述したように、オブジェクト指向パイプラインは、複数のパイプラインサブコンポーネントを含むことができる。他のパイプラインサブコンポーネントが存在する限り、処理はブロック５１２へ継続する。
【００２７】
ブロック５１２において、オブジェクトに対する参照（例えばハンドル）を、次段のパイプラインサブコンポーネントに渡す。別の実施例において、オブジェクトに対する参照を、オブジェクトの並列処理を目的として、複数のパイプラインサブコンポーネントにストリーム化する。オブジェクトは、リフレクションをサポートするように生成されるため、各々のオブジェクトは、次段のパイプラインサブコンポーネントに、それらが有している属性及びそれらに関連付けられた値を通知する。処理は、ブロック５１４へ進む。
【００２８】
ブロック５１４において、次段のパイプラインサブコンポーネントは、オブジェクトに対する処理を実行する。後段のパイプラインサブコンポーネントは、オブジェクトのサブセットを生成し、オブジェクトの順序付けを行い、またはブロック５０８で生成されたオブジェクトに対して別の処理を実行することができる。例えば、サブコンポーネントは、システム管理者が出力に関する属性を選択する際に用いることができるグラフを表示することもできる。サブコンポーネントが処理を実行すると、処理は、決定ブロック５１０へ戻る。他のパイプラインサブコンポーネントが存在する場合には、ブロック５１２，５１４の処理を、パイプラインサブコンポーネントに対して実行する。典型的には、最終パイプラインサブコンポーネントは、オブジェクトに関連するテキストなどの情報を出力する。各パイプラインサブコンポーネントが対応する処理の実行を終了すると、処理は、完了し、終了ブロックへ移行する。
【００２９】
図６は、図５において用いるのに適したオブジェクトを獲得するプロセスを示す論理的流れ図である。処理はブロック６０１で開始され、決定ブロック６０２へ続く。決定ブロック６０２において、メソッドによって要求された入力が正確に解析可能であるか否か決定される。上述したように、オブジェクト情報を、.NET  objectsなどのオブジェクト、ＷＭＩ入力、ＡＤＯ入力、ＸＭＬ入力及び他のサードパーティフォーマットから獲得することができる。ブロック６０２における決定が、入力が正確には解析可能ではないという結論を出した場合には、入力は有効ではない。従って、エラーが存在することになり、オブジェクト指向パイプラインは処理されない。処理は終了する。
【００３０】
決定ブロック６０２に戻ると、入力が正確に解析可能であるという結論が出された場合には、処理は決定ブロック６０４へ進む。決定ブロック６０４において、入力が.NET objectsなどのオブジェクト型であるか否かの決定がなされる。入力が既にオブジェクトフォーマットである場合には、処理はブロック６０６へ進む。
【００３１】
ブロック６０６において、要求された属性を有するオブジェクトが抽出される。リフレクションを使用して、これら要求された属性を獲得する。全てのオブジェクトが獲得されると、処理はリターンブロックへ進み、図５に戻る。
【００３２】
他方、決定ブロック６０４において、入力がオブジェクト型ではないという結論が出された場合には、処理はブロック６０８へ進む。ブロック６０８において、オブジェクトにかかる属性を、入力の型に基づいて獲得する。拡張された型リフレクタを、型の注釈及び拡張子と共に用いて、入力から属性を獲得する。型の注釈及び拡張子は、入力のフォーマットを記述し、属性を獲得する。属性が獲得されると、処理はブロック６１０へ進む。
【００３３】
ブロック６１０において、ブロック６０８において獲得された属性にかかる値を、獲得する。属性及びその値を、要求された各々の属性に関して、次の属性を獲得する以前に獲得できることは当業者には明らかである。従って、処理ブロックを、結果として所望の成果を実現するために、様々な順序で実行する。属性及びそれらの対応する値が獲得されると、処理はブロック６１２へ進む。
【００３４】
ブロック６１２において、獲得された属性及びその対応する値を有するオブジェクトが生成される。オブジェクトは、それ自体がリフレクションをサポートするように生成される。処理は、リターンブロックへ進み、図５に戻る。
【００３５】
再び図７を参照して、３つのオブジェクト指向パイプライン例７０２，７２２，７４２を、より詳細に記述する。オブジェクト指向パイプライン７０２は、２つのパイプラインサブコンポーネント７０６，７１０を有する。パイプラインサブコンポーネント７１０は、テキスト７１２をディスプレイに出力する。パイプラインサブコンポーネント７１０は、基本コマンド“format/table”を含み、このコマンドは、出力の配置を規定するフォーマッティングパラメータ（例えば、name,  pid,  ws,  handlecount）を受け入れる。従って、テキスト７１２は、属性の名前を第１列に有し、その後の列に、オブジェクト指向パイプライン７０２の処理の間に獲得されたオブジェクトのうちの１つに対する属性の値を各々有するテーブルである。
【００３６】
第２の例において、オブジェクト指向パイプライン７２２は、２つのパイプラインサブコンポーネント７０６，７１０を含む。加えて、サブコンポーネント７１０に先行する２つの付加的なパイプラインサブコンポーネント（すなわち、パイプラインサブコンポーネント７２４，７２６）を有する。パイプラインサブコンポーネント７２４は、第１パイプラインサブコンポーネント７０６によって戻されるオブジェクトのサブセットを生成する。パイプラインサブコンポーネント７２６は、サブセットの順序を再度整える。再び、パイプラインサブコンポーネント７１０は、テキスト（すなわち、テキスト７２８）を出力する。
【００３７】
第３の例では、オブジェクト指向パイプライン７４２は、パイプラインサブコンポーネント７２４，７２６を有するが、パイプラインサブコンポーネント７１０を変更している（以下、パイプラインサブコンポーネント７１０’という）。変更されたパイプラインサブコンポーネント７１０’は、コマンドライン上のパラメータの１つに対して属性を付加し、この属性が、テーブル中のそのパラメータの出力を変更する。ワーキングセット（ｗｓ）パラメータは、ws.kbパラメータであり、ワーキングセットがキロバイト単位で表示されることを意味している。本発明の一実施形態において、オブジェクトそれ自体がオブジェクトを含むため、本発明は、サブコンポーネントをパイプライン化する際に、このやり方を用いることができる。例えば、管理者は、出力あるいは処理のために、オブジェクトのサブ属性に対して「ナビゲート」することができる。コマンドライン上のシンタックスは、それに従って変化し、例えば、オブジェクトとそのオブジェクトのサブ属性の間に“．”が付加される。
【００３８】
名前に関してアルファベット順にソートし、少なくとも１２，０００Ｋのワーキングセットを各オブジェクトが有するオブジェクトのサブセットを生成するなど、他の多くの例を容易に生成することができる。これら及び他の変形例を、システム管理者が基本コマンド（例えば、where,  sort,  format）の詳細を知っていることを要求すること無く、コマンドライン上で容易に入力することができる。従って、本発明は、システム管理の複雑さを劇的に低減する。
【００３９】
上述された詳細な説明、実施形態及びデータは、本発明の構成の製造及び利用にかかる完全な記述を提供する。本発明の種々の実施形態が本発明の精神及びその範囲を逸脱することなくなされうるため、本発明は、特許請求の範囲に記載された範囲のものと理解されるべきである。
【図面の簡単な説明】
【００４０】
【図１】本発明の一実施形態において用いることができるコンピューティングデバイスの例を示す図である。
【図２】本発明が機能しうる管理ツール環境の一実施形態の概略を示すブロック図である。
【図３】図２に示した管理ツール環境において機能しうるサードパーティコマンドの一実施形態を示す図である。
【図４】図３に示したサードパーティコマンドの、図１に示したコンピューティングデバイスへの実装を示すブロック図である。
【図５】本発明にかかるオブジェクト指向パイプラインを実行するプロセスを示す流れ図である。
【図６】図５において用いるのに適したオブジェクトを獲得するプロセスを示す流れ図である。
【図７】オブジェクト指向パイプラインのいくつかの例及びそれぞれの対応する出力を示す図である。
【符号の説明】
【００４１】
１００  コンピューティングデバイス
１０２  処理ユニット
１０４  システムメモリ
１０５  オペレーティングシステム
１０６  プログラムモジュール
１０７  プログラムデータ
１０９  リムーバブルストレージ
１１０  非リムーバブルストレージ
１１２  入力デバイス
１１４  出力デバイス
１１６  通信接続
１１８  他のコンピューティングデバイス
１３０  コマンドプロセッサ
１３１  シェル
２００  管理ツール環境
２０２  ランタイムシェル
２０４  パーサ
２０６  基本コマンド
２０８  プラットフォームコマンド
２１０  ホストコマンド
２１２  サードパーティコマンド
２１４  拡張された型リフレクタ
２１８  型の注釈・拡張子カタログ
２５０  ポリシーエンジン
２５２  ウェブサービス
２５４  リッチコンソールホスト
２５６  ＧＵＩホスト
【図１】
2004342107.tif 000003
【図２】
2004342107.tif 000004
【図３】
2004342107.tif 000005
【図４】
2004342107.tif 000006
【図５】
2004342107.tif 000007
【図６】
2004342107.tif 000008
【図７】
2004342107.tif 000009