(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信し、
前記入力イベントを受信すると、入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部を参照し、前記受信した入力イベントを送信したノードに配備された前記受信した入力イベントに関連する処理を行うモジュールに対応付けられた参照データ抽出用情報と参照箇所情報とに対応するデータを、前記モジュールが前記データ参照を伴う処理を行う場合に参照する、前記参照データ抽出用情報及び前記参照箇所情報に対応するデータを記憶するマスタから、前記受信した入力イベントに基づいて抽出し、
前記抽出する処理によって抽出されたデータを前記ノードに配備する
処理を実行することを特徴とするイベント収集方法。
【請求項２】
コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信し、
前記モジュールが前記データ参照を伴う処理を行う場合に参照するデータに基づく部分参照データの特性に関する条件、及び、前記ノードのリソース量に関する条件のうち、１つ以上の条件に基づいて、受信した入力イベントに関連する処理を行う前記モジュールを前記ノードに配備できるか否かを判定し、
前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する
処理を実行することを特徴とするイベント収集方法。
【請求項３】
前記コンピュータは、前記モジュールが前記データ参照を伴う処理を行う場合に参照するデータに基づく部分参照データの特性に関する条件、及び、前記ノードのリソース量に関する条件のうち、１つ以上の条件に基づいて、受信した入力イベントに関連する処理を行う前記モジュールを前記ノードに配備できるか否かを判定し、
前記配備する処理は、前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記抽出する処理によって抽出されたデータを当該ノードに配備することを特徴とする請求項１に記載のイベント収集方法。
【請求項４】
前記判定する処理は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、変更後のノードに配備された前記モジュールと依存関係を有するモジュールを、前記変更後のノードに配備できるか否かを判定することを特徴とする請求項２または３に記載のイベント収集方法。
【請求項５】
前記判定する処理は、前記部分参照データの変更頻度について所定時間あたりの回数が上限値を超えないか否かを判定する第１条件、及び、前記部分参照データの占有リソース量が前記ノードのリソース量の上限値を超えないか否かを判定する第２条件のうち、１つ以上の条件を満たす場合に、受信した入力イベントに関連する処理を行う前記モジュールを前記ノードに配備できるか否かを判定することを特徴とする請求項２〜４のいずれか一つに記載のイベント収集方法。
【請求項６】
前記抽出する処理は、モジュールが配備されたノードから、当該モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、当該データ要求に対応するデータを前記マスタから抽出することを特徴とする請求項１または３に記載のイベント収集方法。
【請求項７】
コンピュータに、
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信し、
前記入力イベントを受信すると、入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部を参照し、前記受信した入力イベントを送信したノードに配備された前記受信した入力イベントに関連する処理を行うモジュールに対応付けられた参照データ抽出用情報と参照箇所情報とに対応するデータを、前記モジュールが前記データ参照を伴う処理を行う場合に参照する、前記参照データ抽出用情報及び前記参照箇所情報に対応するデータを記憶するマスタから、前記受信した入力イベントに基づいて抽出し、
前記抽出する処理によって抽出されたデータを前記ノードに配備する
処理を実行させることを特徴とするイベント収集プログラム。
【請求項８】
コンピュータに、
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信し、
前記モジュールが前記データ参照を伴う処理を行う場合に参照するデータに基づく部分参照データの特性に関する条件、及び、前記ノードのリソース量に関する条件のうち、１つ以上の条件に基づいて、受信した入力イベントに関連する処理を行う前記モジュールを前記ノードに配備できるか否かを判定し、
前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する
処理を実行させることを特徴とするイベント収集プログラム。
【請求項９】
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信する受信部と、
入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部と、
前記受信部が前記入力イベントを受信すると、前記モジュール定義記憶部を参照し、前記受信した入力イベントを送信したノードに配備された前記受信した入力イベントに関連する処理を行うモジュールに対応付けられた参照データ抽出用情報と参照箇所情報とに対応するデータを、前記モジュールが前記データ参照を伴う処理を行う場合に参照する、前記参照データ抽出用情報及び前記参照箇所情報に対応するデータを記憶するマスタから、前記受信した入力イベントに基づいて抽出する抽出部と、
前記抽出部によって抽出されたデータを前記ノードに配備する配備部と
を備えることを特徴とする情報処理装置。
【請求項１０】
データ参照を伴う処理を行うためのモジュールを実行するノードが接続されたセンサネットワークから入力イベントを受信する受信部と、
前記モジュールが前記データ参照を伴う処理を行う場合に参照するデータに基づく部分参照データの特性に関する条件、及び、前記ノードのリソース量に関する条件のうち、１つ以上の条件に基づいて、受信した入力イベントに関連する処理を行う前記モジュールを前記ノードに配備できるか否かを判定する判定部と、
前記判定部によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する配備部と
を備えることを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント収集方法、イベント収集プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
センサノードによってセンシングされたセンシングデータをイベントとして採取するセンサネットワークが知られている。かかるセンサネットワークを介してサーバノードに採取されたイベントに応じて各種のサービス、例えばアラートの発信や機器の制御などが提供される。
【０００３】
このように、センサノードからのイベントをサーバノードに収集させる場合には、全てのイベントがサーバノードに集中して通知されることになる。このため、サーバノードの負荷が増大するとともに、ネットワークのトラフィックの増加に伴ってネットワーク帯域も逼迫する。
【０００４】
かかるサーバノードの負荷とネットワークトラフィックとを抑制する技術の一例として、次のような技術が提案されている。一例としては、データをフィルタリングするフィルタエージェントを消費ノードからデータ生産ノードへ転送することによってシステムパフォーマンスおよび／またはリソース消費を改善するシステムが挙げられる。他の一例としては、スクリプトを入れ子構造とし、スクリプトの一部を下位ノードである中間ノードや下位ノードに実行させるセンサネットワークシステムが挙げられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９７６０３号公報
【特許文献２】特開２００６−３４４０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、例えば、イベントを集約処理するモジュールを、センサノードのイベント発生状況やセンサネットワークのトポロジに応じてセンサノードや中継ノード等の下位ノードに分散配備することで、ネットワークトラフィックを抑制する方法が考えられる。
【０００７】
しかしながら、上記の方法では、例えば、分散配備されるモジュールがデータの参照、特に、大量のデータの参照を要する場合には、各ノードに大量のデータを配備することとなるので、記憶容量が少ないノードにモジュールを配備できないという問題がある。また、参照データが更新された場合や配備先のノードのリソース量が不足した場合には、参照データの再配備を余儀なくされることがあり、その結果としてネットワークトラフィックを抑制できないという問題もある。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、大量のデータを配備することなくノードにて固有処理を実現することができるイベント収集方法、イベント収集プログラム及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示するイベント収集方法は、コンピュータによって実行されるイベント収集方法であって、一つの態様において、データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信する。また、イベント収集方法は、入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、データ参照にて参照されるデータを記憶するマスタから抽出する。また、イベント収集方法は、抽出されたデータをノードに配備する。
【発明の効果】
【００１０】
本願の開示するイベント収集方法の一つの態様によれば、大量のデータを配備することなくノードにて固有処理を実現することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。
【図２】図２は、実施例１に係るサーバノードの機能的構成を示すブロック図である。
【図３】図３は、モジュール記憶部に記憶される情報の構成例を示す図である。
【図４】図４は、モジュール定義記憶部に記憶される情報の構成例を示す図である。
【図５】図５は、参照データに関する情報について説明するための図である。
【図６】図６は、参照データを用いた実例１について説明するための図である。
【図７】図７は、参照データを用いた実例２について説明するための図である。
【図８】図８は、部分参照データの配備先の特定について説明するための図である。
【図９】図９は、配備可否判定に関する情報について説明するための図である。
【図１０】図１０は、参照データに応じた配備可否判定について説明するための図である。
【図１１】図１１は、マスタデータの監視設定処理の手順を示すフローチャートである。
【図１２】図１２は、図１１のステップＳ１０４においてリストアップされるデータについて説明するための図である。
【図１３】図１３は、マスタデータ変更検出時の処理の手順を示すフローチャートである。
【図１４】図１４は、図１３のステップＳ２０２において変更回数を集計する処理について説明するための図である。
【図１５】図１５は、トポロジ記憶部に記憶される情報の構成例を示す図である。
【図１６】図１６は、イベント記憶部に記憶される情報の構成例を示す図である。
【図１７】図１７は、発生イベント情報記憶部に記憶される情報の構成例を示す図である。
【図１８】図１８は、配備先情報記憶部に記憶される情報の構成例を示す図である。
【図１９】図１９は、モジュール配備処理の手順を示すフローチャートである。
【図２０】図２０は、配備済モジュールに対する処理の手順を示すフローチャートである。
【図２１】図２１は、配備済モジュールに対する処理の手順を示すフローチャートである。
【図２２】図２２は、配備先決定部の動作例１について説明するための図である。
【図２３】図２３は、配備先決定部の動作例１について説明するための図である。
【図２４】図２４は、配備先決定部の動作例１について説明するための図である。
【図２５】図２５は、配備先決定部の動作例１について説明するための図である。
【図２６】図２６は、配備先決定部の動作例１について説明するための図である。
【図２７】図２７は、配備先決定部の動作例２について説明するための図である。
【図２８】図２８は、配備先決定部の動作例２について説明するための図である。
【図２９】図２９は、部分参照データ不足検出からの配備可否判定処理の手順を示すフローチャートである。
【図３０】図３０は、実施例１に係るセンサノードの機能的構成を示すブロック図である。
【図３１】図３１は、実施例１に係るセンサノードにおける処理の手順を示すフローチャートである。
【図３２】図３２は、開示技術の適用例１について説明するための図である。
【図３３】図３３は、開示技術の適用例２について説明するための図である。
【図３４】図３４は、開示技術の適用例３について説明するための図である。
【図３５】図３５は、実施例２に係るセンサネットワークシステムのシステム構成を示す図である。
【図３６】図３６は、実施例２に係るＧＷノードの機能的構成を示すブロック図である。
【図３７】図３７は、イベント収集プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するイベント収集方法、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［システム構成］
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。図１に示すセンサネットワークシステム１は、センサノード２１０によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
【００１４】
図１に示すように、センサネットワークシステム１には、サーバノード１１０と、センサノード２１０とが収容される。これらセンサノード２１０とサーバノード１１０との間は、ネットワーク５を介して通信可能に接続される。かかるネットワーク５の一例としては、有線または無線を問わず、インターネット、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの通信網が挙げられる。なお、図１の例では、センサノード２１０を１つ収容する場合を例示したが、複数のセンサノードが収容されていてもよく、任意の数のセンサノードを収容する場合に適用することができる。
【００１５】
センサノード２１０は、センサ付きの通信端末である。センサノード２１０の一例としては、パーソナルコンピュータやその周辺機器、ＡＶ（Audio  Visual）機器、スマートフォンや携帯電話機、ＰＨＳ（Personal  Handyphone  System）などの携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード２１０に搭載されるセンサの一例としては、電力量を計測する電力センサ、温度を計測する温度センサ、湿度を計測する湿度センサなどが挙げられる。なお、ここでは、センサノード２１０に搭載されるセンサの例として電力センサや温度センサを例示するが、センサノード２１０にはＧＰＳ（Global  Positioning  System）センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
【００１６】
サーバノード１１０は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。例えば、サーバノード１１０は、センサノード２１０から受信したイベントを加工する加工処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
【００１７】
なお、図１の例では、サーバノード１１０の下位ノードとしてセンサノード２１０を図示しているが、センサノード２１０及びサーバノード１１０間の通信を中継するＧＷ（gateway）ノード３１０がサーバノード１１０の下位ノードとして含まれる場合もある。以下では、ルートノードであるサーバノード１１０以外のセンサノード２１０やＧＷノード３１０のことを「下位ノード」と総称する場合がある。また、センサノード２１０、GWノード３１０及びサーバノード１１０のことを単に「ノード」と総称する場合がある。
【００１８】
［サーバノードの構成］
次に、本実施例に係るサーバノードの機能的構成について説明する。図２は、実施例１に係るサーバノードの機能的構成を示すブロック図である。なお、サーバノード１１０は、図２に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
【００１９】
図２に示すように、サーバノード１１０は、モジュール登録部１１１と、モジュール記憶部１１１Ａと、モジュール定義記憶部１１１Ｂと、トポロジ取得部１１２と、トポロジ記憶部１１２Ａとを有する。さらに、サーバノード１１０は、イベント受信部１１３と、イベント記憶部１１４と、モジュール実行部１１５と、発生イベント登録部１１６と、発生イベント情報記憶部１１６Ａとを有する。さらに、サーバノード１１０は、参照データ記憶部１６２と、部分参照データ要求受信部１２０と、部分参照データ抽出部１１９と、部分参照データ送信部１６３と、配備先決定部１１７と、配備先情報記憶部１１７Ａと、モジュール送信部１１８とを有する。
【００２０】
モジュール登録部１１１は、モジュールを登録する処理部である。例えば、モジュール登録部１１１は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。モジュール登録部１１１は、サーバノード１１０にアップロードされたモジュールを後述のモジュール記憶部１１１Ａに登録する。モジュール登録部１１１は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部１１１Ｂに登録する。
【００２１】
モジュール記憶部１１１Ａは、モジュールを記憶する記憶部である。例えば、モジュール記憶部１１１Ａは、モジュールがアップロードされた場合に、モジュール登録部１１１によってモジュールが登録される。また、例えば、モジュール記憶部１１１Ａは、センサノード２１０やGWノード３１０などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部１１８によって参照される。なお、モジュール記憶部１１１Ａに記憶される情報の構成例については、図３を用いて後述する。
【００２２】
モジュール定義記憶部１１１Ｂは、モジュールに関する定義を記憶する記憶部である。例えば、モジュール定義記憶部１１１Ｂは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部１１１によってモジュールの定義が登録される。また、例えば、モジュール定義記憶部１１１Ｂは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。なお、モジュール定義記憶部１１１Ｂに記憶される情報の構成例については、図４を用いて後述する。
【００２３】
トポロジ取得部１１２は、センサネットワークの接続形態、いわゆるトポロジを取得する処理部である。例えば、トポロジ取得部１１２は、センサネットワークに収容されたセンサノード２１０やGWノード３１０を含む下位ノードから、当該下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を取得する。また、トポロジ取得部１１２は、当該下位ノードの記憶容量に関する情報を取得する。その上で、トポロジ取得部１１２は、下位ノードから取得したノード間の接続情報と、記憶容量に関する情報とを後述のトポロジ記憶部１１２Ａに登録する。なお、以下では、下位ノードがＵＰｎＰ（Universal  Plug  and  Play）プロトコル等を用いて上位ノードを自動認識することによって検出した接続情報を取得する場合を想定するが、サーバノード１１０が下位ノードとの接続状況を認識することとしてもよい。
【００２４】
トポロジ記憶部１１２Ａは、センサネットワークのトポロジを記憶する記憶部である。例えば、トポロジ記憶部１１２Ａは、下位ノードからノード間の接続情報が取得された場合に、トポロジ取得部１１２によってノード間の接続情報がトポロジとして登録される。また、例えば、トポロジ記憶部１１２Ａは、下位ノードから記憶容量に関する情報が取得された場合に、トポロジ取得部１１２によって記憶容量に関する情報が使用リソースとして登録される。また、例えば、トポロジ記憶部１１２Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。なお、トポロジ記憶部１１２Ａに記憶される情報の構成例については、図１５を用いて後述する。
【００２５】
イベント受信部１１３は、イベントを受信する処理部である。例えば、イベント受信部１１３は、センサノード２１０やGWノード３１０などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部１１４に格納する。このとき、イベント受信部１１３は、下位ノードから受信したイベントを後述の発生イベント登録部１１６にも出力する。なお、イベント受信部１１３では、必ずしもセンサノード２１０によってセンシングされた未加工のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって加工処理が実行されることにより、加工済みのイベントが受信される場合もある。
【００２６】
イベント記憶部１１４は、イベントを記憶する記憶部である。このイベント記憶部１１４は、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
【００２７】
例えば、イベント記憶部１１４は、下位ノードからイベントが受信された場合に、イベント受信部１１３によってイベントが登録される。また、例えば、イベント記憶部１１４は、モジュールによってイベントが処理された場合に、後述のモジュール実行部１１５によって処理実行後のイベントが登録される。なお、イベント記憶部１１４に記憶される情報の構成例については、図１６を用いて後述する。
【００２８】
モジュール実行部１１５は、サーバノード１１０に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部１１５は、イベント受信部１１３によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード１１０に配備されているか否かを判定する。このとき、モジュール実行部１１５は、モジュールがサーバノード１１０に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。モジュール実行部１１５は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント記憶部１１４に格納する。
【００２９】
発生イベント登録部１１６は、センサノード２１０やGWノード３１０などの下位ノードで発生した発生イベントを登録する処理部である。例えば、発生イベント登録部１１６は、イベント受信部１１３によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部１１６Ａに既に登録されているか否かを判定する。このとき、発生イベント登録部１１６は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部１１６Ａに登録する。
【００３０】
発生イベント情報記憶部１１６Ａは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部１１６Ａは、センサノード２１０またはGWノード３１０などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
【００３１】
例えば、発生イベント情報記憶部１１６Ａは、下位ノードからイベントが受信された場合に、発生イベント登録部１１６によって発生イベントが登録される。また、例えば、発生イベント情報記憶部１１６Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。なお、発生イベント情報記憶部１１６Ａに記憶される情報の構成例については、図１７を用いて後述する。
【００３２】
参照データ記憶部１６２は、モジュールがイベントを加工処理する場合に参照されるデータを記憶する記憶部である。この参照データ記憶部１６２には、モジュール記憶部１１１Ａに記憶されるモジュールによって参照されるデータが記憶されている。なお、参照データ記憶部１６２のことを「マスタ」と称する場合がある。また、参照データ記憶部１６２に記憶されるデータのことを「マスタデータ」と称する場合がある。
【００３３】
部分参照データ要求受信部１２０は、部分参照データ要求を受信する処理部である。この部分参照データ要求には、要求のトリガーとなった発生イベントに関連する情報と、要求を行ったノードに関連する情報とが含まれる。一態様としては、部分参照データ要求には、イベントが発生した発生ノードＩＤ、発生イベント型、検索キー、検索キーの値及び配備先ノードＩＤが含まれる。
【００３４】
例えば、部分参照データ要求受信部１２０は、センサノード２１０やＧＷノード３１０などの下位ノードから部分参照データ要求を受信すると、当該要求を後述の部分参照データ抽出部１１９に出力する。
【００３５】
部分参照データ抽出部１１９は、参照データ記憶部１６２に記憶された参照データのうち、下位ノードに配備するモジュールに対応する部分参照データを抽出する処理部である。例えば、部分参照データ抽出部１１９は、モジュールが配備される場合に、当該モジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部１１１Ｂから読み出す。部分参照データ抽出部１１９は、参照データ記憶部１６２に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出し、当該データを後述の部分参照データ送信部１６３に出力する。
【００３６】
部分参照データ送信部１６３は、部分参照データを下位ノードへ送信する処理部である。例えば、部分参照データ送信部１６３は、部分参照データ抽出部１１９によって抽出された部分参照データを、部分参照データ抽出部１１９から受け付ける。部分参照データ送信部１６３は、受け付けた部分参照データを、モジュールを配備する下位ノードへ送信する。
【００３７】
配備先情報記憶部１１７Ａは、モジュールの配備先に関する情報を記憶する記憶部である。例えば、配備先情報記憶部１１７Ａは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部１１７によってアクセスされる。なお、配備先情報記憶部１１７Ａに記憶される情報の構成例については、図１８を用いて後述する。
【００３８】
配備先決定部１１７は、モジュールの配備先を決定する処理部である。例えば、配備先決定部１１７は、トポロジ記憶部１１２Ａが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、モジュールの配備先を決定する。なお、配備先決定部１１７がモジュールの配備先を決定する処理については、図１９〜図２２を用いて後述する。
【００３９】
モジュール送信部１１８は、センサノード２１０または後述のＧＷノード３１０などの下位ノードにモジュールを送信する処理部である。例えば、モジュール送信部１１８は、配備先決定部１１７によって配備先ノードＩＤが配備先情報記憶部１１７Ａに登録されると、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する。
【００４０】
［サーバノードの機能部］
次に、図２に示した機能部のうち、さらなる説明を要するものについて、図面に基づいて詳細に説明する。
【００４１】
図３を用いて、モジュール記憶部１１１Ａに記憶される情報の構成例について説明する。図３は、モジュール記憶部に記憶される情報の構成例を示す図である。図３に示すように、例えば、モジュール記憶部１１１Ａは、モジュール識別子とバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュール識別子」は、モジュールを識別するための識別子を指す。例えば、Ｃ言語でプログラミングされたモジュールには関数名を付与したり、Ｊａｖａ（登録商標）言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
【００４２】
図３の例では、モジュールＩＤ「平均電力計算」及び「家庭内電力総計」とそのバイナリコードとが対応付けられた例を示している。このうち、「平均電力計算」は、所定期間の消費電力の平均を計算するモジュールのクラス名を指し、「家庭内電力総計」は、所定期間の消費電力の総和を計算するモジュールのクラス名を指す。これらモジュール「平均電力計算」及び「家庭内電力総計」が下位ノードに配備された場合には、下位ノードからサーバノード１１０に送信されるイベントが集約されることになる。
【００４３】
なお、図３の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード２１０等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
【００４４】
次に図４を用いて、モジュール定義記憶部１１１Ｂに記憶される情報の構成例について説明する。図４は、モジュール定義記憶部に記憶される情報の構成例を示す図である。図４に示すように、例えば、モジュール定義記憶部１１１Ｂは、処理そのものに関する情報、参照データに関する情報及び配備可否判定に関する情報が対応付けられたデータを記憶する。以下では、「処理そのものに関する情報」、「参照データに関する情報」、配備可否判定に関する情報」の各部について説明する。
【００４５】
まず、「処理そのものに関する情報」について説明する。図４に示すように、処理そのものに関する情報には、モジュール識別子、入力イベント型、出力イベント型及び集約属性名が対応付けられている。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数の入力イベントを集約する枠組みである集約属性の名称を指す。
【００４６】
図４に示すモジュール識別子「平均電力計算」は、入力イベント型「電力」のイベントを受信し、集約属性名「コンセントＩＤ」に基づいて入力イベントを集約処理し、出力イベント型「平均電力」として処理結果を出力する処理を表す。また、図４に示すモジュール「人単位計算」は、入力イベント型「平均電力」のイベントを受信し、集約属性名「利用者」に基づいて入力イベントを集約処理し、出力イベント型「人単位電力」として処理結果を出力する処理を表す。なお、集約属性名は処理の内容によって指定されない場合もある。
【００４７】
次に、図５〜図７を用いて、「参照データに関する情報」について説明する。図５は、参照データに関する情報について説明するための図である。図５に示すように、参照データに関する情報には、モジュールがイベントを加工処理する場合に参照する参照データの参照箇所、抽出方法、検索キーが記録される。一態様として参照箇所はテーブル名やカラム名で指定され、抽出方法は参照データから必要レコードを抽出する際の抽出式などとして指定される。さらに、検索キーには入力イベント型内の属性名が指定される。これらの情報によって入力イベントの内容に基づいて参照データを参照しながら処理を行う際に必要なマスタデータ内レコード行と入力イベント型内の属性の値との結びつけやレコード行や参照カラムの特定を行う。参照データに関する情報は、アプリ管理者によって指定され、下位ノードに配備する部分参照データの細分化に用いられる。また、モジュールが参照データを要しない場合には、参照データに関する情報には、データが格納されなくても良い。
【００４８】
図５に示すように、例えば、参照データに関する情報には、検索キー、参照箇所及び抽出方法が対応付けられている。ここで言う「検索キー」とは、入力イベント内の属性を指す。また、「参照箇所」とは、参照されるテーブル及びカラムを特定する情報を指す。また、「抽出方法」とは、参照されるレコードを特定する情報を指す。また、抽出方法は、参照データに紐付けられたデータを間接的に参照するための情報を指す場合もある。これらの情報によって、発生イベントの属性値に応じてレコード単位で部分参照データを配備することが可能となる。なお、モジュールがデータ参照を伴わない場合には、参照データに関する情報には、データが格納されなくても良い。また、検索キーは、「属性情報」の一例である。また、参照箇所は、「参照箇所情報」の一例である。また、抽出方法は、「参照データ抽出用情報」の一例である。
【００４９】
図５では、モジュール識別子「Ｐｒｏｃ１」の処理５ａによって参照データ記憶部１６２が参照される参照方法を、３つのケースに分けて説明する。ここで、３つのケースとは、処理５ａが参照データに関する情報としてデータ５ｂを読み出したケース、データ５ｃを読み出したケース、データ５ｄを読み出したケースに対応する。なお、データ５ｂを読み出したケースは、イベント内容に応じた参照データの直接参照に対応し、データ５ｃを読み出したケース及びデータ５ｄを読み出したケースは、イベント内容に応じた間接参照に対応する。
【００５０】
図５に示すように、例えば、入力イベント「Ｅｖｅｎｔ１１」が入力されると、処理５ａが実行される。処理５ａが実行されると、入力イベント内のデータから、検索キーに対応するｋｅｙが抽出される。ここで言う「ｋｅｙ」とは、発生イベントに応じた検索キーの固有の値を示す。つまり、処理５ａが実行されると、「Ｅｖｅｎｔ１１」内のデータから、属性名「ａｔｔｒ１」に対応する値「ｖａｌ１」がｋｅｙとして抽出される。
【００５１】
ここで、データ５ｂは、イベント内容に応じた参照データの直接参照を表す例である。データ５ｂには、参照箇所「テーブルＡ．Ｋ，テーブルＡ．Ｘ」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫとカラムＸとが参照されることを示す。また、データ５ｂには、抽出方法「ｗｈｅｒｅ  ｋｅｙ＝テーブルＡ．Ｋ」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫにｋｅｙを含むレコードが参照されることを示す。つまり、処理５ａが実行されると、データ５ｂを読み出したケースでは、テーブルＡのカラムＫ及びカラムＸのうち、カラムＫに「ｖａｌ１」を含むレコード「ｖａｌ１，ｖａｌ２２」が参照される。
【００５２】
また、データ５ｃはイベント内容に応じて間接参照を辿って参照データを抽出する例である。データ５ｃには、参照箇所「テーブルＡ．Ｋ，テーブルＢ．Ｘ」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫと、テーブルＢのカラムＸとが参照されることを示す。また、データ５ｃには、抽出方法「ｗｈｅｒｅ  ｋｅｙ＝テーブルＡ．Ｋ＆＆，テーブルＡ．Ｌ＝テーブルＢ．Ｋ２」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫにｋｅｙを含むレコードと、テーブルＢのカラムＫ２にテーブルＡのカラムＬの値を含むレコードとが参照されることを示す。つまり、処理５ａが実行されると、データ５ｃを読み出したケースでは、テーブルＡのカラムＫに「ｖａｌ１」を含むカラムＬの値「ｖａｌ２１」が抽出され、さらに、テーブルＢのカラムＫ２に「ｖａｌ２１」を含むカラムＸの値「ｖａｌ３１」が参照される。
【００５３】
また、データ５ｄはイベント内容に応じた間接参照の別の例を示したものである。この例ではイベント内容から抽出した値に算出式を適用した値をもとに参照データ値を抽出する。データ５ｄには、参照箇所「テーブルＡ．Ｋ，テーブルＡ．Ｘ」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫとカラムＸとが参照されることを示す。また、データ５ｃには、抽出方法「ｗｈｅｒｅ  ｆ（ｋｅｙ）＝テーブルＡ．Ｋ」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、ｋｅｙに算出式ｆを適用した値を用いてテーブルＡのカラムＫが参照されることを示す。つまり、処理５ａが実行されると、データ５ｄを読み出したケースでは、テーブルＡのカラムＫ及びカラムＸのうち、カラムＫに「ｆ（ｖａｌ１）」を含むレコード「ｆ（ｖａｌ１），ｖａｌ４１」が参照される。なお、算出式ｆには、フォーマット変換や粒度変更などに用いられる算出式が適用される。なお、図５ｃの間接参照は２段階の参照を間接参照への対応方法を示しているが、３段階以上の間接参照であっても同様にＪｏｉｎ時の着目カラムを抽出方法に列挙していくことで対応できる。さらに、５ｂから５ｄは参照データの抽出方法が異なる場合にも対応できることを示したものであり、ここで示した事例以外の抽出方法にも対応できることは容易にわかる。
【００５４】
図６を用いて、参照データを用いた実例１について説明する。図６は、参照データを用いた実例１について説明するための図である。ここで参照されるテーブルＡには、コンセントＩＤ、使用者及び機器が対応付けられている。
【００５５】
図６に示すように、例えば、電力イベントが入力されると、平均電力計算６ａが実行される。平均電力計算６ａが実行されると、入力イベント内のデータから、検索キー「コンセントＩＤ」に対応するｋｅｙ「１１」が抽出される。図６のモジュール定義記憶部１１１Ｂには、参照箇所「テーブルＡ．Ｋ，テーブルＡ．Ｘ」が格納されている。これは、電力イベントのコンセントＩＤに対し、テーブルＡのカラムＫとカラムＸとが参照されることを示す。また、モジュール定義記憶部１１１Ｂには、抽出方法「ｗｈｅｒｅ  ｋｅｙ＝テーブルＡ．Ｋ」が格納されている。これは、電力イベント内の属性値（コンセントＩＤ値）をテーブルＡのカラムＫに含むレコードが参照されることを示す。つまり、平均電力計算６ａが実行されると、テーブルＡのカラムＫ及びカラムＸのうち、カラムＫに「１１」を含むレコード「１１，Ａさん」が参照される。なお、図６の場合には、部分参照データ記憶部２１６には、テーブルＡのカラムＫ及びカラムＸのうち、カラムＫに「１１」を含むレコード「１１，Ａさん」を含むデータ６ｂが記憶される。
【００５６】
図７を用いて、参照データを用いた実例２（ケース５ｃ、データ５ｃのケース）について説明する。図７は、参照データを用いた実例２について説明するための図である。この例は、複数のテーブルに分かれて管理・記憶されているマスターデータから処理に必要なデータのみを抽出する例を示す。ここで参照されるテーブルＡにはコンセントＩＤと接続機器とが対応付けられており、テーブルＢには機器と使用者とが対応付けられている。
【００５７】
図７に示すように、例えば、電力イベントが入力されると、平均電力計算７ａが実行される。平均電力計算７ａが実行されると、入力イベント内のデータから、検索キー「コンセントＩＤ」に対応するｋｅｙ「１１」が抽出される。図７のモジュール定義記憶部１１１Ｂには、参照箇所「テーブルＡ．Ｋ，テーブルＢ．Ｘ」が格納されている。これは、電力イベントのコンセントＩＤに対し、テーブルＡのカラムＫと、テーブルＢのカラムＸとが参照されることを示す。また、モジュール定義記憶部１１１Ｂには、抽出方法「ｗｈｅｒｅ  ｋｅｙ＝テーブルＡ．Ｋ＆＆，テーブルＡ．Ｌ＝テーブルＢ．Ｋ２」が格納されている。これは、参照データ記憶部１６２に記憶されるデータのうち、テーブルＡのカラムＫにｋｅｙを含むレコードと、該当レコードのカラムＬと同値の値をテーブルＢのカラムＫ２に含むレコードとが参照されることを示す。つまり、平均電力計算７ａが実行されると、テーブルＡのカラムＫに「１１」を含むカラムＬの値「共用ＰＣ１」が抽出され、さらに、「共用ＰＣ１」をテーブルＢのカラムＫ２に含むカラムＸの値「Ａさん」が参照される。なお、図７の場合には、部分参照データ記憶部２１６には、テーブルＡのカラムＫ及びテーブルＢのカラムＸのうち、カラムＫに「１１」を含むレコード「１１，Ａさん」を含むデータ７ｂが記憶される。
【００５８】
図８を用いて、部分参照データの配備先の特定について説明する。図８は、部分参照データの配備先の特定について説明するための図である。図８に示す処理は、参照データ記憶部１６２に記憶されたマスタデータが変更された際に、例えば、配備先決定部１１７によって行われる。
【００５９】
図８に示すように、例えば、参照データ記憶部１６２に記憶されたテーブルＡのカラムＸの「Ａさん」というデータが変更されると、配備先決定部１１７は、当該データが変更されたことを検知するとともに、カラムＫの値「１１」を取得する（ｓ１１）。そして、配備先決定部１１７は、モジュール定義記憶部１１１Ｂに記憶された抽出方法を参照し、図８（１）に示すように、テーブルＡのカラムＫの値「１１」が電力イベントの「コンセントＩＤ」に対応するものと判定する。そして、配備先決定部１１７は、発生イベント情報記憶部１１６Ａを参照し（ｓ１２）、発生イベント「電力」及び発生イベント属性のコンセントＩＤ「１１」に対応する発生ノードＩＤ「電力センサ１」を特定する（ｓ１３）。そして、配備先決定部１１７は、配備先情報記憶部１１７Ａを参照し（ｓ１４）、発生ノードＩＤ「電力センサ１」、入力イベント型「１１」及びモジュール識別子「平均電力計算」に対応する配備先ノードＩＤ「ＧＷ１」を特定する（ｓ１５）。ここで、モジュール識別子はモジュール定義記憶部１１１Ｂから取得されるものとする。このように、配備先決定部１１７は、参照データ記憶部１６２内のテーブルの変更に伴って部分参照データが配備される配備先ノードＩＤを特定する。
【００６０】
次に、図９を用いて、「配備可否判定に関する情報」について説明する。図９は、配備可否判定に関する情報について説明するための図である。図９に示すように、配備可否判定に関する情報には、例えば、参照データ特性制約及びリソース観点制約のうち、いずれか一方、又は、両方が記憶されている。参照データ特性制約は、配備する部分参照データのマスタの変更頻度が高い場合に、参照データの再配備が増加することによる通信量の増加を抑止するために指定される。例えば、参照データ特性制約には、部分参照データの配備頻度上限を時間当たりの回数で指定された値が記憶される。図９に示すように、参照データのマスタデータ９ａが変更されると、その変更に応じて部分参照データの配備を要するので、変更回数の合計頻度が上限を超えたら配備不可とするという趣旨である。また、リソース観点制約は、配備する処理が大量の部分参照データを要し、配備先ノードのリソース量を超えてしまうような配備を抑止するために指定される。例えば、リソース観点制約には、配備する部分参照データの占有リソース量上限を絶対量や割合で指定した値が記憶される。図９に示すように、例えば、発生イベントのバリエーションによって部分参照データが増加することにより、配備先ノードのリソース量を超えてしまうような配備を抑止するという趣旨である。リソース観点制約が割合で指定された場合には、母数は、配備先ノードのリソース量となる。なお、参照データ特性制約及びリソース観点制約の両方が記憶されている場合には、配備可否判定に関する情報は、ＡＮＤ条件で判定される。また、配備可否判定に関する情報は、例えば、システムを管理する管理者によって指定され、再配備にかかるコストを軽減するために用いられる。また、モジュールが参照データを要しない場合には、配備可否判定に関する情報には、データが格納されなくても良い。また、参照データ特性制約は、「第１条件」の一例であり、リソース観点制約は、「第２条件」の一例である。
【００６１】
図１０を用いて、参照データに応じた配備可否判定について説明する。図１０は、参照データに応じた配備可否判定について説明するための図である。図１０に示す処理は、例えば、部分参照データが配備される際に、配備先決定部１１７によって行われる。
【００６２】
図１０に示すように、例えば、配備先決定部１１７は、マスタにあるテーブルＡやテーブルＢの変更を検知するごとに（ｓ２１）、発生イベントの検索キーと対応付く参照データ側のカラムに対して変更頻度を集計する。ここでは、配備先決定部１１７は、モジュール定義記憶部１１１Ｂの抽出方法を参照することで、レコード単位で変更頻度を集計する（ｓ２２）。ここで、配備先決定部１１７によって配備先を決定する際には、参照データ特性制約とリソース観点制約とによって部分参照データの配備可否が判定され、それぞれの制約条件を満たした場合に配備されることとなる（ｓ２３）。ここで、発生イベントの検索キーの値に応じて配備されるレコードの数、すなわちリソース量が変動し、配備されるレコードの変更頻度の合計によって再配備の負担が変動する。なお、配備先決定部１１７によって候補ノード１０ａに配備される部分参照データは、参照されるテーブルの必要カラムがレコードごとに配備される。なお、ｓ２１からｓ２２までの集計は配備先決定処理とは独立に実行される、参照データ更新に応じた処理であり参照データ記憶部など他機能部が代行してもよい。
【００６３】
図１１を用いて、マスタデータの監視設定処理の流れについて説明する。図１１は、マスタデータの監視設定処理の手順を示すフローチャートである。この監視設定処理は、例えば、マスタデータの変更を検出するために、配備先決定部１１７が監視する参照データ内の箇所を設定する処理である。この監視設定処理は、サーバノード１１０の電源がＯＮ状態である限り、繰り返し実行される。
【００６４】
図１１に示すように、配備先決定部１１７は、モジュール定義情報が登録されるのを待機する（ステップＳ１０１）。そして、モジュール定義記憶部１１１Ｂにモジュール定義情報が登録されると、配備先決定部１１７は、登録されたモジュールが、データ参照を伴う処理であり、参照データ特性制約による配備可否判定を要するか否かを確認する（ステップＳ１０２）。
【００６５】
参照データ特性制約による配備可否判定を要すると判定した場合には（ステップＳ１０３肯定）、配備先決定部１１７は、ステップＳ１０４の処理を実行する。つまり、配備先決定部１１７は、参照箇所及び抽出方法に基づいて、モジュールの入力イベントの検索キーに対応付く参照データ側のカラムについて、該当レコードの変更と判定される参照データ内の箇所をリストアップする（ステップＳ１０４）。配備先決定部１１７は、該当結果に基づいて、部分参照データとして配備されうるマスタデータの変更を待機設定し（ステップＳ１０５）、ステップＳ１０１の処理に戻る。なお、配備先決定部１１７は、参照データ観点での配備可否判定を要すると判定されない場合には（ステップＳ１０３否定）、ステップＳ１０１の処理に戻る。
【００６６】
ここで、図１２を用いて、図１１のステップＳ１０４においてリストアップされるデータについて説明する。図１２は、図１１のステップＳ１０４においてリストアップされるデータについて説明するための図である。
【００６７】
図１２に示すように、例えば、配備先決定部１１７は、リスト１２ａにデータをリストアップする。例えば、配備先決定部１１７は、モジュール定義記憶部１１１Ｂにモジュール定義情報が登録されると、モジュールの「モジュール識別子」、「入力イベント」、「検索キー」及び「検索キーに対応付く参照側カラム」をモジュール定義記憶部１１１Ｂから抽出する。ここで、配備先決定部１１７は、「検索キーに対応付く参照側カラム」についてはモジュール定義記憶部１１１Ｂの抽出方法にあるｗｈｅｒｅ句から抽出する（ｓ３１）。そして、配備先決定部１１７は、抽出したデータをリスト１２ａに格納する。また、リスト１２ａの「該当レコードの変更と判定する参照データ内箇所」については、配備先決定部１１７は、モジュール定義記憶部１１１Ｂの参照箇所及び抽出方法に基づいて格納する。すなわち、配備先決定部１１７は、当該モジュールの参照箇所及び抽出方法に出現したカラムから、該当レコードの変更と見なすものを抽出し、格納する。なお、ここで格納される該当レコードの変更と判定する参照データ内箇所のうち、１行目のデータは、モジュール定義記憶部１１１Ｂの参照箇所に対応し、２行目及び３行目のデータは、Ｊｏｉｎ時の着目カラムに対応する。このリスト１２ａは、例えば、コンセントＩＤ（「１１」など）と接続機器(「共用ＰＣ１」など)やその機器利用者(「Ａさん」など)の対応付けを示すマスタデータの変更監視を、モジュール識別子「平均電力計算」（入力イベント型「電力」、検索キー「コンセントＩＤ」）と対応づけて行う旨を示す。このリスト１２ａによれば、例えば、監視の対象として設定されたテーブルのカラムが変更された場合に対応づくレコードの変更回数として集計でき、さらに、コンセントＩＤ「１１」の電力イベント１２ｂが受信された場合に、該当レコードの変更頻度に基づいた配備可否の判定を行うことができる。
【００６８】
図１３を用いて、マスタデータ変更検出時の処理の流れについて説明する。図１３は、マスタデータ変更検出時の処理の手順を示すフローチャートである。このマスタデータ変更検出時の処理は、サーバノード１１０の電源がＯＮ状態である限り、繰り返し実行される。
【００６９】
図１３に示すように、配備先決定部１１７は、部分参照データとして配備されうるマスタデータの変更を待機する（ステップＳ２０１）。そして、マスタデータの変更が検出されると、配備先決定部１１７は、監視設定処理によって生成されたリストを用いて、検索キーの値に応じて変更回数を集計する（ステップＳ２０２）。
【００７０】
続いて、配備先決定部１１７は、変更されたデータを参照するモジュールが配備済か否かを判定する（ステップＳ２０３）。例えば、発生イベント情報記憶部１１６Ａから、出力イベント型と発生イベント型が一致し、かつ検索キーの属性名と値が一致する発生イベントを特定する。そして、その特定した発生イベントの発生ノードＩＤと集約属性値、発生イベント型をもとに、該当イベントに関する配備済モジュールを配備先情報から特定する。
【００７１】
変更されたデータを参照するモジュールが配備済である場合には（ステップＳ２０３肯定）、配備先決定部１１７は、当該モジュールの配備先ノードがクラウド以外のノードであるか否かを判定する（ステップＳ２０４）。クラウド以外のノードである場合には（ステップＳ２０４肯定）、配備先決定部１１７は、当該配備先ノードに部分参照データを配備可能か否かを判定する（ステップＳ２０５）。具体的には、モジュール定義情報内の配備可否判定に関する情報に基づき、参照データ特性に制約とリソース観点制約での判定を行う。部分参照データを配備可である場合には（ステップＳ２０５肯定）、配備先決定部１１７は、判定結果に「ＯＫ」を格納し（ステップＳ２０６）、当該部分参照データを配備先ノードに送信する（ステップＳ２０７）。そして、配備先決定部１１７は、ステップＳ２０１の処理に戻る。
【００７２】
一方、部分参照データを配備不可である場合には（ステップＳ２０５否定）、配備先決定部１１７は、後述の図２１のステップＳ４２２の処理を開始するとともに、ステップＳ２０１の処理に戻る（ステップＳ２０８）。また、モジュールが配備済でない場合には（ステップＳ２０３否定）、配備先決定部１１７は、ステップＳ２０１の処理に戻る。また、モジュールの配備先ノードがクラウドである場合には（ステップＳ２０４否定）、配備先決定部１１７は、ステップＳ２０１の処理に戻る。
【００７３】
図１４を用いて、図１３のステップＳ２０２において変更回数を集計する処理について説明する。図１４は、図１３のステップＳ２０２において変更回数を集計する処理について説明するための図である。図１４には、配備可否判定用のテーブル１４ａを例示する。このテーブル１４ａは、例えば、配備先決定部１１７によって生成される。例えば、テーブル１４ａには、検索キーの値に応じた変更回数が、変更されたデータを参照するモジュールに対応付けて集計される。また、変更回数については、配備可否判定に関する情報の参照データ特性制約で指定された指定期間をスライドさせながら集計する。一態様としては、配備先決定部１１７は、モジュール定義が登録された時刻ｔ０から指定期間、例えば１時間が経過する時刻ｔ１までの間について、マスタデータの変更を監視する。そして、時刻ｔ１を経過すると、配備先決定部１１７は、マスタデータの変更を検出するごとに、検出時刻ｔｉから指定期間遡った時刻ｔｊまでの期間の変更回数を集計する。なお、テーブル１４ａの計測区間開始時刻には、時刻ｔｊが格納される。ここでは、指定期間が１時間である場合を例示したが、これに限定されるものではなく、任意の時間が指定されて良い。
【００７４】
図１５を用いて、トポロジ記憶部１１２Ａに記憶される情報の構成例について説明する。図１５は、トポロジ記憶部に記憶される情報の構成例を示す図である。図１５に示すように、例えば、トポロジ記憶部１１２Ａは、下位ノードＩＤ、上位ノードＩＤ及び使用リソースが対応付けられたデータを記憶する。ここで言う「下位ノードＩＤ」は、下位ノードを識別するための識別子を指す。また、「上位ノードＩＤ」は、下位ノードに接続される上位ノードを識別するための識別子を指す。また、「使用リソース」は、下位ノードにおける使用リソースの容量及び比率を指す。ここで言う比率とは、例えば、下位ノードにおけるトータルメモリに対する使用量の比率を示す。
【００７５】
図１５の例では、センサ１の上位ノードがＧＷ１であり、ＧＷ１の上位ノードがクラウドである場合を示す。例えば、センサ１は、センサノード２１０に対応し、クラウドは、サーバノード１１０に対応する。また、ここでは、センサ１とクラウドとの間にＧＷ１が中継ノードとして介在する場合を示したが、必ずしも中継ノードが介在していなくても良く、例えば、図１に示したように、センサ１の上位ノードがクラウドであっても良い。また、図１５の例では、センサ１は、１ＭＢのリソースを使用しており、そのトータルメモリに対する比率が８０％である例を示す。
【００７６】
図１６を用いて、イベント記憶部１１４に記憶される情報の構成例について説明する。図１６は、イベント記憶部に記憶される情報の構成例を示す図である。図１６に示すように、例えば、イベント記憶部１１４は、イベント型名、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード２１０によってセンシングされた時刻を指す。また、「イベント属性」は、イベントの性質や由来を指す。例えば、「イベント属性」は、イベントとして採取されるセンシングデータ又はそれが加工処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を想定して説明を行う。
【００７７】
図１６に示す１番目のレコードは、２０１１年７月１３日の１２時にＸ家の電力センサＸによって電力が計測されたというイベントを示す。
【００７８】
このように、イベント記憶部１１４に記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図１６の例では、センサノード２１０によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも格納されることになる。
【００７９】
図１７を用いて、発生イベント情報記憶部１１６Ａに記憶される情報の構成例について説明する。図１７は、発生イベント情報記憶部１１６Ａに記憶される情報の構成例を示す図である。図１７に示すように、例えば、発生イベント情報記憶部１１６Ａは、発生ノードＩＤ、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードＩＤ」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生ノードのイベント属性を指す。
【００８０】
図１７に示す１番目のレコードは、Ｘ家の電力センサＸで電力が計測されるというイベントが発生していることを示す。なお、図１７の例では、発生イベントとしてセンサノード２１０によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも発生イベントとして格納される。
【００８１】
図１８を用いて、配備先情報記憶部１１７Ａに記憶される情報の構成例について説明する。図１８は、配備先情報記憶部に記憶される情報の構成例を示す図である。図１８に示すように、例えば、配備先情報記憶部１１７Ａは、モジュール識別子、入力イベント型、集約属性名、発生イベント属性、発生ノードＩＤ、配備先ノードＩＤ及び配備可否判定用情報が対応付けられたデータを記憶する。ここで言う「配備先ノードＩＤ」は、モジュールが配備されるセンサノード２１０、ＧＷノード３１０またはサーバノード１１０を識別するための識別子を指す。また、「配備可否判定用情報」には、配備先予定ノードＩＤ、判定状態及び時刻が対応付けられている。このうち、「配備先予定ノードＩＤ」は、モジュールが配備されるノードとして選択されたノードを識別するための識別子、あるいは、配備先決定部１１７によって配備不可判定されたノードを識別するための識別子を指す。「判定状態」は、配備先予定ノードＩＤによって指定されるノードへのモジュールの配備可否の判定の状態を指す。例えば、判定状態には、判定中である場合にはその旨が記憶され、判定中でない場合には判定結果が記憶される。「時刻」は、判定時刻を指す。例えば、時刻には、判定中である場合には次回の判定時刻が記憶され、判定中でない場合には直近の判定時刻が記憶される。
【００８２】
図１９〜図２１を用いて、配備先決定部１１７におけるモジュール配備処理について説明する。図１９は、モジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、例えば、センサネットワークのトポロジが変化した場合に処理が起動される。
【００８３】
図１９に示すように、配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるのを待機する（ステップＳ３０１）。そして、発生イベント情報記憶部１１６Ａが更新されると、配備済モジュールが有るか否かを判定する（ステップＳ３０２）。配備済モジュールが無い場合には（ステップＳ３０２否定）、配備先決定部１１７は、未配備モジュールに対する処理として、ステップＳ３０３以降の処理へ移行する。一方、配備済モジュールが有る場合には（ステップＳ３０２肯定）、配備先決定部１１７は、配備済モジュールに対する処理を実行する（ステップＳ３１６）。なお、配備済モジュールに対する処理については、図２０及び図２１を用いて後述する。
【００８４】
続いて、配備先決定部１１７は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに格納する（ステップＳ３０３）。
【００８５】
そして、配備先決定部１１７は、ステップＳ３０３の処理を実行後に、下記に説明するステップＳ３０４の処理を実行する。すなわち、配備先決定部１１７は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、サーバノード１１０は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
【００８６】
その後、配備先決定部１１７は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む（ステップＳ３０５）。
【００８７】
このとき、発生ノードＩＤの数が「０」である場合には（ステップＳ３０６肯定）、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、配備先決定部１１７は、ステップＳ３０２の処理に移行する。
【００８８】
一方、発生ノードＩＤの数が「０」でない場合には（ステップＳ３０６否定）、配備先決定部１１７は、発生ノードＩＤの数が複数であるか否かを判定する（ステップＳ３０７）。発生ノードＩＤの数が複数である場合には（ステップＳ３０７肯定）、下記に説明するステップＳ３０８の処理を実行する。すなわち、配備先決定部１１７は、トポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又はＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。
【００８９】
また、発生ノードＩＤの数が１つである場合には（ステップＳ３０７否定）、配備先決定部１１７は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤをノードＩＤとし、ステップＳ３０９の処理に移行する。
【００９０】
続いて、配備先決定部１１７は、配備されるモジュールがデータ参照を伴うか否かを判定する（ステップＳ３０９）。データ参照を伴う場合には（ステップＳ３０９肯定）、配備先決定部１１７は、配備先情報記憶部１１７Ａの配備先予定ノードＩＤに候補ノードＩＤを格納する（ステップＳ３１０）。
【００９１】
そして、配備先決定部１１７は、Ｓ３０８の検索結果であるノードＩＤをクラウドに変更し（ステップＳ３１１）、判定開始を記録する（ステップＳ３１２）。つまり、配備先決定部１１７は、当該配備先情報記憶部１１７Ａの判定状態に「判定中」を格納するとともに、時刻には、配備時刻に配備可否判定に関する情報における指定期間を加算した時刻を格納する。なお、データ参照を伴わない場合には（ステップＳ３０９否定）、配備先決定部１１７は、ステップＳ３１３の処理に移行する。
【００９２】
続いて、配備先決定部１１７は、ノードＩＤを配備先ノードＩＤのカラムに格納する（ステップＳ３１３）。そして、配備先決定部１１７は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信させる（ステップＳ３１４）。そして、配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるのを待機し（ステップＳ３１５）、ステップＳ３０２の処理に戻る。
【００９３】
図２０及び図２１を用いて、図１９のステップＳ３１６に示した配備済モジュールに対する処理について説明する。図２０及び図２１は、配備済モジュールに対する処理の手順を示すフローチャートである。
【００９４】
図２０に示すように、配備先決定部１１７は、発生イベントから該当する配備済レコード、すなわち配備先情報記憶部１１７Ａ内のレコードを特定する（ステップＳ４０１）。例えば、該当発生イベントの発生イベント型が配備済レコードの入力イベント型と一致し、かつそのレコードの集約属性名、発生イベント属性が、該当発生イベントの該当属性の該当属性値と同一であるものを抽出する。
【００９５】
該当する配備済レコードが有る場合には（ステップＳ４０２肯定）、配備先決定部１１７は、該当する配備済レコードの発生ノードＩＤに発生イベントの発生ノードＩＤを含むか判定する（ステップＳ４０３）。
【００９６】
発生イベントの発生ノードＩＤを含む場合には（ステップＳ４０３肯定）、配備先決定部１１７は、該当配備済レコードの配備先ノードＩＤがクラウドか否かを判定する（ステップＳ４０４）。
【００９７】
クラウドである場合には（ステップＳ４０４肯定）、配備先決定部１１７は、判定状態が「判定中」であり、かつ、判定終了時刻を経過しているか判定する（ステップＳ４０５）。
【００９８】
判定状態が「判定中」であり、かつ、判定終了時刻を経過している場合には（ステップＳ４０５肯定）、配備先決定部１１７は、再配備先ノードＩＤとして配備予定ノードを指定する（ステップＳ４０６）。そして、配備先決定部１１７は、参照データ特性制約の配備可否判定を行う（ステップＳ４０７）。
【００９９】
ここで、判定結果が配備可である場合には（ステップＳ４０８肯定）、配備先決定部１１７は、図２１のステップＳ４１２の処理に移行する。一方、判定結果が配備不可である場合には（ステップＳ４０８否定）、配備先決定部１１７は、判定状態に「ＮＧ」を格納し（ステップＳ４０９）、図１９のステップＳ３０３の処理に移行する。
【０１００】
また、発生イベントの発生ノードＩＤを含まない場合には（ステップＳ４０３否定）、配備先決定部１１７は、該当配備済レコードに発生イベントの発生ノードＩＤを格納する（ステップＳ４１０）。そして、配備先決定部１１７は、再配備先ノードＩＤを特定する（ステップＳ４１１）。この時、配備先決定部１１７は、図１９のステップS３０８の処理と同様トポロジ記憶部１１２Ａから発生ノードＩＤが集約されるノードＩＤを検索して再配備先ノードＩＤを特定する。さらに配備先決定部１１７は図２１のステップＳ４１２の処理に移行する。
【０１０１】
なお、該当する配備済レコードが無い場合には（ステップＳ４０２否定）、配備先決定部１１７は、図１９のステップＳ３０３の処理に移行する。また、クラウドでない場合には（ステップＳ４０４否定）、配備先決定部１１７は、図１９のステップＳ３０３の処理に移行する。また、判定状態が「判定中」ではない、あるいは、判定終了時刻を経過していない場合には（ステップＳ４０５否定）、配備先決定部１１７は、図１９のステップＳ３０３の処理に移行する。
【０１０２】
次の図２１は再配備先ノードIＩＤを特定後に、配備可否を判定した上で再配備を実行する動作を説明するフローである。図２１に示すように、配備先決定部１１７は、該当レコードのモジュールがデータ参照を伴うか否かを判定する（ステップＳ４１２）。モジュールがデータ参照を伴わない場合には（ステップＳ４１２否定）、配備先決定部１１７は、該当再配備先ノードＩＤを配備先ノードＩＤに格納する（ステップＳ４１３）。続いて、配備先決定部１１７は、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信させる（ステップＳ４１４）。
【０１０３】
続いて、配備先決定部１１７は、その時までに該当モジュールが配備されていた配備先ノードから、該当モジュールを回収する（ステップＳ４１５）。そして、配備先決定部１１７は、回収したモジュールの出力イベントに関するデータを削除する（ステップＳ４１６）。
【０１０４】
ここで、配備先決定部１１７が回収したモジュールの出力イベントに関するデータを削除する処理について、詳細に説明する。例えば、配備先決定部１１７は、発生イベント情報記憶部１１６Ａを参照し、配備先情報記憶部１１７Ａに格納されていた回収したモジュールが出力したイベントを特定し、当該イベントを削除する。この特定は、回収したモジュールの回収元の配備先ノードＩＤ、発生イベント型及び発生イベント属性が、発生イベント情報の発生ノード、発生イベント型及び発生イベント属性にそれぞれ一致するか否かによって行われる。つまり、配備先決定部１１７は、ここで一致するものを削除する。さらに、配備先決定部１１７は、配備先情報記憶部１１７Ａの発生ノードＩＤのカラムを対象として、前述の削除処理で削除された発生イベントを入力イベントとする配備済モジュールを特定する。このモジュールの特定は、前述の削除処理で特定された回収したモジュールの処理によって出力される発生イベントの出力イベント型及び発生イベント属性が、配備先情報の入力イベント型及び発生イベント属性に一致するか判定し、一致するものを特定する。そして、配備先決定部１１７は、該当モジュールの発生ノードＩＤのカラムのうち、削除された発生イベントの発生ノードと一致するものを削除する。このように、ステップＳ４１６においてデータが削除されると、配備先決定部１１７は、図１９のステップＳ３０１の処理に戻る。
【０１０５】
一方、モジュールがデータ参照を伴う場合には（ステップＳ４１２肯定）、配備先決定部１１７は、再配備先ノードのリソース観点制約の判定を行う（ステップＳ４１７）。配備可である場合には（ステップＳ４１８肯定）、判定状態に「ＯＫ」を格納し（ステップＳ４１９）。この時、さらに配備先情報記憶部の配備可否判定用情報の時刻欄をその時の時刻で更新する。さらに配備先決定部１１７は、該当再配備先ノードＩＤを配備先ノードＩＤに格納する（ステップＳ４２０）。このとき、配備先決定部１１７は、例えば、部分参照データ抽出部１１９に部分参照データを抽出させる。例えば、部分参照データ抽出部１１９は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部１１１Ｂから読み出す。部分参照データ抽出部１１９は、参照データ記憶部１６２に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。そして、配備先決定部１１７は、部分参照データを配備先ノードＩＤに対応するノードへ送信させ（ステップＳ４２１）、ステップＳ４１４の処理に移行する。
【０１０６】
一方、配備不可である場合には（ステップＳ４１８否定）、判定状態に「ＮＧ」を格納し（ステップＳ４２２）、現在の配備先ノードＩＤを配備予定ノードＩＤに格納する（ステップＳ４２３）。そして、配備先決定部１１７は、配備先ノードＩＤにクラウドを格納し（ステップＳ４２４）、ステップＳ４１４の処理に移行する。
【０１０７】
図２２〜図２６を用いて、配備先決定部１１７の動作例１について説明する。図２２〜図２６は、配備先決定部の動作例１について説明するための図である。図２２は、この動作例にかかる各テーブルの初期状態を示したものである。すなわち、テーブル２２ａは、参照データ記憶部１６２に記憶される参照データに対応する。テーブル２２ｂは、モジュール定義記憶部１１１Ｂに記憶される情報に対応する。テーブル２２ｃは、図１１のステップＳ１０４において生成されるリストに対応する。テーブル２２ｄは、図１３のステップＳ２０２において集計された配備可否判定用のテーブルに対応する。テーブル２２ｅは、トポロジ記憶部１１２Ａに記憶される情報に対応する。テーブル２２ｆは、発生イベント情報記憶部１１６Ａに記憶される情報に対応する。
【０１０８】
図２２の例では、テーブル２２ｆに示すように、コンセントＩＤ「１１」に対応する「電力」イベントが「センサ１」によって検知されたことを契機として、配備先決定部１１７は、配備処理を開始する。ここで、「電力」を入力イベントとするモジュール「平均電力計算」が未配備であるものとすると、配備先決定部１１７は、次のように処理を行う。つまり、配備先決定部１１７は、モジュール定義記憶部１１１Ｂを参照し、モジュール識別子「平均電力計算」、入力イベント型「電力」及び集約属性名「コンセントＩＤ」を図２３のテーブル２３ａに格納する（ステップＳ３０３）。なお、テーブル２３ａは、配備先情報記憶部１１７Ａに記憶される情報に対応する。
【０１０９】
続いて、配備先決定部１１７は、テーブル２２ｆから、発生イベント型が「電力」であり、かつ、コンセントＩＤ「１１」によって集約される発生ノード、すなわち「センサ１」を抽出する（ステップＳ３０４）。そして、検索結果として得られた発生ノードＩＤ「センサ１」及び発生ノードＩＤに対応付けられた発生イベント属性「コンセントＩＤ＝１１」をテーブル２３ａに格納する（ステップＳ３０５）。
【０１１０】
このとき、発生ノードの数は「１」であるので、配備先決定部１１７は、テーブル２２ｂを参照し、「平均電力計算」がデータ参照を伴うものと判定する。このため、配備先決定部１１７は、テーブル２３ａの配備先予定ノードＩＤに「センサ１」を格納するとともに、ノードＩＤを「クラウド」に変更する（ステップＳ３１１）。また、配備先決定部１１７は、テーブル２３ａの判定状態に「判定中」を格納し、時刻に「２０１１．１１．２９  １３：１０：００」を格納する（ステップＳ３１２）。これ以降、ステップＳ３１３及びステップ３１４の処理により、モジュール「平均電力計算」がクラウドに配備されるので、「クラウド」から「平均電力」イベントが発生する旨がテーブル２２ｆに追加されて、図２３のテーブル２３ｂとなる。
【０１１１】
続いて、配備先決定部１１７は、「平均電力計算」の配備に伴って、新たに発生イベント情報記憶部に追加された「平均電力」に対する処理を開始する。配備先決定部１１７は、配備済モジュールあり（ステップＳ３０２肯定）と判定し、ステップＳ３１６の処理に移行し、該当配備済モジュールを特定するが該当なし（ステップＳ４０２否定）となり、ステップＳ３０３に戻る。その後前述同様、入力イベント型「平均電力」に対応するモジュール「人単位計算」を配備する。つまり、配備先決定部１１７は、テーブル２２ｂを参照し、テーブル２３ａに「人単位計算」を追加して、テーブル２３ｃとする。なお、「人単位計算」は、参照データに関する情報を有しない、つまり、データ参照を伴わないモジュールであるため、配備先決定部１１７は、該当モジュールを配備可と判定し、テーブル２３ｃの判定状態に「ＯＫ」を格納し、配備先ノードＩＤに「クラウド」を格納する。これにより、モジュール「人単位計算」がクラウドに配備されるので、「クラウド」から「人単位電力」イベントが発生する旨がテーブル２３ｂに追加されて、テーブル２３ｄとなる。
【０１１２】
その後、新規の「電力」イベントが検知されると、配備先決定部１１７は、テーブル２３ｃの１行目のレコードを特定する。ここで、このレコードの発生ノードＩＤには電力イベントを発生する「センサ１」が含まれ、配備先ノードＩＤが「クラウド」、判定状態が「判定中」である。そして、判定終了時刻が経過すると（ステップＳ４０５）、配備先決定部１１７は、このレコードの再配備先ノードＩＤとして配備予定ノード「センサ１」を指定し（ステップＳ４０６）、データ特性制約の配備可否判定を行う（ステップＳ４０７）。テーブル２２ｄに示したように、コンセントＩＤ「１１」の「平均電力計算」に関連するマスタの変更回数は「１」であるので、変更回数の上限値が「２」以上に設定されている場合には、配備先決定部１１７は、「平均電力計算」を配備可と判定する（ステップＳ４０８肯定）。
【０１１３】
続いて、テーブル２２ｂを参照すると、「平均電力計算」はデータ参照を伴うモジュールであるので、配備先決定部１１７は、配備先ノードのリソース観点制約で配備可否判定を行う（ステップＳ４１７）。配備先決定部１１７は、テーブル２２ｅを参照し、現在使用中のリソース量に配備しようとしているデータ量を加算して、配備可否を判定する。ここで、配備可と判定される（ステップＳ４１８肯定）と、配備先決定部１１７は、テーブル２３ｃの「平均電力計算」の配備先ノードＩＤに再配備先ノードＩＤ「センサ１」を格納し（ステップＳ４２０）、判定状態に「ＯＫ」を格納、時刻を更新して、テーブル２４ａに更新する。
【０１１４】
続いて、配備先決定部１１７は、例えば、部分参照データ抽出部１１９に部分参照データを抽出させる。このとき、部分参照データ抽出部１１９は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部１１１Ｂから読み出す。部分参照データ抽出部１１９は、参照データ記憶部１６２に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。ここでは、部分参照データ｛１１，Ａさん｝が抽出される。そして、配備先決定部１１７は、抽出した部分参照データ｛１１，Ａさん｝及びモジュールを配備先ノードＩＤに送信させる（ステップＳ４２１、Ｓ４１４）とともに、これまで配備されていたノードから当該部分参照データ及びモジュールを回収させる（ステップＳ４１５）。そして、配備先決定部１１７は、テーブル２４ｄのデータ２４ｅを削除してテーブル２４ｆに更新するとともに、テーブル２４ａのデータ２４ｂを削除してテーブル２４ｃに更新する（ステップＳ４１６）。すなわち、テーブル２４ｃ及びテーブル２４ｆは、「平均電力計算」の再配備後の状態に対応する。上記動作から、データ参照を伴う処理を配備する際、モジュール定義情報に従って必要データのみを抽出して配備することが可能であることが容易にわかる。
【０１１５】
次に、上記の「平均電力計算」のセンサ１への再配備によって、センサ１からの新規「平均電力」イベントが発生すると、配備先決定部１１７は、図２５のテーブル２５ａに示すように、再配備先から発生イベントを検知する。ここで、配備先決定部１１７は、配備先情報記憶部のテーブル２４ｃの「人単位計算」を特定し（ステップＳ４０１）、対応する発生ノードＩＤにノードＩＤ「センサ１」が含まれない（ステップＳ４０３否定）ので、発生ノードである「センサ１」をテーブル２５ｂの発生ノードＩＤに追加する（ステップＳ４１０）。そして、配備先決定部１１７は、テーブル２２ｅを参照し、「平均電力」が集約されるノード「センサ１」を特定する（ステップＳ４１１）。モジュール「人単位計算」はデータ参照を伴わない（ステップＳ４１２否定）ので、配備先決定部１１７は、特定した「センサ１」を配備先ノードＩＤとしてテーブル２５ｂに格納して図２６のテーブル２６ａに更新する（ステップＳ４１３）。そして、配備先決定部１１７は、該当モジュール「人単位計算」を配備先ノードに送信（ステップＳ４１４）後、これまでの配備先（クラウド）から該当モジュールを回収（ステップＳ４１５）、テーブル２５ｃのデータ２５ｄを削除（ステップＳ４１６）してテーブル２６ｂに更新する。なお、テーブル２６ａ及びテーブル２６ｂは、「人単位計算」の再配備後の状態に対応する。上記動作から、依存関係のある前処理の再配備に応じて、後続処理も連鎖的に再配備しなおすことが可能であることが容易にわかる。
【０１１６】
図２７及び図２８を用いて、配備先決定部１１７の動作例２について説明する。図２７及び図２８は、配備先決定部の動作例２について説明するための図である。動作例２では、モジュール配備後に配備可否判定でＮＧ判定された場合の配備先決定部１１７の動作例について説明する。テーブル２７ａは、図１３のステップＳ２０２において集計された配備可否判定用のテーブルに対応する。テーブル２７ａには、モジュール「平均電力計算」の参照データのマスタの変更回数が「６」であり、変更回数の上限値を上回ってしまった場合を例示する。ここで、一例として、現在の配備先情報記憶部の状態が図２６に示したテーブル２６ａである場合には、配備先決定部１１７は、該当するモジュール「平均電力計算」が配備済であるか否かを判定する（ステップＳ２０３）。ここでは、モジュール「平均電力計算」が配備済であるので（ステップＳ２０３肯定）、配備先決定部１１７は、当該モジュールの配備先ノードがクラウド以外のノードであるか否かを判定する（ステップＳ２０４）。ここでは、現在の配備先ノードが「センサ１」であるので（ステップＳ２０４肯定）、配備先決定部１１７は、センサ１に部分参照データを配備可能か否か判定する（ステップＳ２０５）。具体的には、モジュール定義情報内の配備可否判定に関する情報に基づき、参照データ特性に制約とリソース観点制約での判定を行う。ここでは、テーブル２７ａにおいて変更回数の上限値を上回ってしまって場合を示しているので、配備先決定部１１７は、判定状態に「ＮＧ」を格納する（ステップＳ２０８、Ｓ４２２）。そして、配備先決定部１１７は、配備先予定ノードＩＤに現在の配備先ノードＩＤ「センサ１」を格納し（ステップＳ４２３）、配備先ノードＩＤに「クラウド」を格納する（ステップＳ４２４）。すなわち、配備先決定部１１７は、テーブル２６ａをテーブル２７ｂに更新する。
【０１１７】
続いて、配備先決定部１１７は、部分参照データ及びモジュールを配備先ノードＩＤに送信させるとともに（ステップＳ４１４）、これまで配備していたノードから当該部分参照データ及びモジュールを回収させる（ステップＳ４１５）。そして、配備先決定部１１７は、テーブル２７ｂのデータ２７ｃを削除してテーブル２８ａに更新するとともに、テーブル２７ｄのデータ２７ｅを削除してテーブル２８ｂに更新する（ステップＳ４１６）。なお、テーブル２８ａ及びテーブル２８ｂは、「平均電力計算」をクラウドに再配備した後の状態に対応する。
【０１１８】
続いて、配備先決定部１１７は、テーブル２８ｃに示すように、「平均電力」イベントをクラウドから受信する。ここで、配備先決定部１１７は、テーブル２８ａの「人単位計算」に対応する発生ノードＩＤにノードＩＤが含まれないので、テーブル２８ｃを参照し、入力イベント型「平均電力」の発生ノードである「クラウド」をテーブル２８ａの発生ノードＩＤに格納する。そして、配備先決定部１１７は、テーブル２２ｅを参照し、「平均電力」が集約されるノード「クラウド」を特定する。モジュール「人単位計算」はデータ参照を伴わないので、配備先決定部１１７は、特定した「クラウド」を配備先ノードＩＤとしてテーブル２８ａに格納してテーブル２８ｄに更新する。
【０１１９】
図２９を用いて、部分参照データ不足検出からの配備可否判定処理について説明する。図２９は、部分参照データ不足検出からの配備可否判定処理の手順を示すフローチャートである。この配備可否判定処理は、例えば、下位ノードから部分参照データ要求を受信した場合に処理が起動される。
【０１２０】
図２９に示すように、配備先決定部１１７は、下位ノードから部分参照データ要求されるのを待機する（ステップＳ５０１）。
【０１２１】
続いて、配備先決定部１１７は、当該要求に基づいて、要求元の配備済モジュールと、配備対象データとを特定する（ステップＳ５０２）。そして、配備先決定部１１７は、配備可否判定を行う（ステップＳ５０３）。なお、この配備可否判定においては、参照データ特性制約としては該当配備対象のデータの変更頻度を用いて判定し、リソース観点制約としては配備先ノードのリソース量を用いて判定することとする。
【０１２２】
そして、配備可である場合には（ステップＳ５０４肯定）、該当配備対象データを要求元ノードに配備し（ステップＳ５０５）、ステップＳ５０１の処理に戻る。このとき、配備先決定部１１７は、例えば、部分参照データ抽出部１１９に部分参照データを抽出させる。例えば、部分参照データ抽出部１１９は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部１１１Ｂから読み出す。部分参照データ抽出部１１９は、参照データ記憶部１６２に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。また、配備不可である場合には（ステップＳ５０４否定）、図２１のステップＳ４２２の処理を開始して再配備を実行する（ステップＳ５０６）。上記動作から、配備先ノードが新たな対象を検出した時などに送信する、部分参照データ要求の受信を契機に、不足している参照データを追加配備できることが容易にわかる。
【０１２３】
なお、モジュール登録部１１１、トポロジ取得部１１２、イベント受信部１１３、モジュール実行部１１５、発生イベント登録部１１６には、各種の集積回路や電子回路を採用できる。また、部分参照データ要求受信部１２０、部分参照データ抽出部１１９、部分参照データ送信部１６３、配備先決定部１１７及びモジュール送信部１１８にも、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【０１２４】
また、上記のモジュール記憶部１１１Ａ、モジュール定義記憶部１１１Ｂ、トポロジ記憶部１１２Ａ、イベント記憶部１１４には、半導体メモリ素子や記憶装置を採用できる。また、発生イベント情報記憶部１１６Ａ、参照データ記憶部１６２及び配備先情報記憶部１１７Ａなどの記憶部にも、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Video  Random  Access  Memory）、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【０１２５】
［センサノードの構成］
次に、本実施例に係るセンサノードの機能的構成について説明する。図３０は、実施例１に係るセンサノードの機能的構成を示すブロック図である。図３０に示すセンサノード２１０は、センサ情報受信部２１１と、モジュール受信部２１２と、モジュール実行部２１３と、イベント送信部２１４とを有する。さらに、センサノード２１０は、部分参照データ受信部２１５と、部分参照データ記憶部２１６と、部分参照データ要求部２１７と、トポロジ検出部２１８と、トポロジ送信部２１９とを有する。
【０１２６】
センサ情報受信部２１１は、センサノード２１０に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。例えば、センサ情報受信部２１１は、センサノード２１０に電力センサが内蔵されている場合には、電力センサによって計測された電力を受信する。また、例えば、センサ情報受信部２１１は、センサノード２１０に温度センサが内蔵されている場合には、温度センサによって計測された温度を受信する。また、例えば、センサ情報受信部２１１は、センサノード２１０に湿度センサが内蔵されている場合には、湿度センサによって計測された湿度を受信する。なお、センサノード２１０に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部２１１が設けられる。
【０１２７】
モジュール受信部２１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部２１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部２１３に出力される。また、モジュール受信部２１２は、例えば、モジュール回収要求を上位ノードから受信する。モジュール受信部２１２は、モジュール回収要求を受信すると、センサノード２１０に配備されているモジュールを削除する。
【０１２８】
モジュール実行部２１３は、センサノード２１０に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部２１３は、センサ情報受信部２１１によってセンサ情報が受信された場合に、受信されたセンサ情報を入力イベント型とするモジュールがセンサノード２１０に配備されているか否かを判定する。このとき、モジュール実行部２１３は、モジュールがセンサノード２１０に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。その際、後述するように必要に応じて部分参照データ記憶部内のデータを参照しながら加工処理を行う。その後、モジュール実行部２１３は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント送信部２１４へ出力する。なお、モジュールがセンサノード２１０に配備されていない場合には、センサ情報を加工処理せずにそのままイベント送信部２１４へ出力する。
【０１２９】
イベント送信部２１４は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部２１４は、モジュール実行部２１３によって加工処理されたイベント、あるいはセンサ情報受信部２１１によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部２１４は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード２１０のノードＩＤ、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。その上で、イベント送信部２１４は、センサ情報とともに発生ノードのノードＩＤ及び集約属性を含むイベントを上位ノードに送信する。
【０１３０】
ここで、上記の「集約属性」の属性名及び属性値は、センサノード２１０の製造段階でデバイスドライバなどに組み込んでおくことができる。例えば、センサデバイスが電力センサである場合には、電力が計測される枠組みである「コンセントＩＤ」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード２１０がサーバノード１１０との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード２１０に先だって付与されているコンセントＩＤの属性値をサーバノード１１０から自動的に取得することもできる。
【０１３１】
部分参照データ受信部２１５は、部分参照データ送信部１６３によって送信された部分参照データを受信する処理部である。このようにして受信された部分参照データは後述の部分参照データ記憶部２１６に登録される。また、部分参照データ受信部２１５は、例えば、部分参照データ回収を受信する。部分参照データ受信部２１５は、部分参照データ回収を受信すると、当該部分参照データを部分参照データ記憶部２１６から削除する。
【０１３２】
部分参照データ記憶部２１６は、部分参照データを記憶する記憶部である。この部分参照データ記憶部２１６は、センサノード２１０に配備されたモジュールによってイベントが加工処理される場合に、モジュール実行部２１３によって参照される。
【０１３３】
部分参照データ要求部２１７は、部分参照データ要求をサーバノード１１０に送信する処理部である。例えば、部分参照データ要求部２１７は、モジュール実行部２１３によって部分参照データ記憶部２１６が参照された場合に、部分参照データの不足が検出されると、部分参照データ要求をサーバノード１１０に送信する。
【０１３４】
トポロジ検出部２１８は、センサノード２１０がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。例えば、トポロジ検出部２１８は、ＵＰｎＰプロトコル等を用いて、センサノード２１０と同一のネットワーク内に存在するＧＷノード３１０を認識したり、サーバノード１１０からＧＷノード３１０の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード１１０とのネットワーク接続の確立は、サーバノード１１０のＵＲＬ等のアドレスを設定しておくことにより実現できる。さらに、トポロジ検出部２１８は、自ノード内の使用リソース量(記憶容量)を確認し、上記ノード間接続情報に付与などする。
【０１３５】
トポロジ送信部２１９は、トポロジ検出部２１８によって検出されたトポロジをサーバノード１１０に送信する処理部である。例えば、トポロジ送信部２１９は、センサノード２１０が接続されている上位ノードのノードＩＤをサーバノード１１０に送信する。
【０１３６】
［センサノードにおける処理の流れ］
次に、本実施例に係るセンサノード２１０における処理の流れについて説明する。図３１は、実施例１に係るセンサノードにおける処理の手順を示すフローチャートである。図３１に示した処理は、センサノード２１０の電源がＯＮ状態である限り、繰り返し実行される。
【０１３７】
図３１に示すように、新たな上位ノードを検出した場合（ステップＳ６０１肯定）には、センサノード２１０は、次のような処理を実行する。すなわち、センサノード２１０は、当該上位ノードのノードＩＤをサーバノード１１０へ送信する（ステップＳ６０２）。さらに、トポロジ検出部２１８は、自ノード内の使用リソース量(記憶容量)を確認し、上記ノード間接続情報に付与などする。なお、新たな上位ノードを検出しなかった場合（ステップＳ６０１否定）には、ステップＳ６０２の処理を実行せずにステップＳ６０３の処理へ移行する。
【０１３８】
続いて、サーバノード１１０からモジュールを受信した場合（ステップＳ６０３肯定）には、センサノード２１０は、サーバノード１１０から受信したモジュールを配備する（ステップＳ６０４）。なお、モジュールを受信しなかった場合（ステップＳ６０３否定）には、ステップＳ６０４の処理を実行せずにステップＳ６０５の処理へ移行する。
【０１３９】
ここで、部分参照データを受信した場合（ステップＳ６０５肯定）には、センサノード２１０は、部分参照データを部分参照データ記憶部２１６に格納する（ステップＳ６０６）。なお、部分参照データを受信しなかった場合（ステップＳ６０５否定）には、ステップＳ６０６の処理を実行せずにステップＳ６０７の処理へ移行する。
【０１４０】
そして、センサデバイスからセンサ情報を受信した場合（ステップＳ６０７肯定）には、センサノード２１０は、当該センサ情報を入力イベント型とするモジュールが配備されているか否かをさらに判定する（ステップＳ６０８）。なお、センサ情報を受信しなかった場合（ステップＳ６０７否定）には、ステップＳ６０１の処理に戻る。
【０１４１】
このとき、モジュールが配備されている場合（ステップＳ６０８肯定）には、センサノード２１０は、部分参照データ記憶部に部分参照データが配備されているか否かをさらに判定する（ステップＳ６０９）。なお、モジュールが配備されていない場合（ステップＳ６０８否定）には、センサノード２１０は、センサデバイスから受信したセンサ情報に発生ノードＩＤや集約属性などを付加した上で上位ノードへ送信し（ステップＳ６１４）、ステップＳ６０１の処理に移行する。
【０１４２】
このとき、部分参照データが配備されている場合には（ステップＳ６０９肯定）、部分参照データを参照し、モジュールを実行することによってイベントを加工処理する（ステップＳ６１０）。そして、センサノード２１０は、加工処理が実行されたイベントを上位ノードへ送信し（ステップＳ６１１）、ステップＳ６０１の処理に移行する。
【０１４３】
一方、部分参照データが配備されていない場合（ステップＳ６０９否定）には、センサノード２１０は、部分参照データ要求をサーバノード１１０へ送信する（ステップＳ６１２）。そして、センサノード２１０は、部分参照データに対応する部分参照データをサーバノード１１０から受信し、当該部分参照データを格納すると（ステップＳ６１３）、ステップＳ６１０の処理に移行する。なお、ステップＳ６１３の処理において、所定時間内に、部分参照データに対応する部分参照データをサーバノード１１０から受信しない場合には、サーバノード１１０は、センサデバイスから受信したセンサ情報に発生ノードＩＤや集約属性などを付加した上で上位ノードへ送信し、当該センサ情報を上位ノードにて処理することとしても良い。
【０１４４】
［実施例１の効果］
上述してきたように、本実施例に係るサーバノード１１０は、データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信する。サーバノード１１０は、モジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、マスタから抽出する。サーバノード１１０は、抽出されたデータをノードに配備する。このように、サーバノード１１０は、参照データから必要カラムの必要レコードのみを抽出してノードに配備するので、大量のレコードを配備することなくノードにて固有処理が実現できる。
【０１４５】
また、例えば、サーバノード１１０は、指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定するので、将来の再配備にかかる通信負荷を軽減できる。
【０１４６】
また、例えば、サーバノード１１０は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、その変更によって必要になる後続処理の配備先ノードの変更時も、該当配備先ノードに該当モジュールを配備できるか否かを判定するので、モジュールの配備に伴う再配備を簡易に実現できる。
【０１４７】
また、例えば、サーバノード１１０は、モジュールが配備されたノードから、モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、データ要求に対応するデータを前記マスタから抽出する。このため、サーバノード１１０は、データ参照に伴う通信負荷を軽減できる。
【０１４８】
［適用例］
次に、開示技術の適用例について説明する。本開示技術は、上述した電力センシング以外の事例に対しても適用可能である。以降では事例として３種の適用例１〜３について説明する。
【０１４９】
［適用例１］
図３２を用いて、開示技術の適用例１について説明する。図３２は、開示技術の適用例１について説明するための図である。適用例１としては、開示技術が、物流等の貯蔵物管理に適用できることを示したものである。具体的にはタグリーダ付き温度センサに適用される場合を示す。図３２に示す適用例１では、開示技術が、タグリーダ付き温度センサに適用される場合を説明する。すなわち、適用例１では、いちごやメロンなどの青果を貯蔵する貯蔵庫に、貯蔵庫内の温度を測定する温度センサが備えられている場合を想定する。この温度センサから、温度センサのセンサＩＤ、貯蔵庫内の温度及び青果ごとに付されたタグのタグＩＤなどを含むイベントが発生する。イベントが検知されると、貯蔵物、つまり青果ごとに応じて適温かどうかを判定する処理がモジュール実行部で実行される。この処理では、モジュール実行部に配備された処理は、貯蔵庫内の各センサ（センサＩＤ）が検出したタグＩＤに応じた青果に紐付けられた貯蔵条件を含む参照データが部分参照データとして必要となるが、図５のデータ５ｄのケースを用いた間接参照に基づき、センサＩＤ⇒タグＩＤ⇒青果名⇒貯蔵条件と辿り、必要な参照データ｛タグＩＤ、貯蔵条件｝のみを配備することができる。このように、開示技術は、タグリーダ付き温度センサに好適に適用される。
【０１５０】
［適用例２］
図３３を用いて、開示技術の適用例２について説明する。図３３は、開示技術の適用例２について説明するための図である。図３３に示す適用例２では、開示技術が、工場などでの作業支援に適用できることを示したものである。具体的にはモーションセンサによる作業効率の評価に適用される場合を説明する。すなわち、適用例２では、ある生産ラインに含まれる複数の工程が各作業員に分担されている場合に、各工程で作業する作業員の動作を検出するモーションセンサに開示技術が適用された場合を想定する。このモーションセンサから、センサＩＤ、作業員の作業中の動作を示すモーションデータ及び作業ごとの作業ＩＤなどを含むイベントが発生する。イベントが検知されると、モーションデータが解析され、モジュール実行部で作業員の作業の効率を評価する処理が実行される。この処理では、作業ＩＤに紐付けられた評価基準を含む参照データが参照される。なお、この評価によって効率の良い作業中の動作が検出された場合には、その動作はノウハウとして抽出され、さらに、その動作を示すモーションデータが評価用の参照データとして更新・再配備される。この処理ではモジュール実行部に配備された処理は、各モーションセンサ（センサＩＤ）に解析対象とする作業IDに応じた適正動作判定用のデータを必要とする。この場合も適用例１と同様に間接参照に基づいて必要データのみを配備することができる。このように、開示技術は、モーションセンサによる作業効率の評価に好適に適用される。
【０１５１】
［適用例３］
図３４を用いて、開示技術の適用例３について説明する。図３４は、開示技術の適用例３について説明するための図である。図３４に示す適用例３では、開示技術が、工作機械の稼働状態の監視に適用される場合を説明する。すなわち、適用例３では、工作機械の稼働状態を検出するセンサに開示技術が適用された場合を想定する。このセンサから、工作機械の機器ＩＤ、稼働状態、機械使用者のＩＤを含むイベントが発生する。この稼働状態の例としては、工作機械に搭載された消耗品の使用量、使用者による使用状況などを含む。イベントが検知されると、モジュール実行部で工作機械に搭載された消耗品の消耗状況、安全に使用されているか否かを示す使用状況などを使用者ごとに判定する処理が実行される。この処理では、モジュール実行部に配備された処理は、機械ＩＤに対応づく機械が有する消耗品に対する交換時期に関するデータや、機械ＩＤに対応づく危険操作/適正操作等の操作安全性に関するデータなどを含む参照データを必要とする。この場合も適用例１と同様に間接参照に基づいて、機械ID⇒消耗品⇒交換時期データや機械ＩＤ⇒操作安全性データなどと辿り、必要データのみを配備することができる。このように、開示技術は、工作機械の稼働状態の監視に好適に適用される。
【０１５２】
以上、適用例１〜３に示したように、種々のソリューション事例であっても、開示技術は好適に適用される。
【実施例２】
【０１５３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、その他の実施例にて実施されても良い。そこで、以下では、その他の実施例について説明する。
【０１５４】
［ＧＷノードを含むセンサネットワークシステムのシステム構成］
例えば、上記の実施例１では、センサネットワークシステム１にサーバノード１１０及びセンサノード２１０が収容される場合を説明したが、本発明はこれに限定されるものではない。例えば、サーバノード１１０とセンサノード２１０との間にＧＷノード３１０が収容されても良い。
【０１５５】
ＧＷノードを含むセンサネットワークシステムのシステム構成について説明する。図３５は、実施例２に係るセンサネットワークシステムのシステム構成を示す図である。図３５に示すように、センサネットワークシステム３には、サーバノード１１０と、センサノード２１０と、ＧＷノード３１０とが収容される。これらセンサノード２１０とＧＷノード３１０との間は、ネットワーク５を介して通信可能に接続される。また、ＧＷノード３１０とサーバノード１１０との間は、ネットワーク５を介して通信可能に接続される。なお、図３５の例では、センサノード２１０及びＧＷノード３１０を１つずつ収容する場合を例示したが、任意の数のセンサノード２１０及び任意数のＧＷノード３１０を収容する場合に適用することができる。
【０１５６】
ＧＷノード３１０の機能的構成について説明する。図３６は、実施例２に係るＧＷノードの機能的構成を示すブロック図である。図３６に示すＧＷノード３１０は、図３０に示したセンサノード２１０に比べて、センサ情報受信部２１１に替えてイベント受信部３１１を有する点が相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
【０１５７】
イベント受信部３１１は、イベントを受信する処理部である。例えば、イベント受信部３１１は、下位ノードであるセンサノード２１０や他のＧＷノード３１０からイベントを受信する。
【０１５８】
［プログラム］
図３７は、イベント収集プログラムを実行するコンピュータを示す図である。図３７に示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからデータの入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読み取り装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）４０７と、記憶装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。
【０１５９】
記憶装置４０８には、図２に示したイベント受信部１１３、部分参照データ抽出部１１９、部分参照データ送信部１６３及び配備先決定部１１７の各処理部と同様の機能を有する診療情報入力プログラムが記憶される。また、記憶装置４０８には、イベント収集プログラムを実現するための各種データが記憶される。
【０１６０】
ＣＰＵ４０１は、記憶装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを図２に示したイベント受信部１１３、部分参照データ抽出部１１９、部分参照データ送信部１６３及び配備先決定部１１７として機能させることができる。
【０１６１】
なお、上記のイベント収集プログラムは、必ずしも記憶装置４０８に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしても良い。
【０１６２】
［その他の実施例］
また、上記の実施例１では、例えば、ネットワークのトポロジが変化したことを契機にモジュール配備処理を起動する場合を例示したが、モジュールが追加または削除された場合やモジュールの定義が変更された場合にモジュール配備処理を起動することとしてもよい。
【０１６３】
なお、開示の装置では、モジュールによって実行されるイベント加工処理やサービス提供用のアプリケーションによって実行されるサービス提供処理のバックグラウンドでモジュール配備処理を実行することもできる。例えば、現用系のサーバノードでイベント加工処理やサービス提供処理を実行しつつ、待機系のサーバノードでモジュール配備処理を実行できる。
【０１６４】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１６５】
（付記１）コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信し、
入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、前記データ参照にて参照されるデータを記憶するマスタから抽出し、
前記抽出する処理によって抽出されたデータを前記ノードに配備する
各処理を実行することを特徴とするイベント収集方法。
【０１６６】
（付記２）コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信し、
指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定し、
前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する
各処理を実行することを特徴とするイベント収集方法。
【０１６７】
（付記３）前記コンピュータは、指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定し、
前記配備する処理は、前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記抽出する処理によって抽出されたデータを当該ノードに配備することを特徴とする付記１に記載のイベント収集方法。
【０１６８】
（付記４）前記判定する処理は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、その変更によって必要になる後続処理の配備先ノードの変更時も、該当配備先ノードに該当モジュールを配備できるか否かを判定することを特徴とする付記２または３に記載のイベント収集方法。
【０１６９】
（付記５）前記判定する処理は、前記指標として、モジュールによって参照されるデータの変更頻度に関連する第１条件及びモジュールが配備されるノードのリソース量に関連する第２条件のうち一方又は両方を含む判定情報を用いて、前記モジュールを前記ノードに配備できるか否かを判定することを特徴とする付記２〜４のいずれか一つに記載のイベント収集方法。
【０１７０】
（付記６）前記抽出する処理は、モジュールが配備されたノードから、当該モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、当該データ要求に対応するデータを前記マスタから抽出することを特徴とする付記１または３に記載のイベント収集方法。
【０１７１】
（付記７）コンピュータに、
データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信し、
入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、前記データ参照にて参照されるデータを記憶するマスタから抽出し、
前記抽出する処理によって抽出されたデータを前記ノードに配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【０１７２】
（付記８）コンピュータに、
データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信し、
指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定し、
前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【０１７３】
（付記９）前記コンピュータは、指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定し、
前記配備する処理は、前記判定する処理によって前記モジュールを前記ノードに配備できると判定された場合に、前記抽出する処理によって抽出されたデータを当該ノードに配備することを特徴とする付記７に記載のイベント収集プログラム。
【０１７４】
（付記１０）前記判定する処理は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、その変更によって必要になる後続処理の配備先ノードの変更時も、該当配備先ノードに該当モジュールを配備できるか否かを判定することを特徴とする付記８または９に記載のイベント収集プログラム。
【０１７５】
（付記１１）前記判定する処理は、前記指標として、モジュールによって参照されるデータの変更頻度に関連する第１条件及びモジュールが配備されるノードのリソース量に関連する第２条件のうち一方又は両方を含む判定情報を用いて、前記モジュールを前記ノードに配備できるか否かを判定することを特徴とする付記８〜１０のいずれか一つに記載のイベント収集プログラム。
【０１７６】
（付記１２）前記抽出する処理は、モジュールが配備されたノードから、当該モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、当該データ要求に対応するデータを前記マスタから抽出することを特徴とする付記７または９に記載のイベント収集プログラム。
【０１７７】
（付記１３）データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信する受信部と、
入力イベント内の属性を示す属性情報と、当該属性情報に応じてモジュールによって参照されるレコードを特定する参照データ抽出用情報と、モジュールによって参照されるデータの属性を特定する参照箇所情報とを対応付けて記憶するモジュール定義記憶部と、
前記モジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、前記データ参照にて参照されるデータを記憶するマスタから抽出する抽出部と、
前記抽出部によって抽出されたデータを前記ノードに配備する配備部と
を備えることを特徴とする情報処理装置。
【０１７８】
（付記１４）データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信する受信部と、
指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定する判定部と、
前記判定部によって前記モジュールを前記ノードに配備できると判定された場合に、前記データ参照にて参照されるデータを当該ノードに配備する配備部と
を備えることを特徴とする情報処理装置。
【０１７９】
（付記１５）指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定する判定部をさらに備え、
前記配備部は、前記判定部によって前記モジュールを前記ノードに配備できると判定された場合に、前記抽出部によって抽出されたデータを当該ノードに配備することを特徴とする付記１３に記載の情報処理装置。
【０１８０】
（付記１６）前記判定部は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、変更後のノードに当該モジュールを配備できるか否かを判定することを特徴とする付記１４または１５に記載の情報処理装置。
【０１８１】
（付記１７）モジュールによって参照されるデータの変更頻度に関連する第１条件及びモジュールが配備されるノードのリソース量に関連する第２条件のうち一方又は両方を含む判定情報を記憶する判定用記憶部をさらに備え、
前記判定部は、前記指標として、前記判定用記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールを前記ノードに配備できるか否かを判定することを特徴とする付記１４〜１６のいずれか一つに記載の情報処理装置。
【０１８２】
（付記１８）前記抽出部は、モジュールが配備されたノードから、当該モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、当該データ要求に対応するデータを前記マスタから抽出することを特徴とする付記１３または１５に記載の情報処理装置。
【符号の説明】
【０１８３】
１      センサネットワークシステム
１１０      サーバノード
１１１      モジュール登録部
１１１Ａ    モジュール記憶部
１１１Ｂ    モジュール定義記憶部
１１２      トポロジ取得部
１１２Ａ    トポロジ記憶部
１１３      イベント受信部
１１４      イベント記憶部
１１５      モジュール実行部
１１６      発生イベント登録部
１１６Ａ    発生イベント情報記憶部
１１７      参照データ記憶部
１１８      部分参照データ要求受信部
１１９      部分参照データ抽出部
１２０      部分参照データ送信部
１２１      配備先決定部
１２１Ａ    配備先情報記憶部
１２２      モジュール送信部
【図１】
0005810955.tif 000002
【図２】
0005810955.tif 000003
【図３】
0005810955.tif 000004
【図４】
0005810955.tif 000005
【図５】
0005810955.tif 000006
【図６】
0005810955.tif 000007
【図７】
0005810955.tif 000008
【図８】
0005810955.tif 000009
【図９】
0005810955.tif 000010
【図１０】
0005810955.tif 000011
【図１１】
0005810955.tif 000012
【図１２】
0005810955.tif 000013
【図１３】
0005810955.tif 000014
【図１４】
0005810955.tif 000015
【図１５】
0005810955.tif 000016
【図１６】
0005810955.tif 000017
【図１７】
0005810955.tif 000018
【図１８】
0005810955.tif 000019
【図１９】
0005810955.tif 000020
【図２０】
0005810955.tif 000021
【図２１】
0005810955.tif 000022
【図２２】
0005810955.tif 000023
【図２３】
0005810955.tif 000024
【図２４】
0005810955.tif 000025
【図２５】
0005810955.tif 000026
【図２６】
0005810955.tif 000027
【図２７】
0005810955.tif 000028
【図２８】
0005810955.tif 000029
【図２９】
0005810955.tif 000030
【図３０】
0005810955.tif 000031
【図３１】
0005810955.tif 000032
【図３２】
0005810955.tif 000033
【図３３】
0005810955.tif 000034
【図３４】
0005810955.tif 000035
【図３５】
0005810955.tif 000036
【図３６】
0005810955.tif 000037
【図３７】
0005810955.tif 000038