(57)【特許請求の範囲】
【請求項１】
複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させ、
イベントを自ノードよりも下位に位置する下位ノードへ送信する送信処理を実行する下位送信用モジュールが自ノードに配備されている場合には、受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する送信処理を前記下位送信用モジュールに実行させる
ことを特徴とするイベント処理方法。
【請求項２】
前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定し、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信し、
前記集計結果が上位ノードに送信済みでない場合に、受信したイベントを記憶するイベント記憶部に格納し、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させることを特徴とする請求項１に記載のイベント処理方法。
【請求項３】
複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
自ノードよりも下位に位置する下位ノードからイベントを受信し、
受信した集計前のイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
ことを特徴とするイベント処理方法。
【請求項４】
コンピュータによって実行されるイベント収集方法であって、
前記コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
ことを特徴とするイベント収集方法。
【請求項５】
前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させることを特徴とする請求項４に記載のイベント収集方法。
【請求項６】
前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理によって出力された集計結果にイベントを追加集計する追加集計処理が実行された頻度を示す第２の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする請求項４または５に記載のイベント収集方法。
【請求項７】
前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第３の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする請求項６に記載のイベント収集方法。
【請求項８】
コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備し、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該上位ノードが当該上位ノードよりも下位に位置する下位ノードから受信した未処理かつ当該モジュールによって処理されるイベントを当該ノードへ送信させる
ことを特徴とするイベント収集方法。
【請求項９】
コンピュータに、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させ、
イベントを自ノードよりも下位に位置する下位ノードへ送信する送信処理を実行する下位送信用モジュールが自ノードに配備されている場合には、受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する送信処理を前記下位送信用モジュールに実行させる
各処理を実行させることを特徴とするイベント処理プログラム。
【請求項１０】
コンピュータに、
自ノードよりも下位に位置する下位ノードからイベントを受信し、
受信した集計前のイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
処理を実行させることを特徴とするイベント処理プログラム。
【請求項１１】
コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【請求項１２】
コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備し、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該上位ノードが当該上位ノードよりも下位に位置する下位ノードから受信した未処理かつ当該モジュールによって処理されるイベントを当該ノードへ送信させる
各処理を実行させることを特徴とするイベント収集プログラム。
【請求項１３】
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する処理と、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる処理と、
イベントを自ノードよりも下位に位置する下位ノードへ送信する送信処理を実行する下位送信用モジュールが自ノードに配備されている場合には、受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する送信処理を前記下位送信用モジュールに実行させる処理と
を実行する処理部を有することを特徴とする情報処理装置。
【請求項１４】
自ノードよりも下位に位置する下位ノードからイベントを受信する処理と、
受信した集計前のイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する処理と
を実行する処理部を有することを特徴とする情報処理装置。
【請求項１５】
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する処理と、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する処理と
を実行する処理部を有することを特徴とする情報処理装置。
【請求項１６】
イベントを処理するモジュールを、ネットワークに接続されたノードに配備する処理と、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該上位ノードが当該上位ノードよりも下位に位置する下位ノードから受信した未処理かつ当該モジュールによって処理されるイベントを当該ノードへ送信させる処理と
を実行する処理部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、イベント処理方法、イベント収集方法、イベント処理プログラム、イベント収集プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
センサノードによってセンシングされたセンシングデータをイベントとして採取するセンサネットワークが知られている。かかるセンサネットワークを介してサーバノードに採取されたイベントに応じて各種のサービス、例えばアラートの発信や機器の制御などが提供される。
【０００３】
このように、センサノードからのイベントをサーバノードに収集させる場合には、全てのイベントがサーバノードに集中して通知されることになる。このため、サーバノードの負荷が増大するとともに、ネットワークのトラフィックの増加に伴ってネットワーク帯域も逼迫する。
【０００４】
かかるサーバノードの負荷とネットワークトラフィックとを抑制する技術の一例として、次のような技術が提案されている。一例としては、データをフィルタリングするフィルタエージェントを消費ノードからデータ生産ノードへ転送することによってシステムパフォーマンスおよび／またはリソース消費を改善するシステムが挙げられる。他の一例としては、スクリプトを入れ子構造とし、スクリプトの一部を下位ノードである中間ノードやセンサノードに実行させるセンサネットワークシステムが挙げられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−９７６０３号公報
【特許文献２】特開２００６−３４４０１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、サーバノードの負荷とネットワークトラフィックとを抑制する技術の一例として、次のような技術が考えられる。すなわち、イベントの発生状況やセンサネットワークのトポロジに応じてイベントの収集経路を決定しておき、その収集経路に基づいて、中間ノードやセンサノードなどの下位ノードにイベントを処理するモジュールを分散配備する技術が一例として考えられる。
【０００７】
しかしながら、上記の考案技術では、イベントを処理することができない場合がある。例えば、イベントの収集経路に変更が生じた場合や、本来の収集経路とは異なるセンサノードでイベントが採取された場合には、イベントの処理を本来担当する下位ノードにイベントが通知されないことがある。このような場合には、イベントを処理することができない。
【０００８】
開示の技術は、上記に鑑みてなされたものであって、イベントを処理することができるイベント処理方法、イベント収集方法、イベント処理プログラム、イベント収集プログラム及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本願の開示するイベント処理方法は、複数のノードによって実行されるイベント処理方法であって、一つの態様において、受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する。また、イベント処理方法は、一つの態様において、複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる。
【発明の効果】
【００１０】
本願の開示する技術の一つの態様によれば、イベントを処理することができるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。
【図２】図２は、実施例１に係るサーバノードの機能的構成を示すブロック図である。
【図３】図３は、モジュール記憶部に記憶される情報の構成例を示す図である。
【図４】図４は、モジュール定義記憶部に記憶される情報の構成例を示す図である。
【図５】図５は、トポロジ記憶部に記憶される情報の構成例を示す図である。
【図６】図６は、イベント記憶部に記憶される情報の構成例を示す図である。
【図７】図７は、発生イベント情報記憶部に記憶される情報の構成例を示す図である。
【図８】図８は、配備先情報記憶部に記憶される情報の構成例を示す図である。
【図９】図９は、図８に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１０】図１０は、図７に示した発生イベント情報記憶部からのイベント発生状況の遷移を示す図である。
【図１１】図１１は、図９に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１２】図１２は、図１０に示した発生イベント情報記憶部からのイベント発生状況の遷移を示す図である。
【図１３】図１３は、追加集計配備テーブルに格納される情報の構成例を示す図である。
【図１４】図１４は、図１３に示した追加集計配備テーブルからの配備状況の遷移を示す図である。
【図１５】図１５は、図１４に示した追加集計配備テーブルからの配備状況の遷移を示す図である。
【図１６】図１６は、図１５に示した追加集計配備テーブルからの配備状況の遷移を示す図である。
【図１７】図１７は、図１６に示した追加集計配備テーブルからの配備状況の遷移を示す図である。
【図１８】図１８は、図１１に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【図１９】図１９は、実施例１に係るＧＷノードの機能的構成を示すブロック図である。
【図２０】図２０は、モジュール設定記憶部に記憶される情報の構成例を示す図である。
【図２１】図２１は、イベント一時記憶部に一時記憶される情報の構成例を示す図である。
【図２２】図２２は、イベント送信部によって記録される送信履歴の一例を示す図である。
【図２３】図２３は、実施例１に係るセンサノードの機能的構成を示すブロック図である。
【図２４】図２４は、モジュール設定記憶部に記憶される情報の構成例を示す図である。
【図２５】図２５は、実施例１に係るＧＷノードにおけるイベント受信時の処理の手順を示すフローチャートである。
【図２６】図２６は、実施例１に係るＧＷノードにおける全体処理の手順を示すフローチャートである。
【図２７】図２７は、実施例１に係るモジュール配備処理の手順を示すフローチャートである。
【図２８】図２８は、実施例１に係る追加集計配備処理の手順を示すフローチャートである。
【図２９】図２９は、実施例１に係るセンサネットワークの効果を説明するための図である。
【図３０】図３０は、実施例２に係るサーバノードの機能的構成を示すブロック図である。
【図３１】図３１は、下位送信配備テーブルに格納される情報の構成例を示す図である。
【図３２】図３２は、図３１に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【図３３】図３３は、図３２に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【図３４】図３４は、図３３に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【図３５】図３５は、図３４に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【図３６】図３６は、図３５に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【図３７】図３７は、実施例２に係るＧＷノードの機能的構成を示すブロック図である。
【図３８】図３８は、モジュール設定記憶部に記憶される情報の構成例を示す図である。
【図３９】図３９は、実施例２に係るセンサノードの機能的構成を示すブロック図である。
【図４０】図４０は、実施例２に係るＧＷノードにおけるイベント受信時の処理の手順を示すフローチャートである。
【図４１】図４１は、実施例２に係る下位送信配備処理の手順を示すフローチャートである。
【図４２】図４２は、実施例３に係るサーバノードの機能的構成を示すブロック図である。
【図４３】図４３は、追加集計可否記憶部に記憶される情報の構成例を示す図である。
【図４４】図４４は、選択配備テーブルに格納される情報の構成例を示す図である。
【図４５】図４５は、図４４に示した選択配備テーブルからの配備状況の遷移を示す図である。
【図４６】図４６は、図４５に示した選択配備テーブルからの配備状況の遷移を示す図である。
【図４７】図４７は、図４６に示した選択配備テーブルからの配備状況の遷移を示す図である。
【図４８】図４８は、図４７に示した選択配備テーブルからの配備状況の遷移を示す図である。
【図４９】図４９は、実施例３に係るＧＷノードの機能的構成を示すブロック図である。
【図５０】図５０は、実施例３に係るセンサノードの機能的構成を示すブロック図である。
【図５１】図５１は、実施例３に係るＧＷノードにおけるイベント受信時の処理の手順を示すフローチャートである。
【図５２】図５２は、実施例３に係る選択配備処理の手順を示すフローチャートである。
【図５３】図５３は、実施例３に係る選択配備処理の手順を示すフローチャートである。
【図５４】図５４は、実施例４に係るサーバノードの機能的構成を示すブロック図である。
【図５５】図５５は、頻度記憶部に記憶される情報の構成例を示す図である。
【図５６】図５６は、実施例４に係るサーバノードにおける再配備処理の手順を示すフローチャートである。
【図５７】図５７は、イベント収集プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するイベント処理方法、イベント収集方法、イベント処理プログラム、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１３】
［システム構成］
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図１は、実施例１に係るセンサネットワークシステムのシステム構成を示す図である。図１に示すセンサネットワークシステム１は、センサノード２１０によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
【００１４】
図１に示すように、センサネットワークシステム１には、サーバノード１１０と、センサノード２１０Ｘ及び２１０Ｙと、ＧＷ（gateway）ノード３１０と、機器１０Ａ，１０Ｂ，１０Ｃ及び１０Ｄとが収容される。この図１の例では、ある家に収容されたセンサノード２１０Ｘ及び２１０Ｙと、ＧＷノード３１０と、機器１０Ａ，１０Ｂ，１０Ｃ及び１０Ｄとからサーバノード１１０へイベントデータが収集される場合を想定する。なお、以下では、センサノード２１０Ｘ及び２１０Ｙを区別なく総称する場合に「センサノード２１０」と記載する場合がある。また、機器１０Ａ，１０Ｂ，１０Ｃ及び１０Ｄを区別なく総称する場合に「機器１０」と記載する場合がある。
【００１５】
サーバノード１１０とＧＷノード３１０との間は、ネットワーク５を介して通信可能に接続される。かかるネットワーク５の一例としては、有線または無線を問わず、インターネット、ＬＡＮ（Local  Area  Network）やＶＰＮ（Virtual  Private  Network）などの通信網が挙げられる。また、ＧＷノード３１０とセンサノード２１０との間、センサノード２１０Ｘと機器１０Ａ，１０Ｂとの間、センサノード２１０Ｙと機器１０Ｃ，１０Ｄとの間は、それぞれ通信可能に接続される。なお、センサネットワークシステム１に収容されるＧＷノード３１０、センサノード２１０及び機器１０の数は図示の例に限定されるものではなく、任意の数のＧＷノード３１０、センサノード２１０及び機器１０を収容する場合に適用することができる。以下では、ルートノードであるサーバノード１１０以外のセンサノード２１０やＧＷノード３１０のことを「下位ノード」と総称する場合がある。また、センサノード２１０、ＧＷノード３１０及びサーバノード１１０のことを単に「ノード」と総称する場合がある。
【００１６】
サーバノード１１０は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。例えば、サーバノード１１０は、センサノード２１０やＧＷノード３１０から受信したイベントを加工する加工処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
【００１７】
センサノード２１０は、センサ付きの通信端末である。センサノード２１０の一例としては、パーソナルコンピュータやその周辺機器、ＡＶ（Audio  Visual）機器、スマートフォンや携帯電話機、ＰＨＳ（Personal  Handyphone  System）などの携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード２１０に搭載されるセンサの一例としては、電力を計測する電力センサ、温度を計測する温度センサ、湿度を計測する湿度センサなどが挙げられる。なお、ここでは、センサノード２１０に搭載されるセンサの例として機器１０において消費された電力を計測する電力センサを例示するが、これに限定されるものではない。例えば、センサノード２１０には、ＧＰＳ（Global  Positioning  System）センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
【００１８】
例えば、センサノード２１０は、機器１０において消費された電力をイベントとして収集する。そして、収集したイベントを自装置よりも上位に位置するノードに送信する。また、例えば、センサノード２１０は、収集したイベントの加工処理を実行するモジュールが自装置に配備されている場合には、収集したイベントの加工処理を実行し、加工処理により生成されたイベントを自装置よりも上位に位置するノードに送信する。
【００１９】
ＧＷノード３１０は、サーバノード１１０とセンサノード２１０との間の通信を中継するゲートウェイである。センサノード２１０の一例としては、ある家に設置されたホームゲートウェイが挙げられる。
【００２０】
例えば、ＧＷノード３１０は、自装置よりも下位に位置する他のＧＷノード３１０又はセンサノード２１０からイベントを受信し、受信したイベントを自装置よりも上位に位置するノードに送信する。また、例えば、ＧＷノード３１０は、受信したイベントの加工処理を実行するモジュールが自装置に配備されている場合には、受信したイベントの加工処理を実行し、加工処理により生成されたイベントを自装置よりも上位に位置するノードに送信する。
【００２１】
一態様としては、センサノード２１０Ｘに、機器１０Ａの電力イベントと機器１０Ｂの電力イベントとの平均値を計算するモジュール「平均電力計算」が配備されている場合を想定する。さらに、センサノード２１０Ｙに、機器１０Ｃの電力イベントと機器１０Ｄの電力イベントとの平均値を計算するモジュール「平均電力計算」が配備される場合を想定する。さらに、ＧＷノード３１０に、モジュール「電力平均計算」によって集計された集計結果に機器１０Ａの電力イベント又は機器１０Ｂの電力イベントを追加して計算する追加集計用モジュール「電力平均追加計算」が配備されている場合を想定する。
【００２２】
この場合、例えば、機器１０Ｂの電力は、センサノード２１０Ｘによって電力イベントとして収集される。そして、機器１０Ａからの電力イベントとともにモジュール「平均電力計算」によって集計処理され、平均電力イベントとしてＧＷノード３１０へ送信され、さらにはサーバノード１１０へ収集される。つまり、機器１０Ｂにおいて発生した電力イベントの収集経路は、「センサノード２１０Ｘ→ＧＷノード３１０→サーバノード１１０」である。
【００２３】
ここで、収集経路が変更され、機器１０Ｂにおいて発生した電力イベントがセンサノード２１０Ｙによって収集された場合を想定する。この場合、機器１０Ｂの電力イベントを除いて集計された平均電力イベントをＧＷノード３１０が受信している場合に、機器１０Ｂの電力イベントが受信されると、追加集計用モジュール「電力平均追加計算」によって追加して集計処理される。なお、この追加集計用モジュールが配備されるノードは、ＧＷノード３１０に限定されるものではなく、サーバノード１１０やセンサノード２１０にも配備されうる。
【００２４】
このため、本実施例に係るノードは、イベントの収集経路に変更が生じた場合や、本来の収集経路とは異なるセンサノードでイベントが採取された場合においても、イベントを加工処理することができる。
【００２５】
［サーバノードの構成］
次に、本実施例に係るサーバノードの機能的構成について説明する。図２は、実施例１に係るサーバノードの機能的構成を示すブロック図である。なお、サーバノード１１０は、図２に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
【００２６】
図２に示すように、サーバノード１１０は、モジュール登録部１１１と、モジュール記憶部１１１Ａと、モジュール定義記憶部１１１Ｂと、トポロジ取得部１１２と、トポロジ記憶部１１２Ａとを有する。さらに、サーバノード１１０は、イベント受信部１１３と、イベント記憶部１１４と、モジュール実行部１１５と、発生イベント登録部１１６と、発生イベント情報記憶部１１６Ａとを有する。さらに、サーバノード１１０は、配備先情報記憶部１１７Ａと、配備先決定部１１７と、モジュール送信部１１８とを有する。
【００２７】
モジュール登録部１１１は、モジュールを登録する処理部である。例えば、モジュール登録部１１１は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。モジュール登録部１１１は、サーバノード１１０にアップロードされたモジュールを後述のモジュール記憶部１１１Ａに登録する。モジュール登録部１１１は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部１１１Ｂに登録する。
【００２８】
モジュール記憶部１１１Ａは、モジュールを記憶する記憶部である。例えば、モジュール記憶部１１１Ａは、モジュールがアップロードされた場合に、モジュール登録部１１１によってモジュールが登録される。また、例えば、モジュール記憶部１１１Ａは、センサノード２１０やＧＷノード３１０などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部１１８によって参照される。
【００２９】
例えば、モジュール記憶部１１１Ａは、モジュールＩＤとバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュールＩＤ」は、モジュールを識別するための識別子を指す。例えば、Ｃ言語でプログラミングされたモジュールには関数名を付与したり、Ｊａｖａ（登録商標）言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
【００３０】
図３は、モジュール記憶部に記憶される情報の構成例を示す図である。図３の例では、モジュールＩＤ「平均電力計算」及び「家庭内電力総計」とそのバイナリコードとが対応付けられた例を示している。このうち、「平均電力計算」は、所定期間の消費電力の平均を計算するモジュールのクラス名を指し、「家庭内電力総計」は、所定期間の消費電力の総和を計算するモジュールのクラス名を指す。これらモジュール「平均電力計算」及び「家庭内電力総計」が下位ノードに配備された場合には、下位ノードからサーバノード１１０に送信されるイベントが集約されることになる。
【００３１】
なお、図３の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード２１０等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
【００３２】
モジュール定義記憶部１１１Ｂは、モジュールに関する定義を記憶する記憶部である。例えば、モジュール定義記憶部１１１Ｂは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部１１１によってモジュールの定義が登録される。また、例えば、モジュール定義記憶部１１１Ｂは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００３３】
例えば、モジュール定義記憶部１１１Ｂは、モジュールＩＤ、入力イベント型、出力イベント型、集約属性名、集計種別及び追加集計用モジュールＩＤが対応付けられたデータを記憶する。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数のノードを集約する枠組みである集約属性の名称を指す。また、「集計種別」とは、モジュールによって実行される処理の種別を指す。また、「追加集計用モジュールＩＤ」とは、モジュールによって実行された処理に含まれていないセンサ情報又はイベント情報を、その処理の出力結果に追加して集計する処理を実行するモジュールの識別子を指す。
【００３４】
図４は、モジュール定義記憶部に記憶される情報の構成例を示す図である。図４に示すモジュール「平均電力計算」の例では、電力イベントが入力されて平均電力イベントが出力されることを示す。この「平均電力計算」の場合には、１度の処理で複数の電力イベントが入力され、同一のセンサノード２１０によってセンシングされた機器１０の消費電力が対象となるので、集約属性名として機器ＩＤが付与されている。この機器ＩＤは、機器を識別するための識別子を指す。また、この「平均電力計算」の場合には、集計種別が「平均値計算」であるので、追加集計用モジュール「平均電力追加計算」が実行される場合には、次の追加集計処理が実行される。つまり、「平均電力追加計算」では、平均電力計算の出力イベント型である「平均電力」の値と、集約された入力イベント型の個数とが乗算され、乗算値に未処理のイベント情報の値が加算される。そして、「平均電力追加計算」では、その加算値を、集約された入力イベント型の個数と未処理のイベント情報の個数とが加算された値で除算される。また、図４に示すモジュール「家庭内電力総計」の例では、集計種別が「総和計算」であるので、追加集計用モジュール「家庭内電力追加総計」が実行される場合には、次の追加集計処理が実行される。つまり、「家庭内電力追加総計」では、家庭内電力総計の出力イベント型である「電力総計」の値と、未処理のイベント情報の値とが加算される。なお、追加集計処理は、モジュールによって実行される加工処理の一例である。また、追加集計処理を実行するモジュールを「追加集計用モジュール」とも称する。
【００３５】
トポロジ取得部１１２は、センサネットワークの接続形態、いわゆるトポロジを取得する処理部である。例えば、トポロジ取得部１１２は、センサネットワークに収容されたセンサノード２１０やＧＷノード３１０を含む下位ノードから、当該下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を取得する。その上で、トポロジ取得部１１２は、下位ノードから取得したノード間の接続情報を後述のトポロジ記憶部１１２Ａに登録する。なお、以下では、下位ノードがＵＰｎＰ（Universal  Plug  and  Play）プロトコル等を用いて上位ノードを自動認識することによって検出した接続情報を取得する場合を想定するが、サーバノード１１０が下位ノードとの接続状況を認識することとしてもよい。
【００３６】
トポロジ記憶部１１２Ａは、センサネットワークのトポロジを記憶する記憶部である。例えば、トポロジ記憶部１１２Ａは、下位ノードからノード間の接続情報が取得された場合に、トポロジ取得部１１２によってノード間の接続情報がトポロジとして登録される。また、例えば、トポロジ記憶部１１２Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００３７】
例えば、トポロジ記憶部１１２Ａは、下位ノードＩＤ及び上位ノードＩＤが対応付けられたデータを記憶する。ここで言う「下位ノードＩＤ」は、下位ノードを識別するための識別子を指す。また、「上位ノードＩＤ」は、下位ノードに接続される上位ノードを識別するための識別子を指す。
【００３８】
図５は、トポロジ記憶部１１２Ａに記憶される情報の構成例を示す図である。図５に示す例では、図１に示したセンサノード２１０Ｘが電力センサＸであり、センサノード２１０Ｙが電力センサＹである場合を想定している。また、図５に示す例では、電力センサＸ及び電力センサＹの上位ノードがホームＧＷであるＧＷノード３１０であり、ホームＧＷの上位ノードがクラウドであるサーバノード１１０であることを示す。
【００３９】
イベント受信部１１３は、イベントを受信する処理部である。例えば、イベント受信部１１３は、センサノード２１０やＧＷノード３１０などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部１１４に格納する。このとき、イベント受信部１１３は、下位ノードから受信したイベントを後述の発生イベント登録部１１６にも出力する。なお、イベント受信部１１３では、必ずしもセンサノード２１０によってセンシングされた未加工のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって加工処理が実行されることにより、加工済みのイベントが受信される場合もある。
【００４０】
イベント記憶部１１４は、イベントを記憶する記憶部である。このイベント記憶部１１４は、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
【００４１】
例えば、イベント記憶部１１４は、下位ノードからイベントが受信された場合に、イベント受信部１１３によってイベントが登録される。また、例えば、イベント記憶部１１４は、モジュールによってイベントが処理された場合に、後述のモジュール実行部１１５によって処理実行後のイベントが登録される。
【００４２】
例えば、イベント記憶部１１４は、イベント型、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード２１０によってセンシングされた時刻を指す。また、「イベント属性」とは、イベントの性質や由来を指し、例えば、イベントとして採取されるセンシングデータ又はそれが加工処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を想定して説明を行う。
【００４３】
図６は、イベント記憶部１１４に記憶される情報の構成例を示す図である。図６に示す１番目のレコードは、２０１１年７月１３日の１２時００分００秒に電力センサＸによって機器Ａの電力値＝ｘｘが計測されたというイベントを示す。図６に示す２番目のレコードは、２０１１年７月１３日の１２時００分００秒に電力センサＸによって機器Ｂの電力値＝ｘｘが計測されたというイベントを示す。図６に示す３番目のレコードは、２０１１年７月１３日の１２時００分００秒に電力センサＹによって機器Ｃの電力値＝ｘｘが計測されたというイベントを示す。図６に示す４番目のレコードは、２０１１年７月１３日の１２時００分００秒に電力センサＹによって機器Ｄの電力値＝ｘｘが計測されたというイベントを示す。なお、機器Ａは機器１０Ａの機器ＩＤを指し、機器Ｂは機器１０Ｂの機器ＩＤを指し、機器Ｃは機器１０Ｃの機器ＩＤを指し、機器Ｄは機器１０Ｄの機器ＩＤを指すものとする。
【００４４】
このように、イベント記憶部１１４に記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図６の例では、センサノード２１０によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも格納されることになる。
【００４５】
モジュール実行部１１５は、サーバノード１１０に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部１１５は、イベント受信部１１３によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード１１０に配備されているか否かを判定する。このとき、モジュール実行部１１５は、モジュールがサーバノード１１０に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。モジュール実行部１１５は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント記憶部１１４に格納する。
【００４６】
発生イベント登録部１１６は、センサノード２１０やＧＷノード３１０などの下位ノードで発生した発生イベントを登録する処理部である。例えば、発生イベント登録部１１６は、イベント受信部１１３によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部１１６Ａに既に登録されているか否かを判定する。このとき、発生イベント登録部１１６は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部１１６Ａに登録する。
【００４７】
発生イベント情報記憶部１１６Ａは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部１１６Ａは、センサノード２１０又はＧＷノード３１０などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
【００４８】
例えば、発生イベント情報記憶部１１６Ａは、下位ノードからイベントが受信された場合に、発生イベント登録部１１６によって発生イベントが登録される。また、例えば、発生イベント情報記憶部１１６Ａは、モジュールの配備先を決定するために、後述の配備先決定部１１７によって参照される。
【００４９】
例えば、発生イベント情報記憶部１１６Ａは、発生ノードＩＤ、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードＩＤ」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生ノードのイベント属性を指す。
【００５０】
図７は、発生イベント情報記憶部１１６Ａに記憶される情報の構成例を示す図である。図７に示す１番目のレコードは、電力センサＸにより機器Ａで消費された電力が計測されるというイベントが発生していることを示す。また、図７に示す２番目のレコードは、電力センサＸにより機器Ｂで消費された電力が計測されるというイベントが発生していることを示す。また、図７に示す３番目のレコードは、電力センサＹにより機器Ｃで消費された電力が計測されるというイベントが発生していることを示す。また、図７に示す４番目のレコードは、電力センサＹにより機器Ｄで消費された電力が計測されるというイベントが発生していることを示す。なお、図７の例では、発生イベントとしてセンサノード２１０によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも発生イベントとして格納される。
【００５１】
配備先情報記憶部１１７Ａは、モジュールの配備先に関する情報を記憶する記憶部である。例えば、配備先情報記憶部１１７Ａは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部１１７によってアクセスされる。
【００５２】
例えば、配備先情報記憶部１１７Ａは、モジュールＩＤ、入力イベント型、集約属性名、発生イベント属性、発生ノードＩＤ及び配備先ノードＩＤが対応付けられたデータを記憶する。ここで言う「配備先ノードＩＤ」は、モジュールが配備されるセンサノード２１０、後述のＧＷノード３１０またはサーバノード１１０を識別するための識別子を指す。
【００５３】
図８は、配備先情報記憶部１１７Ａに記憶される情報の構成例を示す図である。この図８の例では、センサネットワークのトポロジに変化が検出されて後述の配備先決定部１１７によるモジュールの配備先の決定が開始された段階のテーブル例を図示している。すなわち、図８に示すように、全カラムのうちモジュールＩＤ、入力イベント型及び集約属性名がモジュール定義記憶部１１１Ｂから複写された段階のテーブル例が図示されている。以降の配備先ノードＩＤを始めとする残りのカラムが埋められる遷移については、図９や図１１などを用いて後述する。
【００５４】
配備先決定部１１７は、モジュールの配備先を決定する処理部である。例えば、配備先決定部１１７は、トポロジ記憶部１１２Ａが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、モジュールを配備するモジュール配備処理を実行する。また、例えば、配備先決定部１１７は、モジュール配備処理によってモジュールが配備された場合に、配備されたモジュールに対応する追加集計用モジュールを配備する追加集計配備処理を実行する。以下では、（１）モジュール配備処理、（２）モジュール配備処理の具体例、（３）追加集計配備処理及び（４）追加集計配備処理の具体例を、それぞれ説明する。
【００５５】
（１）モジュール配備処理
まず、モジュール配備処理について説明する。なお、このモジュール配備処理によって配備されるモジュールには、追加集計用モジュールが含まれないものとする。
【００５６】
配備先決定部１１７は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュールＩＤ、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに書き込む。このとき、配備先情報記憶部１１７Ａは、図８に示すように、発生イベント属性、発生ノードＩＤ及び配備先ノードＩＤのカラムがブランクの状態となる。
【００５７】
続いて、配備先決定部１１７は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、配備先決定部１１７は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。その後、配備先決定部１１７は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む。
【００５８】
このとき、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに複数登録された場合には、次のような処理を実行する。すなわち、配備先決定部１１７は、トポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又は後述のＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。そして、配備先決定部１１７は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する。
【００５９】
また、配備先決定部１１７は、発生ノードＩＤが配備先情報記憶部１１７Ａに１つ登録された場合には、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する。
【００６０】
このようにして配備先情報記憶部１１７Ａに配備先ノードＩＤが登録されると、モジュール記憶部１１１Ａに記憶されたモジュールが後述のモジュール送信部１１８によって配備先ノードＩＤに対応するノードへ送信される。
【００６１】
その後、配備先決定部１１７は、モジュールの配備によって下位ノードから新たに取得される発生イベントが発生イベント情報記憶部１１６Ａに更新されるまで待機してから、未配備のモジュールがなくなるまでモジュールの配備を繰り返し実行する。
【００６２】
なお、発生ノードＩＤが配備先情報記憶部１１７Ａに１つも登録されなかった場合には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、配備先決定部１１７は、発生イベント情報記憶部１１６Ａが更新されるまで待機してからモジュールの配備を繰り返し実行する。
【００６３】
（２）モジュール配備処理の具体例
次に、図９〜図１２を用いて、モジュール配備処理の具体例について説明する。図９は、図８に示した配備先情報記憶部１１７Ａからの配備状況の遷移を示す図である。図１０は、図７に示した発生イベント情報記憶部１１６Ａからのイベント発生状況の遷移を示す図である。図１１は、図９に示した配備先情報記憶部１１７Ａからの配備状況の遷移を示す図である。図１２は、図１０に示した発生イベント情報記憶部１１６Ａからのイベント発生状況の遷移を示す図である。
【００６４】
モジュールの配備が開始されると、図７に示した発生イベント情報記憶部１１６Ａと図８に示した配備先情報記憶部１１７Ａとの間で発生イベント型及び入力イベント型のカラムが配備先決定部１１７によって比較される。このとき、モジュール「平均電力計算」の入力イベント型と発生ノードＩＤ「電力センサＸ」及び発生ノードＩＤ「電力センサＹ」の発生イベント型が「電力」で一致する。よって、モジュール「平均電力計算」に関し、発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」が配備先決定部１１７によって発生イベント情報記憶部１１６Ａから抽出される。
【００６５】
さらに、未配備のモジュール「平均電力計算」に定義された集約属性と、発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」に対応付けられた発生イベント属性とが配備先決定部１１７によって比較される。
【００６６】
このモジュール「平均電力計算」は、イベントの集約処理を実行するモジュールである。このように、イベントが集約処理される場合には、モジュールに集約属性名は定義されるが、平均値の計算では同一の下位ノードが集約処理の対象となる結果、モジュールＩＤと発生ノードＩＤが一対一に対応することになる。このため、発生ノードＩＤ間でモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードは抽出されるが、発生ノードＩＤが複数抽出されることはない。よって、図９に示すように、イベントが発生している発生ノードである「電力センサＸ」及び「電力センサＹ」がモジュール「平均電力計算」の配備先と決定される。
【００６７】
このように、図９に示したモジュール「平均電力計算」が電力センサＸ及び電力センサＹにそれぞれ配備される。これによって、電力センサＸ及び電力センサＹによって電力イベントが加工処理された平均電力イベントが新たにサーバノード１１０へ通知される。それゆえ、図１０に示す網掛け部分のように、発生イベント登録部１１６によって発生イベント型「平均電力」の発生イベントが発生イベント情報記憶部１１６Ａへ登録される。
【００６８】
図１０に示す発生イベントが発生イベント情報記憶部１１６Ａに新たに追加されると、配備先決定部１１７によって次のような処理が実行される。すなわち、図１０に示す発生イベント情報記憶部１１６Ａのレコードのうち発生イベント型と、図９に示す配備先情報記憶部１１７Ａに記憶された配備先情報のうち未配備であるモジュールの入力イベント型とのカラムが配備先決定部１１７によって比較される。
【００６９】
このとき、モジュール「家庭内電力総計」の入力イベント型と発生ノードＩＤ「電力センサＸ」及び発生ノードＩＤ「電力センサＹ」の発生イベント型とが「平均電力」で一致する。よって、モジュール「家庭内電力総計」に関し、発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」の２つの発生ノードが配備先決定部１１７によって抽出される。すなわち、図１１に示す網掛け部分のように、モジュール「家庭内電力総計」に発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」とその発生イベント属性とが配備先情報記憶部１１７Ａの該当カラムに書き込まれる。
【００７０】
かかるモジュール「家庭内電力総計」は、発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」の２つの発生ノードが存在する。このため、図５に示したトポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」の両方の発生ノードが下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する。図５の例で言えば、発生ノードＩＤ「電力センサＸ」及び「電力センサＹ」の発生ノードは、いずれもホームＧＷであるＧＷノード３１０に接続されている。このため、図１１に示すように、モジュール「家庭内電力総計」の配備先ノードＩＤのカラムには「ホームＧＷ」が格納される。これによって、モジュール「家庭内電力総計」がＧＷノード３１０に配備されることになる。
【００７１】
このように、図１１に示したモジュール「家庭内電力総計」がホームＧＷに配備されると、ホームＧＷであるＧＷノード３１０によって平均電力イベントが加工処理される。それゆえ、図１２に示す網掛け部分のように、発生ノードＩＤが「ホームＧＷ」となった発生イベント型「電力総計」の発生イベントが発生イベント情報記憶部１１６Ａへ登録される。
【００７２】
（３）追加集計配備処理
次に、追加集計配備処理について説明する。配備先決定部１１７は、センサネットワーク内の各ノードに追加集計用モジュールを配備する。例えば、配備先決定部１１７は、追加集計配備テーブルを用いて、追加集計用モジュールを配備する。この追加集計配備テーブルは、追加集計用モジュールを配備するために、配備先決定部１１７によって保持されるテーブルである。
【００７３】
例えば、追加集計配備テーブルには、ノードＩＤ、深さ、配備モジュール及び追加集計用モジュールが対応付けられたデータが記憶される。ここで言う「ノードＩＤ」は、センサネットワークに収容されるサーバノード１１０、センサノード２１０又はＧＷノード３１０を識別するための識別子を指す。また、「深さ」は、ルートノードであるサーバノード１１０の深さを「１」とした場合に、ルートノードから各ノードまでに接続されるノード数に応じて増加する値を指す。また、「配備モジュール」は、モジュール配備処理によって配備されるモジュールに関する情報を指す。ここでは、配備モジュールには、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられている。また、「追加集計用モジュール」は、追加集計配備処理によって配備される追加集計用モジュールに関する情報を指す。ここでは、追加集計用モジュールには、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられている。
【００７４】
図１３は、追加集計配備テーブルに格納される情報の構成例を示す図である。この図１３の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図１３に示すように、全カラムのうち配備モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性が図１１の配備先情報記憶部１１７Ａから複写された段階のテーブル例が図示されている。以降の追加集計用モジュールに関するカラムが埋められる遷移については、図１４〜図１７などを用いて後述する。
【００７５】
配備先決定部１１７は、センサネットワーク内のノードをトポロジ記憶部１１２Ａから抽出し、抽出したノードＩＤを追加集計配備テーブルに書き込む。このとき、配備先決定部１１７は、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、ノードの深さを追加集計配備テーブルに書き込む。
【００７６】
続いて、配備先決定部１１７は、各ノードに配備されたモジュールのモジュールＩＤ、入力イベント型及び発生イベント属性を配備先情報記憶部１１７Ａから抽出する。そして、配備先決定部１１７は、抽出結果として得られたモジュールＩＤ、入力イベント型及び発生イベント属性を、追加集計配備テーブルのノードＩＤに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、追加集計配備テーブルは、図１３に示すように、追加集計用モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
【００７７】
配備先決定部１１７は、モジュール定義記憶部１１１Ｂを参照し、処理対象となるノードに配備された配備モジュールに対応する追加集計用モジュールを特定する。そして、配備先決定部１１７は、トポロジ記憶部１１２Ａを参照し、処理対象ノードの上位ノードを特定し、特定した上位ノードの追加集計用モジュールに、特定した追加集計用モジュールのモジュールＩＤを書き込む。このとき、処理対象ノードに対応する追加集計用モジュールのモジュールＩＤが書き込まれている場合には、配備先決定部１１７は、当該モジュールＩＤを処理対象ノードの上位ノードの追加集計用モジュールのモジュールＩＤに書き込む。なお、各ノードに同一モジュールが複数配備されることはないので、配備先決定部１１７は、特定した追加集計用モジュールのモジュールＩＤが書き込まれている場合には、モジュールＩＤを重複して書き込むことはない。
【００７８】
続いて、配備先決定部１１７は、処理対象ノードの配備モジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に書き込む。これによって、配備モジュールに対応する追加集計用モジュールが、モジュールの配備先ノードの上位ノードに配備されることとなる。このように、配備先決定部１１７は、配備モジュールに対応する追加集計用モジュールを下位ノードから上位ノードへ順に配備していくことにより、センサネットワーク内の各ノードに追加集計用モジュールを配備する。
【００７９】
（４）追加集計配備処理の具体例
次に、図１３〜図１８を用いて、追加集計配備処理の具体例について説明する。図１４は、図１３に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図１５は、図１４に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図１６は、図１５に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図１７は、図１６に示した追加集計配備テーブルからの配備状況の遷移を示す図である。図１８は、図１１に示した配備先情報記憶部からの配備状況の遷移を示す図である。
【００８０】
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部１１７によってセンサネットワーク１内のノードである電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが図５のトポロジ記憶部１１２Ａから抽出される。そして、図１３に示すように、抽出結果である電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが追加集計配備テーブルのノードＩＤに格納される。
【００８１】
さらに、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、センサネットワーク１内の各ノードの深さが追加集計配備テーブルに格納される。図１３に示した例では、センサネットワーク１内の全ノードの上位ノードである「クラウド」の深さが「１」となる。そして、「クラウド」の下位ノードである「ＧＷノード」の深さが「２」となり、「ＧＷノード」の下位ノードである「電力センサＸ」及び「電力センサＹ」の深さがそれぞれ「３」となる。
【００８２】
ここで、センサネットワーク１のうち深さが最も深いノードの１つは、深さ「３」の「電力センサＸ」である。この「電力センサＸ」に配備されたモジュール「平均電力計算」に対応する追加集計用モジュールは、モジュール定義記憶部１１１Ｂから「平均電力追加計算」と特定される。そして、「電力センサＸ」の上位ノードは、トポロジ記憶部１１２Ａに記憶された接続情報によると、「ホームＧＷ」である。それゆえ、図１４に示す網掛け部分のように、「ホームＧＷ」の追加集計用モジュールとして「平均電力追加計算」が配備先決定部１１７によって格納される。このとき、「電力センサＸ」の配備モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ」が、「ホームＧＷ」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
【００８３】
また、「電力センサＸ」と同じく深さ「３」の「電力センサＹ」についても、モジュール「平均電力計算」が配備されているので、対応する追加集計用モジュール「平均電力追加計算」と特定される。そして、この「電力センサＹ」の上位ノードは「ホームＧＷ」であるが、「ホームＧＷ」の追加集計用モジュールのモジュールＩＤは既に格納されている。このため、図１５に示す網掛け部分のように、「電力センサＹ」の配備モジュールに対応する発生イベント属性「機器ＩＤ＝機器Ｃ，機器Ｄ」が、「ホームＧＷ」の追加集計用モジュールに対応する発生イベント属性にさらに格納される。
【００８４】
このように、深さ「３」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が書き込まれると、深さ「２」のノードである「ホームＧＷ」に配備されたモジュールについて処理を行う。「ホームＧＷ」にはモジュール「家庭内電力総計」が配備されているので、対応する追加集計用モジュール「家庭内電力追加総計」と特定される。そして、「ホームＧＷ」の上位ノードは「クラウド」である。それゆえ、図１６に示す網掛け部分のように、「クラウド」の追加集計用モジュールとして「家庭内電力追加総計」が配備先決定部１１７によって格納される。このとき、「ホームＧＷ」の配備モジュールに対応する入力イベント型「平均電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」が、「クラウド」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
【００８５】
また、「ホームＧＷ」には、追加集計用モジュールとして「平均電力追加計算」が格納されている。これは、「ホームＧＷ」に追加集計用モジュール「平均電力追加計算」が配備されることを示すので、図１７に示す網掛け部分のように、この「平均電力追加計算」についても「クラウド」の追加集計用モジュールとして書き込まれる。このとき、「ホームＧＷ」の追加集計用モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」が、「クラウド」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
【００８６】
このように、深さ「２」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が格納されると、追加集計配備テーブルに格納された追加集計用モジュールのモジュールＩＤが特定される。そして、図１８に示す網掛け部分のように、特定されたモジュールＩＤが配備されたノードを配備先ノードＩＤとして、配備先決定部１１７によって配備先情報記憶部１１７Ａに登録される。
【００８７】
これによって、追加集計用モジュール「平均電力追加計算」が「ホームＧＷ」であるＧＷノード３１０及び「クラウド」であるサーバノード１１０にそれぞれ配備されることとなる。また、追加集計用モジュール「家庭内電力追加総計」が「クラウド」であるサーバノード１１０に配備されることとなる。
【００８８】
図２の説明に戻る。モジュール送信部１１８は、センサノード２１０またはＧＷノード３１０などの下位ノードにモジュールを送信する処理部である。例えば、モジュール送信部１１８は、配備先決定部１１７によって配備先ノードＩＤが配備先情報記憶部１１７Ａに登録されると、モジュール記憶部１１１Ａに記憶されたモジュールを配備先ノードＩＤに対応するノードへ送信する。また、例えば、モジュール送信部１１８は、下位ノードに配備されるモジュールの設定情報を下位ノードへ送信する。
【００８９】
なお、モジュール登録部１１１、トポロジ取得部１１２、イベント受信部１１３、モジュール実行部１１５、発生イベント登録部１１６、配備先決定部１１７及びモジュール送信部１１８には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣ（Application  Specific  Integrated  Circuit）が挙げられる。また、電子回路としては、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）などが挙げられる。
【００９０】
また、上記のモジュール記憶部１１１Ａ、モジュール定義記憶部１１１Ｂ、トポロジ記憶部１１２Ａ、イベント記憶部１１４、発生イベント情報記憶部１１６Ａ及び配備先情報記憶部１１７Ａなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ（Video  Random  Access  Memory）、ＲＡＭ（Random  Access  Memory)、ＲＯＭ（Read  Only  Memory）やフラッシュメモリ（flash  memory）などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【００９１】
［ＧＷノードの構成］
次に、本実施例に係るＧＷノードの機能的構成について説明する。図１９は、実施例１に係るＧＷノード３１０の機能的構成を示すブロック図である。図１９に示すＧＷノード３１０は、イベント受信部３１１と、モジュール受信部３１２と、モジュール設定受信部３１３と、モジュール設定記憶部３１３Ａとを有する。また、ＧＷノード３１０は、モジュール選択部３１４と、モジュール実行部３１５と、イベント一時記憶部３１５Ａと、イベント送信部３１６と、トポロジ検出部３１７と、トポロジ送信部３１８とを有する。
【００９２】
イベント受信部３１１は、イベントを受信する処理部である。例えば、イベント受信部３１１は、下位ノードであるセンサノード２１０や他のＧＷノード３１０からイベントを受信する。
【００９３】
モジュール受信部３１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部３１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部３１５に出力される。
【００９４】
モジュール設定受信部３１３は、モジュールの設定情報を受信する処理部である。例えば、モジュール設定受信部３１３は、自装置に配備されるモジュールの設定情報をサーバノード１１０から受信する。モジュール設定受信部３１３は、受信したモジュールの設定情報を後述のモジュール設定記憶部３１３Ａに登録する。
【００９５】
モジュール設定記憶部３１３Ａは、自装置に配備されるモジュールの設定情報を記憶する記憶部である。例えば、モジュール設定記憶部３１３Ａは、サーバノード１１０からモジュールの設定情報が受信された場合にモジュール設定受信部３１３によってモジュールの設定情報が登録される。また、例えば、モジュール設定記憶部３１３Ａは、受信されたイベントを加工処理するモジュールを選択するために、後述のモジュール選択部３１４によって参照される。
【００９６】
例えば、モジュール設定記憶部３１３Ａは、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられたデータを記憶する。図２０は、モジュール設定記憶部３１３Ａに記憶される情報の構成例を示す図である。図２０に示すモジュール「平均電力追加計算」の例では、機器Ａ〜機器Ｄのいずれかからの電力イベントが受信されると、そのイベントを自装置に配備された追加計算用モジュール「平均電力追加計算」に通知されることを示す。また、図２０に示すモジュール「家庭内電力総計」の例では、機器Ａ〜機器Ｄのいずれかからの平均電力イベントが受信されると、そのイベントを自装置に配備された追加計算用モジュール「家庭内電力総計」に通知されることを示す。
【００９７】
モジュール選択部３１４は、受信されたイベントの加工処理を行うモジュールを選択する処理部である。例えば、モジュール選択部３１４は、イベント受信部３１１によってイベントが受信されると、受信されたイベントを加工処理するモジュールが自装置に配備されているか否かを判定する。例えば、モジュール選択部３１４は、モジュール設定記憶部３１３Ａを参照し、受信されたイベントを入力イベントとし、発生イベント属性が一致するモジュールがあるか否かを判定する。モジュールが配備されている場合には、モジュール選択部３１４は、該当するモジュールに受信されたイベントを通知する。例えば、図２０に示す例では、機器Ａからの電力イベントが受信されると、モジュール選択部３１４は、その電力イベントを追加計算用モジュール「平均電力追加計算」に通知する。一方、モジュールが配備されていない場合には、モジュール選択部３１４は、受信されたイベントをイベント送信部３１６へ出力する。
【００９８】
イベント一時記憶部３１５Ａは、イベントを一時記憶する記憶部である。例えば、イベント一時記憶部３１５Ａは、同一の集計処理の処理対象となるイベントのうち一部のイベントが残りのイベントよりも先に受信される場合に、後に受信されるイベントを待ち合わせるために、先に受信されたイベントを一時記憶する。例えば、イベント一時記憶部３１５Ａは、後述のモジュール実行部３１５によってイベントが格納される。また、例えば、イベント一時記憶部３１５Ａは、一時記憶したイベントに対応するイベントが受信された場合に、モジュール実行部３１５によって一時記憶したイベントが取り出される。一態様としては、イベント一時記憶部３１５Ａは、先に受信されたイベントが後に受信されるイベントを待ち合わせるための待ち合わせキューとして実現される。
【００９９】
例えば、イベント一時記憶部３１５Ａは、イベント型、発生イベント属性、対象時間、待機イベント内容及び追加集計用モジュールが対応付けられたデータを一時記憶する。ここでいう「対象時間」は、一時記憶されているイベントが表している対象の時間を指し、例えば、当該イベントの発生時刻や集計時刻に対応する。また、「待機イベント内容」は、一時記憶されているイベントの属性を指す。
【０１００】
図２１は、イベント一時記憶部３１５Ａに一時記憶される情報の構成例を示す図である。図２１に示すイベント型「電力」の例では、９時１５分に機器Ａから発生した電力イベントが待機イベントとして一時記憶されていることを示す。このイベント型「電力」の例では、対象時間「９：１５」に機器ＩＤ「機器Ａ」から発生した電力イベントによって追加集計用モジュール「平均電力追加計算」が実行された場合に、モジュール実行部３１５によって取り出されることを示す。また、図２１に示すイベント型「平均電力」の例では、９時２５分〜３０分に機器Ｂから発生した電力の平均電力イベントが待機イベントとして一時記憶されていることを示す。このイベント型「平均電力」の例では、対象時間「９：２５〜９：３０」に機器ＩＤ「機器Ｂ」から発生した平均電力イベントによって追加集計用モジュール「電力総計追加計算」が実行された場合に、モジュール実行部３１５によって取り出されることを示す。
【０１０１】
モジュール実行部３１５は、ＧＷノード３１０に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部３１５は、モジュール選択部３１４によってイベントがモジュールに通知された場合には、当該モジュールを実行することによってイベントの加工処理を実行する。一態様としては、モジュール実行部３１５は、入力イベントを格納する入力キューを有しており、モジュール選択部３１４によって通知されたイベントは入力キューに格納される。そして、モジュール実行部３１５は、入力キューの先頭に格納されたイベントを取り出して、取り出したイベントの加工処理を実行する。その後、モジュール実行部３１５は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント送信部３１６へ出力する。
【０１０２】
例えば、モジュール実行部３１５は、モジュール選択部３１４によってイベントがモジュール「家庭内電力総計」に通知された場合には、「家庭内電力総計」を実行することによってイベントの集計処理を実行する。また、例えば、モジュール実行部３１５は、モジュール選択部３１４によってイベントが追加計算用モジュール「平均電力追加計算」に通知された場合には、「平均電力追加計算」を実行することによってイベントの追加集計処理を実行する。
【０１０３】
以下において、モジュール実行部３１５によってイベントの追加集計用モジュールが実行される場合について説明する。一例としては、モジュール実行部３１５は、モジュール選択部３１４によってイベントが追加集計用モジュールに通知された場合には、当該モジュールを実行することによってイベントの追加集計処理を実行する。この場合、モジュール実行部３１５は、通知されたイベントのイベント型、発生イベント属性及び対象時間に対応するイベントが、イベント一時記憶部３１５Ａに一時記憶されているか否かを判定する。一時記憶されている場合には、モジュール実行部３１５は、当該イベントをイベント一時記憶部３１５Ａから取り出す。図２１に示す例では、対象時間「９：１５」に機器ＩＤ「機器Ａ」から発生した電力イベントが通知された場合に、モジュール実行部３１５は、イベント一時記憶部３１５Ａに一時記憶された電力イベントを取り出す。
【０１０４】
モジュール実行部３１５は、通知されたイベントの対象時間を取得する。モジュール実行部３１５は、取得した対象時間を含むイベントがモジュール実行部３１５又は後述のイベント送信部３１６にあるか否かを判定する。モジュール実行部３１５又はイベント送信部３１６にイベントがある場合には、モジュール実行部３１５は、当該イベントに通知されたイベントを追加して追加集計処理を実行する。このとき、イベント一時記憶部３１５Ａから取り出されたイベントがある場合には、当該イベントも追加して追加集計処理を実行する。その後、モジュール実行部３１５は、追加集計処理が実行されたデータを新たなイベントとしてイベント送信部３１６へ出力する。
【０１０５】
一方、モジュール実行部３１５及びイベント送信部３１６にイベントがない場合には、モジュール実行部３１５は、後述の送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する。送信済みでない場合には、モジュール実行部３１５は、通知されたイベントをイベント一時記憶部３１５Ａに格納する。なお、送信済みである場合には、モジュール実行部３１５は、通知されたイベントを加工処理しないままイベント送信部３１６へ出力する。このイベントは、より上位のノードで追加集計処理を試み、最上位となるサーバノード１１０でも追加集計が間に合わなかった場合は、エラーログやサービス利用者への通知として、未集計イベントの情報の存在を記録・送信する。このとき、イベント一時記憶部３１５Ａから取り出されたイベントがある場合には、当該イベントもイベント送信部３１６へ出力する。
【０１０６】
図１９の説明に戻る。イベント送信部３１６は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部３１６は、モジュール実行部３１５によって加工処理されたイベント、あるいはモジュール選択部３１４によって出力されたイベントを上位ノードへ送信する。また、例えば、イベント送信部３１６は、上位ノードにイベントを送信した場合に、送信履歴を記録する。一態様としては、イベント送信部３１６は、送信されるイベントを格納する送信キューを有しており、モジュール選択部３１４及びモジュール実行部３１５によって出力されたイベントは送信キューに格納される。そして、イベント送信部３１６は、送信キューの先頭に格納されたイベントを取り出して、取り出したイベントを上位ノードへ送信する。
【０１０７】
図２２は、イベント送信部３１６によって記録される送信履歴の一例を示す図である。図２２に示すイベント型「平均電力」の例では、９時２５分から９時３０分までの間に機器Ａにおいて処理されたイベントの平均電力のイベントが送信されたことを示す。なお、イベント送信部３１６は、同一のイベント型及び発生イベント属性を有するイベントについては、対象時間が最新の情報のみを記録する。このため、図２２に示すイベント型「平均電力」に対応する９時２５分以前のイベントは、既に送信されているものとして判定される。
【０１０８】
トポロジ検出部３１７は、ＧＷノード３１０がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。また、トポロジ検出部３１７は、例えば、検出した上位ノードのノードＩＤをイベント送信部３１６に登録する。例えば、トポロジ検出部３１７は、ＵＰｎＰプロトコル等を用いて、ＧＷノード３１０と同一のローカルネットワーク内に存在する他のＧＷノード３１０を認識したり、サーバノード１１０から他のＧＷノード３１０の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード１１０とのネットワーク接続の確立は、サーバノード１１０のＵＲＬ等のアドレスを設定しておくことにより実現できる。
【０１０９】
トポロジ送信部３１８は、トポロジ検出部３１７によって検出されたトポロジをサーバノード１１０に送信する処理部である。例えば、トポロジ送信部３１８は、ＧＷノード３１０が接続されている上位ノードのノードＩＤをサーバノード１１０に送信する。
【０１１０】
なお、イベント受信部３１１、モジュール受信部３１２、モジュール設定受信部３１３、モジュール選択部３１４、モジュール実行部３１５、イベント送信部３１６、トポロジ検出部３１７及びトポロジ送信部３１８には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣが挙げられる。また、電子回路としては、ＣＰＵやＭＰＵなどが挙げられる。
【０１１１】
また、モジュール設定記憶部３１３Ａ及びイベント一時記憶部３１５Ａなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ、ＲＡＭ、やフラッシュメモリなどが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【０１１２】
［センサノードの構成］
次に、本実施例に係るＧＷノードの機能的構成について説明する。図２３は、実施例１に係るセンサノード２１０の機能的構成を示すブロック図である。図２３に示すセンサノード２１０は、センサ情報受信部２１１と、モジュール受信部２１２と、モジュール設定受信部２１３と、モジュール設定記憶部２１３Ａとを有する。また、センサノード２１０は、モジュール選択部２１４と、モジュール実行部２１５と、イベント一時記憶部２１５Ａと、イベント送信部２１６と、トポロジ検出部２１７と、トポロジ送信部２１８とを有する。
【０１１３】
センサ情報受信部２１１は、センサノード２１０に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。例えば、センサ情報受信部２１１は、センサノード２１０に電力センサが内蔵されている場合には、電力センサによって計測された電力を受信する。なお、センサノード２１０に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部２１１が設けられる。
【０１１４】
モジュール受信部２１２は、サーバノード１１０からモジュールを受信する処理部である。このモジュール受信部２１２によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部２１５に出力される。
【０１１５】
モジュール設定受信部２１３は、モジュールの設定情報を受信する処理部である。例えば、モジュール設定受信部２１３は、自装置に配備されるモジュールの設定情報をサーバノード１１０から受信する。モジュール設定受信部２１３は、受信したモジュールの設定情報を後述のモジュール設定記憶部２１３Ａに登録する。
【０１１６】
モジュール設定記憶部２１３Ａは、自装置に配備されるモジュールの設定情報を記憶する記憶部である。例えば、モジュール設定記憶部２１３Ａは、サーバノード１１０からモジュールの設定情報が受信された場合にモジュール設定受信部２１３によってモジュールの設定情報が登録される。また、例えば、モジュール設定記憶部２１３Ａは、受信されたイベントを加工処理するモジュール選択するために、後述のモジュール選択部２１４によって参照される。
【０１１７】
例えば、モジュール設定記憶部２１３Ａは、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられたデータを記憶する。図２４は、モジュール設定記憶部２１３Ａに記憶される情報の構成例を示す図である。図２４に示すモジュール「平均電力計算」の例では、機器Ａ又は機器Ｂからの電力イベントが受信されると、そのイベントを自装置に配備されたモジュール「平均電力計算」に通知されることを示す。
【０１１８】
モジュール選択部２１４は、受信されたイベントの加工処理を行うモジュールを選択する処理部である。例えば、モジュール選択部２１４は、センサ情報受信部２１１によってイベントが受信されると、受信されたイベントを加工処理するモジュールが自装置に配備されているか否かを判定する。例えば、モジュール選択部２１４は、モジュール設定記憶部２１３Ａを参照し、受信されたイベントを入力イベントとし、発生イベント属性が一致するモジュールがあるか否かを判定する。モジュールが配備されている場合には、モジュール選択部２１４は、該当するモジュールに受信されたイベントを通知する。一方、モジュールが配備されていない場合には、モジュール選択部２１４は、受信されたイベントをイベント送信部２１６へ出力する。
【０１１９】
イベント一時記憶部２１５Ａは、イベントを一時記憶する記憶部である。例えば、イベント一時記憶部２１５Ａは、同一の集計処理の処理対象となるイベントのうち一部のイベントが残りのイベントよりも先に受信される場合に、後に受信されるイベントを待ち合わせるために、先に受信されたイベントを一時記憶する。例えば、イベント一時記憶部２１５Ａは、後述のモジュール実行部２１５によってイベントが格納される。また、例えば、イベント一時記憶部２１５Ａは、一時記憶したイベントに対応するイベントが受信された場合に、モジュール実行部２１５によって一時記憶したイベントが取り出される。一態様としては、イベント一時記憶部２１５Ａは、先に受信されたイベントが後に受信されるイベントを待ち合わせるための待ち合わせキューとして実現される。
【０１２０】
例えば、イベント一時記憶部２１５Ａは、イベント型、発生イベント属性、対象時間、待機イベント内容及び追加集計用モジュールが対応付けられたデータを一時記憶する。なお、イベント一時記憶部３１５Ａに一時記憶される情報の構成例は、図２１に示した例と同様である。
【０１２１】
モジュール実行部２１５は、センサノード２１０に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部２１５は、モジュール選択部２１４によってイベントがモジュールに通知された場合には、当該モジュールを実行することによってイベントの加工処理を実行する。また、例えば、モジュール実行部２１５は、モジュール選択部２１４によってイベントが追加集計用モジュールに通知された場合には、当該モジュールを実行することによってイベントの追加集計処理を実行する。
【０１２２】
イベント送信部２１６は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部２１６は、モジュール実行部２１５によって加工処理されたイベント、あるいはモジュール選択部２１４によって出力されたイベントを上位ノードへ送信する。また、例えば、イベント送信部２１６は、上位ノードにイベントを送信した場合に、送信履歴を記録する。一態様としては、イベント送信部２１６は、送信されるイベントを格納する送信キューを有しており、モジュール選択部２１４及びモジュール実行部２１５によって出力されたイベントは送信キューに格納される。そして、イベント送信部２１６は、送信キューの先頭に格納されたイベントを取り出して、取り出したイベントを上位ノードへ送信する。なお、イベント送信部２１６によって記録される送信履歴は、図２２に示した例と同様である。
【０１２３】
トポロジ検出部２１７は、センサノード２１０がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。例えば、トポロジ検出部２１７は、ＵＰｎＰプロトコル等を用いて、センサノード２１０と同一のローカルネットワーク内に存在する他のＧＷノード３１０を認識したり、サーバノード１１０から他のＧＷノード３１０の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード１１０とのネットワーク接続の確立は、サーバノード１１０のＵＲＬ等のアドレスを設定しておくことにより実現できる。
【０１２４】
トポロジ送信部２１８は、トポロジ検出部２１７によって検出されたトポロジをサーバノード１１０に送信する処理部である。例えば、トポロジ送信部２１８は、センサノード２１０が接続されている上位ノードのノードＩＤをサーバノード１１０に送信する。
【０１２５】
なお、センサ情報受信部２１１、モジュール受信部２１２、モジュール設定受信部２１３、モジュール選択部２１４、モジュール実行部２１５、イベント送信部２１６、トポロジ検出部２１７及びトポロジ送信部２１８には、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ＡＳＩＣが挙げられる。また、電子回路としては、ＣＰＵやＭＰＵなどが挙げられる。
【０１２６】
また、モジュール設定記憶部２１３Ａ及びイベント一時記憶部２１５Ａなどの記憶部には、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、ＶＲＡＭ、ＲＡＭやフラッシュメモリなどが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
【０１２７】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、ＧＷノード３１０によって実行される（１）イベント受信時の処理及び（２）全体処理を説明した後に、サーバノード１１０によって実行される（３）モジュール配備処理及び（４）追加集計配備処理を説明することとする。
【０１２８】
（１）イベント受信時の処理
図２５は、実施例１に係るＧＷノード３１０におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、ＧＷノード３１０の電源がＯＮ状態である限り、繰り返し実行される。
【０１２９】
図２５に示すように、下位ノードからイベントを受信した場合には（ステップＳ１０１肯定）、ＧＷノード３１０は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する（ステップＳ１０２）。なお、イベントを受信しなかった場合には（ステップＳ１０１否定）、ＧＷノード３１０は、イベントを受信するまで待機する。
【０１３０】
モジュールが配備されている場合には（ステップＳ１０２肯定）、ＧＷノード３１０は、受信したイベントに対応するイベントが一時記憶されているか否かを判定する（ステップＳ１０３）。一例としては、ＧＷノード３１０は、受信したイベントのイベント型、発生イベント属性及び対象時間に対応するイベントが、イベント一時記憶部３１５Ａに一時記憶されているか否かを判定する。なお、モジュールが配備されていない場合には（ステップＳ１０２否定）、ＧＷノード３１０は、受信したイベントを上位ノードへ送信し（ステップＳ１１５）、ステップＳ１０１の処理に移行する。
【０１３１】
一時記憶されている場合には（ステップＳ１０３肯定）、ＧＷノード３１０は、一時記憶されたイベントをイベント一時記憶部３１５Ａから取得する（ステップＳ１０４）。そして、実行されるモジュールが追加集計用モジュールである場合には（ステップＳ１０５肯定）、ＧＷノード３１０は、受信したイベントの対象時間を取得する（ステップＳ１０６）。なお、一時記憶されていない場合には（ステップＳ１０３否定）、ＧＷノード３１０は、ステップＳ１０５の処理に移行する。
【０１３２】
続いて、ＧＷノード３１０は、取得した対象時間を含むイベントがモジュール実行部３１５又はイベント送信部３１６にあるか否かを判定する（ステップＳ１０７）。モジュール実行部３１５又はイベント送信部３１６にイベントがある場合には（ステップＳ１０７肯定）、ＧＷノード３１０は、当該イベントに受信したイベントを追加して追加集計処理を実行する（ステップＳ１０８）。このとき、ステップＳ１０４の処理において、イベント一時記憶部３１５Ａから取り出されたイベントがある場合には、ＧＷノード３１０は、当該イベントも追加して追加集計処理を実行する。
【０１３３】
続いて、ＧＷノード３１０は、イベントの処理結果を新たなイベントとして上位ノードへ送信する（ステップＳ１０９）。そして、ＧＷノード３１０は、送信履歴を記録し（ステップＳ１１０）、ステップＳ１０１の処理に移行する。
【０１３４】
一方、モジュール実行部３１５又はイベント送信部３１６にイベントがない場合には（ステップＳ１０７否定）、ＧＷノード３１０は、送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する（ステップＳ１１１）。送信済みである場合には（ステップＳ１１１肯定）、ＧＷノード３１０は、受信したイベントを加工処理しないまま上位ノードへ送信し（ステップＳ１１２）、ステップＳ１１０の処理に移行する。また、送信済みでない場合には（ステップＳ１１１否定）、ＧＷノード３１０は、受信したイベントを一時記憶し（ステップＳ１１３）、ステップＳ１０１の処理に移行する。
【０１３５】
また、実行されたモジュールが追加集計用モジュールでない場合には（ステップＳ１０５否定）、ＧＷノード３１０は、受信したイベントの加工処理を実行し（ステップＳ１１４）、ステップＳ１０９の処理に移行する。一例としては、追加集計処理以外の加工処理が実行される。
【０１３６】
このようにして、ＧＷノード３１０は、上記のステップＳ１０１〜ステップＳ１１５までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０１３７】
なお、ここでは、ＧＷノード３１０のイベント受信時の処理について説明したが、センサノード２１０によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード２１０の場合には、上記のステップＳ１０１においてセンサ情報をイベントとして受信する点が相違する点を除き、ＧＷノード３１０と同様である。
【０１３８】
（２）全体処理
続いて、本実施例に係るＧＷノード３１０における全体処理について説明する。図２６は、実施例１に係るＧＷノード３１０における全体処理の手順を示すフローチャートである。この全体処理は、ＧＷノード３１０の電源がＯＮ状態である限り、繰り返し実行される。なお、この全体処理の説明では、ＧＷノード３１０によって実行されるイベント受信時の処理以外の処理について説明するものとする。
【０１３９】
図２６に示すように、新たな上位ノードを検出した場合には（ステップＳ２０１肯定）、ＧＷノード３１０は、当該上位ノードのノードＩＤをサーバノード１１０へ送信する（ステップＳ２０２）。なお、新たな上位ノードを検出しなかった場合には（ステップＳ２０１否定）、ステップＳ２０２の処理を実行せずにステップＳ２０３の処理へ移行する。
【０１４０】
続いて、サーバノード１１０からモジュールの設定情報を受信した場合には（ステップＳ２０３肯定）、ＧＷノード３１０は、サーバノード１１０から受信したモジュールの設定情報を登録する（ステップＳ２０４）。なお、モジュールの設定情報を受信しなかった場合には（ステップＳ２０３否定）、ステップＳ２０４の処理を実行せずにステップＳ２０５の処理へ移行する。
【０１４１】
続いて、サーバノード１１０からモジュールを受信した場合には（ステップＳ２０５肯定）、ＧＷノード３１０は、サーバノード１１０から受信したモジュールを配備する（ステップＳ２０６）。なお、モジュールを受信しなかった場合には（ステップＳ２０５否定）、ステップＳ２０６の処理を実行せずにステップＳ２０１の処理へ移行する。
【０１４２】
このようにして、ＧＷノード３１０は、上記のステップＳ２０１〜ステップＳ２０６までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。なお、ここでは、ＧＷノード３１０の全体処理について説明したが、センサノード２１０によって実行される全体処理も同様である。
【０１４３】
（３）モジュール配備処理
続いて、本実施例に係るモジュール配備処理について説明する。図２７は、実施例１に係るモジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、例えば、センサネットワークのトポロジが変化した場合に処理が起動される。
【０１４４】
図２７に示すように、サーバノード１１０は、発生イベント情報記憶部１１６Ａが更新されるのを待機する（ステップＳ３０１）。そして、発生イベント情報記憶部１１６Ａが更新されると、モジュール配備処理が終了したか否かが判断されるが（ステップＳ３０２）、ここではモジュール配備処理が終了していないので（ステップＳ３０２否定）、ステップＳ３０３の処理へ移行する。
【０１４５】
続いて、サーバノード１１０は、モジュール定義記憶部１１１Ｂに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部１１７Ａの該当カラムに格納する（ステップＳ３０３）。
【０１４６】
そして、サーバノード１１０は、ステップＳ３０３の処理を実行後に、下記に説明するステップＳ３０４の処理を実行する。すなわち、サーバノード１１０は、発生イベント情報記憶部１１６Ａに記憶された発生ノードＩＤのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードＩＤを抽出する。さらに、サーバノード１１０は、前述のように抽出した発生ノードＩＤ間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
【０１４７】
その後、サーバノード１１０は、抽出結果として得られた発生ノードＩＤ及び発生ノードＩＤに対応付けられた発生イベント属性を配備先情報記憶部１１７Ａに書き込む（ステップＳ３０５）。
【０１４８】
このとき、発生ノードＩＤの数が「０」である場合（ステップＳ３０６肯定）には、下位ノードから通知される発生イベントが発生イベント情報記憶部１１６Ａに登録し切れていない可能性がある。この場合には、ステップＳ３０２の処理に移行する。
【０１４９】
ここで、発生ノードＩＤの数が複数である場合（ステップＳ３０７肯定）には、下記に説明するステップＳ３０８の処理を実行する。すなわち、サーバノード１１０は、トポロジ記憶部１１２Ａに記憶された上位ノードＩＤのうち各発生ノードＩＤに対応するセンサノード２１０又はＧＷノード３１０が下位ノードとして全て収容され、かつ最も下位ノード側であるノードＩＤを抽出する（ステップＳ３０８）。そして、サーバノード１１０は、前述のように抽出したノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ３０９）。
【０１５０】
また、発生ノードＩＤの数が１つである場合（ステップＳ３０７否定）には、サーバノード１１０は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードＩＤを配備先ノードＩＤのカラムに登録する（ステップＳ３０９）。
【０１５１】
その後、サーバノード１１０は、モジュール配備処理が終了するまで（ステップＳ３０２否定）、上記のステップＳ３０３〜ステップＳ３０９までの処理を繰り返し実行する。そして、モジュール配備処理が終了すると（ステップＳ３０２肯定）、サーバノード１１０は、ステップＳ３１０の追加集計配備処理に移行する。なお、追加集計配備処理が実行された後には、サーバノード１１０は、ステップＳ３０１の処理に移行する。
【０１５２】
（４）追加集計配備処理
続いて、本実施例に係る追加集計配備処理について説明する。図２８は、実施例１に係る追加集計配備処理の手順を示すフローチャートである。この追加集計配備処理は、例えば、上記のモジュール配備処理が完了した場合に処理が起動される。
【０１５３】
図２８に示すように、サーバノード１１０は、モジュール配備処理が完了した場合に、配備先情報記憶部１１７Ａを読み出して、読み出した配備モジュールを追加集計配備テーブルに格納する（ステップＳ４０１）。続いて、サーバノード１１０は、最も深いノードの深さを処理対象深さに設定する（ステップＳ４０２）。そして、サーバノード１１０は、処理対象深さに対応する全ノードについて追加集計配備処理が処理済みか否かが判断されるが（ステップＳ４０３）、ここでは追加集計配備処理が終了していないので（ステップＳ４０３否定）、ステップＳ４０４の処理へ移行する。
【０１５４】
サーバノード１１０は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを１つ選択する（ステップＳ４０４）。サーバノード１１０は、モジュール定義記憶部１１１Ｂを参照し、選択したノードの配備モジュールに対応する追加集計用モジュールを特定する（ステップＳ４０５）。サーバノード１１０は、トポロジ記憶部１１２Ａを参照し、選択したノードの上位ノードを特定する（ステップＳ４０６）。サーバノード１１０は、特定した上位ノードに、特定した追加集計用モジュールのモジュールＩＤが格納済みか否かを判定する（ステップＳ４０７）。
【０１５５】
格納済みではない場合には（ステップＳ４０７否定）、サーバノード１１０は、特定した追加集計用モジュールのモジュールＩＤを、上位ノードのモジュールＩＤに格納する（ステップＳ４０８）。そして、サーバノード１１０は、選択したノードの配備モジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に格納し（ステップＳ４０９）、ステップＳ４０３の処理に移行する。
【０１５６】
一方、格納済みである場合には（ステップＳ４０７肯定）、サーバノード１１０は、選択したノードの配備モジュールの発生イベント属性を、上位ノードの追加集計用モジュールの発生イベント属性に格納し（ステップＳ４１０）、ステップＳ４０３の処理に移行する。
【０１５７】
このように、サーバノード１１０は、処理対象深さに対応する全ノードについて追加集計配備処理が終了するまで（ステップＳ４０３否定）、上記のステップＳ４０３〜ステップＳ４１０までの処理を繰り返し実行する。
【０１５８】
そして、処理対象深さに対応する全ノードについて追加集計配備処理が終了すると（ステップＳ４０３肯定）、サーバノード１１０は、処理対象深さが「１」であるか否かを判定する（ステップＳ４１１）。処理対象深さが「１」でない場合には（ステップＳ４１１否定）、サーバノード１１０は、処理対象深さを１つ減らし（ステップＳ４１２）、ステップＳ４０３の処理に移行する。
【０１５９】
一方、処理対象深さが「１」である場合には（ステップＳ４１１肯定）、サーバノード１１０は、追加集計配備処理を終了し、追加集計配備処理によって配備された追加集計用モジュールを、配備先情報記憶部１１７Ａに格納する（ステップＳ４１３）。
【０１６０】
そして、サーバノード１１０は、配備先情報記憶部１１７Ａに格納したモジュールを配備先ノードＩＤに対応するノードに送信する（ステップＳ４１４）。このとき、サーバノード１１０は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
【０１６１】
［実施例１の効果］
上述してきたように、本実施例に係るＧＷノード３１０及びセンサノード２１０は、受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する。また、ＧＷノード３１０及びセンサノード２１０は、複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、下位ノードからイベントを受信した場合には、次のように処理する。つまり、ＧＷノード３１０及びセンサノード２１０は、そのイベントを集計結果に追加集計する追加集計処理を追加集計用モジュールに実行させる。このため、ＧＷノード３１０及びセンサノード２１０は、イベントを処理することができる。一例としては、ＧＷノード３１０及びセンサノード２１０は、ネットワークトラフィックを増大させることなく、イベントを処理することができる。また、他の例としては、ＧＷノード３１０及びセンサノード２１０は、集計結果に含まれなかったイベントを受信した場合に、当該イベントを集計結果に追加集計することができる。
【０１６２】
また、本実施例に係るＧＷノード３１０及びセンサノード２１０は、集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定する。集計結果が上位ノードに送信済みである場合には、ＧＷノード３１０及びセンサノード２１０は、受信したイベントを当該上位ノードに送信する。集計結果が上位ノードに送信済みでない場合には、ＧＷノード３１０及びセンサノード２１０は、受信したイベントを記憶する。そして、ＧＷノード３１０及びセンサノード２１０は、集計結果を受信した場合に、受信した当該集計結果に、記憶したイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる。このため、ＧＷノード３１０及びセンサノード２１０は、集計結果に含まれなかったイベントが集計結果より先に受信された場合にも、当該集計結果を受信するまで当該イベントを記憶するので、当該イベントを処理することができる。
【０１６３】
また、本実施例に係るサーバノード１１０は、モジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する。また、サーバノード１１０は、特定した追加集計用モジュールを、モジュールが配備されたノードの上位に位置する上位ノードに配備する。このため、サーバノード１１０は、下位ノードにイベントを処理させることができる。一例としては、サーバノード１１０は、ネットワークトラフィックを増大させることなく、下位ノードにイベントを処理させることができる。また、他の例としては、サーバノード１１０は、集計結果に含まれなかったイベントを受信した下位ノードに、当該イベントを集計結果に追加集計させることができる。
【０１６４】
図２９は、実施例１に係るセンサネットワークの効果を説明するための図である。図２９には、イベントの加工処理を実行するモジュールが下位ノードに分散配備されるセンサネットワークを例示する。図２９に示すように、ノード１ａには、追加集計用モジュール１ｂが配備されている。この追加集計用モジュール１ｂによって追加集計処理されるイベント１ｃが受信されると（ｓ１１）、待ち合わせキュー１ｄにイベント１ｃとともに処理されるイベントがあるか検索される（ｓ１２）。ここで、イベント１ｃとともに処理されるイベントがあれば、当該イベントが取得される（ｓ１３）。
【０１６５】
続いて、イベント１ｃの対象時間を含むイベントがあるか、送信キュー１ｅ及び入力キュー１ｆが検索される（ｓ１４）。送信キュー１ｅ及び入力キュー１ｆのいずれかにイベント１ｃの対象時間を含むイベントがあれば、当該イベントが取得され（ｓ１５）、イベント１ｃを追加して追加集計処理が実行される。このとき、待ち合わせキュー１ｄから取得されたイベントがあれば、イベント１ｃとともに追加集計される。なお、ｓ１５において、イベント１ｃの対象時間を含むイベントが取得されるのは、当該イベントが、イベント１ｃを除いて集計された集計結果であると考えられるからである。
【０１６６】
そして、追加集計処理の処理結果が新たなイベントとして元の送信キュー１ｅ又は入力キュー１ｆに格納される（ｓ１６）。送信キュー１ｅに格納された新規イベントは次のノード１ｇに送信され（ｓ１７）、入力キュー１ｆに格納された新規イベントは次のモジュール１ｈで処理される。なお、イベント１ｃの追加集計処理を実行する追加集計用モジュール１ｂが配備されていない場合には、受信されたイベント１ｃは未処理のまま送信キュー１ｅに格納され（ｓ１８）、次のノード１ｇに送信される。
【０１６７】
これによれば、本来の収集経路とは異なる経路でイベントが収集されても、当該イベントは上位ノードに送信される。そして、当該イベントを除いて集計された集計結果を受信しているノードが、当該イベントを受信した場合には、処理結果に当該イベントが追加されて集計結果が更新される。このため、本実施例に係る下位ノードは、ネットワークトラフィックを増大させることなくイベントを処理することができる。
【実施例２】
【０１６８】
上記の実施例では、本来の収集経路とは異なる経路で収集されたイベントを，当該イベントを除いて集計された集計結果に追加集計する場合を説明したが、必ずしもイベントを集計結果に追加集計できるとは限らない。そこで、本実施例では、本来の収集経路とは異なる経路で収集されたイベントを、当該イベントの加工処理を担当する下位ノードに送信する場合を説明する。
【０１６９】
［サーバノードの構成］
図３０は、実施例２に係るサーバノード１２０の機能的構成を示すブロック図である。図３０に示すサーバノード１２０は、図２に示したサーバノード１１０に比べて、配備先決定部１２１によって実行される処理の一部が相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
【０１７０】
配備先決定部１２１は、図２に示した配備先決定部１１７に比べて、モジュールを配備するモジュール配備処理を実行する点は共通し、下位送信用モジュールを配備する下位送信配備処理を実行する点が相違する。ここで、下位送信用モジュールは、下位ノードにイベントを送信するモジュールを指す。以下では、（１）下位送信配備処理、（２）下位送信配備処理の具体例をそれぞれ説明する。
【０１７１】
（１）下位送信配備処理
下位送信配備処理について説明する。配備先決定部１２１は、例えば、モジュール配備処理によってモジュールを配備した後に、下位送信用モジュールを配備する。一例としては、配備先決定部１２１は、下位送信配備テーブルを用いて、下位送信用モジュールを配備する。この下位送信配備テーブルは、下位送信用モジュールを配備するために、配備先決定部１２１によって保持されるテーブルである。
【０１７２】
例えば、下位送信配備テーブルには、ノードＩＤ、深さ、配備モジュール及び下位送信用モジュールが対応付けられたデータが記憶される。ここで言う「下位送信用モジュール」は、下位送信配備処理によって配備される下位送信用モジュールに関する情報を指す。ここでは、下位送信用モジュールには、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられている。
【０１７３】
図３１は、下位送信配備テーブルに格納される情報の構成例を示す図である。この図３１の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図３１に示すように、全カラムのうち配備モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性が図１１の配備先情報記憶部１１７Ａから複写された段階のテーブル例が図示されている。以降の下位送信用モジュールに関するカラムが埋められる遷移については、図３２〜図３６などを用いて後述する。
【０１７４】
配備先決定部１２１は、センサネットワーク内のノードをトポロジ記憶部１１２Ａから抽出し、抽出したノードＩＤを下位送信配備テーブルに書き込む。このとき、配備先決定部１２１は、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、ノードの深さを下位送信配備テーブルに書き込む。
【０１７５】
続いて、配備先決定部１２１は、各ノードに配備されたモジュールのモジュールＩＤ、入力イベント型及び発生イベント属性を配備先情報記憶部１１７Ａから抽出する。そして、配備先決定部１２１は、抽出結果として得られたモジュールＩＤ、入力イベント型及び発生イベント属性を、下位送信配備テーブルのノードＩＤに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、下位送信配備テーブルは、図３１に示すように、下位送信用モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
【０１７６】
配備先決定部１２１は、処理対象となるノードを選択する。配備先決定部１２１は、トポロジ記憶部１１２Ａを参照し、選択したノードの上位ノードを特定する。配備先決定部１２１は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールＩＤに格納する。なお、同一の上位ノードに同一ノードを送信先とする下位送信用モジュールが複数配備されることはないので、配備先決定部１２１は、選択したノードを送信先とする下位送信用モジュールが既に上位ノードのモジュールＩＤに書き込まれている場合には、モジュールＩＤを重複して書き込むことはない。
【０１７７】
そして、配備先決定部１２１は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納する。これによって、下位ノードに対応する下位送信用モジュールが上位ノードに配備されることとなる。このように、配備先決定部１２１は、下位ノードに対応する下位送信用モジュールを下位ノードから上位ノードへ順に配備していくことにより、センサネットワーク内の各ノードに下位送信用モジュールを配備する。
【０１７８】
（２）下位送信配備処理の具体例
次に、図３１〜図３６を用いて、下位送信配備処理の具体例について説明する。図３２は、図３１に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図３３は、図３２に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図３４は、図３３に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図３５は、図３４に示した下位送信配備テーブルからの配備状況の遷移を示す図である。図３６は、図３５に示した下位送信配備テーブルからの配備状況の遷移を示す図である。
【０１７９】
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部１２１によってセンサネットワーク１内のノードである電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが図５のトポロジ記憶部１１２Ａから抽出される。そして、図３１に示すように、抽出結果である電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが下位送信配備テーブルのノードＩＤに格納される。
【０１８０】
さらに、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、センサネットワーク１内の各ノードの深さが下位送信配備テーブルに格納される。図３１に示した例では、センサネットワーク１内の全ノードの上位ノードである「クラウド」の深さが「１」となる。そして、「クラウド」の下位ノードである「ホームＧＷ」の深さが「２」となり、「ホームＧ」の下位ノードである「電力センサＸ」及び「電力センサＹ」の深さがそれぞれ「３」となる。
【０１８１】
ここで、センサネットワーク１のうち深さが最も深いノードの１つは、深さ「３」の「電力センサＸ」である。そして、「電力センサＸ」の上位ノードは、トポロジ記憶部１１２Ａに記憶された接続情報によると、「ホームＧＷ」である。それゆえ、図３２に示す網掛け部分のように、下位ノードである「電力センサＸ」にイベントを送信する下位送信用モジュール「下位送信（電力センサＸ）」が、「ホームＧＷ」の下位送信用モジュールとして配備先決定部１２１によって格納される。このとき、図３３に示す網掛け部分のように、「電力センサＸ」の配備モジュールの入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ」が、下位送信用モジュール「下位送信（電力センサＸ）」の入力イベント型及び発生イベント属性に格納される。
【０１８２】
また、「電力センサＸ」と同じく深さ「３」の「電力センサＹ」についても、同様に下位送信用モジュールが配備される。つまり、図３４に示す網掛け部分のように、「電力センサＹ」にイベントを送信する下位送信用モジュール「下位送信（電力センサＹ）」が、上位ノードである「ホームＧＷ」の下位送信用モジュールとして配備先決定部１２１によって格納される。このとき、「電力センサＹ」の配備モジュールの入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ｃ，機器Ｄ」が、下位送信用モジュール「下位送信（電力センサＹ）」に対応する入力イベント型及び発生イベント属性として格納される。
【０１８３】
このように、深さ「３」のノードに配備されたモジュールに対応する下位送信用モジュールに関する情報が書き込まれると、次に、深さ「２」のノードである「ホームＧＷ」について処理が行われる。この「ホームＧＷ」の上位ノードは、トポロジ記憶部１１２Ａに記憶された接続情報によると、「クラウド」である。それゆえ、図３５に示す網掛け部分のように、下位ノードである「ホームＧＷ」にイベントを送信する下位送信用モジュール「下位送信（ホームＧＷ）」が、「クラウド」の下位送信用モジュールとして配備先決定部１２１によって格納される。
【０１８４】
ここで、ホームＧＷによって加工処理されるイベントとしては、図３５の例では、モジュール「家庭内電力総計」によって加工処理される機器Ａ〜Ｄのいずれかによって発生された平均電力イベントが挙げられる。それゆえ、図３６に示す網掛け部分のように、「下位送信（ホームＧＷ）」の入力イベント型及び発生イベント属性には、「家庭内電力総計」の入力イベント型「平均電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」が格納される。
【０１８５】
また、ホームＧＷによって加工処理されるイベントとしては、モジュール「下位送信（電力センサＸ）」によって送信される機器Ａ及び機器Ｂによって発生した電力イベントも挙げられる。それゆえ、図３６に示す網掛け部分のように、「下位送信（ホームＧＷ）」の入力イベント型及び発生イベント属性には、「下位送信（電力センサＸ）」の入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ」が格納される。
【０１８６】
さらに、ホームＧＷによって加工処理されるイベントとしては、モジュール「下位送信（電力センサＹ）」によって送信される機器Ｃ及び機器Ｄによって発生した電力イベントも挙げられる。それゆえ、図３６に示す網掛け部分のように、「下位送信（ホームＧＷ）」の入力イベント型及び発生イベント属性には、「下位送信（電力センサＹ）」の入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ｃ，機器Ｄ」が格納される。なお、このとき、「下位送信（ホームＧＷ）」の入力イベント型には既に「電力」が格納されているので、発生イベント属性に「機器ＩＤ＝機器Ｃ，機器Ｄ」が追記され、「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」となる。
【０１８７】
このように、深さ「２」のノードを送信先とする下位送信用モジュールに関する情報が格納されると、下位送信配備テーブルに格納された下位送信用モジュールのモジュールＩＤが特定される。そして、特定されたモジュールＩＤが配備されたノードを配備先ノードＩＤとして、配備先決定部１２１によって配備先情報記憶部１１７Ａに登録される。
【０１８８】
これによって、下位送信用モジュール「下位送信（電力センサＸ）」及び「下位送信（電力センサＹ）」が「ホームＧＷ」であるＧＷノード３１０に配備されることとなる。また、下位送信用モジュール「下位送信（ホームＧＷ）」が「クラウド」であるサーバノード１１０に配備されることとなる。
【０１８９】
［ＧＷノードの構成］
図３７は、実施例２に係るＧＷノード３２０の機能的構成を示すブロック図である。図３７に示すＧＷノード３２０は、図１９に示したＧＷノード３１０に比べて、モジュール設定記憶部３２１によって記憶される情報の一部が相違する。また、ＧＷノード３２０は、イベント一時記憶部３１５Ａを有さず、下位送信部３２２を有する点が相違する。
【０１９０】
モジュール設定記憶部３２１は、自装置に配備されるモジュールの設定情報を記憶する。図３８は、モジュール設定記憶部３２１に記憶される情報の構成例を示す図である。図３８に示すモジュール「下位送信（電力センサＸ）」の例では、機器Ａ又は機器Ｂからの電力イベントが受信されると、そのイベントが下位送信部３２２によって電力センサＸへ送信されることを示す。また、図３８に示すモジュール「下位送信（電力センサＹ）」の例では、機器Ｃ又は機器Ｄからの電力イベントが受信されると、そのイベントが下位送信部３２２によって電力センサＹへ送信されることを示す。
【０１９１】
下位送信部３２２は、イベントを下位ノードに送信する処理部である。例えば、下位送信部３２２は、モジュール選択部３１４によってイベントが下位送信用モジュールに通知された場合には、当該モジュールに指定された送信先のノードに当該イベントを送信する。
【０１９２】
［センサノードの構成］
図３９は、実施例２に係るセンサノード２２０の機能的構成を示すブロック図である。図３９に示すセンサノード２２０は、図２３に示したセンサノード２１０に比べて、イベント一時記憶部３１５Ａを有さず、下位送信部２２１を有する点が相違する。
【０１９３】
下位送信部２２１は、イベントを下位ノードに送信する処理部である。例えば、下位送信部２２１は、モジュール選択部２１４によってイベントが下位送信用モジュールに通知された場合には、当該モジュールに指定された送信先のノードに当該イベントを送信する。
【０１９４】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、ＧＷノード３２０によって実行される（１）イベント受信時の処理を説明した後に、サーバノード１２０によって実行される（２）下位送信配備処理を説明することとする。なお、ＧＷノード３２０によって実行される全体処理と、サーバノード１２０によって実行されるモジュール配備処理は、上記の実施例と同様である。
【０１９５】
（１）イベント受信時の処理
図４０は、実施例２に係るＧＷノード３２０におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、ＧＷノード３２０の電源がＯＮ状態である限り、繰り返し実行される。
【０１９６】
図４０に示すように、下位ノードからイベントを受信した場合には（ステップＳ５０１肯定）、ＧＷノード３２０は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する（ステップＳ５０２）。なお、イベントを受信しなかった場合には（ステップＳ５０１否定）、ＧＷノード３２０は、イベントを受信するまで待機する。
【０１９７】
モジュールが配備されている場合には（ステップＳ５０２肯定）、ＧＷノード３２０は、当該モジュールが下位送信用モジュールか否かを判定する（ステップＳ５０３）。下位送信用モジュールである場合には（ステップＳ５０３肯定）、ＧＷノード３２０は、受信したイベントを下位ノードへ送信し（ステップＳ５０４）、ステップＳ５０１の処理に移行する。
【０１９８】
一方、下位送信用モジュールでない場合には（ステップＳ５０３否定）、ＧＷノード３２０は、受信したイベントの加工処理を実行する（ステップＳ５０５）。そして、ＧＷノード３２０は、イベントの処理結果を上位ノードへ送信し（ステップＳ５０６）、ステップＳ５０１の処理に移行する。
【０１９９】
また、モジュールが配備されていない場合には（ステップＳ５０２否定）、ＧＷノード３２０は、受信したイベントを加工処理しないまま上位ノードへ送信し（ステップＳ５０７）、ステップＳ５０１の処理に移行する。
【０２００】
このようにして、ＧＷノード３２０は、上記のステップＳ５０１〜ステップＳ５０７までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０２０１】
なお、ここでは、ＧＷノード３２０のイベント受信時の処理について説明したが、センサノード２２０によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード２２０の場合には、上記のステップＳ５０１において、センサ情報もイベントとして受信する点が相違する。また、センサノード２２０の場合には、下位送信用モジュールが実行されない点が相違する。つまり、上記のステップＳ５０２の処理が肯定判定された場合には、センサノード２２０は、ステップＳ５０３の処理を実行せずに、ステップＳ５０５の処理に移行する。
【０２０２】
（２）下位送信配備処理
続いて、本実施例に係る下位送信配備処理について説明する。図４１は、実施例２に係る下位送信配備処理の手順を示すフローチャートである。この下位送信配備処理は、例えば、図２７に示したモジュール配備処理が完了した場合に、ステップＳ３１０の追加集計配備処理に替えて実行される。
【０２０３】
図４１に示すように、サーバノード１２０は、モジュール配備処理が完了した場合に、配備先情報記憶部１１７Ａを読み出して、読み出した配備モジュールを下位送信配備テーブルに格納する（ステップＳ６０１）。続いて、サーバノード１２０は、最も深いノードの深さを処理対象深さに設定する（ステップＳ６０２）。そして、サーバノード１２０は、処理対象深さに対応する全ノードについて下位送信配備処理が処理済みか否かが判断されるが（ステップＳ６０３）、ここでは下位送信配備処理が終了していないので（ステップＳ６０３否定）、ステップＳ６０４の処理へ移行する。
【０２０４】
サーバノード１２０は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを１つ選択する（ステップＳ６０４）。サーバノード１２０は、トポロジ記憶部１１２Ａを参照し、選択したノードの上位ノードを特定する（ステップＳ６０５）。サーバノード１２０は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールＩＤに格納する（ステップＳ６０６）。
【０２０５】
サーバノード１２０は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納し（ステップＳ６０７）、ステップＳ６０３の処理に移行する。
【０２０６】
このように、サーバノード１２０は、処理対象深さに対応する全ノードについて下位送信配備処理が終了するまで（ステップＳ６０３否定）、上記のステップＳ６０３〜ステップＳ６０７までの処理を繰り返し実行する。
【０２０７】
そして、処理対象深さに対応する全ノードについて下位送信配備処理が終了すると（ステップＳ６０３肯定）、サーバノード１２０は、処理対象深さが「１」であるか否かを判定する（ステップＳ６０８）。処理対象深さが「１」でない場合には（ステップＳ６０８否定）、サーバノード１２０は、処理対象深さを１つ減らし（ステップＳ６０９）、ステップＳ６０３の処理に移行する。
【０２０８】
一方、処理対象深さが「１」である場合には（ステップＳ６０８肯定）、サーバノード１２０は、下位送信配備処理を終了し、下位送信配備処理によって配備された下位送信用モジュールを、配備先情報記憶部１１７Ａに格納する（ステップＳ６１０）。
【０２０９】
そして、サーバノード１２０は、配備先情報記憶部１１７Ａに格納したモジュールを配備先ノードＩＤに対応するノードに送信する（ステップＳ６１１）。このとき、サーバノード１２０は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
【０２１０】
［実施例２の効果］
上述してきたように、本実施例に係るＧＷノード３２０及びセンサノード２２０は、受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する。このため、ＧＷノード３１０及びセンサノード２１０は、イベントを確実に処理することができる。一例としては、ＧＷノード３２０及びセンサノード２２０は、ネットワークトラフィックを増大させることなく、イベントを確実に処理することができる。
【０２１１】
また、本実施例に係るサーバノード１２０は、イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる。このため、サーバノード１２０は、下位ノードにイベントを確実に処理させることができる。一例としては、サーバノード１２０は、ネットワークトラフィックを増大させることなく、下位ノードにイベントを確実に処理させることができる。
【実施例３】
【０２１２】
上記の実施例では、本来の収集経路とは異なる経路で収集されたイベントを，追加集計処理によって集計結果に追加する場合と、下位送信処理によって当該イベントを下位ノードに送信して集計する場合とをそれぞれ説明した。しかしながら、これらの処理を適宜選択して実行されても良い。本実施例では、本来の収集経路とは異なる経路で収集されたイベントを受信した場合に、追加集計処理と下位送信処理とが適宜選択され、実行される場合を説明する。
【０２１３】
［サーバノードの構成］
図４２は、実施例３に係るサーバノード１３０の機能的構成を示すブロック図である。図４２に示すサーバノード１３０は、図２に示したサーバノード１１０に比べて、追加集計可否記憶部１３１を有する点と、配備先決定部１３２によって実行される処理の一部とが相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
【０２１４】
追加集計可否記憶部１３１は、集計種別ごとに、追加集計処理の可否を記憶する。
例えば、追加集計可否記憶部１３１は、モジュールに関する定義が開発者によって登録される際に、新規の集計種別のモジュールが登録されるごとに、追加集計処理の可否が登録される。
【０２１５】
例えば、追加集計可否記憶部１３１は、集計種別、追加集計可否及び追加集計必要値が対応付けられたデータを記憶する。ここで言う「追加集計可否」は、対応する集計種別によって集計処理された集計結果に対して追加集計処理が可能か否かを示す情報を指す。また、「追加集計必要値」は、追加集計処理が実行される際に必要となる値を指す。なお、「追加集計必要値」は、例えば、追加集計処理が実行される際に必要となる値が存在しない場合には、ブランクの状態となる。
【０２１６】
図４３は、追加集計可否記憶部１３１に記憶される情報の構成例を示す図である。図４３の例では、集計種別「最大値抽出」及び追加集計可否「可」が対応付けられている。このうち、「最大値抽出」は、集約されたイベントから所定の属性値が最大値をとるイベントを抽出する集計種別を指す。これは、「最大値抽出」によってイベントを集計するモジュールは、追加集計処理が可能であることを示す。
【０２１７】
配備先決定部１３２は、図２に示した配備先決定部１１７に比べて、モジュール配備処理を実行する点は共通し、選択配備処理を実行する点が相違する。ここで、選択配備処理は、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する処理を指す。以下では、（１）選択配備処理、（２）選択配備処理の具体例をそれぞれ説明する。
【０２１８】
（１）選択配備処理
選択配備処理について説明する。配備先決定部１３２は、例えば、モジュール配備処理によってモジュールを配備した後に、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する。一例としては、配備先決定部１３２は、選択配備テーブルを用いて、追加集計用モジュール及び下位送信用モジュールのいずれかを選択して配備する。この選択配備テーブルは、追加集計用モジュール及び下位送信用モジュールを配備するために、配備先決定部１３２によって保持されるテーブルである。
【０２１９】
例えば、選択配備テーブルには、ノードＩＤ、深さ、配備モジュール、追加集計用モジュール及び下位送信用モジュールが対応付けられたデータが記憶される。
【０２２０】
図４４は、選択配備テーブルに格納される情報の構成例を示す図である。この図４４の例では、モジュール配備処理によりモジュールが配備された段階のテーブル例を図示している。すなわち、図４４に示すように、全カラムのうち配備モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性が図１１の配備先情報記憶部１１７Ａから複写された段階のテーブル例が図示されている。以降の追加集計用モジュールと下位送信用モジュールとに関するカラムが埋められる遷移については、図４５〜図４８などを用いて後述する。
【０２２１】
配備先決定部１３２は、センサネットワーク内のノードをトポロジ記憶部１１２Ａから抽出し、抽出したノードＩＤを選択配備テーブルに書き込む。このとき、配備先決定部１３２は、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、ノードの深さを選択配備テーブルに書き込む。
【０２２２】
続いて、配備先決定部１３２は、各ノードに配備されたモジュールのモジュールＩＤ、入力イベント型及び発生イベント属性を配備先情報記憶部１１７Ａから抽出する。そして、配備先決定部１３２は、抽出結果として得られたモジュールＩＤ、入力イベント型及び発生イベント属性を、選択配備テーブルのノードＩＤに対応付けて、配備モジュールの該当カラムにそれぞれ書き込む。このとき、選択配備テーブルは、図４４に示すように、追加集計用モジュール及び下位送信用モジュールのモジュールＩＤ、入力イベント型及び発生イベント属性のカラムがブランクの状態となる。
【０２２３】
配備先決定部１３２は、処理対象となるノードを選択する。配備先決定部１３２は、処理対象ノードに配備された配備モジュールごとに、当該配備モジュールが追加集計可能か否かを判定する。一例としては、配備先決定部１３２は、モジュール定義記憶部１１１Ｂを参照し、配備モジュールごとに集計種別を特定する。そして、配備先決定部１３２は、追加集計可否記憶部１３１を参照し、特定した集計種別に対応付けられた追加集計可否が「可」である場合に、当該配備モジュールが追加集計可能と判定する。これに対して、配備先決定部１３２は、特定した集計種別に対応付けられた追加集計可否が「不可」である場合に、当該配備モジュールが追加集計不能と判定する。
【０２２４】
配備モジュールが追加集計不能である場合には、配備先決定部１３２は、処理対象ノードの上位ノードに、自装置を送信先とする下位送信用モジュールを配備する。
【０２２５】
一方、配備モジュールが追加集計可能である場合には、配備先決定部１３２は、配備モジュールの出力イベント型を入力イベント型とするモジュールが、処理対象ノードに配備されているか否かを判定する。配備モジュールの出力イベント型を入力イベント型とするモジュールが配備されていない場合には、配備先決定部１３２は、配備モジュールに対応する追加集計用モジュールを、処理対象ノードの上位ノードに配備する。
【０２２６】
また、配備モジュールの出力イベント型を入力イベント型とするモジュールが配備されている場合には、配備先決定部１３２は、当該配備モジュールが追加集計可能か否かを判定する。当該配備モジュールが追加集計可能である場合には、配備先決定部１３２は、配備モジュールに対応する追加集計用モジュールを、処理対象ノードの上位ノードに配備する。これに対して、当該配備モジュールが追加集計不能である場合には、配備先決定部１３２は、処理対象ノードの上位ノードに、自装置を送信先とする下位送信用モジュールを配備する。
【０２２７】
ここで、配備モジュールの出力イベント型を入力イベント型とし、かつ、追加集計不能なモジュールが処理対象ノードに配備されている場合に、当該配備モジュールに対応する追加集計用モジュールが上位ノードに配備されないのは、次の理由のためである。すなわち、当該追加集計用モジュールが配備されても、その出力イベントを入力イベントとするモジュールが実行されないからである。このため、配備モジュールの出力イベント型を入力イベント型とし、かつ、追加集計不能なモジュールが処理対象ノードに配備されている場合には、処理対象ノードを送信先とする下位送信用モジュールが配備されることとなる。
【０２２８】
このように、配備先決定部１３２は、追加集計用モジュール及び下位送信用モジュールを選択しつつ、下位ノードから上位ノードへ順に配備していく。これにより、センサネットワーク内の各ノードに追加集計用モジュール及び下位送信用モジュールが配備されることとなる。
【０２２９】
（２）選択配備処理の具体例
次に、図４４〜図４８を用いて、選択配備処理の具体例について説明する。図４５は、図４４に示した選択配備テーブルからの配備状況の遷移を示す図である。図４６は、図４５に示した選択配備テーブルからの配備状況の遷移を示す図である。図４７は、図４６に示した選択配備テーブルからの配備状況の遷移を示す図である。図４８は、図４７に示した選択配備テーブルからの配備状況の遷移を示す図である。
【０２３０】
モジュール配備処理によってノードにモジュールが配備されると、配備先決定部１３２によってセンサネットワーク１内のノードである電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが図５のトポロジ記憶部１１２Ａから抽出される。そして、図４４に示すように、抽出結果である電力センサＸ、電力センサＹ、ホームＧＷ及びクラウドが追加集計配備テーブルのノードＩＤに格納される。
【０２３１】
さらに、トポロジ記憶部１１２Ａに記憶されたノード間の接続情報に基づいて、センサネットワーク１内の各ノードの深さが追加集計配備テーブルに格納される。図４４に示した例では、センサネットワーク１内の全ノードの上位ノードである「クラウド」の深さが「１」となる。そして、「クラウド」の下位ノードである「ホームＧＷ」の深さが「２」となり、「ＧＷノード」の下位ノードである「電力センサＸ」及び「電力センサＹ」の深さがそれぞれ「３」となる。
【０２３２】
センサネットワーク１のうち深さが最も深いノードの１つは、深さ「３」の「電力センサＸ」である。この「電力センサＸ」に配備されたモジュール「平均電力計算」に対応する集計種別は、モジュール定義記憶部１１１Ｂから「平均値計算」と特定される。この「平均値計算」には、追加集計可否記憶部１３１において追加集計可否「可」が対応付けられている。よって、「電力センサＸ」に配備されたモジュール「平均電力計算」は、追加集計可能と判定される。
【０２３３】
ここで、「電力センサＸ」には、「平均電力計算」の出力イベント型「平均電力」を入力イベント型とするモジュールが配備されていない。それゆえ、図４５に示す網掛け部分のように、「電力センサＸ」の上位ノードである「ホームＧＷ」の追加計算用モジュールのモジュールＩＤに、「平均電力計算」の追加集計用モジュールである「平均電力追加計算」が格納される。このとき、「電力センサＸ」の配備モジュールに対応する入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ」が、「ホームＧＷ」の追加集計用モジュールに対応する入力イベント型及び発生イベント属性に格納される。
【０２３４】
また、「電力センサＸ」と同じく深さ「３」の「電力センサＹ」についても、モジュール「平均電力計算」が配備されているので、同様に、追加集計用モジュール「平均電力追加計算」が格納される。この「電力センサＹ」の上位ノードは「ホームＧＷ」であるが、「ホームＧＷ」の追加集計用モジュールのモジュールＩＤは既に格納されている。このため、図４６に示す網掛け部分のように、「電力センサＹ」の配備モジュールに対応する発生イベント属性「機器ＩＤ＝機器Ｃ，機器Ｄ」が、「ホームＧＷ」の追加集計用モジュールに対応する発生イベント属性にさらに格納される。
【０２３５】
このように、深さ「３」のノードに配備されたモジュールに対応する追加集計用モジュールに関する情報が書き込まれると、深さ「２」のノードである「ホームＧＷ」に配備されたモジュールについて処理を行う。図４６に示す例では、「ホームＧＷ」には、モジュール「使用電力差分検出」と、追加集計用モジュール「平均電力追加計算」とが配備されている。ここでは、この「使用電力差分検出」は、追加集計不能なモジュールの一例である。この場合、「ホームＧＷ」の上位ノードは「クラウド」である。それゆえ、図４７に示す網掛け部分のように、ホームＧＷを送信先とする下位送信用モジュール「下位送信（ホームＧＷ）」が「クラウド」の下位送信用モジュールとして配備先決定部１３２によって格納される。このとき、「ホームＧＷ」の配備モジュールの入力イベント型「平均電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」が、「クラウド」の「下位送信（ホームＧＷ）」の入力イベント型及び発生イベント属性に格納される。
【０２３６】
また、「ホームＧＷ」には、追加集計用モジュールとして「平均電力追加計算」が格納されている。この「平均電力追加計算」の集計種別は、モジュール定義記憶部１１１Ｂから「平均値計算」と特定される。この「平均値計算」には、追加集計可否記憶部１３１において追加集計可否「可」が対応付けられている。よって、追加計算用モジュール「平均電力追加計算」は、追加集計可能と判定される。
【０２３７】
ここで、「ホームＧＷ」には、「平均電力追加計算」の出力イベント型「平均電力」を入力イベント型とするモジュール「使用電力差分検出」が配備されている。また、この「使用電力差分検出」は、追加集計不能である。それゆえ、上位ノードである「クラウド」には、「平均電力追加計算」に対応する追加集計用モジュールが配備されるのではなく、下位送信用モジュールが配備されることとなる。ここで、「クラウド」には、既に「ホームＧＷ」を送信先とする下位送信用モジュールが登録されている。したがって、図４８に示す網掛け部分のように、「平均電力追加計算」の入力イベント型「電力」及び発生イベント属性「機器ＩＤ＝機器Ａ，機器Ｂ，機器Ｃ，機器Ｄ」が、「下位送信（ホームＧＷ）」の入力イベント型及び発生イベント属性に格納されることとなる。
【０２３８】
このように、深さ「２」のノードに配備されたモジュールに対応する追加集計用モジュール及び下位送信用モジュールに関する情報が格納されると、選択配備テーブルに格納された追加集計用モジュール及び下位送信用モジュールのモジュールＩＤが特定される。そして、特定されたモジュールＩＤが配備されたノードを配備先ノードＩＤとして、配備先決定部１３２によって配備先情報記憶部１１７Ａに登録される。
【０２３９】
これによって、追加集計用モジュール「平均電力追加計算」が「ホームＧＷ」であるＧＷノード３１０に配備され、下位送信用モジュール「下位送信（ホームＧＷ）」が「クラウド」であるサーバノード１１０に配備されることとなる。
【０２４０】
［ＧＷノードの構成］
図４９は、実施例３に係るＧＷノード３３０の機能的構成を示すブロック図である。図４９に示すＧＷノード３３０は、図１９に示したＧＷノード３１０に比べて、モジュール設定記憶部３３１によって記憶される情報の一部が相違する。また、ＧＷノード３３０は、図３７に示した下位送信部３２２を有する点が相違する。
【０２４１】
モジュール設定記憶部３３１は、自装置に配備されるモジュールの設定情報を記憶する。例えば、モジュール設定記憶部３３１は、図２０に示したように、追加集計用モジュール「平均電力追加計算」の設定情報を記憶する。また、例えば、図３８に示したように、下位送信用モジュール「下位送信（電力センサＸ）」の設定情報を記憶する。
【０２４２】
［センサノードの構成］
図５０は、実施例３に係るセンサノード２３０の機能的構成を示すブロック図である。図５０に示すセンサノード２３０は、図２３に示したセンサノード２１０に比べて、下位送信部２２１を有する点が相違する。なお、下位送信部２２１の説明は、図３９に示した下位送信部２２１の説明と同様である。
【０２４３】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。ここでは、まず、ＧＷノード３３０によって実行される（１）イベント受信時の処理を説明した後に、サーバノード１３０によって実行される（２）選択配備処理を説明することとする。なお、ＧＷノード３３０によって実行される全体処理と、サーバノード１３０によって実行されるモジュール配備処理は、上記の実施例１と同様である。
【０２４４】
（１）イベント受信時の処理
図５１は、実施例３に係るＧＷノード３３０におけるイベント受信時の処理の手順を示すフローチャートである。このイベント受信時の処理は、ＧＷノード３３０の電源がＯＮ状態である限り、繰り返し実行される。
【０２４５】
図５１に示すように、下位ノードからイベントを受信した場合には（ステップＳ７０１肯定）、ＧＷノード３３０は、受信したイベントを加工処理するモジュールが配備されているか否かを判定する（ステップＳ７０２）。なお、イベントを受信しなかった場合には（ステップＳ７０１否定）、ＧＷノード３３０は、イベントを受信するまで待機する。
【０２４６】
モジュールが配備されている場合には（ステップＳ７０２肯定）、ＧＷノード３３０は、当該モジュールが下位送信用モジュールか否かを判定する（ステップＳ７０３）。下位送信用モジュールでない場合には（ステップＳ７０３否定）、ＧＷノード３３０は、受信したイベントに対応するイベントが一時記憶されているか否かを判定する（ステップＳ７０４）。
【０２４７】
一時記憶されている場合には（ステップＳ７０４肯定）、ＧＷノード３３０は、一時記憶されたイベントをイベント一時記憶部３１５Ａから取得する（ステップＳ７０５）。そして、ＧＷノード３３０は、ステップＳ７０２で配備されていると判定されたモジュールが追加集計用モジュールか否かを判定する（ステップＳ７０６）。なお、一時記憶されていない場合には（ステップＳ７０４否定）、ＧＷノード３３０は、ステップＳ７０６の処理に移行する。
【０２４８】
追加集計用モジュールである場合には（ステップＳ７０６肯定）、ＧＷノード３３０は、受信したイベントの対象時間を取得する（ステップＳ７０７）。そして、ＧＷノード３３０は、取得した対象時間を含むイベントがモジュール実行部３１５又はイベント送信部３１６にあるか否かを判定する（ステップＳ７０８）。モジュール実行部３１５又はイベント送信部３１６にイベントがある場合には（ステップＳ７０８肯定）、ＧＷノード３３０は、当該イベントに受信したイベントを追加して追加集計処理を実行する（ステップＳ７０９）。このとき、ステップＳ７０５の処理において、イベント一時記憶部３１５Ａから取り出されたイベントがある場合には、ＧＷノード３３０は、当該イベントも追加して追加集計処理を実行する。
【０２４９】
続いて、ＧＷノード３３０は、イベントの処理結果を新たなイベントとして上位ノードへ送信する（ステップＳ７１０）。そして、ＧＷノード３３０は、送信履歴を記録し（ステップＳ７１１）、ステップＳ７０１の処理に移行する。
【０２５０】
一方、モジュール実行部３１５又はイベント送信部３１６にイベントがない場合には（ステップＳ７０８否定）、ＧＷノード３３０は、送信履歴を参照し、対象時間を含むイベントが送信済みか否かを判定する（ステップＳ７１２）。送信済みである場合には（ステップＳ７１２肯定）、ＧＷノード３３０は、受信したイベントを加工処理しないまま上位ノードへ送信し（ステップＳ７１３）、ステップＳ７１１の処理に移行する。また、送信済みでない場合には（ステップＳ７１２否定）、ＧＷノード３３０は、受信したイベントを一時記憶し（ステップＳ７１４）、ステップＳ７０１の処理に移行する。
【０２５１】
また、モジュールが追加集計用モジュールでない場合には（ステップＳ７０６否定）、ＧＷノード３３０は、受信したイベントの加工処理を実行し（ステップＳ７１５）、ステップＳ７１０の処理に移行する。一例としては、追加集計処理及び下位送信処理以外の加工処理が実行される。
【０２５２】
また、モジュールが下位送信用モジュールである場合には（ステップＳ７０３肯定）、ＧＷノード３３０は、受信したイベントを下位ノードへ送信し（ステップＳ７１６）、ステップＳ７０１の処理に移行する。
【０２５３】
また、モジュールが配備されていない場合には（ステップＳ７０２否定）、ＧＷノード３３０は、受信したイベントを加工処理しないまま上位ノードへ送信し（ステップＳ７１７）、ステップＳ７０１の処理に移行する。
【０２５４】
このようにして、ＧＷノード３３０は、上記のステップＳ７０１〜ステップＳ７１７までの処理を電源がＯＦＦ状態になるまで繰り返し実行する。
【０２５５】
なお、ここでは、ＧＷノード３３０のイベント受信時の処理について説明したが、センサノード２３０によって実行されるイベント受信時の処理も一部を除き同様である。すなわち、センサノード２３０の場合には、上記のステップＳ７０１において、センサ情報もイベントとして受信する点が相違する。また、センサノード２３０の場合には、下位送信用モジュールが実行されない点が相違する。つまり、上記のステップＳ７０２の処理が肯定判定された場合には、センサノード２３０は、ステップＳ７０３の処理を実行せずに、ステップＳ７０４の処理に移行する。
【０２５６】
（２）選択配備処理
続いて、本実施例に係る選択配備処理について説明する。図５２及び図５３は、実施例３に係る選択配備処理の手順を示すフローチャートである。この選択配備処理は、例えば、図２７に示したモジュール配備処理が完了した場合に、ステップＳ３１０の追加集計配備処理に替えて実行される。
【０２５７】
図５２に示すように、サーバノード１３０は、モジュール配備処理が完了した場合に、配備先情報記憶部１１７Ａを読み出して、読み出した配備モジュールを追加集計配備テーブルに格納する（ステップＳ８０１）。続いて、サーバノード１３０は、最も深いノードの深さを処理対象深さに設定する（ステップＳ８０２）。そして、サーバノード１３０は、処理対象深さに対応する全ノードについて選択配備処理が処理済みか否かが判断されるが（ステップＳ８０３）、ここでは選択配備処理が終了していないので（ステップＳ８０３否定）、ステップＳ８０４の処理へ移行する。
【０２５８】
サーバノード１３０は、処理対象深さに対応するノードのうち、未処理のノードから処理対象となるノードを１つ選択する（ステップＳ８０４）。サーバノード１３０は、モジュール定義記憶部１１１Ｂを参照し、選択したノードに配備されたモジュールを特定する（ステップＳ８０５）。そして、サーバノード１３０は、図５３のステップＳ８０６の処理に移行する。
【０２５９】
図５３に示すように、サーバノード１３０は、特定したモジュールが追加集計可能か否かを判定する（ステップＳ８０６）。特定したモジュールが追加集計可能である場合には（ステップＳ８０６肯定）、サーバノード１３０は、特定したモジュールの出力イベント型を入力イベント型とするモジュールが、選択したノードに配備されているか否かを判定する（ステップＳ８０７）。
【０２６０】
特定したモジュールの出力イベント型を入力イベント型とするモジュールが配備されている場合には（ステップＳ８０７肯定）、サーバノード１３０は、当該モジュールが追加集計可能か否かを判定する（ステップＳ８０８）。
【０２６１】
追加集計可能である場合には（ステップＳ８０８肯定）、サーバノード１３０は、モジュール定義記憶部１１１Ｂを参照し、特定したモジュールの追加集計用モジュールを特定する（ステップＳ８０９）。
【０２６２】
続いて、サーバノード１３０は、トポロジ記憶部１１２Ａを参照し、選択したノードの上位ノードを特定する（ステップＳ８１０）。そして、サーバノード１３０は、特定した上位ノードに、特定した追加集計用モジュールのモジュールＩＤが格納済みか否かを判定する（ステップＳ８１１）。
【０２６３】
格納済みではない場合には（ステップＳ８１１否定）、サーバノード１３０は、特定した追加集計用モジュールのモジュールＩＤを、上位ノードのモジュールＩＤに格納する（ステップＳ８１２）。そして、サーバノード１３０は、特定したモジュールの入力イベント型及び発生イベント属性を、上位ノードの追加集計用モジュールの入力イベント型及び発生イベント属性に格納し（ステップＳ８１３）、図５２のステップＳ８０３の処理に移行する。
【０２６４】
一方、格納済みである場合には（ステップＳ８１１肯定）、サーバノード１３０は、特定したモジュールの発生イベント属性を、上位ノードの追加集計用モジュールの発生イベント属性に格納し（ステップＳ８１４）、ステップＳ８０３の処理に移行する。
【０２６５】
また、特定したモジュールの出力イベント型を入力イベント型とするモジュールが追加集計不能である場合には（ステップＳ８０８否定）、サーバノード１３０は、トポロジ記憶部１１２Ａを参照し、選択したノードの上位ノードを特定する（ステップＳ８１５）。そして、サーバノード１３０は、選択したノードを送信先とする下位送信用モジュールを、特定した上位ノードの下位送信用モジュールのモジュールＩＤに格納する（ステップＳ８１６）。
【０２６６】
続いて、サーバノード１３０は、選択したノードに配備されたモジュールの入力イベント型及び発生イベント属性を、上位ノードの下位送信用モジュールの入力イベント型及び発生イベント属性に格納し（ステップＳ８１７）、図５２のステップＳ８０３の処理に移行する。
【０２６７】
また、特定したモジュールが追加集計不能である場合には（ステップＳ８０６否定）、サーバノード１３０は、ステップＳ８１５の処理に移行する。
【０２６８】
このように、サーバノード１３０は、処理対象深さに対応する全ノードについて追加集計配備処理が終了するまで（ステップＳ８０３否定）、上記のステップＳ８０３〜ステップＳ８１７までの処理を繰り返し実行する。
【０２６９】
そして、処理対象深さに対応する全ノードについて選択配備処理が終了すると（ステップＳ８０３肯定）、サーバノード１３０は、処理対象深さが「１」であるか否かを判定する（ステップＳ８１８）。処理対象深さが「１」でない場合には（ステップＳ８１８否定）、サーバノード１３０は、処理対象深さを１つ減らし（ステップＳ８１９）、ステップＳ８０３の処理に移行する。
【０２７０】
一方、処理対象深さが「１」である場合には（ステップＳ８１８肯定）、サーバノード１３０は、選択配備処理を終了し、選択配備処理によって配備された追加集計用モジュール及び下位送信用モジュールを、配備先情報記憶部１１７Ａに格納する（ステップＳ８２０）。
【０２７１】
そして、サーバノード１３０は、配備先情報記憶部１１７Ａに格納したモジュールを配備先ノードＩＤに対応するノードに送信する（ステップＳ８２１）。このとき、サーバノード１３０は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
【０２７２】
［実施例３の効果］
上述してきたように、本実施例に係るＧＷノード３３０及びセンサノード２３０は、受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する。また、ＧＷノード３３０及びセンサノード２３０は、複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、下位ノードからイベントを受信した場合には、次のように処理する。つまり、ＧＷノード３３０及びセンサノード２３０は、そのイベントを集計結果に追加集計する追加集計処理を追加集計用モジュールに実行させる。ＧＷノード３３０及びセンサノード２３０は、受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードより下位のノードに送信する。このため、ＧＷノード３３０及びセンサノード２３０は、ネットワークトラフィックを抑制しつつ、イベントを確実に処理することができる。
【０２７３】
また、本実施例に係るサーバノード１３０は、モジュールをノードに配備した場合に、可否記憶部を参照し、配備されたモジュールが追加集計可能であれば、次のように処理する。つまり、サーバノード１３０は、モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する。また、サーバノード１３０は、特定した追加集計用モジュールを、モジュールが配備されたノードの上位に位置する上位ノードに配備する。また、サーバノード１３０は、配備されたモジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる。このため、サーバノード１３０は、ネットワークトラフィックを抑制しつつ、下位ノードにイベントを確実に処理させることができる。
【実施例４】
【０２７４】
上記の実施例１〜３では、本来の収集経路とは異なる経路で収集されたイベントを、追加集計用モジュール又は下位送信用モジュールで処理する場合を説明した。しかしながら、これらの処理が繰り返し実行される場合には、モジュールを上位ノードへ再配備させても良い。そこで、本実施例では、追加集計用モジュール及び下位送信用モジュールの処理が繰り返し実行される頻度に応じて、モジュールを上位ノードへ再配備させる場合を説明する。
【０２７５】
本実施例では、追加集計用モジュール及び下位送信用モジュールの処理が実行される頻度に応じて再配備させる処理を、上記の実施例３に適用する場合を説明する。しかしながら、本実施例で説明する処理は、上記の実施例１及び２に対して適用可能である。なお、本実施例に係るＧＷノード及びセンサノードの構成は、実施例３と同様である。
【０２７６】
［サーバノードの構成］
図５４は、実施例４に係るサーバノード１４０の機能的構成を示すブロック図である。図５４に示すサーバノード１４０は、図２に示したサーバノード１１０に比べて、追加集計可否記憶部１３１及び頻度記憶部１４１を有する点と、配備先決定部１４２によって実行される処理の一部とが相違する。なお、以下では、上記の実施例と同様の機能を発揮する機能部については同一の符号を付し、その説明を省略することとする。
【０２７７】
頻度記憶部１４１は、配備されたモジュールが実行される頻度を記憶する記憶部である。例えば、頻度記憶部１４１は、サーバノード１４０においてモジュールが実行された頻度を、当該モジュールで処理されたイベントの属性値ごとに記憶する。また、例えば、頻度記憶部１４１は、下位ノードにおいてモジュールが実行された頻度を、当該モジュールで処理されたイベントの属性値ごとに記憶する。
【０２７８】
例えば、頻度記憶部１４１は、サーバノード１４０においてモジュールが実行された場合に、当該モジュールに関する情報が当該モジュールによって処理されたイベントの属性値ごとに登録される。また、例えば、頻度記憶部１４１は、下位ノードにおいてモジュールが実行された場合に、当該モジュールに関する情報が下位ノードから通知され、当該モジュールによって処理されたイベントの属性値ごとに登録される。
【０２７９】
例えば、頻度記憶部１４１は、ノードＩＤ、深さ、配備モジュール、追加集計用モジュール及び下位送信用モジュールが対応付けられたデータを記憶する。このうち、配備モジュール、追加集計用モジュール及び下位送信用モジュールには、モジュールＩＤ、入力イベント型及び発生イベント属性が対応付けられている。また、このうち、発生イベント属性には、属性名、属性値及び頻度が対応付けられている。ここで言う「頻度」は、単位時間においてモジュールが実行された回数が、当該モジュールによって処理されたイベントの属性値ごとにカウントされた値を指す。例えば、「頻度」は、１分あたりの実行回数によって示される。
【０２８０】
図５５は、頻度記憶部１４１に記憶される情報の構成例を示す図である。図５５の「クラウド」には、属性値「機器Ａ」を含む平均電力イベントが下位送信用モジュール「下位送信（ホームＧＷ）」によって送信された頻度が「１」である例を示す。また、図５５の「ホームＧＷ」には、属性値「機器Ｂ」を含む電力イベントが追加集計用モジュール「平均電力追加計算」によって追加集計された頻度が「２０」である例を示す。また、図５５の「電力センサＸ」には、属性値「機器Ａ」を含む電力イベントがモジュール「平均電力計算」によって集計された頻度が「１５」である例を示す。
【０２８１】
配備先決定部１４２は、モジュール配備処理及び選択配備処理を実行する点は配備先決定部１３２と共通し、再配備処理を実行する点が相違する。ここで、再配備処理は、下位ノードに配備済の配備モジュールを、当該下位ノードの上位ノードへ移動させる処理を指す。なお、ここで言う「配備モジュール」は、例えば、図５５に示した配備モジュールのモジュールＩＤを指し、追加集計用モジュール及び下位送信用モジュールのモジュールＩＤを指すものではない。
【０２８２】
配備先決定部１４２は、センサネットワーク内に収容される各ノードに配備された配備モジュールごとに、当該配備モジュールの頻度と、追加集計用モジュール又は下位送信用モジュールの頻度とを比較する。例えば、配備先決定部１４２は、当該モジュールの頻度が、追加集計用モジュール又は下位送信用モジュールの頻度に基づく閾値より小さい場合に、当該配備モジュールを再配備対象とする。配備先決定部１４２は、再配備対象の配備モジュールが現在配備されているノードから当該配備モジュールを削除するとともに、当該ノードの上位ノードへ当該配備モジュールを配備する。なお、閾値は、開示技術を利用する利用者が任意の値を設定してよい。
【０２８３】
一態様として、配備先決定部１４２は、図５５に示した「電力センサＸ」の配備モジュール「平均電力計算」について再配備処理を実行する場合を説明する。ここでは、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合に、再配備対象とするものとする。
【０２８４】
この場合、この配備モジュール「平均電力計算」に対応する追加計算用モジュールは、「ホームＧＷ」の追加計算用モジュール「平均電力追加計算」である。ここで、配備モジュール「平均電力計算」の属性値「機器Ａ」の頻度「１５」は、追加計算用モジュール「平均電力追加計算」の属性値「機器Ａ」の頻度「１０」より大きい。また、配備モジュール「平均電力計算」の属性値「機器Ｂ」の頻度「１５」は、追加計算用モジュール「平均電力追加計算」の属性値「機器Ｂ」の頻度「２０」より小さい。このように、配備モジュール「平均電力計算」については、いずれの属性値についても、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下ではないので、配備先決定部１４２は、配備モジュール「平均電力計算」を再配備対象としない。なお、いずれかの属性値について、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合には、配備先決定部１４２は、配備モジュール「平均電力計算」を再配備対象とする。
【０２８５】
また、他の態様として、配備先決定部１４２は、図５５に示した「ホームＧＷ」の配備モジュール「使用電力差分検出」について再配備処理を実行する場合を説明する。ここでは、配備モジュールの頻度が上位ノードの改装信用モジュールの頻度の２倍以下である場合に、再配備対象とするものとする。
【０２８６】
この場合、この配備モジュール「使用電力差分検出」に対応する下位送信用モジュールは、「クラウド」の下位送信用モジュール「下位送信（ホームＧＷ）」である。ここで、配備モジュール「使用電力差分検出」の属性値「機器Ａ〜Ｃ」の頻度は、下位送信用モジュール「下位送信（ホームＧＷ）」の属性値「機器Ａ〜Ｃ」の頻度の２倍より大きい。しかしながら、配備モジュール「使用電力差分検出」の属性値「機器Ｄ」の頻度「３０」は、下位送信用モジュール「下位送信（ホームＧＷ）」の属性値「機器Ｄ」の頻度「１６」の２倍以下である。この場合、配備先決定部１４２は、配備モジュール「使用電力差分検出」を再配備対象とする。なお、いずれの属性値についても、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度の２倍以下ではない場合には、配備先決定部１４２は、配備モジュール「使用電力差分検出」を再配備対象としない。
【０２８７】
このように、配備先決定部１４２は、各ノードに配備された配備モジュールについて、当該配備モジュールの属性値ごとに、配備モジュールの頻度と追加集計用モジュール又は下位送信用モジュールの頻度とを比較することで、再配備を実行する。
【０２８８】
なお、配備モジュールの再配備が実行された場合には、配備先決定部１４２は、当該配備モジュールに対応する追加集計用モジュール及び下位送信用モジュールの再配備も実行する。一例としては、配備先決定部１４２は、再配備されたモジュールを処理対象として、上述した選択配備処理を実行することで、追加集計用モジュール及び下位送信用モジュールの再配備を実行する。
【０２８９】
［処理の流れ］
次に、本実施例に係るセンサネットワークシステムの処理の流れについて説明する。図５６は、実施例４に係るサーバノード１４０における再配備処理の手順を示すフローチャートである。この再配備処理は、例えば、サーバノード１４０の電源がＯＮ状態である限り、所定タイミングで繰り返し実行される。
【０２９０】
図５６に示すように、サーバノード１４０は、最も深いノードの深さを処理対象深さに設定する（ステップＳ９０１）。そして、サーバノード１４０は、処理対象深さに対応する全ノードについて再配備処理が処理済みか否かが判断されるが（ステップＳ９０２）、ここでは再配備処理が終了していないので（ステップＳ９０２否定）、ステップＳ９０３の処理へ移行する。
【０２９１】
サーバノード１４０は、処理対象深さに対応するノードに配備された配備モジュールのうち、全ての配備モジュールについて処理済みか否かを判定する（ステップＳ９０３）。未処理の配備モジュールがある場合には（ステップＳ９０３否定）、サーバノード１４０は、配備モジュールを１つ選択する（ステップＳ９０４）。なお、ここで言う「配備モジュール」は、図５５の配備モジュールのモジュールＩＤに対応するものであり、追加集計用モジュール及び下位送信用モジュールのモジュールＩＤを含まないものとする。
【０２９２】
続いて、サーバノード１４０は、選択した配備モジュールの全ての入力イベント型の属性値について処理済みか否かを判定する（ステップＳ９０５）。未処理の属性値がある場合には（ステップＳ９０５否定）、サーバノード１４０は、未処理の属性値を１つ選択する（ステップＳ９０６）。そして、サーバノード１４０は、選択した配備モジュールに対応する追加集計用モジュールが上位ノードに配備されているか否かを判定する（ステップＳ９０７）。
【０２９３】
追加集計用モジュールが上位ノードに配備されていない場合には（ステップＳ９０７否定）、サーバノード１４０は、配備モジュールの頻度と上位ノードの下位送信用モジュールの頻度と比較する（ステップＳ９０８）。そして、配備モジュールの頻度が上位ノードの下位送信用モジュールの頻度の２倍以下である場合には（ステップＳ９０９肯定）、サーバノード１４０は、選択した配備モジュールを上位ノードへの再配備対象とする（ステップＳ９１０）。
【０２９４】
一方、配備モジュールの頻度が上位ノードの下位送信用モジュールの頻度の２倍以下でない場合には（ステップＳ９０９否定）、サーバノード１４０は、ステップＳ９０５の処理に移行する。
【０２９５】
また、追加集計用モジュールが上位ノードに配備されている場合には（ステップＳ９０７肯定）、サーバノード１４０は、配備モジュールの頻度と上位ノードの追加集計用モジュールの頻度と比較する（ステップＳ９１１）。そして、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下である場合には（ステップＳ９１２肯定）、サーバノード１４０は、ステップＳ９１０の処理に移行する。なお、配備モジュールの頻度が上位ノードの追加集計用モジュールの頻度以下でない場合には（ステップＳ９１２否定）、サーバノード１４０は、ステップＳ９０５の処理に移行する。
【０２９６】
また、選択した配備モジュールの全ての入力イベント型の属性値について処理済みである場合には（ステップＳ９０５肯定）、サーバノード１４０は、ステップＳ９０４の処理に移行する。
【０２９７】
処理対象深さに対応するノードに配備された配備モジュールのうち、全ての配備モジュールについて処理済みである場合には（ステップＳ９０３肯定）、サーバノード１４０は、ステップＳ９０２の処理に移行する。
【０２９８】
このように、サーバノード１４０は、処理対象深さに対応する全ノードについて再配備処理が終了するまで（ステップＳ９０２肯定）、上記のステップＳ９０３〜ステップＳ９１２までの処理を繰り返し実行する。
【０２９９】
そして、処理対象深さに対応する全ノードについて再配備処理が終了すると（ステップＳ９０２肯定）、サーバノード１４０は、処理対象深さが「１」であるか否かを判定する（ステップＳ９１３）。処理対象深さが「１」でない場合には（ステップＳ９１３否定）、サーバノード１４０は、処理対象深さを１つ減らし（ステップＳ９１４）、ステップＳ９０２の処理に移行する。
【０３００】
一方、処理対象深さが「１」である場合には（ステップＳ９１３肯定）、サーバノード１４０は、再配備処理を終了し、再配備対象となったモジュールを上位ノードへ再配備する（ステップＳ９１５）。
【０３０１】
そして、サーバノード１４０は、配備先情報記憶部１１７Ａに格納したモジュールを配備先ノードＩＤに対応するノードに送信する。このとき、サーバノード１４０は、配備されるモジュールの設定情報についても、対応するノードへ送信する。
【０３０２】
［実施例４の効果］
上述してきたように、本実施例に係るサーバノード１４０は、モジュールによる処理の実行頻度を示す第１の頻度と、当該第１の頻度で実行された処理により出力された集計結果にイベントを追加集計する追加集計処理の実行頻度を示す第２の頻度とを比較する。サーバノード１４０は、比較した結果が所定の条件を満たした場合に、第１の頻度で実行されたモジュールを、当該モジュールが配備されたノードの上位ノードに配備する。このため、サーバノード１４０は、追加集計用モジュールの実行頻度を減らすことができる結果、各ノードにかかる処理負荷を抑制することができる。
【０３０３】
また、本実施例に係るサーバノード１４０は、モジュールによって処理が実行された頻度を示す第１の頻度と、第１の頻度で実行された処理の対象であるイベントが下位ノードに送信された頻度を示す第３の頻度とを比較する。サーバノード１４０は、比較した結果が所定の条件を満たした場合に、第１の頻度で実行されたモジュールを、当該モジュールが配備されたノードの上位ノードに配備する。このため、サーバノード１４０は、イベントが下位ノードに送信される頻度を減らすことができる結果、各ノードにかかる処理負荷を抑制するとともに、ネットワークトラフィックを抑制することができる。
【０３０４】
ところで、本実施例では、追加集計用モジュール又は下位送信用モジュールの実行頻度に応じて再配備される処理が、実施例３に記載の構成に適用される場合を説明したが、本発明はこれに限定されるものではなく、実施例１又は２に記載の構成に適用されても良い。
【０３０５】
また、本実施例１〜３において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【０３０６】
また、図２，１９，２３，３０，３７，３９，４２，４９，５０，５４のサーバノード１１０〜１４０、ＧＷノード３１０〜３３０、センサノード２１０〜２３０の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、上記のノードの分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
【０３０７】
［プログラム］
図５７は、イベント処理プログラムを実行するコンピュータの一例を示す図である。図５７に示すように、コンピュータ４００は、各種演算処理を実行するＣＰＵ４０１と、ユーザからデータの入力を受け付ける入力装置４０２と、モニタ４０３とを有する。また、コンピュータ４００は、記憶媒体からプログラム等を読み取る媒体読み取り装置４０４と、他の装置と接続するためのインターフェース装置４０５と、他の装置と無線により接続するための無線通信装置４０６とを有する。また、コンピュータ４００は、各種情報を一時記憶するＲＡＭ（Random  Access  Memory）４０７と、ハードディスク装置４０８とを有する。また、各装置４０１〜４０８は、バス４０９に接続される。なお、イベント収集プログラムを実行するコンピュータについても、コンピュータ４００と同様の構成を有する。
【０３０８】
ハードディスク装置４０８には、上記の各図に示した各処理部と同様の機能を有するイベント処理プログラム又はイベント収集プログラムが記憶される。イベント処理プログラムの一例としては、図１９に示したモジュール選択部３１４、モジュール実行部３１５及びイベント送信部３１６の各処理部と同様の機能を有するプログラムが記憶される。また、イベント処理プログラムの他の例としては、図３７に示したモジュール選択部３１４及び下位送信部３２２の各処理部と同様の機能を有するプログラムが記憶される。イベント収集プログラムの一例としては、図２又は図３０に示した配備先決定部１１７と同様の機能を有するプログラムが記憶される。また、ハードディスク装置４０８には、イベント処理プログラム又はイベント収集プログラムを実現するための各種データが記憶される。
【０３０９】
ＣＰＵ４０１は、ハードディスク装置４０８に記憶された各プログラムを読み出して、ＲＡＭ４０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータを上記した各処理部として機能させることができる。
【０３１０】
なお、上記のイベント処理プログラム又はイベント収集プログラムは、必ずしもハードディスク装置４０８に記憶されている必要はない。例えば、コンピュータが読み取り可能な記録媒体に記憶されたプログラムを、コンピュータ４００が読み出して実行するようにしても良い。コンピュータが読み取り可能な記録媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等に接続された装置にこのプログラムを記憶させておき、コンピュータ４００がこれらからプログラムを読み出して実行するようにしても良い。
【０３１１】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０３１２】
（付記１）複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる
ことを特徴とするイベント処理方法。
【０３１３】
（付記２）受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信することを特徴とする付記１に記載のイベント処理方法。
【０３１４】
（付記３）前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定し、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信し、
前記集計結果が上位ノードに送信済みでない場合に、受信したイベントを記憶するイベント記憶部に格納し、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させることを特徴とする付記１または２に記載のイベント処理方法。
【０３１５】
（付記４）複数のノードによって実行されるイベント処理方法であって、
前記ノードが、
イベントを受信し、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
ことを特徴とするイベント処理方法。
【０３１６】
（付記５）コンピュータによって実行されるイベント収集方法であって、
前記コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
ことを特徴とするイベント収集方法。
【０３１７】
（付記６）前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させることを特徴とする付記５に記載のイベント収集方法。
【０３１８】
（付記７）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第２の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする付記５または６に記載のイベント収集方法。
【０３１９】
（付記８）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第３の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備することを特徴とする付記７に記載のイベント収集方法。
【０３２０】
（付記９）コンピュータによって実行されるイベント収集方法であって、
コンピュータが、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備し、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる
ことを特徴とするイベント収集方法。
【０３２１】
（付記１０）コンピュータに、
受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信し、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる
各処理を実行させることを特徴とするイベント処理プログラム。
【０３２２】
（付記１１）受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する処理をさらに実行させることを特徴とする付記１０に記載のイベント処理プログラム。
【０３２３】
（付記１２）前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定し、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信し、
前記集計結果が上位ノードに送信済みでない場合に、受信したイベントを記憶するイベント記憶部に格納し、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる各処理をさらに実行させることを特徴とする付記１０または１１に記載のイベント処理プログラム。
【０３２４】
（付記１３）コンピュータに、
イベントを受信し、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する
各処理を実行させることを特徴とするイベント処理プログラム。
【０３２５】
（付記１４）コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する
各処理を実行させることを特徴とするイベント収集プログラム。
【０３２６】
（付記１５）前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定し、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる各処理をさらに実行させることを特徴とする付記１４に記載のイベント収集プログラム。
【０３２７】
（付記１６）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第２の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備する各処理をさらに実行させることを特徴とする付記１４または１５に記載のイベント収集プログラム。
【０３２８】
（付記１７）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第３の頻度とを比較し、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備する各処理をさらに実行させることを特徴とする付記１６に記載のイベント収集プログラム。
【０３２９】
（付記１８）コンピュータに、
イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる
各処理を実行させることを特徴とするイベント収集プログラム。
【０３３０】
（付記１９）受信したイベントが、自ノードに配備されているモジュールの処理対象でない場合には、受信したイベントを自ノードよりも上位に位置する上位ノードに送信する処理と、
複数のイベントの集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールが自ノードに配備されており、自ノードよりも下位に位置する下位ノードからイベントを受信した場合には、当該イベントを集計結果に追加集計する追加集計処理を前記追加集計用モジュールに実行させる処理と
を実行する処理部を有することを特徴とする情報処理装置。
【０３３１】
（付記２０）受信したイベントを、当該イベントを集計するモジュールが配備された下位ノードに送信する処理を実行する処理部を有することを特徴とする付記１９に記載の情報処理装置。
【０３３２】
（付記２１）受信したイベントを記憶するイベント記憶部と、
前記集計結果を上位ノードに送信済みか否かを示す送信履歴を参照し、前記下位ノードから受信したイベントを除いて集計された集計結果が送信済みであるか否かを判定する処理と、
前記集計結果が上位ノードに送信済みである場合に、受信したイベントを当該上位ノードに送信する処理と、
前記集計結果が上位ノードに送信済みでない場合に、前記イベント記憶部に格納する処理と、
前記集計結果を受信した場合に、受信した当該集計結果に、前記イベント記憶部に記憶されたイベントを追加集計する追加集計処理を追加集計用モジュールに実行させる処理とをさらに実行する処理部を有することを特徴とする付記１９または２０に記載の情報処理装置。
【０３３３】
（付記２２）イベントを受信する処理と、
受信したイベントを、当該イベントを集計するモジュールが配備された、自ノードよりも下位に位置する下位ノードに送信する処理と
を実行する処理部を有することを特徴とする情報処理装置。
【０３３４】
（付記２３）イベントを処理するモジュールを、ネットワークに接続されたノードに配備した場合に、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する処理と、
特定した前記追加集計用モジュールを、前記モジュールが配備されたノードの上位に位置する上位ノードに配備する処理と
を実行する処理部を有することを特徴とする情報処理装置。
【０３３５】
（付記２４）前記モジュールを前記ノードに配備した場合に、前記モジュールごとに追加集計可能か否かを示す情報を記憶する可否記憶部を参照し、配備された前記モジュールが追加集計可能であれば、当該モジュールによって集計された集計結果にイベントを追加集計する追加集計処理を実行する追加集計用モジュールを特定する処理と、
配備された前記モジュールが追加集計可能でなければ、当該モジュールによって処理されるイベントを、当該モジュールが配備されたノードへ送信させる処理とを実行する処理部を有することを特徴とする付記２３に記載の情報処理装置。
【０３３６】
（付記２５）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理によって出力された集計結果に所定のイベントを追加集計する追加集計処理が実行された頻度を示す第２の頻度とを比較する処理と、
比較した結果が所定の条件を満たした場合に、前記モジュールを、当該モジュールが配備されたノードの上位ノードに配備する処理とを実行する処理部を有することを特徴とする付記２３または２４に記載の情報処理装置。
【０３３７】
（付記２６）前記モジュールによって処理が実行された頻度を示す第１の頻度と、当該第１の頻度で実行された処理の対象であるイベントが下位側のノードに送信された頻度を示す第３の頻度とを比較する処理と、
比較した結果が所定の条件を満たした場合に、前記処理を実行するモジュールを、当該モジュールが配備されたノードの上位ノードに配備する処理とを実行する処理部を有することを特徴とする付記２５に記載の情報処理装置。
【０３３８】
（付記２７）イベントを処理するモジュールを、ネットワークに接続されたノードに配備する処理と、
前記モジュールを前記ノードに配備した場合に、当該ノードの上位に位置する上位ノードに、当該モジュールによって処理されるイベントを当該ノードへ送信させる処理と
を実行する処理部を有することを特徴とする情報処理装置。
【符号の説明】
【０３３９】
１１０，１２０，１３０，１４０      サーバノード
１１１Ａ      モジュール記憶部
１１１Ｂ      モジュール定義記憶部
１１１      モジュール登録部
１１２Ａ      トポロジ記憶部
１１２      トポロジ取得部
１１３      イベント受信部
１１４      イベント記憶部
１１５      モジュール実行部
１１６Ａ      発生イベント情報記憶部
１１６      発生イベント登録部
１１７      配備先決定部
１１７Ａ      配備先情報記憶部
１１８      モジュール送信部
１２１      配備先決定部
１３１      追加集計可否記憶部
１３２      配備先決定部
１４１      頻度記憶部
１４２      配備先決定部
２１０，２２０，２３０      センサノード
２１１      センサ情報受信部
２１２      モジュール受信部
２１３Ａ      モジュール設定記憶部
２１３      モジュール設定受信部
２１４      モジュール選択部
２１５Ａ      イベント一時記憶部
２１５      モジュール実行部
２１６      イベント送信部
２１７      トポロジ検出部
２１８      トポロジ送信部
２２１      下位送信部
３１０，３２０，３３０      ＧＷノード
３１１      イベント受信部
３１２      モジュール受信部
３１３Ａ      モジュール設定記憶部
３１３      モジュール設定受信部
３１４      モジュール選択部
３１５Ａ      イベント一時記憶部
３１５      モジュール実行部
３１６      イベント送信部
３１７      トポロジ検出部
３１８      トポロジ送信部
３２１      モジュール設定記憶部
３２２      下位送信部
３３１      モジュール設定記憶部
４００      コンピュータ
４０１      ＣＰＵ
４０２      入力装置
４０３      モニタ
４０４      媒体読み取り装置
４０５      インターフェース装置
４０６      無線通信装置
４０７      ＲＡＭ
４０８      ハードディスク装置
４０９      バス
【図１】
0005834998.tif 000002
【図２】
0005834998.tif 000003
【図３】
0005834998.tif 000004
【図４】
0005834998.tif 000005
【図５】
0005834998.tif 000006
【図６】
0005834998.tif 000007
【図７】
0005834998.tif 000008
【図８】
0005834998.tif 000009
【図９】
0005834998.tif 000010
【図１０】
0005834998.tif 000011
【図１１】
0005834998.tif 000012
【図１２】
0005834998.tif 000013
【図１３】
0005834998.tif 000014
【図１４】
0005834998.tif 000015
【図１５】
0005834998.tif 000016
【図１６】
0005834998.tif 000017
【図１７】
0005834998.tif 000018
【図１８】
0005834998.tif 000019
【図１９】
0005834998.tif 000020
【図２０】
0005834998.tif 000021
【図２１】
0005834998.tif 000022
【図２２】
0005834998.tif 000023
【図２３】
0005834998.tif 000024
【図２４】
0005834998.tif 000025
【図２５】
0005834998.tif 000026
【図２６】
0005834998.tif 000027
【図２７】
0005834998.tif 000028
【図２８】
0005834998.tif 000029
【図２９】
0005834998.tif 000030
【図３０】
0005834998.tif 000031
【図３１】
0005834998.tif 000032
【図３２】
0005834998.tif 000033
【図３３】
0005834998.tif 000034
【図３４】
0005834998.tif 000035
【図３５】
0005834998.tif 000036
【図３６】
0005834998.tif 000037
【図３７】
0005834998.tif 000038
【図３８】
0005834998.tif 000039
【図３９】
0005834998.tif 000040
【図４０】
0005834998.tif 000041
【図４１】
0005834998.tif 000042
【図４２】
0005834998.tif 000043
【図４３】
0005834998.tif 000044
【図４４】
0005834998.tif 000045
【図４５】
0005834998.tif 000046
【図４６】
0005834998.tif 000047
【図４７】
0005834998.tif 000048
【図４８】
0005834998.tif 000049
【図４９】
0005834998.tif 000050
【図５０】
0005834998.tif 000051
【図５１】
0005834998.tif 000052
【図５２】
0005834998.tif 000053
【図５３】
0005834998.tif 000054
【図５４】
0005834998.tif 000055
【図５５】
0005834998.tif 000056
【図５６】
0005834998.tif 000057
【図５７】
0005834998.tif 000058