(57)【要約】      （修正有）【課題】マルチ・レイヤ・コンピュータ・ネットワーク内で情報フローを作成及び管理する。【解決手段】マルチ・レイヤ・コンピュータ・ネットワーク内の第1レイヤにおけるコンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワーク内の情報フローを規定する状態情報を保持する。コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの別の第2レイヤで実行される特定のアクションを指定し、特定のアクションを実行するためのプログラム命令を生成する。プログラム命令は、コンピュータ・システムにとってアクセス可能なデバイス情報を利用して生成され、第2レイヤ内の第2コンピュータ・システムの特徴を示してもよい。第1レイヤ内のコンピュータ・システムは、規定された情報フローの一部として、特定のアクションを実行するために、第2レイヤ内のコンピュータ・システムへ、プログラム命令が送信されることを引き起こす。【選択図】図５
2019083009.tif 000002
【特許請求の範囲】
【請求項１】
マルチ・レイヤ・コンピュータ・ネットワークの第1レイヤ内の第1コンピュータ・システムが、前記マルチ・レイヤ・コンピュータ・ネットワークにおける情報フローを規定する状態情報を維持するステップであって、前記情報フローは複数のアクションを含む、ステップ；
前記第1コンピュータ・システムが、前記マルチ・レイヤ・コンピュータ・ネットワークの別の第2レイヤで実行される、複数のアクションのうちの何れか特定のアクションを指定するステップ；
前記第1コンピュータ・システムが、前記特定のアクションを実行するためにプログラム命令を生成するステップであって、前記プログラム命令は、前記第1コンピュータ・システムにとってアクセス可能なデバイス情報を利用して生成され、前記デバイス情報は、前記第2レイヤ内の第2コンピュータ・システムの特徴を示す、ステップ；及び
前記第1コンピュータ・システムが、規定された前記情報フローの一部として前記特定のアクションを実行するために、前記プログラム命令が前記第2コンピュータ・システムへ送信されることを引き起こすステップ；
を有する方法。
【請求項２】
前記情報フローは、前記複数のアクションを指定する状態マシンを含み、前記状態マシンは、前記複数のアクションのうちの少なくとも幾つかが、前記マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤ内の第3コンピュータ・システムの状態に基づいて実行されることを示す、請求項1に記載の方法。
【請求項３】
前記第2コンピュータ・システムの前記特徴は、前記第2コンピュータ・システムの処理能力及びメモリ容量を示す、請求項1又は2に記載の方法。
【請求項４】
前記第2コンピュータ・システムの前記特徴に基づいて、前記第1コンピュータ・システムが、前記第2コンピュータ・システムは、前記特定のアクションを実行するために十分なリソースを有するか否かを判断するステップ；
を更に有し、前記生成するステップは、前記特定のアクションを実行するための前記処理能力及び前記メモリ容量を前記第2コンピュータ・システムが有することを確認した後に実行される、請求項3に記載の方法。
【請求項５】
前記情報フローが前記マルチ・レイヤ・コンピュータ・ネットワーク内で実現された後に、前記第1コンピュータ・システムが：
前記第2コンピュータ・システムのリソース利用度を示す情報を受信し；
前記リソース利用度が特定の閾値量を充足していないことを確認したことに応じて：前記第2コンピュータ・システムにより実行される、前記複数のアクションのうちの追加的な何れかのアクションを指定し；及び前記追加的なアクションを実行するために前記第2コンピュータ・システムへ送信される追加的なプログラム命令を生成するステップ；
を更に有する請求項1ないし4のうちの何れか一項に記載の方法。
【請求項６】
前記第1コンピュータ・システムが、前記複数のアクションのうち何れか特定のアクションを実行したことに応じて特定のエンティティに通知する連絡先を規定するコンテキスト情報を保持するステップを更に有する請求項1ないし5のうちの何れか一項に記載の方法。
【請求項７】
前記コンテキスト情報のうち特定のエンティティに通知する連絡先を規定する部分を、前記第1コンピュータ・システムが前記第2コンピュータ・システムへ提供するステップ；
を更に有し、前記特定のアクションは、第3コンピュータ・システムの動作状態を示すデータに基づいて、前記特定のエンティティに通知することを含む、請求項6に記載の方法。
【請求項８】
前記マルチ・レイヤ・コンピュータ・ネットワークのうち、前記特定のアクションを割り振るための1つ以上の示唆されるコンピュータ・システムを、前記第1コンピュータ・システムがユーザーに提示するステップ；
を更に有し、前記指定するステップは、前記ユーザーにより提供される指定情報に基づいて実行され、前記指定情報は、前記1つ以上の示唆されるコンピュータ・システムに関する選択を指定する、請求項1ないし7のうちの何れか一項に記載の方法。
【請求項９】
前記特定のアクションが、前記マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤにおける第3コンピュータ・システムに再指定されるように、前記情報フローを更新するリクエストを、前記第1コンピュータ・システムが受信するステップ；
前記リクエストを受信したことに応答して、前記第1コンピュータ・システムが：前記第2コンピュータには最早前記特定のアクションを実行させず；前記特定のアクションを実行するために、前記第3コンピュータ・システムにより実行可能なプログラム命令を生成し；及び当該プログラム命令が前記第3コンピュータ・システムへ送信されることを引き起こすステップ；
を更に有する請求項1ないし8のうちの何れか一項に記載の方法。
【請求項１０】
前記マルチ・レイヤ・コンピュータ・ネットワークにおける前記第1レイヤは、前記第1コンピュータ・システムを有するデータ・センターを含み、前記第2レイヤは前記第2コンピュータ・システムを有するゲートウェイを含み、及び前記マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤは、第3コンピュータ・システムを有するエンドポイント・システムを含む、請求項1ないし9のうちの何れか一項に記載の方法。
【請求項１１】
前記指定するステップはユーザーにより提供される選択に基づいており、前記選択は、前記特定のアクションを実行するために前記第2レイヤ内で前記第2コンピュータ・システムを指定する、請求項1ないし10のうちの何れか一項に記載の方法。
【請求項１２】
マルチ・レイヤ・コンピュータ・ネットワークの第1レイヤ内の第1コンピュータ・システムであって：
1つ以上のプロセッサ；及び
オペレーションを実行するように前記1つ以上のプロセッサにより実行可能なプログラム命令を保存するメモリ；
を有し、前記オペレーションは：
エンドポイント・コンピュータ・システムに関連する状態に基づいて実行されるアクションを規定するオーケストレーション情報を維持するステップであって、前記アクションは情報フローに関連する、ステップ；
前記マルチ・レイヤ・コンピュータ・ネットワークの別の第2レイヤ内の第2コンピュータ・システムにより実行される何れかのアクションを指定するステップ；
指定されたアクションを実行するために、前記第2コンピュータ・システムにより実行可能なプログラム命令を生成するステップであって、前記プログラム命令は、前記第2コンピュータ・システムの特徴を指定するデバイス情報に基づいて生成される、ステップ；及び
前記エンドポイント・コンピュータ・システムが特定の状態に関連することに基づいて、前記指定されたアクションを実行するために、前記プログラム命令が、前記第2コンピュータ・システムに提供されることを引き起こすステップであって、前記エンドポイント・コンピュータ・システムは、前記マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤ内に存在する、ステップ；
を有する、第1コンピュータ・システム。
【請求項１３】
前記オペレーションは：
前記指定されたアクションを、前記マルチ・レイヤ・コンピュータ・ネットワークの別の第4レイヤ内の第4コンピュータ・システムに再指定するステップ；及び
前記指定されたアクションを再指定した後に：前記指定されたアクションを実行しないように、前記第2コンピュータ・システムに指示し；及び前記第4コンピュータ・システムのために生成されるプログラム命令が、前記第4コンピュータ・システムに送信されることを引き起こすステップ；
を更に有する請求項12に記載の第1コンピュータ・システム。
【請求項１４】
前記オペレーションは：
前記デバイス情報に基づいて、前記第2コンピュータ・システムは前記アクションを実行するために十分なリソースを有するか否かを判断するステップ；
を更に有し、前記指定するステップは、前記第2コンピュータ・システムが前記アクションを実行するための処理能力及びメモリ容量を有することを確認した後に実行される、請求項12に記載の第1コンピュータ・システム。
【請求項１５】
前記オペレーションは：
グラフィカル・ユーザー・インターフェースがユーザーに表示されることを引き起こすステップ；
を更に有し、前記グラフィカル・ユーザー・インターフェースは、前記マルチ・レイヤ・コンピュータ・ネットワークのコンピュータ・システムに何れかのアクションを指定することを前記ユーザーに許容する、請求項12に記載の第1コンピュータ・システム。
【請求項１６】
請求項1ないし11のうち何れか一項に記載の方法を第1コンピュータ・システムに実行させるコンピュータ・プログラム。
【請求項１７】
請求項16に記載のコンピュータ・プログラムを保存する記憶媒体。
【請求項１８】
マルチ・レイヤ・コンピュータ・ネットワークの異なるレイヤで実行されるアクションを規定する情報フローで規定される1つ以上のアクションを実行するように実行可能な特定のプログラム命令を、ミッドポイント・コンピュータ・システムが、データベース・コンピュータ・システムから受信するステップであって、前記ミッドポイント及びデータベース・コンピュータ・システムは、前記マルチ・レイヤ・コンピュータ・ネットワークの異なるレイヤに存在する、ステップ；
前記1つ以上のアクションを実行するために前記特定のプログラム命令を前記ミッドポイント・コンピュータ・システムが実行するステップ；
を有し、前記実行するステップは：
前記マルチ・レイヤ・コンピュータ・ネットワークのうち前記ミッドポイント及びデータベース・コンピュータ・システムとは異なるレイヤに存在するエンドポイント・コンピュータ・システムから、前記エンドポイント・コンピュータが第1状態にあることを示すデータを受信するステップ；
前記エンドポイント・コンピュータ・システムに関連する指示に基づいて、前記エンドポイント・コンピュータ・システムが前記第1状態から第2状態へ遷移したことを確認するステップ；及び
前記エンドポイント・コンピュータ・システムが前記第2状態に遷移したことを前記データベース・コンピュータ・システムに通知するステップ；
を含む、方法。
【請求項１９】
前記1つ以上のアクションは：
前記ミッドポイント・コンピュータ・システムが、前記エンドポイント・コンピュータ・システムから前記データを受信していないことに応答して前記指示を導出すること；
を含み、前記データは前記エンドポイント・コンピュータ・システムのハートビートを示す、請求項18に記載の方法。
【請求項２０】
前記情報フローで規定される前記1つ以上のアクションを最早実行しない旨のコマンドを、前記ミッドポイント・コンピュータ・システムが、前記データベース・コンピュータ・システムから受信するステップ；及び
前記コマンドを受信したことに応答して、前記ミッドポイント・コンピュータ・システムが、前記情報フローの一部として、前記データベース・コンピュータ・システムから受信される前記プログラム命令を実行することを止めるステップ；
更に含む請求項18又は19に記載の方法。
【請求項２１】
処理利用度及びメモリ利用度を指定するシステム情報を、前記ミッドポイント・コンピュータ・システムが、前記データベース・コンピュータ・システムに提供するステップ；
を更に含み、前記データベース・コンピュータ・システムは、前記システム情報に基づいて前記ミッドポイント・コンピュータ・システムに1つ以上の追加的なアクションを指定するか否かを決定するように構成されている、請求項18ないし20のうちの何れか一項に記載の方法。
【請求項２２】
前記データベース・コンピュータ・システムはクラウド・ベース・システムであり、前記エンドポイント・コンピュータ・システムはセンサー・デバイスであり、前記ミッドポイント・コンピュータ・システムは、前記データベース・コンピュータ・システムと前記エンドポイント・コンピュータ・システムとの間で動作するルータ・システムである、請求項18ないし21のうちの何れか一項に記載の方法。
【請求項２３】
1つ以上のプロセッサ；及び
請求項18ないし22のうちの何れか一項に記載の方法を実行するために前記1つ以上のプロセッサにより実行可能なプログラム命令を保存するメモリ；
を有するミッドポイント・システム。
【請求項２４】
請求項18ないし22のうちの何れか一項に記載の方法をミッドポイント・コンピュータ・システムに実行させるコンピュータ・プログラム。
【請求項２５】
請求項24に記載のコンピュータ・プログラムを保存する記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般に情報フローを作成及び維持することに関連し、特に、マルチ・レイヤ・コンピュータ・ネットワークにおいてコンピュータ・システムへ情報フローのコンポーネントを分配することに関連する。
【背景技術】
【０００２】
ディジタル時代の到来により、企業は各自のアプリケーションをホストするクラウド・ベースのサービス・プラットフォームを使用し始めている。これらのサービス・プラットフォームは典型的にはプロバイダにより維持され、プロバイダは、ハードウェアを含むコンピューティング・インフラストラクチャにおける多額の先行投資を行う。プロバイダは、僅かな手数料しか要しない多くのリソース(例えば、コンピューティング・パワー、データベース・ストレージ等)をコンシューマが利用することを許容する。従って、コンシューマは、彼らが使用しないリソースに料金を支払う必要無しに、適切なタイプ及びサイズのコンピューティング・リソースを購入することが可能である。
【０００３】
クラウド・ベースのサービス・プラットフォームに加えて、インターネットに多種多様なデバイスを接続するプッシュ・トゥ・コネクト(a  push  to  connect)も存在し、それによりデバイスは互いに通信することが可能になり、このコンセプトはしばしば「モノのインターネット(Internet  of  Things：IoT)」と呼ばれる。例えば、冷蔵庫、洗濯機、サーモスタット等のような物理デバイスが電子システムとともに組み込まれ、その電子システムはインターネットを介してコンシューマがこれらのデバイスと通信することを許容する。コンシューマに彼らのデバイスに関する関連情報を提供するために、クラウド・ベースのサービス・プラットフォームでホストされるアプリケーションは、これらのデバイスから受信されるデータを処理することが可能である。追加的なデバイスがインターネットに接続されるにつれて、クラウド・ベースのプラットフォームで動作しているアプリケーション及びデバイス間でデータを配信するために消費される帯域幅量は増加し、(例えば、コスト、ハードウェア・ストレス等のような)望まれない影響を招く。
【図面の簡単な説明】
【０００４】
【図１】図1は、何らかの実施形態に従って、情報フローの実現を促進するマルチ・レイヤ・コンピュータ・ネットワークのエレメント例を示すブロック図である。
【０００５】
【図２】図2は、何らかの実施形態に従って、情報フローを規定するために利用可能なユーザー・インターフェースのエレメント例を示すブロック図である。
【０００６】
【図３】図3は、何らかの実施形態に従って、情報フローを規定するオーケストレーションのエレメント例を示すブロック図である。
【０００７】
【図４】図4は、何らかの実施形態に従って、情報フローを見るためのユーザー・インターフェースのエレメント例を示すブロック図である。
【０００８】
【図５】図5-7は、何らかの実施形態に従って、マルチ・レイヤ・コンピュータ・ネットワークで情報フローを実現する方法例を示すフローチャートである。
【図６】図5-7は、何らかの実施形態に従って、マルチ・レイヤ・コンピュータ・ネットワークで情報フローを実現する方法例を示すフローチャートである。
【図７】図5-7は、何らかの実施形態に従って、マルチ・レイヤ・コンピュータ・ネットワークで情報フローを実現する方法例を示すフローチャートである。
【０００９】
【図８】図8-9は、何らかの実施形態によるマルチ・テナント・データベース・システムの環境例である。
【図９】図8-9は、何らかの実施形態によるマルチ・テナント・データベース・システムの環境例である。
【００１０】
【図１０】図10は、何らかの実施形態によるコンピュータ・システム例を示すブロック図である。
【発明を実施するための形態】
【００１１】
本開示は「一実施形態」又は「実施形態」という言及を含む。「一実施形態において」又は「実施形態において」という言い回しの出現は、必ずしも、同じ実施形態を指しているわけではない。特定の特徴、構造、又は特長が本開示に合致する適切な任意の方法で組み合わせられてよい。
【００１２】
本開示の中で、様々なエンティティ(entities)(「ユニット」、「回路」、その他のコンポーネント等として様々に言及され得る)は、1つ以上のタスク又はオペレーションを実行するように「構成される」ように説明される又は請求項に記載されてよい。「1つ以上のタスクを実行する」ように構成される「エンティティ」というこの形式が、構造(即ち、電子回路のような何らかの物理的なもの)に言及するために本願で使用されている。より具体的に言えば、この形式は、その構造が動作中に1つ以上のタスクを実行するように構成されていることを示すために使用される。構造は、その構造がその時点で動作させられていない場合でさえ、何らかのタスクを実行するように「構成される」と言及されることが可能である。デバッガ・アプリケーションのインスタンスを実行するように構成される「プロセッサ」は、例えば、動作中にその機能を実行する回路を有する集積回路を、たとえ対象の修正回路がその時点でしようされていなかったとしても(例えば、電源がそれに接続されていない場合でさえ)、カバーするように意図される。従って、何らかのタスクを実行するように「構成される」ように説明又は言及されるエンティティは、タスク等を実現するために実行可能なプログラムメモリを保存するメモリ、回路、デバイスのような何らかの物理的なものを指している。この言い回しは、何らかの無形のものを指すためには本願で使用されていない。即ち、構成するように「構成される」という言葉は、アプリケーション・プログラミング・インターフェース(API)のようなソフトウェア・エンティティに言及するためには本願で使用されない。
【００１３】
「〜するように構成された」という言葉は、「〜するように構成されることが可能である」を意味するようには意図されていない。例えば、未だプログラムされていないFPGAは、何らかの特定の機能を実行するように「構成されている」とは考えられないが、その機能を実行するように「構成することは可能」であり、プログラミングの後にその機能を実行するように「構成された」ものとなる。
【００１４】
本願で使用されるように、「第1」、「第2」等の言葉は、それらが先行している名詞に対するラベルとして使用されており、具体的に言及されていない限り、何らかの種類の順序(例えば、空間的、時間的、論理的などの順序)を示唆してはいない。例えば、4つのスレッドを有するプロセッサにおいて、「第1」及び「第2」スレッドという言葉は、4つのスレッドのうちの何らかの2つを指すために使用されることが可能である。
【００１５】
本願で使用されるように、「基づいて」という言葉は、決定に影響を及ぼす1つ以上の要因を記述するために使用される。この言葉は、追加的な要因が決定に影響を及ぼす可能性を排除していない。即ち、決定(a  determination)は、指定されている要因のみに基づいていてもよいし、指定された要因だけでなく指定されていない他の要因にも基づいていてよい。「Bに基づいてAを決定する」という言い回しを考察する。この言い回しは、Bが、Aを決定するために使用される要因であること、或いはBがAの決定に影響を及ぼすことを示す。この言い回しは、Aの決定が、Cのような他の何らかの要因に基づいてもよいことを排除していない。この言い回しは、AがBのみに基づいて決定される実施形態をカバーするようにも意図されている。本願で使用されるように、「〜に基づいて」という言い回しは、「〜に少なくとも部分的に基づいて」という言い回しと同義である。
詳細な説明
【００１６】
本開示は、マルチ・レイヤ・コンピュータ・ネットワーク内で情報フロー(an  information  flow)を作成及び維持する様々な技術を説明している。本願で使用されるように、「情報フロー」という用語は、実現される場合に、何らかの所望の機能を実行する状態、ルール、アクション、及び/又は遷移(transitions)の組み合わせを指定するデータに関連する。コンピュータ・システムの状態に基づいて(複数の)アクションが実行される状態マシンは、情報フローの一例である。「オーケストレーション(orchestration)」という用語は、「情報フロー」という用語の代わりに代替的に使用されてもよい。以下に説明される様々な実施形態では、情報フローのうちの一部分が、マルチ・レイヤ・コンピュータ・ネットワーク内の様々なコンピュータ・システムへ分配される。或る実現手段では、例えば、マルチ・レイヤ・コンピュータ・ネットワークの第1レイヤ内に存在するコンピュータ・システムは、そのネットワーク内のコンピュータ・システム間の情報フローを規定する状態情報を保持する。そのような実現手段では、第1レイヤのコンピュータ・システムは、コンピュータ・ネットワークのうちの別の異なるレイヤ内に存在する第2コンピュータ・システムにより実行される情報フローのアクションを指定する。特定のアクションを第2コンピュータ・システムに割り当てた後、第1レイヤに存在するコンピュータ・システムは、特定のアクションを実行するために、第2コンピュータ・システムにより実行可能なプログラム命令を生成してもよい。第1レイヤにおけるコンピュータ・システムは、プログラム命令が生成される方法を決定するために、第2コンピュータ・システムに関する情報を利用してよい。いったん命令が生成されると、そのような実現手段では、第1レイヤにおけるコンピュータ・システムは、プログラム命令が、第2コンピュータ・システムへ送信されることを引き起こし、それにより、第2コンピュータ・システムは、情報フローの一部として、自身に割り振られた特定のアクションを実行してよい。
【００１７】
これらの技術は従来のアプローチを上回る有利なものであり、なぜなら、情報フローの作業負担(ワークロード)を、複数のシステムにわたって分散させることを許容し得るからである。更に、処理を行うために、エンドポイント・システム(例えば、IoTデバイス)から複数のシステム(例えば、複数のゲートウェイ・システム)を経て中央システム(例えば、クラウド・ベース・プラットフォーム)に至るデータ送信の帯域幅コストは、複数のシステムのうちの1つ以上が中央システムの代わりに幾らか処理を実行し得るので、大幅に削減され得る。以下、これらの技術を実現するシステムの様々な実施形態の詳細な説明が、図1から開始される。
【００１８】
図1を参照すると、マルチ・レイヤ・コンピュータ・ネットワークのブロック図が示されている。図示される実施形態では、マルチ・レイヤ・コンピュータ・ネットワーク100は、複数の異なるレイヤ105を含み、そのレイヤにコンピュータ・システム110が存在している。図示されるように、レイヤ105Aは、オーケストレータ120と、インテリジェンス・モジュール130と、コンテキスト情報(contextual  information)140とを有するコンピュータ・システム110Aを含む。更に図示されるように、オーケストレータ120は、コード・ジェネレータ122と状態情報127とを含む。レイヤ105B及び105Cも各自のコンピュータ・システム110B及び110Cを有するように図示されている。何らかの実施形態において、追加的なレイヤ105がレイヤ105A-C間に含まれ、例えば、レイヤ105は、ネットワーク100におけるレイヤ105A及び106Bの間に示されている。何らかの実施形態において、ネットワーク100は図示されるものとは別様に実現されてもよい。例えば、デバイス情報124及び/又はコンテキスト情報140は、システム110Aにとって外部の場所に保存されてもよい。
【００１９】
様々な実施形態において、マルチ・レイヤ・コンピュータ・ネットワーク100は、複数のレイヤ105に組織される相互接続されたコンピュータ・システム110のグループである。本開示で使用されるような「レイヤ(layers)」という用語は、ネットワークのうちの区別できる部分を指し、その各々の部分は通信手段(例えば、ワイド・エリア・ネットワーク)により物理的に分離されていてもよいし、その各々の部分はネットワークの中で異なる役割を有していてもよい。一例として、ネットワーク100は、クラウドにおけるデータ・センターを表現する一群のコンピュータ・システム(例えば、第1レイヤ105A)、ゲートウェイを表現する一群のコンピュータ・システム110(例えば、第2レイヤ105B)、及び、IoTデバイスのようなエンドポイント・システムを表現する一群のコンピュータ・システム110(例えば、第3レイヤ105C)を含んでいてもよい。サーモメータ・デバイスが温度(読み取り)測定値を提供し、ルータがサーモメータ・デバイスから他のシステムへのトラフィックをルーティングし、データベース・サーバーがこれらの測定値を処理する、という一例を考察する。これらのシステムのうちの各々は、ネットワーク100内で他のものから物理的に分離されており、従って、ネットワーク100内で異なるレイヤ105に存在すると考えられてよい。レイヤ105はモジュラー(modular)であってもよく、それにより、所与のレイヤ105は他のレイヤ105から分離去られていたとしても、それでも、データを収集しつつ或いはデータを待機しつつ自動的に動作し得る。様々な実施形態において、複数のレイヤ105は通信手段を介して接続される。例えば、Wi-Fi(登録商標)ネットワーク・コネクション又はブルートゥース(登録商標)コネクションが、所与のレイヤ105を他のレイヤ105に接続してもよい。「レイヤ」という用語は、例えば、オープン・システム・インターコネクション(OSI)モデルのようなネットワーク・モデルのうちの異なる部分(例えば、トランスポート・レイヤ、或いは物理レイヤ等)を指すためには使用されていない点に留意を要する。むしろ、「レイヤ」という用語は、分散されたコンピュータ・ネットワーク内の様々なコンピュータ・システムを指すように広義に使用される。
【００２０】
様々な実施形態において、オーケストレータ120は、オーケストレーションの実現を促すように実行可能な一群のソフトウェア・ルーチンである。オーケストレータ120は、全体的にハードウェアで、又はハードウェア及びソフトウェアの組み合わせで実現されてもよい。何らかの実施形態において、オーケストレータ120は、プログラム命令125を生成してシステム110B，110Cへ分配し、それによりこれらのシステムが、オーケストレーションで規定される特定のアクションを実行するようにする。これらのアクションは、以下のものに限定されるわけではないが、例えば、特定のシステム110をシャット・ダウンすること、そのシステム110を修理するために技術者にコンタクトすること、システム100内の別のシステム110へ情報(例えば、システム情報)を提供すること、データベースから読み込むこと、及びデータベースへ書き込むことを含んでよい。命令125を生成及び分配する際に、オーケストレータ120は、オーケストレーションの実現を促進し得る。様々な実施形態において、オーケストレータ120は状態情報127を保持し、その状態情報からプログラム命令125を生成する。
【００２１】
様々な実施形態において、状態情報127は、オブジェクトの状態に基づいて実行されるオーケストレーション既定アクションを含む。サーモメータに関する上記の例を考察する。そのような例において、情報127は、サーモメータ・デバイスにより読み込まれる温度に基づいて実行される一連のアクションを規定していてもよい。例えば、データベース・サーバー・システムが、温度読み取り値を受信し、特定の温度を超える読み取り値に基づいて、専門家が呼び出されるべきことを決定してもよい。何らかの実施形態において、状態情報127は、状態マシンを指定する。何らかの実施形態において、情報127は、ネットワーク100内のシステムが情報127により規定される所定のアクションを実行することに対して責任を負っている旨の指示を含む。この指示は、オーケストレーションに関連するユーザーから受信されてもよいし、或いはシステム110Aにより自動的に決定されてもよい。従って、何らかの実施形態において、オーケストレータ120は、プログラム命令125を生成する場合にこの指示を利用し、それにより、責任のあるシステム110が、各自の指定されたアクションを実行するための命令125を受信するようにする。
【００２２】
何らかの実施形態において、コード・ジェネレータ122は、プログラム命令125を生成するために実行可能な一群のソフトウェア・ルーチンである。命令125は、情報127により規定されるアクションを実行するために、ネットワーク100内のシステム110(例えば、システム110B及び110C)により実行可能であってもよい。従って、様々な実施形態において、プログラム命令125を生成する前に、ジェネレータ122は、状態情報127及びデバイス情報124を取り出す。何らかの実施形態において、デバイス情報124は、ネットワーク100内のシステム100に関する様々な特徴を指定する。デバイス情報124は、特定のコンピュータ・システムの処理能力、そのシステムのメモリ容量、そのシステムで動作しているオペレーティング・システム(OS)、システムとネットワーク100内の他のシステムとの間の帯域幅などのような、ソフトウェア及びハードウェアの特徴の任意の組み合わせを含んでよい。デバイス情報124は、システム110Aにアクセス可能であってもよく、システム110Aに保存されてもよいし、或いはシステム110Aにとって外部のロケーションに保存されてもよい。何らかの実施形態において、状態情報127及び/又はデバイス情報124に基づいて、ジェネレータ122は、特定のアクションにシステム110を割り当て、そのアクションはそれらのシステムにより実行される。
【００２３】
何らかの実施形態において、コード・ジェネレータ122は、システム110Aに関連するユーザーから受信した割り振りに基づいて、特定のアクションに対してシステム110を指定する。これらの割り振りは、状態情報127に含まれる上記の指示であってもよい。ユーザーの割り振りが使用されるケースにおいて、ジェネレータ122は、指定されるシステム110が指定される各自のアクションを実行し得るか否かを判断してもよい。例えば、ジェネレータ122は、システム110Bが、指定されるアクションを実行するのに必要な処理能力を有するか否かを判断してもよい。何らかの実施形態において、特定のシステム110が指定されたアクションを実行できない場合、或いはそのアクションがそのシステムのリソースを過剰に消費することになり、全体的なパフォーマンスが下降してしまう場合、ジェネレータ122は、オーケストレーションに関連するユーザーに通知を行い、それにより、そのようなアクションがネットワーク100内の他のシステム110に指定され得るようにする。ユーザーの割り振りが使用されないケースでは、ジェネレータ122は、インテリジェンス・モジュール130から受信される情報に関連するデバイス情報124を利用して、ネットワーク100内のシステム110に対する、オーケストレーションにおける通知されたアクション指定を行ってもよい。
【００２４】
ユーザーから受信される割り振り又は自動的に生成される割り振りに基づいて、オーケストレーションにおけるアクションをシステム110へ割り当てた後に、様々な実施形態では、コード・ジェネレータ122が、個々のシステム110各々に対するプログラム命令を生成し、各システムは1つ以上のアクションの割り振りを受ける。何らかの実施形態において、ジェネレータ122は、所与のシステム110に関し、そのシステムで動作しているOS、命令125を生成するために適切なプログラミング言語などを決定するために、デバイス情報124を調べる。例えば、ジェネレータ122は、特定のシステム110がWINDOWS(登録商標)を走らせていることを確認するかもしれず、その後、WINDOWSに関連するライブラリを利用してプログラム命令をコンパイルしてもよい。様々な実施形態において、ジェネレータ122は、特定のシステム110のローカルなカーネルのトップで動作することが可能なプラグイン又はカーネルを生成し、それによりシステム110が関連するアクションを実行するようにしてもよい。様々な実施形態において、適切なシステム110の各々に対する命令125を生成した後に、オーケストレーション120は、プログラム命令125が、それぞれのシステム110へ送信されることを引き起こしてもよい。様々な実施形態において、オーケストレーション120は、適切なシステム110へ命令125を直接的に送信し、その後、これらのシステムが、受信した命令125を実行するように指図する。他の実施形態において、オーケストレーション120は、適切なシステム110で命令125をインストールするようにユーザーに指図する。様々な実施形態において、オーケストレータ120は、システム110Aに関する命令125も生成し、それらがシステム110Aにより実行されることを引き起こす。
【００２５】
様々な実施形態において、命令125を分散させた後に、システム110Aは、これらの命令に対応するオーケストレーションをアップデート(又は更新)するために、ユーザーからリクエストを受信する。何らかの実施形態において、システム110Aは、アップデートされたオーケストレーションに従って新たなプログラム命令125を生成し、それらを適切なシステム110へ分配する。そのような実施形態において、システム110Aは、過去に提供されたものではなく、新たな命令125を実行するように、適切なシステム110を指図してもよい。場合によっては、オーケストレーションをアップデートすることは、特定のシステム110に、オーケストレーションを実現する役割を最早持たせないかもしれない。従って、様々な実施形態において、システム110Aは、オーケストレーションを最早実現しないシステム110に、それらに過去に提供されていた命令125の実行を中止するように指図する。
【００２６】
様々な実施形態において、インテリジェンス・モジュール130は或る一群のソフトウェア・ルーチンであり、そのソフトウェア・ルーチンは、ネットワーク100内のシステム110を分析し、何れのシステム110がオーケストレーションにおける所定のアクションを実行する責任を担うべきかの判断を支援する。モジュール130の一例は、「SALESFORCE  EINSTEIN」(登録商標)である。何らかの実施形態において、モジュール130は、命令125がシステム110に分配された後に、その分析を実行する。様々な実施形態において、モジュール130は、システム110からシステム情報を(周期的に)受信してもよく、システム情報は、そのシステム110に関連するリソースの現在の利用の仕方を指定する。リソースは、平均的な処理利用度、平均的なメモリ利用度、使用されているストレージ量などを含んでもよい。何らかの実施形態において、モジュール130は、特定のシステム110が十分に活用されていない或いは使用され過ぎていることを判断するために、システム情報を利用する。そのような実施形態において、モジュール130は、リソースの利用度を、所定の閾値と比較する(例えば、閾値は、メモリのうち80％以上が、特定のシステム110により使用されていることであってもよい)。リソース利用度と所定の閾値との間の比較に基づいて、モジュール130は、様々な実施形態において、アクションが、特定のシステム110に提供されるべきか又は特定のシステムから除外されるべきかを判断する。実行に備えてシステム110Bが或るアクションを当初は受信していたという例を考察する。この例において、モジュール130は、システム110Bから受信したシステム情報に基づいて、システム110Bはその処理能力全体のうち僅か30％しか利用していないことを確認するかもしれない。それに応じて、モジュール130は、システム110Bがオーケストレーションにおいて更なるアクションを実行できる、と判断してもよい。様々な実施形態において、モジュール130は、特定のシステム110が追加的なアクションを処理できる旨、及びそのようなアクションがそのシステム110に提供されるべきである旨のレコメンデーション(a  recommendation)を、オーケストレーションに関連するユーザー又はコード・ジェネレータ122へ提供する。何らかの実施形態において、モジュール130は、ネットワーク100を介して送信されるデータ量が過剰に高いこと、及びシステム110Bのような特定のシステム110へ追加的なアクションを移すことにより、データ量は削減可能であることを確認してもよい。従って、モジュール130は、ユーザー又はジェネレータ122に対してレコメンデーションを作成してもよい。
【００２７】
コンテキスト情報140は、様々な実施形態において、テナント(tenants)、アプリケーション、及びデバイスに関する情報を含む。例えば、情報140は、デバイスのモデル番号、ソフトウェア・バージョン、連絡先氏名、連絡先電子メール、サービス履歴、デバイス識別子などを含んでいてもよい。様々な実施形態において、情報140は、様々な業務に関する顧客関係管理(customer  relationship  management：CRM)データ(例えば、顧客及び見込み顧客の連絡先情報、アカウント、リード(leads)、販売機会など)を含む。様々な実施形態において、情報140は、オーケストレーションで規定されるアクションを実行するためにシステム110にとってアクセス可能である。システム110Cの状態に基づいて実行される様々なアクションをオーケストレーションが含んでいる例を考察する。そのような例において、システム110Bには、システム110Cのシステム不具合に応じて、技術者に連絡するアクションが与えられるかもしれない。それに応じて、システム110Cは最早ハートビート(a  heartbeat)を送信しないので故障している、とシステム110Bが判断した場合、システムBは情報を活用して、そのアクションに関連する技術者に連絡をとるために利用可能な電子メール・アドレスを確認してもよい。何らかの実施形態において、情報140は、プログラム命令125(或いは、所与のシステム110に割り振られるアクションに関連する少なくともその部分)とともにシステム110に提供され、それにより、これらのシステム110は、外部ソースからその情報を取り出すことを要しないようにする。他の実施形態では、情報140は所与のシステム110にとって外的に保存され、その場合、外部ソースからそのような情報を取り出す必要がある。
【００２８】
一実施形態において、コンピュータ・システム110Aは、ネットワーク100内の特定のオーケストレーション/情報フローを規定する状態情報127を維持する。この実現例において、コンピュータ・システム110Aは、特定のオーケストレーションを実現するリクエストを受信してもよい。それに応じて、システム110Aは、オーケストレーションにより規定される一群のアクションをシステム110Bに割り振り、別の一群のアクションをシステム110Cに割り振ってもよい。一群のアクションをシステム110B及び110Cに割り振った後、システム110Aは、各自の割り振られたアクションを実行するためのシステム110B，110Cにより実行可能なプログラム命令125を生成してもよい。その後、システム110Aは、命令125がシステム110B，110Cへ送信されることを引き起こし、それにより、規定されたオーケストレーションの一部として、システム110B，110Cが各自割り振られたアクションを実行し得るようにする。そのような実現例は従来のアプローチを上回る有利なものであり、なぜなら、所与のコンピュータ・システムにより実行される処理量を削減し得るからであり、更に、マルチ・レイヤ・コンピュータ・ネットワークを介してデータを送信するのに使用される帯域幅の量を減らし得るからである。例えば、オーケストレーションにより規定されるアクションの全てをシステム110Aが実行するのではなく、これらのアクションの一部分はシステム110B及び110Cに分散されてよい。即ち、オーケストレーションで規定される所定のアクションは、ネットワークの「エッジ(the  edge)」へプッシュされてよく(例えば、エンドポイント・システムに、より近いシステムへ、プッシュされ)、それにより、これらのアクションを実行するのに必要なデータが、ネットワーク全体にわたって伝送される必要はなくなる。
【００２９】
上述したように、ユーザーは、何れのシステム110がオーケストレーションで所定のアクションを受信すべきかを決定してもよい。それに応じて、システム110に対してアクションを指定するためのユーザー・インターフェースの一例が、図2を参照しながら説明される。
【００３０】
図2を参照すると、オーケストレーションの一例において、状態情報127を規定するためのユーザー・インターフェース200のブロック図が示されている。図示の実施形態において、ユーザー・インターフェース200は、ユーザー設定210A-Eを含む。何らかの実施形態において、システム110Aは、インターフェース200が、オーケストレーション例に関連するユーザーへ提示されることを引き起こす。様々な実施形態において、ユーザー設定210A-Eは、特定のアクションと状態間の遷移とが何時生じるかを指定するルールを決めることを、ユーザーに許容する。例えば、図示されているように、ユーザーは、システム110Cを選択し、irregular_hearbeat_counter>10(不規則なハートビート・カウント数が10より多いこと)のような条件を指定してもよい。様々な実施形態において、ユーザー設定210Cは、対応する条件が充足される場合に実行されるべき一群のアクションを規定する。図示されるように、10より多い不規則なハートビートがシステム110Cから受信される場合、専門家が呼び出されてもよい。様々な実施形態において、ユーザー設定210Dは、対応する条件が充足される場合に、遷移先の状態を規定する。様々な実施形態において、ユーザー設定210Eは、状態を監視して対応するアクションを実行するシステム110を規定する。図示されるように、システム110Bが、上記の条件(the  condition)及びアクションに関連し、そして、10より多い不規則なハートビートがシステム110Cから受信される場合に専門家に連絡する。様々な実施形態において、ネットワーク100内の(システム110Aを含む)任意のシステム110が、特定のアクション及び/又は条件のために選択されてよい。
【００３１】
ユーザー・インターフェース200を利用することにより、ユーザーは、オーケストレーションの実現が複数のシステム110の間でどのように分散されるかを規定することが可能である。特に、ユーザーは、何れのアクションが何れのシステム110に割り振られるかを規定してよい。特定のオーケストレーション例が図3に関連して説明される。
【００３２】
図3を参照すると、オーケストレーション300のブロック図が示されている。図示の実施形態では、オーケストレーション300は、状態マシンとして示されており、各自のアクション320A-Cをそれぞれが有する状態310A-C(states  310A-C)；及び状態310A-Cの間で可能な動きを表現する遷移330A-D(transitions  330A-D)を含む。図示されるように、アクション320A-Cの各々は各自のルール325A-Cを有する。様々な実施形態において、オーケストレーション300は、図示されたものとは別様に実現されてもよく、例えば、異なる状態310及び遷移330を含んでもよい。
【００３３】
様々な実施形態において、状態310A-Cは、所与の時点で特定のコンピュータ・システム110のステータス(statuses)を表現する。例えば、状態310Aは、特定のシステムがノーマルとして動作し、従って「ヘルシー(healthy)」として分類されていることを示してもよく、状態310Bは、特定のシステム110が適切には動作していないかもしれないことを示す状況を見せていることを示してもよく、状態310Cは、特定のシステム110が適切に動作していないこと(例えば、故障していること)を示してもよい。様々な実施形態において、状態310A-Cは各自のルール325A-Cにそれぞれ関連付けられ、各ルールは、これらの状態の間で遷移330が何時生じるかを規定する。ルール325A-Cは、アクション320A-Cが何時実行されるかを更に規定してもよい。セキュリティ・システムに対応する状態310A-Cを有する特定のオーケストレーションが作成されている例を考察する。そのような例では、所定の時間フレームの中でセキュリティ・システムからハートビートが受信されない場合に、状態310Aから状態310Bへ遷移する、という特定のルール325Aが存在してもよい。様々な実施形態において、アクション320A-Cは、コンピュータ・システム110により実行される一群のオペレーションのうちの任意のものであってもよく、そのオペレーションは図1に関連して列挙されるアクションを含む。例えば、状態310Bは、特定のルール325Bが充足される場合に生じる特定のアクション320Bを含んでもよい。セキュリティ・システムの例を引き続き考察し、ハートビートが幾つかの時間フレームの間に受信されない場合(特定のルール325Bを充足する場合)、情報技術(an  information  technology：IT)専門家が、特定のアクション320Bに関して連絡を受けてもよい。これは、状態310Bから状態310Cへの遷移に続いてもよい。
【００３４】
様々な実施形態において、アクション320A-C及びそれらの関連するルール325A-Cは、ネットワーク100内の複数のコンピュータ・システム110に分散される。上記の例に戻ると、(例えば、システム110Cからシステム110Aへ)ネットワーク100全体に渡ってハートビートを送るのではなく、ハートビートは、セキュリティ・システムの近くにあるルータ(例えば、システム110B)へ送られてもよい。そういうわけで、ルータは、プログラム命令125を備えていてもよく、そのプログラム命令125は、実行されると、ルータが、アクション320A，320B及びそれらの対応するルール325A，325Bを処理することを引き起こす。従って、ルータは、クラッシュに備えてセキュリティ・システムを監視し、深刻な情報のみをネットワーク100全体を介して送信し、帯域幅を節約してもよい。
【００３５】
オーケストレーション300を作成し、そのアクション320及びルール325をシステム110へ割り振ることをインターフェース200により行った後に、ユーザーは、オーケストレーション300の概観や、システム110における実現に関する統計量を見ることを希望するかもしれない。それに応じて、そのような情報を見せるユーザー・インターフェース400の一例が、図4に関連して説明される。
【００３６】
図4を参照すると、ユーザー・インターフェース400のブロック図が示されている。図示される実施形態において、ユーザー・インターフェース400は、レイヤ105、システム110、及びアクション320に関する情報を提示している。或るケースでは、ユーザー・インターフェース400は図示されているものとは別様に実現されてもよく、例えばユーザー・インターフェース400はユーザー・インターフェース200と組み合わせられてもよい。
【００３７】
様々な実施形態において、ユーザー・インターフェース400は、アクション320が実現される場所を含む、オーケストレーション300の概観(an  overview)を提示する。例えば、図示されているように、ユーザーは、システム110Bが不規則なハートビートの確認について責任を有することを、理解し得る。更に、何らかの実施形態において、インターフェース400は、複数のシステム110の中でアクション320(又はオーケストレーション300の他の部分)を再分配することをユーザーに許容する。或るケースでは、ユーザーは、或るシステム110から別のものへ単にアクション320をドラッグしてもよく；別のケースでは、ユーザー・インターフェース400はユーザーをユーザー・インターフェース200に向かわせてもよい。様々な実施形態において、インターフェース400は、複数のシステム110の利用、及びそれらの間のデータの流れについての情報を提供する。例えば、図示されるように、オーケストレーションのうちのほとんどのデータ410(「データA」として示される)が、システム110Cからシステム110Bへ流れる一方、最小限のデータ410(「データ410B」として示される)がシステム110Aからシステム110Cへ流れることを、ユーザーは見ることができる。この概観は、マルチ・レイヤ・コンピュータ・ネットワーク100の全体に渡って(例えば、エッジ・システムからコア・システムへ)どの程度多くのデータが流れているかについての更なる洞察をもたらすかもしれない。ユーザー・インターフェース400は、各システム110の利用可能性のようなシステム110に関する履歴データ(例えば、どの程度頻繁にシステム110が故障しているか又は問題を持っているか)を提示してもよい。
【００３８】
図5を参照すると、方法500のフローチャートが示されている。方法500は、情報フロー(例えば、オーケストレーション300)を実現するために、システム110Aのようなコンピュータ・システムにより実行される方法の一実施形態である。従って、マルチ・レイヤ・コンピュータ・ネットワーク(例えば、ネットワーク100)内の複数のコンピュータ・システムに、各自の情報フローにおけるアクション(例えば、アクション320A-C)を分散することをユーザーが希望する場合、ユーザーは、コンピュータ・システムに方法500のステップを実行させてもよい。何らかの実施形態において、方法500は、ユーザーから情報フローを受け取るステップのような追加的なステップを含む。
【００３９】
方法500は、マルチ・レイヤ・コンピュータ・ネットワークにおける第1レイヤ(例えば、レイヤ105A)内の第1コンピュータ・システム(例えば、システム110A)によるステップ510から始まり、マルチ・レイヤ・コンピュータ・ネットワークにおける情報フローを規定する状態情報(例えば、情報127)を保持する。何らかの実施形態において、情報フローは複数のアクション(例えば、アクション320A-C)を含む。何らかの実施形態において、情報フローは、複数のアクションを有する状態マシンを含み、その場合において、複数のアクションは、マルチ・レイヤ・コンピュータ・ネットワークの第3の異なるレイヤ(例えば、レイヤ105C)内の第3コンピュータ・システム(例えば、システム110C)の状態(例えば、状態310A-C)に基づいて実行されることになる。
【００４０】
ステップ520において、第1コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの第2の別のレイヤ(例えば、レイヤ105B)で実行される複数のアクションのうちの特定の何れかを指定する。何らかの実施形態において、第1コンピュータ・システムによるこの指定は、ユーザーにより与えられる選択に基づいており、その選択は、特定のアクションを実行する第2コンピュータ・システムを指定する。
【００４１】
ステップ530において、コンピュータ・システムは、特定のアクションを実行するためにプログラム命令(例えば、命令125)を生成する。プログラム命令は、第1コンピュータ・システムにとってアクセス可能なデバイス情報(例えば、情報124)を利用して生成されてもよい。何らかの実施形態において、デバイス情報は、第2レイヤ内の第2コンピュータ・システム(例えば、システム110B)の特徴を示す。その特徴は、第2コンピュータ・システムの処理能力(a  processing  capacity)及びメモリ容量(a  memory  capacity)を示してもよい。ステップ540において、第1コンピュータ・システムは、所定の情報フローの一部として特定のアクションを実行するために、命令が第2コンピュータ・システムへ送信されることを引き起こす。
【００４２】
図6を参照すると、方法600のフローチャートが示されている。方法600は、情報フロー(例えば、オーケストレーション300)を実現するために、マルチ・レイヤ・コンピュータ・ネットワーク(例えば、ネットワーク100)の第1レイヤ(例えば、レイヤ105A)内の第1コンピュータ・システム(例えば、システム110A)により実行される方法の一実施形態である。何らかの実施形態において、方法600は、ユーザーから情報フローを受け取るステップのような追加的なステップを含む。
【００４３】
方法600は、第1コンピュータ・システムとともにステップ610から始まり、エンドポイント・コンピュータ・システム(例えば、システム110C)に関連する状態(例えば、状態310)に基づいて実行されるアクション(例えば、アクション320)を規定するオーケストレーション情報(例えば、情報127)を保持する。アクションは情報フローに関連付けられてよい。
【００４４】
ステップ620において、第1コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの第2の別のレイヤ(例えば、レイヤ105B)の中の第2コンピュータ・システム(例えば、システム110B)により実行される何れかのアクションを指定する。何らかの実施形態において、第1コンピュータ・システムはグラフィカル・ユーザー・インターフェース(例えば、ユーザー・インターフェース200)がユーザーに表示されることを引き起こし、ユーザー・インターフェースは、マルチ・レイヤ・コンピュータ・ネットワーク内の複数のコンピュータ・システムに、複数のアクションのうちの何れかを割り振ることをユーザーに許容する。
【００４５】
ステップ630において、第1コンピュータ・システムは、指定されたアクションを実行するために、第2コンピュータ・システムにより実行可能なプログラム命令(例えば、命令125)を生成する。プログラム命令は、第2コンピュータ・システムの特徴を指定するデバイス情報(例えば、情報124)に基づいて生成されてもよい。何らかの実施形態では、デバイス情報に基づいて、第1コンピュータ・システムは、第2コンピュータ・システムがアクションを実行するのに十分なリソースを有するか否かを判断する。第2コンピュータ・システムはアクションを実行するための処理能力及びメモリ容量を有している旨の確認の後で、指定されたアクションが割り振られてもよい。
【００４６】
ステップ640において、第1コンピュータ・システムは、特定の状態に関連するエンドポイント・コンピュータ・システムに基づいて、指定されたアクションを実行するために、第2コンピュータ・システムへプログラム命令が提供されることを引き起こす。エンドポイント・コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの第3の別のレイヤ(例えば、レイヤ105C)の中にあってもよい。何らかの実施形態において、第1コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの第4の別のレイヤにおける第4コンピュータ・システムへ、指定されたアクションを再指定する。指定されたアクションを再指定した後に、第1コンピュータ・システムは、指定されていたアクションを実行しないように第2コンピュータ・システムに指図し、第4コンピュータ・システムのために生成されたプログラム命令が、第4コンピュータ・システムへ送信されることを引き起こしてもよい。
【００４７】
図7を参照すると、方法700のフローチャートが示されている。方法700は、情報フロー(例えば、オーケストレーション400)を実現するために、ミッドポイント・コンピュータ・システム(例えば、システム110B)により実行される方法の一実施形態である。方法700は、非一時的なコンピュータ読み取り可能な媒体に存在するプログラム命令を実行することにより、実現されてもよい。何らかの実施形態において、方法700は、ミッドポイント・コンピュータ・システムが、別のシステム(例えば、システム110A)へ、ミッドポイント・コンピュータ・システムの処理能力の利用可能性及びメモリ容量の利用可能性を指定するシステム情報を提供するステップのような追加的なステップを含む。
【００４８】
方法700はミッドポイント・コンピュータ・システムとともにステップ710から始まり、特定のプログラム命令(例えば、命令125)をデータベース・コンピュータ・システム(例えば、システム110A)から受信し、特定のプログラム命令は、マルチ・レイヤ・コンピュータ・ネットワーク(例えば、ネットワーク100)の様々なレイヤ(例えば、レイヤ105)で実行されるアクションを規定する情報フロー(例えば、オーケストレーション300)で規定される1つ以上のアクション(例えば、アクション320)を実行するように動作することが可能である。ミッドポイント及びデータベース・コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークのうちの異なるレイヤに存在してもよい。
【００４９】
ステップ720において、ミッドポイント・コンピュータ・システムは、1つ以上のアクションを実行するように、特定のプログラム命令を実行する。1つ以上のアクションは、マルチ・レイヤ・コンピュータ・ネットワークのうちミッドポイント及びデータベース・コンピュータ・システムとは異なるレイヤ(例えば、レイヤ105)に存在するエンドポイント・コンピュータ・システムから、第1状態(例えば、状態310A)にあるエンドポイント・コンピュータ・システムを示すデータを受信することを含んでよい。1つ以上のアクションは、エンドポイント・コンピュータ・システムに関連する指示に基づいて、エンドポイント・コンピュータ・システムが第1状態から第2状態(例えば、状態310B)へ遷移したことを確認することを更に含んでいてもよい。何らかの実施形態において、ミッドポイント・システムは、エンドポイント・コンピュータ・システムからデータ(例えば、ハートビート)を受信していないことに応じて、指示を導出する。1つ以上のアクションは、エンドポイント・コンピュータ・システムが第2状態へ遷移したことを、データベース・コンピュータ・システムに通知することを更に含んでいてもよい。
【００５０】
何らかの実施形態において、ミッドポイント・コンピュータ・システムは、情報フローで規定されている1つ以上のアクションを最早実行しない旨のコマンドを、データベース・コンピュータ・システムから受信する。そのコマンドの受信に応じて、ミッドポイント・コンピュータ・システムは、情報フローの一部としてデータベース・コンピュータ・システムから受信されるプログラム命令の実行を止めてもよい。
マルチ・テナント・データベース・システム例
【００５１】
図8は、マルチ・テナント・データベース(a  multi-tenant  database)及びキャッシュ・システムが実現されてよい環境例を示す。開示されるマルチ・テナント・システムは、例示的な目的で包含されており、本開示の範囲を限定するようには意図されていない点に留意を要する。別の実施形態において、同様な技術が、様々なクライアント/サーバー環境、クラウド・コンピューティング環境、クラスター化されたコンピュータ等のような非マルチ・テナント環境で実現されてもよい。図8に(及び図9に詳細に)示されるように、1つ以上のユーザー・システム812は、マルチ・テナント・データベース・システム(a  multi-tenant  database  system：MTS)816とネットワーク814を介して相互作用してもよく、これらは任意のシステム110であってよい。これらのユーザー・システム812のユーザーは、相違するキャパシティのユーザーであってもよく、特定のユーザー・システム812のキャパシティが現在のユーザーにより決定されていてもよい。例えば、セールスパーソンがMTS816と相互作用するために特定のユーザー・システム812を利用している場合、そのユーザー・システム812はそのセールスパーソンに割り振られたキャパシティを有するかもしれない。しかしながら、アドミニストレータがMTS816と相互作用するために同じユーザー・システム812を使用する場合、それは、そのアドミニストレータに割り振られるキャパシティを有する。従って、様々な実施形態において、システム816を実現するシステム(例えば、システム110A)により保持される情報(例えば、デバイス情報124、状態情報127等)は、適切なキャパシティ(例えば、許可又は資格)を有するユーザーのみによって修正されることが可能である。
【００５２】
ネットワーク814は、LAN(ローカル・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、ワイヤレス・ネットワーク、ポイント・トゥ・ポイント・ネットワーク、スター・ネットワーク、トークン・リング・ネットワーク、ハブ・ネットワーク、又はその他の適切な任意のコンフィギュレーションであってもよい。大文字の「I」で始まる「Internet(インターネット)」としてしばしば言及されるグローバル・インターネットワーク・ネットワークは、本願における多数の具体例で使用され、TCP/IP(Transfer  Control  Protocol  and  Internet  Protocol)ネットワークの一例である。しかしながら、本発明におけるネットワークは他のタイプの任意の様々なネットワークを利用してよいことが、理解されるべきである。
【００５３】
ユーザー・システム812は、TCP/IPを利用して及びより上位のネットワーク・レベルでMTS816と通信し、HTTP、FTP、AFS、WAP等のような他の一般的なインターネット・プロトコルを使用して通信してもよい。一例として、HTTPが使用される場合、ユーザー・システム812は、MTS816におけるHTTPサーバーからHTTPメッセージを受信及び送信するための「ブラウザ」として一般に言及されるHTTPクライアントを含んでもよい。そのようなサーバーは、MTS816及びネットワーク814の間の単独のネットワーク・インターフェースとして実現されてもよいが、他の技術が追加的に又は代替的に使用されてもよい。何らかの実現例において、MTS816及びネットワーク814の間のインターフェースは、負荷のバランスをとり、到来するHTTPリクエストを複数のサーバーにわたって均等に分散させるために、ラウンド・ロビンHTTPリクエスト・ディストリビュータのような負荷共有機能を含む。好ましくは、複数のサーバーの各々が、少なくとも、サーバーにアクセスするユーザーに関し、MTSのデータに対するアクセス権を有する。
【００５４】
何らかの実施形態において、図8に示されるシステムは、ウェブ・ベースの顧客関係管理(CRM)システムを実現する。例えば、何らかの実施形態において、MTS816はアプリケーション・サーバーを含み、アプリケーション・サーバーは、CRMソフトウェア・アプリケーションを実現して実行するように構成されるだけでなく、ユーザー・システム812へ及びそこからの関連データ、コード、フォーム、ウェブ・ページ、及びその他の情報を提供し、データ、オブジェクト、及びウェブ・ページ・コンテンツに関連するデータベース・システムへ保存する及びそこから取り出すように構成される。マルチ・テナント・システムの実施形態において、テナント・データが好ましくは構成され、それにより、或るテナントのデータは他のテナントのものから別個に維持され、それにより、或るテナントは、データが明示的に共有されていない限り、他のテナントのデータに対するアクセス権を有しない。
【００５５】
MTS816の構成の1つは図8に示されており、MTS816は、ネットワーク・インターフェース820、テナント・データのためのストレージ822、MTS816に対してアクセス可能なシステム・データのストレージ824、おそらくは複数のテナント、MTS816の様々な機能を実現するプログラム・コード826、MTSシステム・プロセスを実行するプロセス・スペース828、及びテナント特有のプロセス(アプリケーション・サービスの一部として動作するアプリケーションのようなもの)を含む。
【００５６】
図8に示されるシステムにおける幾つものエレメントは、従来の周知のエレメントを含んでいてもよく、それらは本願で詳細には説明される必要はない。例えば、各々のユーザー・システム812は、デスクトップ・パーソナル・コンピュータ、ワークステーション、ラップトップ、PDA、セル・フォン、何らかのWAPイネーブル・デバイス、(インターネット又は他のネットワーク接続に対して直接的又は間接的にインターフェースとなることが可能な)何らかの他のコンピューティング・デバイスであってもよい。ユーザー・システム812は、マイクロソフトのインターネット・エクスプローラ・ブラウザ、ネットスケープのナビゲータ・ブラウザ、オペラのブラウザ、WAPイネーブル・ブラウザ(セル・フォン、PDA、又はその他のワイヤレス・デバイス等におけるもの)のような閲覧プログラムのようなHTTPクライアントを実行してもよく、ユーザー・システム812のユーザー(例えば、CRMシステムの加入者)が、ネットワーク814を介してMTS816から利用可能な情報及びページにアクセスする、それらを処理する、及びそれらを眺めることを許容する。各々のユーザー・システム812は、キーボード、マウス、タッチ・スクリーン、ペン等のような1つ以上のユーザー・インターフェース・デバイスを含み、MTS816又はその他のシステム又はサーバーにより提供されるページ、フォーム、及びその他の情報に関し、ディスプレイ・モニタ・スクリーン、LCDディスプレイ等において、ブラウザにより提供されるグラフィカル・ユーザー・インターフェース(GUI)と相互作用してもよい。上述したように、本発明はインターネットとともに使用することに適しており、インターネットはネットワークの特定のグローバル・インターネットワークを指す。しかしながら、イントラネット、エクストラネット、仮想プライベート・ネットワーク(VPN)、非TCP/IPベースのネットワーク、何らかのLAN又はWAN等のような他のネットワークがインターネットの代わりに使用されてもよいことが、理解されるべきである。
【００５７】
何らかの実施形態において、各々のユーザー・システム812及びそのコンポーネントは、ブラウザのようなアプリケーションを利用してオペレータが設定可能であり、1つ以上の処理エレメントで実行可能なコンピュータ・コードを含む。同様に、何らかの実施形態において、MTS816(及びMTSの追加的なインスタンス(1つより多いMTSが存在する場合))及びそれらのコンポーネントは、1つ上の処理エレメントで実行可能なコンピュータ・コードを含む、アプリケーションを利用してオペレータが設定可能なものである。従って、本願で説明される様々なオペレーションは、非一時的なコンピュータ読み取り可能な媒体に保存されるプログラム命令により実行され、1つ以上の処理エレメントにより実行されてもよい。プログラム命令は、ハード・ディスクのような不揮発性媒体に保存されていてもよいし、或いは他の任意の揮発性又は不揮発性のメモリ媒体、又はROM又はRAMのような周知のデバイスに保存されていてもよいし、コンパクト・ディスク(CD)媒体、ディジタル多用途ディスク(DVD)媒体、フロッピ・ディスク等のようなプログラム・コードを保存することが可能な任意の媒体で提供されてもよい。追加的に、完全なプログラム・コード又はその一部分が、例えばインターネットを介してソフトウェア・ソースから、又は他のサーバーから、当該技術分野で周知のように、伝送及びダウンロードされてもよいし、或いは当該技術分野で周知のように任意の通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサーネット等)を利用して、当該技術分野で周知のように他の任意の従来のネットワーク・コネクション(例えば、エクストラネット、VPN、LAN等)を介して伝送されてもよい。本発明の一側面を実現するコンピュータ・コードは、例えば、C、C+、HTML、Java(登録商標)、JavaScript(登録商標)のようなサーバー又はサーバー・システムで実行可能な任意のプログラミング言語、又はVBScriptのような他の何らかのスクリプト言語で実現され得ることが認められるであろう。
【００５８】
一実施形態によれば、各々のMTS816は、MTS816のテナントとしてユーザー・システム812によるアクセスをサポートするために、ウェブ・ページ、フォーム、アプリケーション、データ、及び/又はメディア・コンテンツをユーザー・システム812へ提供するように構成される。従って、この実施形態では、MTS816は、データが共有されていない限り、各テナントのデータを別々に保持するセキュリティ機構を提供する。1つより多いMTSが使用される場合、(例えば、1つの建物又はキャンパスに配置されるサーバー・ファームのように)それらは互いに非常に近くに配置されてもよいし、或いはそれらは難いに遠く離れた場所に分散されていてもよい(例えば、1つ以上のサーバーが都市Aに配置され、1つ以上のサーバーが都市Bに配置されてもよい)。本願で使用されるように、MTSsは、ローカルに又は1つ以上の地理的な場所にわたって分散した1つ以上の論理的及び/又は物理的に接続されたサーバーを含んでいてもよい。更に、「サーバー」という用語は、当業者に良く知られているように、処理ハードウェア及びプロセス・スペースと、関連するストレージ・システムと、データベース・アプリケーションとを含むコンピュータ・システムを含む。「サーバー・システム」及び「サーバー」は本願ではしばしば交換可能に使用されることも理解されるべきである。同様に、本願で説明されるデータベースは、単独のデータベース、分散されたデータベース、分散されたデータベースの集まり、冗長的なオフライン又はオフラインバックアップ又はその他の冗長性を有するデータベース等として実現されることが可能であり、及び、分散されたデータベース又はストレージ・ネットワークと関連する処理インテリジェンスとを含んでいてもよい。
【００５９】
図9はMTS816及び様々な相互接続の実施例をより詳細に示す。この例では、ネットワーク・インターフェースは、1つ以上のHTTPアプリケーション・サーバー900として実現されている。テナント・プロセス・スペース904を含むシステム・プロセス・スペース902、システム・データベース906、テナント・データベース908、及びテナント・マネジメント・プロセス・スペース910も示されている。テナント・データベース908は、複数のアプリケーション・サーバーにわたって共有されていてもよく、複数の個別的なテナント・ストレージ・エリア912に分割されていてもよく、分割されるエリアは物理的な構成又は論理的な構成であるとすることが可能である。各々のテナント・ストレージ・エリア912の中で、ユーザー・ストレージ914は各々のユーザーに割り当てられていてもよい。
【００６０】
図示の実施形態では、各アプリケーション・サーバー900もキャッシュ918の少なくとも一部を含む。何らかの実施形態において、ウェブ・アプリケーションを利用するユーザー・システム812は、データを再生成するのではなく、(例えば、「プット(put)」オペレーションを利用して)データをキャッシュ918に保存し、(例えば、「ゲット(get)」オペレーションを利用して)データを後に取り出すことを要求することが可能である。何らかの実施形態において、キャパシティの制限は、様々なユーザー/テナント/パーティションに対して指定されてもよく、割り振られたキャパシティ以下に留まるように、キャッシュされていたデータが退去させられてもよい。何らかの実施形態において、特定のテナントのためにキャッシュされたデータは、他のテナントから秘密に維持される。更に、特定のテナントの中でキャッシュ・データの可視的な範囲は、設定可能であってもよい。
【００６１】
何らかの実施形態において、キャッシュ918は複数のアプリケーション・サーバー900の間で分割される。何らかの実施形態において、複数のインスタンスの間で分割することは、キャッシュ918内のデータが、システム・メモリ・スペースに適合することを許容し、そのような適合化は、例えばディスク・ストレージのキャッシュ918に関してデータを保存することに対する応答時間を改善し得る。ここで使用されるように、「メモリ内キャッシュ(in-memory  cache)」は、(典型的には、例えば、従来のディスク・ストレージに必要とされているような)ストレージに対するページングを必要とすることなく、システム・メモリ・スペースにデータを保存するキャッシュである(典型的には、データがRAMに保存可能であることを意味する)。複数の異なるテナント・エンティティに個々の仮想的なキャッシュを提供するために単独のキャッシュが使用されるという意味において、キャッシュ918は「マルチ・テナント」キャッシュであってもよい。複数の異なるテナントはデータを保存するために同じデータ構造を利用してもよいし、或いは異なるテナントはキャッシュ内で異なるデータ構造を有していてもよい。様々な実施形態において、マルチ・テナント・キャッシュはテナント間にデータ・セキュリティを強制し、それにより、或るテナントからのデータは他のテナントにとって利用可能ではない。従って、本願で使用されるように、マルチ・テナント・キャッシュの文脈における「テナント」という用語は、異なるテナントは互いのデータにアクセスできないように複数のキャッシュ・エントリが別々に維持されるエンティティを指す。何らかの実施形態において、テナントは、キャッシュを介して各自のデータにアクセスすることを他のテナントに承認してもよいが、別の実施形態では、所与のテナントのデータは、マルチ・テナント・キャッシュによりそのテナントに限ってアクセス可能であってもよい(但し、そのテナントは、そのテナントが望むのであれば、以後、キャッシュから取り出されたデータを共有してもよい)。
【００６２】
各々のアプリケーション・サーバー900はデータベース・システムに通信可能に結合されてもよく、例えば、様々なネットワーク・コネクションを介してシステム・データベース906及びテナント・データベース908に通信可能に結合されてもよいことが、理解されるべきである。例えば、或るサーバー900Iがネットワーク814を介して結合されてもよいし、別のサーバー900N-1がダイレクト・ネットワーク・リンクを介して結合されてもよいし、別のサーバー900Nが更に異なるネットワーク・コネクションにより結合されてもよい。TCP/IP(Transfer  Control  Protocol  and  Internet  Protocol)は、サーバー900とデータベース・システムとの間の通信に好ましいプロトコルであるが、使用されるネットワーク相互接続に依存してシステムを最適化するために他の伝送プロトコルが使用されてよいことは、当業者にとって明らかであろう。
【００６３】
好ましい側面において、各アプリケーション・サーバー900は任意のユーザー/組織(organization)のためのリクエストを処理するように構成される。何らかの理由で何らかの時点でサーバー・プールに及びそこからアプリケーション・サーバーを追加及び除外できることが望ましいので、特定のアプリケーション・サーバー900に対するユーザー及び/又は組織のサーバー親和性(server  affinity)は無いことが好ましい。従って、一実施形態では、(例えば、F5  Big-IP負荷バランサーのような)負荷バランス機能を実現する(不図示の)インターフェース・システムが、サーバー900へリクエストを分散させるためにサーバー900とユーザー・システム812との間に通信可能に結合される。一側面において、負荷バランサーは、サーバー900にユーザー・リクエストをルーティングするために最小コネクション・アルゴリズムを利用する。ラウンド・ロビン順守応答時間(round  robin  and  observed  response  time)のような他の負荷バランス・アルゴリズムの例が使用されることも可能である。例えば、或る側面において、同じユーザーからの3つの連続的なリクエストが3つの異なるサーバーに「ヒット(hit)」し、異なるユーザーからの3つのリクエストが同じサーバーにヒットする可能性がある。このように、MTS816はマルチ・テナントであり、この場合において、MTS816は、異なるユーザー及び組織にわたって異なるオブジェクト及びデータのストレージを処理する。
【００６４】
ストレージの一例として、1つのテナントは販売員を雇用する企業であるかもしれず、その場合において、各セールスパーソンは各自の販売プロセスを管理するためにMTS816を利用する。従って、ユーザーは、連絡先データ、リーズ・データ(leads  data)、フォローアップ・データ、パフォーマンス・データ、ゴール、進捗データ、ユーザーの個人的な販売プロセスに応用可能なモノ全てを(例えば、テナント・データベース908において)管理してもよい。何らかのMTS実施形態では、アクセス、閲覧、修正、報告、送信、計算などのためのアプリケーション及びこれらの全てのデータは、ネットワーク・アクセス以上のものを有しないユーザー・システムによって維持されアクセスされることが可能であるので、ユーザーは、彼又は彼女の販売努力及びサイクルを、任意の多種多様なユーザー・システムから管理することが可能である。例えば、或るセールスパーソンが顧客を訪問し、その顧客は彼らのロビーでインターネット・アクセスを有する場合、セールスパーソンは、ロビーに到着する顧客を待ちながら、その顧客に関する重要なアップデートを取得することが可能である。
【００６５】
各ユーザーのセールス・データが、各ユーザーの雇い主によらず他のユーザーのセールス・データとは別々になっていてもよい場合、或るデータは、テナントである所与の組織に対するセールス3つのうちの全部又は複数によって共有される又はアクセス可能な全組織的なデータであってもよい。従って、テナント・レベルで割り振られるMTS816により管理される何らかのデータ構造が存在してもよい一方、他のデータ構造がユーザー・レベルで管理されてもよい。MTSは可能性のある共業者を含む複数のテナントをサポートしてもよいので、MTSは、データ、アプリケーション、及びアプリケーションの利用を個別的に維持するセキュリティ・プロトコルを有するべきである。また、多くのテナントが、各自自身のシステムを維持するのではなく、MTSに対するアクセスを選択するので、セキュリティ、冗長性、動作可能時間(up-time)及びバックアップがより重要な機能であり、MTSで実現されることを要する。
【００６６】
ユーザー特有のデータ及びテナント特有のデータに加えて、MTS816は、複数のテナントにより利用可能なシステム・レベルのデータを保持してよいかもしれない。そのようなシステム・レベルのデータは、テナント間で共有可能な業界レポート、ニュース、投稿などを含むかもしれない。
【００６７】
所定の側面において、クライアント・システム812は、MTS816からのシステム・レベル及びテナント・レベルのデータをリクエスト及びアップデートするためにアプリケーション・サーバー900と通信し、そのリクエスト等は、データベース・システム906及び/又はデータベース・システム908に対する1つ以上のクエリを要求するかもしれない。何らかの実施形態において、MTS816は、所望の情報にアクセスするようにデザインされる1つ以上のSQLステートメント(SQLクエリ)を自動的に生成する。
【００６８】
各データベースは、概して、複数の所定のカテゴリに適合させられたデータを含む一群の論理的なテーブルとして眺められるかもしれない。各テーブルは、典型的には、物理的な列(column)に論理的に並べられる1つ以上のデータ・カテゴリを含む。テーブルの各行(row)は、典型的には、列によって規定される各カテゴリに対するデータのインスタンスを含む。例えば、CRMデータベースは、名前、アドレス、電話番号、ファクシミリ番号などのような基本連絡先情報に関する列とともに顧客を記述するテーブルを含むかもしれない。別のテーブルは、顧客、製品、製品価格、日付などのような情報に関する列を含む注文書を記述しているかもしれない。
【００６９】
図10を参照すると、システム110を実現し得る例示的なコンピュータ・システム1000のブロック図が示されている。コンピュータ・システム1000は、任意のレイヤ105におけるコンピュータ・システムの表現物であってよい。コンピュータ・システム1000は、相互接続1060(例えば、システム・バス)を介してシステム・メモリ1020及びI/Oインターフェース1040に結合されるプロセッサ・サブシステム1080を含む。I/Oインターフェース1040は1つ以上のI/Oデバイス1050に結合される。コンピュータ・システム1000は任意の様々なタイプのデバイスであってもよく、以下のものに限定するわけではないが、具体例は、サーバー・システム、パーソナル・コンピュータ・システム、デスクトップ・コンピュータ、ラップトップ又はノートブック・コンピュータ、メインフレーム・コンピュータ・システム、タブレット・コンピュータ、携帯コンピュータ、ワークステーション、ネットワーク・コンピュータ、カスタマー・デバイス(例えば、モバイル・フォン、ミュージック・プレーヤ、又はパーソナル・データ・アシスタント(PDA))を含む。簡明化のため、図10には単独のコンピュータ・システム1000が示されているが、システム1000は、一緒に動作する2つ以上のコンピュータ・システムとして実現されてもよい。
【００７０】
プロセッサ・サブシステム1080は1つ以上のプロセッサ又は処理ユニットを含んでよい。コンピュータ・システム1000の様々な実施形態において、プロセッサ・サブシステム1080の複数のインスタンスが相互接続1060に結合されてよい。様々な実施形態において、プロセッサ・サブシステム1080(又は1080内の各プロセッサ・ユニット)は、キャッシュ又はその他の形式のオンボード・メモリを含んでよい。
【００７１】
システム・メモリ1020は、本願で説明される様々なオペレーションをシステム1000に実行させるために、プロセッサ・サブシステム1080により実行可能なプログラム命令を保存するように使用することが可能である。システム・メモリ1020は様々な物理的な記憶媒体を利用して実現されてよく、記憶媒体は、例えば、ハード・ディスク・ストレージ、フロッピ・ディスク・ストレージ、取り外し可能なディスク・ストレージ、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM-SRAM、EDO  RAM、SDRAM、DDR  SDRAM、RAMBUS  RAM等)、リード・オンリ・メモリ(PROM、EEPROM等)等である。コンピュータ・システム1000におけるメモリは、メモリ1020のようなプライマリ・ストレージに限定されない。むしろ、コンピュータ・システム1000は、プロセッサ・サブシステム1080におけるキャッシュ・メモリのような他の形式のストレージ、及び(例えば、ハード・ドライブ、ストレージ・アレイ等のような)I/Oデバイス1050におけるセカンダリ・ストレージを含んでもよい。何らかの実施形態において、これらの他の形式のストレージは、プロセッサ・サブシステム1080により実行可能なプログラム命令を保存してもよい。様々な実施形態において、上述したような、デバイス情報124、状態情報127、インテリジェンス・モジュール130、及びコンテキスト情報140は、システム・メモリ1020内に含まれてもよい。
【００７２】
I/Oインターフェース1040は、様々な実施形態に従って、他のデバイスに結合して他のデバイスと通信するように構成される任意の多種多様なインターフェースであってよい。一実施形態において、I/Oインターフェース1040は、フロント・サイドから1つ以上のバック・サイド・バスへのブリッジ・チップ(例えば、サウスブリッジ(Southbridge))である。I/Oインターフェース1040は、1つ以上の対応するバス及びその他のインターフェースを介して1つ以上のI/Oデバイス1050に結合されてよい。I/Oデバイス1050の具体例は、ストレージ・デバイス(ハード・ドライブ、光ドライブ、リムーバブル・フラッシュ・ドライブ、ストレージ・アレイ、SAN、又はそれらの関連するコントローラ)、ネットワーク・インターフェース・デバイス(例えば、ローカル又はワイド・エリア・ネットワークに至るもの)、或いはその他のデバイス(例えば、グラフィックス、ユーザー・インターフェース・デバイス等)を含む。一実施形態において、コンピュータ・システム1000は、(例えば、WiFi、Bluetooth、Ethernet等を介して通信するように構成される)ネットワーク・インターフェース・デバイス1050を介してネットワークに結合される。
【００７３】
本願の対象事項の実現手段は、限定ではないが、以下の具体例1ないし20に示される。
具体例1．
マルチ・レイヤ・コンピュータ・ネットワークの第1レイヤ内の第1コンピュータ・システムが、マルチ・レイヤ・コンピュータ・ネットワークにおける情報フローを規定する状態情報を維持するステップであって、情報フローは複数のアクションを含む、ステップ；
第1コンピュータ・システムが、マルチ・レイヤ・コンピュータ・ネットワークの別の第2レイヤで実行される、複数のアクションのうちの何れか特定のアクションを指定するステップ；
第1コンピュータ・システムが、特定のアクションを実行するためにプログラム命令を生成するステップであって、プログラム命令は、第1コンピュータ・システムにとってアクセス可能なデバイス情報を利用して生成され、デバイス情報は、第2レイヤ内の第2コンピュータ・システムの特徴を示す、ステップ；及び
第1コンピュータ・システムが、規定された情報フローの一部として特定のアクションを実行するために、プログラム命令が第2コンピュータ・システムへ送信されることを引き起こすステップ；
を有する方法。
具体例2．
情報フローは、複数のアクションを指定する状態マシンを含み、状態マシンは、複数のアクションのうちの少なくとも幾つかが、マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤ内の第3コンピュータ・システムの状態に基づいて実行されることを示す、具体例1に記載の方法。
具体例3．
第2コンピュータ・システムの特徴は、第2コンピュータ・システムの処理能力及びメモリ容量を示す、具体例1に記載の方法。
具体例4．
第2コンピュータ・システムの特徴に基づいて、第1コンピュータ・システムが、第2コンピュータ・システムは、特定のアクションを実行するために十分なリソースを有するか否かを判断するステップ；
を更に有し、生成するステップは、特定のアクションを実行するための処理能力及び前記メモリ容量を第2コンピュータ・システムが有することを確認した後に実行される、具体例3に記載の方法。
具体例5．
情報フローがマルチ・レイヤ・コンピュータ・ネットワーク内で実現された後に、第1コンピュータ・システムが：
第2コンピュータ・システムのリソース利用度を示す情報を受信し；
リソース利用度が特定の閾値量を充足していないことを確認したことに応じて：第2コンピュータ・システムにより実行される、複数のアクションのうちの追加的な何れかのアクションを指定し；及び追加的なアクションを実行するために第2コンピュータ・システムへ送信される追加的なプログラム命令を生成するステップ；
を更に有する具体例1に記載の方法。
具体例6．
第1コンピュータ・システムが、複数のアクションのうち特定の何れかを実行したことに応じて特定のエンティティに通知する連絡先を規定するコンテキスト情報を保持するステップを更に有する具体例1に記載の方法。
具体例7．
コンテキスト情報のうち特定のエンティティに通知する連絡先を規定する部分を、第1コンピュータ・システムが第2コンピュータ・システムへ提供するステップ；
を更に有し、特定のアクションは、第3コンピュータ・システムの動作状態を示すデータに基づいて、特定のエンティティに通知することを含む、具体例6に記載の方法。
具体例8．
マルチ・レイヤ・コンピュータ・ネットワークのうち、特定のアクションを割り振るための1つ以上の示唆されるコンピュータ・システムを、第1コンピュータ・システムがユーザーに提示するステップ；
を更に有し、指定するステップは、ユーザーにより提供される指定情報に基づいて実行され、指定情報は、1つ以上の示唆されるコンピュータ・システムに関する選択を指定する、具体例1に記載の方法。
具体例9．
特定のアクションが、マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤにおける第3コンピュータ・システムに再指定されるように、情報フローを更新するリクエストを、第1コンピュータ・システムが受信するステップ；
リクエストを受信したことに応答して、第1コンピュータ・システムが：第2コンピュータには最早特定のアクションを実行させず；特定のアクションを実行するために、第3コンピュータ・システムにより実行可能なプログラム命令を生成し；及びプログラム命令が第3コンピュータ・システムへ送信されることを引き起こすステップ；
を更に有する具体例1に記載の方法。
具体例10．
マルチ・レイヤ・コンピュータ・ネットワークにおける第1レイヤは、第1コンピュータ・システムを有するデータ・センターを含み、第2レイヤは第2コンピュータ・システムを有するゲートウェイを含み、及びマルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤは、第3コンピュータ・システムを有するエンドポイント・システムを含む、具体例1に記載の方法。
具体例11．
指定するステップはユーザーにより提供される選択に基づいており、選択は、特定のアクションを実行するために第2レイヤ内で第2コンピュータ・システムを指定する、具体例1に記載の方法。
具体例12．
非一時的なコンピュータ読み取り可能な媒体であって、媒体に保存されるコンピュータ命令を有し、コンピュータ命令は、マルチ・レイヤ・コンピュータ・ネットワークの第1レイヤ内の第1コンピュータ・システムにオペレーションを実行させることが可能であり、オペレーションは：
エンドポイント・コンピュータ・システムに関連する状態に基づいて実行されるアクションを規定するオーケストレーション情報を維持するステップであって、アクションは情報フローに関連する、ステップ；
マルチ・レイヤ・コンピュータ・ネットワークの別の第2レイヤ内の第2コンピュータ・システムにより実行される何れかのアクションを指定するステップ；
指定されたアクションを実行するために、第2コンピュータ・システムにより実行可能なプログラム命令を生成するステップであって、プログラム命令は、第2コンピュータ・システムの特徴を指定するデバイス情報に基づいて生成される、ステップ；及び
エンドポイント・コンピュータ・システムが特定の状態に関連することに基づいて、指定されたアクションを実行するために、プログラム命令が、第2コンピュータ・システムに提供されることを引き起こすステップであって、エンドポイント・コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの別の第3レイヤ内に存在する、ステップ；
を有する、媒体。
具体例13．
オペレーションは：
指定されたアクションを、マルチ・レイヤ・コンピュータ・ネットワークの別の第4レイヤ内の第4コンピュータ・システムに再指定するステップ；及び
指定されたアクションを再指定した後に：指定されたアクションを実行しないように、第2コンピュータ・システムに指示し；及び第4コンピュータ・システムのために生成されるプログラム命令が、第4コンピュータ・システムに送信されることを引き起こすステップ；
を更に含む、具体例12に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例14．
オペレーションは：
デバイス情報に基づいて、第2コンピュータ・システムはアクションを実行するために十分なリソースを有するか否かを判断するステップ；
を更に有し、指定するステップは、第2コンピュータ・システムがアクションを実行するための処理能力及びメモリ容量を有することを確認した後に実行される、具体例12に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例15．
オペレーションは：
グラフィカル・ユーザー・インターフェースがユーザーに表示されることを引き起こすステップ；
を更に有し、グラフィカル・ユーザー・インターフェースは、マルチ・レイヤ・コンピュータ・ネットワークのコンピュータ・システムに、何れかのアクションを指定することをユーザーに許容する、具体例12に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例16．
非一時的なコンピュータ読み取り可能な媒体であって、媒体に保存されるコンピュータ命令を有し、コンピュータ命令は、ミッドポイント・コンピュータ・システムにオペレーションを実行させることが可能であり、オペレーションは：
マルチ・レイヤ・コンピュータ・ネットワークの異なるレイヤで実行されるアクションを規定する情報フローで規定される1つ以上のアクションを実行するように実行可能な特定のプログラム命令を、データベース・コンピュータ・システムから受信するステップであって、ミッドポイント及びデータベース・コンピュータ・システムは、マルチ・レイヤ・コンピュータ・ネットワークの異なるレイヤに存在する、ステップ；
1つ以上のアクションを実行するために特定のプログラム命令を実行するステップ；
を有し、実行するステップは：
マルチ・レイヤ・コンピュータ・ネットワークのうちミッドポイント及びデータベース・コンピュータ・システムとは異なるレイヤに存在するエンドポイント・コンピュータ・システムから、エンドポイント・コンピュータが第1状態にあることを示すデータを受信するステップ；
エンドポイント・コンピュータ・システムに関連する指示に基づいて、エンドポイント・コンピュータ・システムが第1状態から第2状態へ遷移したことを確認するステップ；及び
エンドポイント・コンピュータ・システムが第2状態に遷移したことをデータベース・コンピュータ・システムに通知するステップ；
を含む、非一時的なコンピュータ読み取り可能な媒体。
具体例17．
1つ以上のアクションは：
エンドポイント・コンピュータ・システムからデータを受信していないことに応答して指示を導出すること；
を含み、データはエンドポイント・コンピュータ・システムのハートビートを示す、具体例16に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例18．
情報フローで規定される1つ以上のアクションを最早実行しない旨のコマンドを、データベース・コンピュータ・システムから受信するステップ；及び
コマンドを受信したことに応答して、情報フローの一部として、データベース・コンピュータ・システムから受信されるプログラム命令を実行することを止めるステップ；
を更に有する、具体例16に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例19．
処理利用度及びメモリ利用度を指定するシステム情報を、データベース・コンピュータ・システムに提供するステップ；
を更に含み、データベース・コンピュータ・システムは、システム情報に基づいてミッドポイント・コンピュータ・システムに1つ以上の追加的なアクションを指定するか否かを決定するように構成されている、具体例16に記載の非一時的なコンピュータ読み取り可能な媒体。
具体例20．
データベース・コンピュータ・システムはクラウド・ベース・システムであり、エンドポイント・コンピュータ・システムはセンサー・デバイスであり、ミッドポイント・コンピュータ・システムは、データベース・コンピュータ・システムとエンドポイント・コンピュータ・システムとの間で動作するルータ・システムである、具体例16に記載の非一時的なコンピュータ読み取り可能な媒体。
【００７４】
特定の具体的な実施形態がこれまで説明されてきたが、特定の特徴に関してたとえ単独の実施形態しか記述されていない場合でさえ、これらの実施形態は本開示の範囲を限定するようには意図されていない。本開示で提供される特徴の具体例は、別意に言及されない限り、限定ではなく例示であるように意図されている。本開示の恩恵を受ける当業者に明らかであるように、上記の記述は、そのような代替、修正及び均等物を包含するように意図される。
【００７５】
本開示の範囲は、本願で対処される問題点の何れか又は全部を軽減するか否かによらず、(明示的に又は黙示的に)本願で開示される任意の特徴又は特徴の組み合わせ、或いはそれらの任意の一般化したものを含む。従って、そのような特徴の組み合わせに関し、新たな請求項が本願(又は優先権を主張する出願)の中間処理で作成されてもよい。特に、添付の特許請求の範囲に関し、従属請求項による特徴が独立請求項に組み合わせられてもよく、添付の特許請求の範囲に示される具体的な組み合わせだけでなく個々の独立請求項の特徴が適切な任意の方法で、組み合わせられてよい。
【図１】
2019083009.tif 000003
【図２】
2019083009.tif 000004
【図３】
2019083009.tif 000005
【図４】
2019083009.tif 000006
【図５】
2019083009.tif 000007
【図６】
2019083009.tif 000008
【図７】
2019083009.tif 000009
【図８】
2019083009.tif 000010
【図９】
2019083009.tif 000011
【図１０】
2019083009.tif 000012
【外国語明細書】
2019083009000001.pdf