以下に、本願の開示するイベント収集方法、イベント収集プログラム及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係るセンサネットワークシステムのシステム構成について説明する。図1は、実施例1に係るセンサネットワークシステムのシステム構成を示す図である。図1に示すセンサネットワークシステム1は、センサノード210によってセンシングされたセンシングデータをイベントとして収集し、収集したイベントに応じて各種のサービスを提供するものである。
図1に示すように、センサネットワークシステム1には、サーバノード110と、センサノード210とが収容される。これらセンサノード210とサーバノード110との間は、ネットワーク5を介して通信可能に接続される。かかるネットワーク5の一例としては、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの通信網が挙げられる。なお、図1の例では、センサノード210を1つ収容する場合を例示したが、複数のセンサノードが収容されていてもよく、任意の数のセンサノードを収容する場合に適用することができる。
センサノード210は、センサ付きの通信端末である。センサノード210の一例としては、パーソナルコンピュータやその周辺機器、AV(Audio Visual)機器、スマートフォンや携帯電話機、PHS(Personal Handyphone System)などの携帯端末、家電製品などの各種の機器が挙げられる。また、センサノード210に搭載されるセンサの一例としては、電力量を計測する電力センサ、温度を計測する温度センサ、湿度を計測する湿度センサなどが挙げられる。なお、ここでは、センサノード210に搭載されるセンサの例として電力センサや温度センサを例示するが、センサノード210にはGPS(Global Positioning System)センサ、加速度センサやジャイロセンサなどの任意のセンサを搭載できる。
サーバノード110は、センサネットワークのルートノードとして機能し、イベントに応じて各種のサービスを提供するサーバ装置である。例えば、サーバノード110は、センサノード210から受信したイベントを加工する加工処理を実行するモジュールを自装置よりも下位に位置するノードに配備することによってイベントを分散処理させる。かかるモジュールには、サービス提供用のアプリケーションによって実行されるサービス提供処理のトリガーとなるイベントのフィルタリング処理や集約処理が組み込まれる。
なお、図1の例では、サーバノード110の下位ノードとしてセンサノード210を図示しているが、センサノード210及びサーバノード110間の通信を中継するGW(gateway)ノード310がサーバノード110の下位ノードとして含まれる場合もある。以下では、ルートノードであるサーバノード110以外のセンサノード210やGWノード310のことを「下位ノード」と総称する場合がある。また、センサノード210、GWノード310及びサーバノード110のことを単に「ノード」と総称する場合がある。
[サーバノードの構成]
次に、本実施例に係るサーバノードの機能的構成について説明する。図2は、実施例1に係るサーバノードの機能的構成を示すブロック図である。なお、サーバノード110は、図2に示す機能部以外にも既知のサーバ装置が有する各種の機能部、例えば各種の入力デバイスや音声出力デバイスなどの機能を有するものとする。
図2に示すように、サーバノード110は、モジュール登録部111と、モジュール記憶部111Aと、モジュール定義記憶部111Bと、トポロジ取得部112と、トポロジ記憶部112Aとを有する。さらに、サーバノード110は、イベント受信部113と、イベント記憶部114と、モジュール実行部115と、発生イベント登録部116と、発生イベント情報記憶部116Aとを有する。さらに、サーバノード110は、参照データ記憶部162と、部分参照データ要求受信部120と、部分参照データ抽出部119と、部分参照データ送信部163と、配備先決定部117と、配備先情報記憶部117Aと、モジュール送信部118とを有する。
モジュール登録部111は、モジュールを登録する処理部である。例えば、モジュール登録部111は、モジュールの開発者によって各種のサービス提供処理のトリガーとなるイベントをフィルタリングまたは集約するようにプログラミングされたモジュールのアップロードを受け付ける。モジュール登録部111は、サーバノード110にアップロードされたモジュールを後述のモジュール記憶部111Aに登録する。モジュール登録部111は、アップロードされたモジュールに関する定義を開発者が使用する端末装置を介して受け付け、受け付けたモジュールに関する定義を後述のモジュール定義記憶部111Bに登録する。
モジュール記憶部111Aは、モジュールを記憶する記憶部である。例えば、モジュール記憶部111Aは、モジュールがアップロードされた場合に、モジュール登録部111によってモジュールが登録される。また、例えば、モジュール記憶部111Aは、センサノード210やGWノード310などの下位ノードにモジュールを配備する場合に、後述のモジュール送信部118によって参照される。なお、モジュール記憶部111Aに記憶される情報の構成例については、図3を用いて後述する。
モジュール定義記憶部111Bは、モジュールに関する定義を記憶する記憶部である。例えば、モジュール定義記憶部111Bは、モジュールとともにモジュールに関する定義がアップロードされた場合に、モジュール登録部111によってモジュールの定義が登録される。また、例えば、モジュール定義記憶部111Bは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。なお、モジュール定義記憶部111Bに記憶される情報の構成例については、図4を用いて後述する。
トポロジ取得部112は、センサネットワークの接続形態、いわゆるトポロジを取得する処理部である。例えば、トポロジ取得部112は、センサネットワークに収容されたセンサノード210やGWノード310を含む下位ノードから、当該下位ノードがどの上位ノードに接続されているかを表すノード間の接続情報を取得する。また、トポロジ取得部112は、当該下位ノードの記憶容量に関する情報を取得する。その上で、トポロジ取得部112は、下位ノードから取得したノード間の接続情報と、記憶容量に関する情報とを後述のトポロジ記憶部112Aに登録する。なお、以下では、下位ノードがUPnP(Universal Plug and Play)プロトコル等を用いて上位ノードを自動認識することによって検出した接続情報を取得する場合を想定するが、サーバノード110が下位ノードとの接続状況を認識することとしてもよい。
トポロジ記憶部112Aは、センサネットワークのトポロジを記憶する記憶部である。例えば、トポロジ記憶部112Aは、下位ノードからノード間の接続情報が取得された場合に、トポロジ取得部112によってノード間の接続情報がトポロジとして登録される。また、例えば、トポロジ記憶部112Aは、下位ノードから記憶容量に関する情報が取得された場合に、トポロジ取得部112によって記憶容量に関する情報が使用リソースとして登録される。また、例えば、トポロジ記憶部112Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。なお、トポロジ記憶部112Aに記憶される情報の構成例については、図15を用いて後述する。
イベント受信部113は、イベントを受信する処理部である。例えば、イベント受信部113は、センサノード210やGWノード310などの下位ノードからイベントを受信すると、当該イベントを後述のイベント記憶部114に格納する。このとき、イベント受信部113は、下位ノードから受信したイベントを後述の発生イベント登録部116にも出力する。なお、イベント受信部113では、必ずしもセンサノード210によってセンシングされた未加工のイベントが受信されるとは限らず、下位ノードに配備されたモジュールによって加工処理が実行されることにより、加工済みのイベントが受信される場合もある。
イベント記憶部114は、イベントを記憶する記憶部である。このイベント記憶部114は、イベントの発生をトリガーとしてサービスを提供するサービス提供用のアプリケーションに参照させるために設けられる。
例えば、イベント記憶部114は、下位ノードからイベントが受信された場合に、イベント受信部113によってイベントが登録される。また、例えば、イベント記憶部114は、モジュールによってイベントが処理された場合に、後述のモジュール実行部115によって処理実行後のイベントが登録される。なお、イベント記憶部114に記憶される情報の構成例については、図16を用いて後述する。
モジュール実行部115は、サーバノード110に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部115は、イベント受信部113によってイベントが受信された場合に、受信されたイベントを入力イベント型とするモジュールがサーバノード110に配備されているか否かを判定する。このとき、モジュール実行部115は、モジュールがサーバノード110に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。モジュール実行部115は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント記憶部114に格納する。
発生イベント登録部116は、センサノード210やGWノード310などの下位ノードで発生した発生イベントを登録する処理部である。例えば、発生イベント登録部116は、イベント受信部113によってイベントが受信された場合に、受信されたイベントが発生イベントとして後述の発生イベント情報記憶部116Aに既に登録されているか否かを判定する。このとき、発生イベント登録部116は、発生イベントとして未だ登録されていない場合には、下位ノードから受信したイベントを後述の発生イベント情報記憶部116Aに登録する。
発生イベント情報記憶部116Aは、発生イベントに関する情報を記憶する記憶部である。この発生イベント情報記憶部116Aは、センサノード210またはGWノード310などの下位ノードでどのようなイベントが発生しているのかを管理するために設けられる。
例えば、発生イベント情報記憶部116Aは、下位ノードからイベントが受信された場合に、発生イベント登録部116によって発生イベントが登録される。また、例えば、発生イベント情報記憶部116Aは、モジュールの配備先を決定するために、後述の配備先決定部117によって参照される。なお、発生イベント情報記憶部116Aに記憶される情報の構成例については、図17を用いて後述する。
参照データ記憶部162は、モジュールがイベントを加工処理する場合に参照されるデータを記憶する記憶部である。この参照データ記憶部162には、モジュール記憶部111Aに記憶されるモジュールによって参照されるデータが記憶されている。なお、参照データ記憶部162のことを「マスタ」と称する場合がある。また、参照データ記憶部162に記憶されるデータのことを「マスタデータ」と称する場合がある。
部分参照データ要求受信部120は、部分参照データ要求を受信する処理部である。この部分参照データ要求には、要求のトリガーとなった発生イベントに関連する情報と、要求を行ったノードに関連する情報とが含まれる。一態様としては、部分参照データ要求には、イベントが発生した発生ノードID、発生イベント型、検索キー、検索キーの値及び配備先ノードIDが含まれる。
例えば、部分参照データ要求受信部120は、センサノード210やGWノード310などの下位ノードから部分参照データ要求を受信すると、当該要求を後述の部分参照データ抽出部119に出力する。
部分参照データ抽出部119は、参照データ記憶部162に記憶された参照データのうち、下位ノードに配備するモジュールに対応する部分参照データを抽出する処理部である。例えば、部分参照データ抽出部119は、モジュールが配備される場合に、当該モジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部111Bから読み出す。部分参照データ抽出部119は、参照データ記憶部162に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出し、当該データを後述の部分参照データ送信部163に出力する。
部分参照データ送信部163は、部分参照データを下位ノードへ送信する処理部である。例えば、部分参照データ送信部163は、部分参照データ抽出部119によって抽出された部分参照データを、部分参照データ抽出部119から受け付ける。部分参照データ送信部163は、受け付けた部分参照データを、モジュールを配備する下位ノードへ送信する。
配備先情報記憶部117Aは、モジュールの配備先に関する情報を記憶する記憶部である。例えば、配備先情報記憶部117Aは、センサネットワークのトポロジに変化があった場合に、後述の配備先決定部117によってアクセスされる。なお、配備先情報記憶部117Aに記憶される情報の構成例については、図18を用いて後述する。
配備先決定部117は、モジュールの配備先を決定する処理部である。例えば、配備先決定部117は、トポロジ記憶部112Aが更新された場合、すなわちセンサネットワークのトポロジに変化があった場合に、モジュールの配備先を決定する。なお、配備先決定部117がモジュールの配備先を決定する処理については、図19〜図22を用いて後述する。
モジュール送信部118は、センサノード210または後述のGWノード310などの下位ノードにモジュールを送信する処理部である。例えば、モジュール送信部118は、配備先決定部117によって配備先ノードIDが配備先情報記憶部117Aに登録されると、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信する。
[サーバノードの機能部]
次に、図2に示した機能部のうち、さらなる説明を要するものについて、図面に基づいて詳細に説明する。
図3を用いて、モジュール記憶部111Aに記憶される情報の構成例について説明する。図3は、モジュール記憶部に記憶される情報の構成例を示す図である。図3に示すように、例えば、モジュール記憶部111Aは、モジュール識別子とバイナリコードが対応付けられたデータを記憶する。ここで言う「モジュール識別子」は、モジュールを識別するための識別子を指す。例えば、C言語でプログラミングされたモジュールには関数名を付与したり、Java(登録商標)言語でプログラミングされたモジュールにはクラス名を付与したりするなど、開発に使用されたプログラム言語に応じて識別子を付与することができる。また、「バイナリコード」は、モジュール本体となるコンパイル済みのバイナリデータを指す。
図3の例では、モジュールID「平均電力計算」及び「家庭内電力総計」とそのバイナリコードとが対応付けられた例を示している。このうち、「平均電力計算」は、所定期間の消費電力の平均を計算するモジュールのクラス名を指し、「家庭内電力総計」は、所定期間の消費電力の総和を計算するモジュールのクラス名を指す。これらモジュール「平均電力計算」及び「家庭内電力総計」が下位ノードに配備された場合には、下位ノードからサーバノード110に送信されるイベントが集約されることになる。
なお、図3の例では、モジュールのバイナリコードを記憶する場合を例示したが、必ずしもバイナリ形式でモジュールを記憶する必要はなく、バイナリ形式以外のデータを記憶することとしてもかまわない。例えば、モジュールがスクリプト言語である場合には、スクリプトが記述されたテキストデータを記憶することとしてもよい。また、コンパイル前のソースコードを記憶することとしてもかまわない。この場合には、モジュールがセンサノード210等の下位ノードに配備される段階でコンパイルするか、あるいは配備先の下位ノードでコンパイルさせることとすればよい。
次に図4を用いて、モジュール定義記憶部111Bに記憶される情報の構成例について説明する。図4は、モジュール定義記憶部に記憶される情報の構成例を示す図である。図4に示すように、例えば、モジュール定義記憶部111Bは、処理そのものに関する情報、参照データに関する情報及び配備可否判定に関する情報が対応付けられたデータを記憶する。以下では、「処理そのものに関する情報」、「参照データに関する情報」、配備可否判定に関する情報」の各部について説明する。
まず、「処理そのものに関する情報」について説明する。図4に示すように、処理そのものに関する情報には、モジュール識別子、入力イベント型、出力イベント型及び集約属性名が対応付けられている。ここで言う「入力イベント型」とは、モジュールによって実行される処理の入力となるイベントの型を指す。また、「出力イベント型」とは、モジュールによって実行された処理の出力となるイベントの型を指す。また、「集約属性名」とは、複数の入力イベントを集約する枠組みである集約属性の名称を指す。
図4に示すモジュール識別子「平均電力計算」は、入力イベント型「電力」のイベントを受信し、集約属性名「コンセントID」に基づいて入力イベントを集約処理し、出力イベント型「平均電力」として処理結果を出力する処理を表す。また、図4に示すモジュール「人単位計算」は、入力イベント型「平均電力」のイベントを受信し、集約属性名「利用者」に基づいて入力イベントを集約処理し、出力イベント型「人単位電力」として処理結果を出力する処理を表す。なお、集約属性名は処理の内容によって指定されない場合もある。
次に、図5〜図7を用いて、「参照データに関する情報」について説明する。図5は、参照データに関する情報について説明するための図である。図5に示すように、参照データに関する情報には、モジュールがイベントを加工処理する場合に参照する参照データの参照箇所、抽出方法、検索キーが記録される。一態様として参照箇所はテーブル名やカラム名で指定され、抽出方法は参照データから必要レコードを抽出する際の抽出式などとして指定される。さらに、検索キーには入力イベント型内の属性名が指定される。これらの情報によって入力イベントの内容に基づいて参照データを参照しながら処理を行う際に必要なマスタデータ内レコード行と入力イベント型内の属性の値との結びつけやレコード行や参照カラムの特定を行う。参照データに関する情報は、アプリ管理者によって指定され、下位ノードに配備する部分参照データの細分化に用いられる。また、モジュールが参照データを要しない場合には、参照データに関する情報には、データが格納されなくても良い。
図5に示すように、例えば、参照データに関する情報には、検索キー、参照箇所及び抽出方法が対応付けられている。ここで言う「検索キー」とは、入力イベント内の属性を指す。また、「参照箇所」とは、参照されるテーブル及びカラムを特定する情報を指す。また、「抽出方法」とは、参照されるレコードを特定する情報を指す。また、抽出方法は、参照データに紐付けられたデータを間接的に参照するための情報を指す場合もある。これらの情報によって、発生イベントの属性値に応じてレコード単位で部分参照データを配備することが可能となる。なお、モジュールがデータ参照を伴わない場合には、参照データに関する情報には、データが格納されなくても良い。また、検索キーは、「属性情報」の一例である。また、参照箇所は、「参照箇所情報」の一例である。また、抽出方法は、「参照データ抽出用情報」の一例である。
図5では、モジュール識別子「Proc1」の処理5aによって参照データ記憶部162が参照される参照方法を、3つのケースに分けて説明する。ここで、3つのケースとは、処理5aが参照データに関する情報としてデータ5bを読み出したケース、データ5cを読み出したケース、データ5dを読み出したケースに対応する。なお、データ5bを読み出したケースは、イベント内容に応じた参照データの直接参照に対応し、データ5cを読み出したケース及びデータ5dを読み出したケースは、イベント内容に応じた間接参照に対応する。
図5に示すように、例えば、入力イベント「Event11」が入力されると、処理5aが実行される。処理5aが実行されると、入力イベント内のデータから、検索キーに対応するkeyが抽出される。ここで言う「key」とは、発生イベントに応じた検索キーの固有の値を示す。つまり、処理5aが実行されると、「Event11」内のデータから、属性名「attr1」に対応する値「val1」がkeyとして抽出される。
ここで、データ5bは、イベント内容に応じた参照データの直接参照を表す例である。データ5bには、参照箇所「テーブルA.K,テーブルA.X」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKとカラムXとが参照されることを示す。また、データ5bには、抽出方法「where key=テーブルA.K」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKにkeyを含むレコードが参照されることを示す。つまり、処理5aが実行されると、データ5bを読み出したケースでは、テーブルAのカラムK及びカラムXのうち、カラムKに「val1」を含むレコード「val1,val22」が参照される。
また、データ5cはイベント内容に応じて間接参照を辿って参照データを抽出する例である。データ5cには、参照箇所「テーブルA.K,テーブルB.X」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKと、テーブルBのカラムXとが参照されることを示す。また、データ5cには、抽出方法「where key=テーブルA.K&&,テーブルA.L=テーブルB.K2」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKにkeyを含むレコードと、テーブルBのカラムK2にテーブルAのカラムLの値を含むレコードとが参照されることを示す。つまり、処理5aが実行されると、データ5cを読み出したケースでは、テーブルAのカラムKに「val1」を含むカラムLの値「val21」が抽出され、さらに、テーブルBのカラムK2に「val21」を含むカラムXの値「val31」が参照される。
また、データ5dはイベント内容に応じた間接参照の別の例を示したものである。この例ではイベント内容から抽出した値に算出式を適用した値をもとに参照データ値を抽出する。データ5dには、参照箇所「テーブルA.K,テーブルA.X」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKとカラムXとが参照されることを示す。また、データ5cには、抽出方法「where f(key)=テーブルA.K」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、keyに算出式fを適用した値を用いてテーブルAのカラムKが参照されることを示す。つまり、処理5aが実行されると、データ5dを読み出したケースでは、テーブルAのカラムK及びカラムXのうち、カラムKに「f(val1)」を含むレコード「f(val1),val41」が参照される。なお、算出式fには、フォーマット変換や粒度変更などに用いられる算出式が適用される。なお、図5cの間接参照は2段階の参照を間接参照への対応方法を示しているが、3段階以上の間接参照であっても同様にJoin時の着目カラムを抽出方法に列挙していくことで対応できる。さらに、5bから5dは参照データの抽出方法が異なる場合にも対応できることを示したものであり、ここで示した事例以外の抽出方法にも対応できることは容易にわかる。
図6を用いて、参照データを用いた実例1について説明する。図6は、参照データを用いた実例1について説明するための図である。ここで参照されるテーブルAには、コンセントID、使用者及び機器が対応付けられている。
図6に示すように、例えば、電力イベントが入力されると、平均電力計算6aが実行される。平均電力計算6aが実行されると、入力イベント内のデータから、検索キー「コンセントID」に対応するkey「11」が抽出される。図6のモジュール定義記憶部111Bには、参照箇所「テーブルA.K,テーブルA.X」が格納されている。これは、電力イベントのコンセントIDに対し、テーブルAのカラムKとカラムXとが参照されることを示す。また、モジュール定義記憶部111Bには、抽出方法「where key=テーブルA.K」が格納されている。これは、電力イベント内の属性値(コンセントID値)をテーブルAのカラムKに含むレコードが参照されることを示す。つまり、平均電力計算6aが実行されると、テーブルAのカラムK及びカラムXのうち、カラムKに「11」を含むレコード「11,Aさん」が参照される。なお、図6の場合には、部分参照データ記憶部216には、テーブルAのカラムK及びカラムXのうち、カラムKに「11」を含むレコード「11,Aさん」を含むデータ6bが記憶される。
図7を用いて、参照データを用いた実例2(ケース5c、データ5cのケース)について説明する。図7は、参照データを用いた実例2について説明するための図である。この例は、複数のテーブルに分かれて管理・記憶されているマスターデータから処理に必要なデータのみを抽出する例を示す。ここで参照されるテーブルAにはコンセントIDと接続機器とが対応付けられており、テーブルBには機器と使用者とが対応付けられている。
図7に示すように、例えば、電力イベントが入力されると、平均電力計算7aが実行される。平均電力計算7aが実行されると、入力イベント内のデータから、検索キー「コンセントID」に対応するkey「11」が抽出される。図7のモジュール定義記憶部111Bには、参照箇所「テーブルA.K,テーブルB.X」が格納されている。これは、電力イベントのコンセントIDに対し、テーブルAのカラムKと、テーブルBのカラムXとが参照されることを示す。また、モジュール定義記憶部111Bには、抽出方法「where key=テーブルA.K&&,テーブルA.L=テーブルB.K2」が格納されている。これは、参照データ記憶部162に記憶されるデータのうち、テーブルAのカラムKにkeyを含むレコードと、該当レコードのカラムLと同値の値をテーブルBのカラムK2に含むレコードとが参照されることを示す。つまり、平均電力計算7aが実行されると、テーブルAのカラムKに「11」を含むカラムLの値「共用PC1」が抽出され、さらに、「共用PC1」をテーブルBのカラムK2に含むカラムXの値「Aさん」が参照される。なお、図7の場合には、部分参照データ記憶部216には、テーブルAのカラムK及びテーブルBのカラムXのうち、カラムKに「11」を含むレコード「11,Aさん」を含むデータ7bが記憶される。
図8を用いて、部分参照データの配備先の特定について説明する。図8は、部分参照データの配備先の特定について説明するための図である。図8に示す処理は、参照データ記憶部162に記憶されたマスタデータが変更された際に、例えば、配備先決定部117によって行われる。
図8に示すように、例えば、参照データ記憶部162に記憶されたテーブルAのカラムXの「Aさん」というデータが変更されると、配備先決定部117は、当該データが変更されたことを検知するとともに、カラムKの値「11」を取得する(s11)。そして、配備先決定部117は、モジュール定義記憶部111Bに記憶された抽出方法を参照し、図8(1)に示すように、テーブルAのカラムKの値「11」が電力イベントの「コンセントID」に対応するものと判定する。そして、配備先決定部117は、発生イベント情報記憶部116Aを参照し(s12)、発生イベント「電力」及び発生イベント属性のコンセントID「11」に対応する発生ノードID「電力センサ1」を特定する(s13)。そして、配備先決定部117は、配備先情報記憶部117Aを参照し(s14)、発生ノードID「電力センサ1」、入力イベント型「11」及びモジュール識別子「平均電力計算」に対応する配備先ノードID「GW1」を特定する(s15)。ここで、モジュール識別子はモジュール定義記憶部111Bから取得されるものとする。このように、配備先決定部117は、参照データ記憶部162内のテーブルの変更に伴って部分参照データが配備される配備先ノードIDを特定する。
次に、図9を用いて、「配備可否判定に関する情報」について説明する。図9は、配備可否判定に関する情報について説明するための図である。図9に示すように、配備可否判定に関する情報には、例えば、参照データ特性制約及びリソース観点制約のうち、いずれか一方、又は、両方が記憶されている。参照データ特性制約は、配備する部分参照データのマスタの変更頻度が高い場合に、参照データの再配備が増加することによる通信量の増加を抑止するために指定される。例えば、参照データ特性制約には、部分参照データの配備頻度上限を時間当たりの回数で指定された値が記憶される。図9に示すように、参照データのマスタデータ9aが変更されると、その変更に応じて部分参照データの配備を要するので、変更回数の合計頻度が上限を超えたら配備不可とするという趣旨である。また、リソース観点制約は、配備する処理が大量の部分参照データを要し、配備先ノードのリソース量を超えてしまうような配備を抑止するために指定される。例えば、リソース観点制約には、配備する部分参照データの占有リソース量上限を絶対量や割合で指定した値が記憶される。図9に示すように、例えば、発生イベントのバリエーションによって部分参照データが増加することにより、配備先ノードのリソース量を超えてしまうような配備を抑止するという趣旨である。リソース観点制約が割合で指定された場合には、母数は、配備先ノードのリソース量となる。なお、参照データ特性制約及びリソース観点制約の両方が記憶されている場合には、配備可否判定に関する情報は、AND条件で判定される。また、配備可否判定に関する情報は、例えば、システムを管理する管理者によって指定され、再配備にかかるコストを軽減するために用いられる。また、モジュールが参照データを要しない場合には、配備可否判定に関する情報には、データが格納されなくても良い。また、参照データ特性制約は、「第1条件」の一例であり、リソース観点制約は、「第2条件」の一例である。
図10を用いて、参照データに応じた配備可否判定について説明する。図10は、参照データに応じた配備可否判定について説明するための図である。図10に示す処理は、例えば、部分参照データが配備される際に、配備先決定部117によって行われる。
図10に示すように、例えば、配備先決定部117は、マスタにあるテーブルAやテーブルBの変更を検知するごとに(s21)、発生イベントの検索キーと対応付く参照データ側のカラムに対して変更頻度を集計する。ここでは、配備先決定部117は、モジュール定義記憶部111Bの抽出方法を参照することで、レコード単位で変更頻度を集計する(s22)。ここで、配備先決定部117によって配備先を決定する際には、参照データ特性制約とリソース観点制約とによって部分参照データの配備可否が判定され、それぞれの制約条件を満たした場合に配備されることとなる(s23)。ここで、発生イベントの検索キーの値に応じて配備されるレコードの数、すなわちリソース量が変動し、配備されるレコードの変更頻度の合計によって再配備の負担が変動する。なお、配備先決定部117によって候補ノード10aに配備される部分参照データは、参照されるテーブルの必要カラムがレコードごとに配備される。なお、s21からs22までの集計は配備先決定処理とは独立に実行される、参照データ更新に応じた処理であり参照データ記憶部など他機能部が代行してもよい。
図11を用いて、マスタデータの監視設定処理の流れについて説明する。図11は、マスタデータの監視設定処理の手順を示すフローチャートである。この監視設定処理は、例えば、マスタデータの変更を検出するために、配備先決定部117が監視する参照データ内の箇所を設定する処理である。この監視設定処理は、サーバノード110の電源がON状態である限り、繰り返し実行される。
図11に示すように、配備先決定部117は、モジュール定義情報が登録されるのを待機する(ステップS101)。そして、モジュール定義記憶部111Bにモジュール定義情報が登録されると、配備先決定部117は、登録されたモジュールが、データ参照を伴う処理であり、参照データ特性制約による配備可否判定を要するか否かを確認する(ステップS102)。
参照データ特性制約による配備可否判定を要すると判定した場合には(ステップS103肯定)、配備先決定部117は、ステップS104の処理を実行する。つまり、配備先決定部117は、参照箇所及び抽出方法に基づいて、モジュールの入力イベントの検索キーに対応付く参照データ側のカラムについて、該当レコードの変更と判定される参照データ内の箇所をリストアップする(ステップS104)。配備先決定部117は、該当結果に基づいて、部分参照データとして配備されうるマスタデータの変更を待機設定し(ステップS105)、ステップS101の処理に戻る。なお、配備先決定部117は、参照データ観点での配備可否判定を要すると判定されない場合には(ステップS103否定)、ステップS101の処理に戻る。
ここで、図12を用いて、図11のステップS104においてリストアップされるデータについて説明する。図12は、図11のステップS104においてリストアップされるデータについて説明するための図である。
図12に示すように、例えば、配備先決定部117は、リスト12aにデータをリストアップする。例えば、配備先決定部117は、モジュール定義記憶部111Bにモジュール定義情報が登録されると、モジュールの「モジュール識別子」、「入力イベント」、「検索キー」及び「検索キーに対応付く参照側カラム」をモジュール定義記憶部111Bから抽出する。ここで、配備先決定部117は、「検索キーに対応付く参照側カラム」についてはモジュール定義記憶部111Bの抽出方法にあるwhere句から抽出する(s31)。そして、配備先決定部117は、抽出したデータをリスト12aに格納する。また、リスト12aの「該当レコードの変更と判定する参照データ内箇所」については、配備先決定部117は、モジュール定義記憶部111Bの参照箇所及び抽出方法に基づいて格納する。すなわち、配備先決定部117は、当該モジュールの参照箇所及び抽出方法に出現したカラムから、該当レコードの変更と見なすものを抽出し、格納する。なお、ここで格納される該当レコードの変更と判定する参照データ内箇所のうち、1行目のデータは、モジュール定義記憶部111Bの参照箇所に対応し、2行目及び3行目のデータは、Join時の着目カラムに対応する。このリスト12aは、例えば、コンセントID(「11」など)と接続機器(「共用PC1」など)やその機器利用者(「Aさん」など)の対応付けを示すマスタデータの変更監視を、モジュール識別子「平均電力計算」(入力イベント型「電力」、検索キー「コンセントID」)と対応づけて行う旨を示す。このリスト12aによれば、例えば、監視の対象として設定されたテーブルのカラムが変更された場合に対応づくレコードの変更回数として集計でき、さらに、コンセントID「11」の電力イベント12bが受信された場合に、該当レコードの変更頻度に基づいた配備可否の判定を行うことができる。
図13を用いて、マスタデータ変更検出時の処理の流れについて説明する。図13は、マスタデータ変更検出時の処理の手順を示すフローチャートである。このマスタデータ変更検出時の処理は、サーバノード110の電源がON状態である限り、繰り返し実行される。
図13に示すように、配備先決定部117は、部分参照データとして配備されうるマスタデータの変更を待機する(ステップS201)。そして、マスタデータの変更が検出されると、配備先決定部117は、監視設定処理によって生成されたリストを用いて、検索キーの値に応じて変更回数を集計する(ステップS202)。
続いて、配備先決定部117は、変更されたデータを参照するモジュールが配備済か否かを判定する(ステップS203)。例えば、発生イベント情報記憶部116Aから、出力イベント型と発生イベント型が一致し、かつ検索キーの属性名と値が一致する発生イベントを特定する。そして、その特定した発生イベントの発生ノードIDと集約属性値、発生イベント型をもとに、該当イベントに関する配備済モジュールを配備先情報から特定する。
変更されたデータを参照するモジュールが配備済である場合には(ステップS203肯定)、配備先決定部117は、当該モジュールの配備先ノードがクラウド以外のノードであるか否かを判定する(ステップS204)。クラウド以外のノードである場合には(ステップS204肯定)、配備先決定部117は、当該配備先ノードに部分参照データを配備可能か否かを判定する(ステップS205)。具体的には、モジュール定義情報内の配備可否判定に関する情報に基づき、参照データ特性に制約とリソース観点制約での判定を行う。部分参照データを配備可である場合には(ステップS205肯定)、配備先決定部117は、判定結果に「OK」を格納し(ステップS206)、当該部分参照データを配備先ノードに送信する(ステップS207)。そして、配備先決定部117は、ステップS201の処理に戻る。
一方、部分参照データを配備不可である場合には(ステップS205否定)、配備先決定部117は、後述の図21のステップS422の処理を開始するとともに、ステップS201の処理に戻る(ステップS208)。また、モジュールが配備済でない場合には(ステップS203否定)、配備先決定部117は、ステップS201の処理に戻る。また、モジュールの配備先ノードがクラウドである場合には(ステップS204否定)、配備先決定部117は、ステップS201の処理に戻る。
図14を用いて、図13のステップS202において変更回数を集計する処理について説明する。図14は、図13のステップS202において変更回数を集計する処理について説明するための図である。図14には、配備可否判定用のテーブル14aを例示する。このテーブル14aは、例えば、配備先決定部117によって生成される。例えば、テーブル14aには、検索キーの値に応じた変更回数が、変更されたデータを参照するモジュールに対応付けて集計される。また、変更回数については、配備可否判定に関する情報の参照データ特性制約で指定された指定期間をスライドさせながら集計する。一態様としては、配備先決定部117は、モジュール定義が登録された時刻t0から指定期間、例えば1時間が経過する時刻t1までの間について、マスタデータの変更を監視する。そして、時刻t1を経過すると、配備先決定部117は、マスタデータの変更を検出するごとに、検出時刻tiから指定期間遡った時刻tjまでの期間の変更回数を集計する。なお、テーブル14aの計測区間開始時刻には、時刻tjが格納される。ここでは、指定期間が1時間である場合を例示したが、これに限定されるものではなく、任意の時間が指定されて良い。
図15を用いて、トポロジ記憶部112Aに記憶される情報の構成例について説明する。図15は、トポロジ記憶部に記憶される情報の構成例を示す図である。図15に示すように、例えば、トポロジ記憶部112Aは、下位ノードID、上位ノードID及び使用リソースが対応付けられたデータを記憶する。ここで言う「下位ノードID」は、下位ノードを識別するための識別子を指す。また、「上位ノードID」は、下位ノードに接続される上位ノードを識別するための識別子を指す。また、「使用リソース」は、下位ノードにおける使用リソースの容量及び比率を指す。ここで言う比率とは、例えば、下位ノードにおけるトータルメモリに対する使用量の比率を示す。
図15の例では、センサ1の上位ノードがGW1であり、GW1の上位ノードがクラウドである場合を示す。例えば、センサ1は、センサノード210に対応し、クラウドは、サーバノード110に対応する。また、ここでは、センサ1とクラウドとの間にGW1が中継ノードとして介在する場合を示したが、必ずしも中継ノードが介在していなくても良く、例えば、図1に示したように、センサ1の上位ノードがクラウドであっても良い。また、図15の例では、センサ1は、1MBのリソースを使用しており、そのトータルメモリに対する比率が80%である例を示す。
図16を用いて、イベント記憶部114に記憶される情報の構成例について説明する。図16は、イベント記憶部に記憶される情報の構成例を示す図である。図16に示すように、例えば、イベント記憶部114は、イベント型名、イベント発生時刻及びイベント属性が対応付けられたデータを記憶する。ここで言う「イベント型」は、イベントの種類を識別するための識別子を指す。また、「イベント発生時刻」は、イベントが発生した時刻、すなわちセンサノード210によってセンシングされた時刻を指す。また、「イベント属性」は、イベントの性質や由来を指す。例えば、「イベント属性」は、イベントとして採取されるセンシングデータ又はそれが加工処理されたデータの種類、イベントが発生した発生ノードや発生ノードを含む複数のノードを集約する集約属性などの属性データの集合を指す。なお、以下では、イベント属性に含まれる各属性データが属性名と属性値のペアを含んで構成される場合を想定して説明を行う。
図16に示す1番目のレコードは、2011年7月13日の12時にX家の電力センサXによって電力が計測されたというイベントを示す。
このように、イベント記憶部114に記憶されたイベントは、サービス提供用のアプリケーションによってサービス提供処理を実行するトリガーとして参照される。なお、図16の例では、センサノード210によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも格納されることになる。
図17を用いて、発生イベント情報記憶部116Aに記憶される情報の構成例について説明する。図17は、発生イベント情報記憶部116Aに記憶される情報の構成例を示す図である。図17に示すように、例えば、発生イベント情報記憶部116Aは、発生ノードID、発生イベント型及び発生イベント属性が対応付けられたデータを記憶する。ここで言う「発生ノードID」は、発生ノードを識別するための識別子を指す。また、「発生イベント型」は、発生イベントの種類を識別するための識別子を指す。また、「発生イベント属性」は、発生ノードのイベント属性を指す。
図17に示す1番目のレコードは、X家の電力センサXで電力が計測されるというイベントが発生していることを示す。なお、図17の例では、発生イベントとしてセンサノード210によってセンシングされた未加工のイベントを例示したが、モジュールが下位ノードに配備された場合には、モジュールによって加工処理がなされた新たなイベントも発生イベントとして格納される。
図18を用いて、配備先情報記憶部117Aに記憶される情報の構成例について説明する。図18は、配備先情報記憶部に記憶される情報の構成例を示す図である。図18に示すように、例えば、配備先情報記憶部117Aは、モジュール識別子、入力イベント型、集約属性名、発生イベント属性、発生ノードID、配備先ノードID及び配備可否判定用情報が対応付けられたデータを記憶する。ここで言う「配備先ノードID」は、モジュールが配備されるセンサノード210、GWノード310またはサーバノード110を識別するための識別子を指す。また、「配備可否判定用情報」には、配備先予定ノードID、判定状態及び時刻が対応付けられている。このうち、「配備先予定ノードID」は、モジュールが配備されるノードとして選択されたノードを識別するための識別子、あるいは、配備先決定部117によって配備不可判定されたノードを識別するための識別子を指す。「判定状態」は、配備先予定ノードIDによって指定されるノードへのモジュールの配備可否の判定の状態を指す。例えば、判定状態には、判定中である場合にはその旨が記憶され、判定中でない場合には判定結果が記憶される。「時刻」は、判定時刻を指す。例えば、時刻には、判定中である場合には次回の判定時刻が記憶され、判定中でない場合には直近の判定時刻が記憶される。
図19〜図21を用いて、配備先決定部117におけるモジュール配備処理について説明する。図19は、モジュール配備処理の手順を示すフローチャートである。このモジュール配備処理は、例えば、センサネットワークのトポロジが変化した場合に処理が起動される。
図19に示すように、配備先決定部117は、発生イベント情報記憶部116Aが更新されるのを待機する(ステップS301)。そして、発生イベント情報記憶部116Aが更新されると、配備済モジュールが有るか否かを判定する(ステップS302)。配備済モジュールが無い場合には(ステップS302否定)、配備先決定部117は、未配備モジュールに対する処理として、ステップS303以降の処理へ移行する。一方、配備済モジュールが有る場合には(ステップS302肯定)、配備先決定部117は、配備済モジュールに対する処理を実行する(ステップS316)。なお、配備済モジュールに対する処理については、図20及び図21を用いて後述する。
続いて、配備先決定部117は、モジュール定義記憶部111Bに記憶されたモジュールの定義のうちモジュール識別子、入力イベント型及び集約属性名のカラムデータを配備先情報記憶部117Aの該当カラムに格納する(ステップS303)。
そして、配備先決定部117は、ステップS303の処理を実行後に、下記に説明するステップS304の処理を実行する。すなわち、配備先決定部117は、発生イベント情報記憶部116Aに記憶された発生ノードIDのうち、発生イベント型が未配備のモジュールの入力イベント型に含まれる発生ノードIDを抽出する。さらに、サーバノード110は、前述のように抽出した発生ノードID間で未配備のモジュールに定義された集約属性の属性名と同一の集約属性に属する属性値が同一であるノードを抽出する。
その後、配備先決定部117は、抽出結果として得られた発生ノードID及び発生ノードIDに対応付けられた発生イベント属性を配備先情報記憶部117Aに書き込む(ステップS305)。
このとき、発生ノードIDの数が「0」である場合には(ステップS306肯定)、下位ノードから通知される発生イベントが発生イベント情報記憶部116Aに登録し切れていない可能性がある。この場合には、配備先決定部117は、ステップS302の処理に移行する。
一方、発生ノードIDの数が「0」でない場合には(ステップS306否定)、配備先決定部117は、発生ノードIDの数が複数であるか否かを判定する(ステップS307)。発生ノードIDの数が複数である場合には(ステップS307肯定)、下記に説明するステップS308の処理を実行する。すなわち、配備先決定部117は、トポロジ記憶部112Aに記憶された上位ノードIDのうち各発生ノードIDに対応するセンサノード210又はGWノード310が下位ノードとして全て収容され、かつ最も下位ノード側であるノードIDを抽出する。
また、発生ノードIDの数が1つである場合には(ステップS307否定)、配備先決定部117は、モジュールを配備するノードに選択の余地がないので、先に抽出結果として得られた発生ノードIDをノードIDとし、ステップS309の処理に移行する。
続いて、配備先決定部117は、配備されるモジュールがデータ参照を伴うか否かを判定する(ステップS309)。データ参照を伴う場合には(ステップS309肯定)、配備先決定部117は、配備先情報記憶部117Aの配備先予定ノードIDに候補ノードIDを格納する(ステップS310)。
そして、配備先決定部117は、S308の検索結果であるノードIDをクラウドに変更し(ステップS311)、判定開始を記録する(ステップS312)。つまり、配備先決定部117は、当該配備先情報記憶部117Aの判定状態に「判定中」を格納するとともに、時刻には、配備時刻に配備可否判定に関する情報における指定期間を加算した時刻を格納する。なお、データ参照を伴わない場合には(ステップS309否定)、配備先決定部117は、ステップS313の処理に移行する。
続いて、配備先決定部117は、ノードIDを配備先ノードIDのカラムに格納する(ステップS313)。そして、配備先決定部117は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信させる(ステップS314)。そして、配備先決定部117は、発生イベント情報記憶部116Aが更新されるのを待機し(ステップS315)、ステップS302の処理に戻る。
図20及び図21を用いて、図19のステップS316に示した配備済モジュールに対する処理について説明する。図20及び図21は、配備済モジュールに対する処理の手順を示すフローチャートである。
図20に示すように、配備先決定部117は、発生イベントから該当する配備済レコード、すなわち配備先情報記憶部117A内のレコードを特定する(ステップS401)。例えば、該当発生イベントの発生イベント型が配備済レコードの入力イベント型と一致し、かつそのレコードの集約属性名、発生イベント属性が、該当発生イベントの該当属性の該当属性値と同一であるものを抽出する。
該当する配備済レコードが有る場合には(ステップS402肯定)、配備先決定部117は、該当する配備済レコードの発生ノードIDに発生イベントの発生ノードIDを含むか判定する(ステップS403)。
発生イベントの発生ノードIDを含む場合には(ステップS403肯定)、配備先決定部117は、該当配備済レコードの配備先ノードIDがクラウドか否かを判定する(ステップS404)。
クラウドである場合には(ステップS404肯定)、配備先決定部117は、判定状態が「判定中」であり、かつ、判定終了時刻を経過しているか判定する(ステップS405)。
判定状態が「判定中」であり、かつ、判定終了時刻を経過している場合には(ステップS405肯定)、配備先決定部117は、再配備先ノードIDとして配備予定ノードを指定する(ステップS406)。そして、配備先決定部117は、参照データ特性制約の配備可否判定を行う(ステップS407)。
ここで、判定結果が配備可である場合には(ステップS408肯定)、配備先決定部117は、図21のステップS412の処理に移行する。一方、判定結果が配備不可である場合には(ステップS408否定)、配備先決定部117は、判定状態に「NG」を格納し(ステップS409)、図19のステップS303の処理に移行する。
また、発生イベントの発生ノードIDを含まない場合には(ステップS403否定)、配備先決定部117は、該当配備済レコードに発生イベントの発生ノードIDを格納する(ステップS410)。そして、配備先決定部117は、再配備先ノードIDを特定する(ステップS411)。この時、配備先決定部117は、図19のステップS308の処理と同様トポロジ記憶部112Aから発生ノードIDが集約されるノードIDを検索して再配備先ノードIDを特定する。さらに配備先決定部117は図21のステップS412の処理に移行する。
なお、該当する配備済レコードが無い場合には(ステップS402否定)、配備先決定部117は、図19のステップS303の処理に移行する。また、クラウドでない場合には(ステップS404否定)、配備先決定部117は、図19のステップS303の処理に移行する。また、判定状態が「判定中」ではない、あるいは、判定終了時刻を経過していない場合には(ステップS405否定)、配備先決定部117は、図19のステップS303の処理に移行する。
次の図21は再配備先ノードIIDを特定後に、配備可否を判定した上で再配備を実行する動作を説明するフローである。図21に示すように、配備先決定部117は、該当レコードのモジュールがデータ参照を伴うか否かを判定する(ステップS412)。モジュールがデータ参照を伴わない場合には(ステップS412否定)、配備先決定部117は、該当再配備先ノードIDを配備先ノードIDに格納する(ステップS413)。続いて、配備先決定部117は、モジュール記憶部111Aに記憶されたモジュールを配備先ノードIDに対応するノードへ送信させる(ステップS414)。
続いて、配備先決定部117は、その時までに該当モジュールが配備されていた配備先ノードから、該当モジュールを回収する(ステップS415)。そして、配備先決定部117は、回収したモジュールの出力イベントに関するデータを削除する(ステップS416)。
ここで、配備先決定部117が回収したモジュールの出力イベントに関するデータを削除する処理について、詳細に説明する。例えば、配備先決定部117は、発生イベント情報記憶部116Aを参照し、配備先情報記憶部117Aに格納されていた回収したモジュールが出力したイベントを特定し、当該イベントを削除する。この特定は、回収したモジュールの回収元の配備先ノードID、発生イベント型及び発生イベント属性が、発生イベント情報の発生ノード、発生イベント型及び発生イベント属性にそれぞれ一致するか否かによって行われる。つまり、配備先決定部117は、ここで一致するものを削除する。さらに、配備先決定部117は、配備先情報記憶部117Aの発生ノードIDのカラムを対象として、前述の削除処理で削除された発生イベントを入力イベントとする配備済モジュールを特定する。このモジュールの特定は、前述の削除処理で特定された回収したモジュールの処理によって出力される発生イベントの出力イベント型及び発生イベント属性が、配備先情報の入力イベント型及び発生イベント属性に一致するか判定し、一致するものを特定する。そして、配備先決定部117は、該当モジュールの発生ノードIDのカラムのうち、削除された発生イベントの発生ノードと一致するものを削除する。このように、ステップS416においてデータが削除されると、配備先決定部117は、図19のステップS301の処理に戻る。
一方、モジュールがデータ参照を伴う場合には(ステップS412肯定)、配備先決定部117は、再配備先ノードのリソース観点制約の判定を行う(ステップS417)。配備可である場合には(ステップS418肯定)、判定状態に「OK」を格納し(ステップS419)。この時、さらに配備先情報記憶部の配備可否判定用情報の時刻欄をその時の時刻で更新する。さらに配備先決定部117は、該当再配備先ノードIDを配備先ノードIDに格納する(ステップS420)。このとき、配備先決定部117は、例えば、部分参照データ抽出部119に部分参照データを抽出させる。例えば、部分参照データ抽出部119は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部111Bから読み出す。部分参照データ抽出部119は、参照データ記憶部162に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。そして、配備先決定部117は、部分参照データを配備先ノードIDに対応するノードへ送信させ(ステップS421)、ステップS414の処理に移行する。
一方、配備不可である場合には(ステップS418否定)、判定状態に「NG」を格納し(ステップS422)、現在の配備先ノードIDを配備予定ノードIDに格納する(ステップS423)。そして、配備先決定部117は、配備先ノードIDにクラウドを格納し(ステップS424)、ステップS414の処理に移行する。
図22〜図26を用いて、配備先決定部117の動作例1について説明する。図22〜図26は、配備先決定部の動作例1について説明するための図である。図22は、この動作例にかかる各テーブルの初期状態を示したものである。すなわち、テーブル22aは、参照データ記憶部162に記憶される参照データに対応する。テーブル22bは、モジュール定義記憶部111Bに記憶される情報に対応する。テーブル22cは、図11のステップS104において生成されるリストに対応する。テーブル22dは、図13のステップS202において集計された配備可否判定用のテーブルに対応する。テーブル22eは、トポロジ記憶部112Aに記憶される情報に対応する。テーブル22fは、発生イベント情報記憶部116Aに記憶される情報に対応する。
図22の例では、テーブル22fに示すように、コンセントID「11」に対応する「電力」イベントが「センサ1」によって検知されたことを契機として、配備先決定部117は、配備処理を開始する。ここで、「電力」を入力イベントとするモジュール「平均電力計算」が未配備であるものとすると、配備先決定部117は、次のように処理を行う。つまり、配備先決定部117は、モジュール定義記憶部111Bを参照し、モジュール識別子「平均電力計算」、入力イベント型「電力」及び集約属性名「コンセントID」を図23のテーブル23aに格納する(ステップS303)。なお、テーブル23aは、配備先情報記憶部117Aに記憶される情報に対応する。
続いて、配備先決定部117は、テーブル22fから、発生イベント型が「電力」であり、かつ、コンセントID「11」によって集約される発生ノード、すなわち「センサ1」を抽出する(ステップS304)。そして、検索結果として得られた発生ノードID「センサ1」及び発生ノードIDに対応付けられた発生イベント属性「コンセントID=11」をテーブル23aに格納する(ステップS305)。
このとき、発生ノードの数は「1」であるので、配備先決定部117は、テーブル22bを参照し、「平均電力計算」がデータ参照を伴うものと判定する。このため、配備先決定部117は、テーブル23aの配備先予定ノードIDに「センサ1」を格納するとともに、ノードIDを「クラウド」に変更する(ステップS311)。また、配備先決定部117は、テーブル23aの判定状態に「判定中」を格納し、時刻に「2011.11.29 13:10:00」を格納する(ステップS312)。これ以降、ステップS313及びステップ314の処理により、モジュール「平均電力計算」がクラウドに配備されるので、「クラウド」から「平均電力」イベントが発生する旨がテーブル22fに追加されて、図23のテーブル23bとなる。
続いて、配備先決定部117は、「平均電力計算」の配備に伴って、新たに発生イベント情報記憶部に追加された「平均電力」に対する処理を開始する。配備先決定部117は、配備済モジュールあり(ステップS302肯定)と判定し、ステップS316の処理に移行し、該当配備済モジュールを特定するが該当なし(ステップS402否定)となり、ステップS303に戻る。その後前述同様、入力イベント型「平均電力」に対応するモジュール「人単位計算」を配備する。つまり、配備先決定部117は、テーブル22bを参照し、テーブル23aに「人単位計算」を追加して、テーブル23cとする。なお、「人単位計算」は、参照データに関する情報を有しない、つまり、データ参照を伴わないモジュールであるため、配備先決定部117は、該当モジュールを配備可と判定し、テーブル23cの判定状態に「OK」を格納し、配備先ノードIDに「クラウド」を格納する。これにより、モジュール「人単位計算」がクラウドに配備されるので、「クラウド」から「人単位電力」イベントが発生する旨がテーブル23bに追加されて、テーブル23dとなる。
その後、新規の「電力」イベントが検知されると、配備先決定部117は、テーブル23cの1行目のレコードを特定する。ここで、このレコードの発生ノードIDには電力イベントを発生する「センサ1」が含まれ、配備先ノードIDが「クラウド」、判定状態が「判定中」である。そして、判定終了時刻が経過すると(ステップS405)、配備先決定部117は、このレコードの再配備先ノードIDとして配備予定ノード「センサ1」を指定し(ステップS406)、データ特性制約の配備可否判定を行う(ステップS407)。テーブル22dに示したように、コンセントID「11」の「平均電力計算」に関連するマスタの変更回数は「1」であるので、変更回数の上限値が「2」以上に設定されている場合には、配備先決定部117は、「平均電力計算」を配備可と判定する(ステップS408肯定)。
続いて、テーブル22bを参照すると、「平均電力計算」はデータ参照を伴うモジュールであるので、配備先決定部117は、配備先ノードのリソース観点制約で配備可否判定を行う(ステップS417)。配備先決定部117は、テーブル22eを参照し、現在使用中のリソース量に配備しようとしているデータ量を加算して、配備可否を判定する。ここで、配備可と判定される(ステップS418肯定)と、配備先決定部117は、テーブル23cの「平均電力計算」の配備先ノードIDに再配備先ノードID「センサ1」を格納し(ステップS420)、判定状態に「OK」を格納、時刻を更新して、テーブル24aに更新する。
続いて、配備先決定部117は、例えば、部分参照データ抽出部119に部分参照データを抽出させる。このとき、部分参照データ抽出部119は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部111Bから読み出す。部分参照データ抽出部119は、参照データ記憶部162に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。ここでは、部分参照データ{11,Aさん}が抽出される。そして、配備先決定部117は、抽出した部分参照データ{11,Aさん}及びモジュールを配備先ノードIDに送信させる(ステップS421、S414)とともに、これまで配備されていたノードから当該部分参照データ及びモジュールを回収させる(ステップS415)。そして、配備先決定部117は、テーブル24dのデータ24eを削除してテーブル24fに更新するとともに、テーブル24aのデータ24bを削除してテーブル24cに更新する(ステップS416)。すなわち、テーブル24c及びテーブル24fは、「平均電力計算」の再配備後の状態に対応する。上記動作から、データ参照を伴う処理を配備する際、モジュール定義情報に従って必要データのみを抽出して配備することが可能であることが容易にわかる。
次に、上記の「平均電力計算」のセンサ1への再配備によって、センサ1からの新規「平均電力」イベントが発生すると、配備先決定部117は、図25のテーブル25aに示すように、再配備先から発生イベントを検知する。ここで、配備先決定部117は、配備先情報記憶部のテーブル24cの「人単位計算」を特定し(ステップS401)、対応する発生ノードIDにノードID「センサ1」が含まれない(ステップS403否定)ので、発生ノードである「センサ1」をテーブル25bの発生ノードIDに追加する(ステップS410)。そして、配備先決定部117は、テーブル22eを参照し、「平均電力」が集約されるノード「センサ1」を特定する(ステップS411)。モジュール「人単位計算」はデータ参照を伴わない(ステップS412否定)ので、配備先決定部117は、特定した「センサ1」を配備先ノードIDとしてテーブル25bに格納して図26のテーブル26aに更新する(ステップS413)。そして、配備先決定部117は、該当モジュール「人単位計算」を配備先ノードに送信(ステップS414)後、これまでの配備先(クラウド)から該当モジュールを回収(ステップS415)、テーブル25cのデータ25dを削除(ステップS416)してテーブル26bに更新する。なお、テーブル26a及びテーブル26bは、「人単位計算」の再配備後の状態に対応する。上記動作から、依存関係のある前処理の再配備に応じて、後続処理も連鎖的に再配備しなおすことが可能であることが容易にわかる。
図27及び図28を用いて、配備先決定部117の動作例2について説明する。図27及び図28は、配備先決定部の動作例2について説明するための図である。動作例2では、モジュール配備後に配備可否判定でNG判定された場合の配備先決定部117の動作例について説明する。テーブル27aは、図13のステップS202において集計された配備可否判定用のテーブルに対応する。テーブル27aには、モジュール「平均電力計算」の参照データのマスタの変更回数が「6」であり、変更回数の上限値を上回ってしまった場合を例示する。ここで、一例として、現在の配備先情報記憶部の状態が図26に示したテーブル26aである場合には、配備先決定部117は、該当するモジュール「平均電力計算」が配備済であるか否かを判定する(ステップS203)。ここでは、モジュール「平均電力計算」が配備済であるので(ステップS203肯定)、配備先決定部117は、当該モジュールの配備先ノードがクラウド以外のノードであるか否かを判定する(ステップS204)。ここでは、現在の配備先ノードが「センサ1」であるので(ステップS204肯定)、配備先決定部117は、センサ1に部分参照データを配備可能か否か判定する(ステップS205)。具体的には、モジュール定義情報内の配備可否判定に関する情報に基づき、参照データ特性に制約とリソース観点制約での判定を行う。ここでは、テーブル27aにおいて変更回数の上限値を上回ってしまって場合を示しているので、配備先決定部117は、判定状態に「NG」を格納する(ステップS208、S422)。そして、配備先決定部117は、配備先予定ノードIDに現在の配備先ノードID「センサ1」を格納し(ステップS423)、配備先ノードIDに「クラウド」を格納する(ステップS424)。すなわち、配備先決定部117は、テーブル26aをテーブル27bに更新する。
続いて、配備先決定部117は、部分参照データ及びモジュールを配備先ノードIDに送信させるとともに(ステップS414)、これまで配備していたノードから当該部分参照データ及びモジュールを回収させる(ステップS415)。そして、配備先決定部117は、テーブル27bのデータ27cを削除してテーブル28aに更新するとともに、テーブル27dのデータ27eを削除してテーブル28bに更新する(ステップS416)。なお、テーブル28a及びテーブル28bは、「平均電力計算」をクラウドに再配備した後の状態に対応する。
続いて、配備先決定部117は、テーブル28cに示すように、「平均電力」イベントをクラウドから受信する。ここで、配備先決定部117は、テーブル28aの「人単位計算」に対応する発生ノードIDにノードIDが含まれないので、テーブル28cを参照し、入力イベント型「平均電力」の発生ノードである「クラウド」をテーブル28aの発生ノードIDに格納する。そして、配備先決定部117は、テーブル22eを参照し、「平均電力」が集約されるノード「クラウド」を特定する。モジュール「人単位計算」はデータ参照を伴わないので、配備先決定部117は、特定した「クラウド」を配備先ノードIDとしてテーブル28aに格納してテーブル28dに更新する。
図29を用いて、部分参照データ不足検出からの配備可否判定処理について説明する。図29は、部分参照データ不足検出からの配備可否判定処理の手順を示すフローチャートである。この配備可否判定処理は、例えば、下位ノードから部分参照データ要求を受信した場合に処理が起動される。
図29に示すように、配備先決定部117は、下位ノードから部分参照データ要求されるのを待機する(ステップS501)。
続いて、配備先決定部117は、当該要求に基づいて、要求元の配備済モジュールと、配備対象データとを特定する(ステップS502)。そして、配備先決定部117は、配備可否判定を行う(ステップS503)。なお、この配備可否判定においては、参照データ特性制約としては該当配備対象のデータの変更頻度を用いて判定し、リソース観点制約としては配備先ノードのリソース量を用いて判定することとする。
そして、配備可である場合には(ステップS504肯定)、該当配備対象データを要求元ノードに配備し(ステップS505)、ステップS501の処理に戻る。このとき、配備先決定部117は、例えば、部分参照データ抽出部119に部分参照データを抽出させる。例えば、部分参照データ抽出部119は、配備されるモジュールに対応する検索キー、参照箇所及び抽出方法をモジュール定義記憶部111Bから読み出す。部分参照データ抽出部119は、参照データ記憶部162に記憶された参照データのうち検索キー、参照箇所及び抽出方法に対応する部分参照データを抽出する。また、配備不可である場合には(ステップS504否定)、図21のステップS422の処理を開始して再配備を実行する(ステップS506)。上記動作から、配備先ノードが新たな対象を検出した時などに送信する、部分参照データ要求の受信を契機に、不足している参照データを追加配備できることが容易にわかる。
なお、モジュール登録部111、トポロジ取得部112、イベント受信部113、モジュール実行部115、発生イベント登録部116には、各種の集積回路や電子回路を採用できる。また、部分参照データ要求受信部120、部分参照データ抽出部119、部分参照データ送信部163、配備先決定部117及びモジュール送信部118にも、各種の集積回路や電子回路を採用できる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
また、上記のモジュール記憶部111A、モジュール定義記憶部111B、トポロジ記憶部112A、イベント記憶部114には、半導体メモリ素子や記憶装置を採用できる。また、発生イベント情報記憶部116A、参照データ記憶部162及び配備先情報記憶部117Aなどの記憶部にも、半導体メモリ素子や記憶装置を採用できる。例えば、半導体メモリ素子としては、VRAM(Video Random Access Memory)、RAM(Random Access Memory)、ROM(Read Only Memory)やフラッシュメモリ(flash memory)などが挙げられる。また、記憶装置としては、ハードディスク、光ディスクなどの記憶装置が挙げられる。
[センサノードの構成]
次に、本実施例に係るセンサノードの機能的構成について説明する。図30は、実施例1に係るセンサノードの機能的構成を示すブロック図である。図30に示すセンサノード210は、センサ情報受信部211と、モジュール受信部212と、モジュール実行部213と、イベント送信部214とを有する。さらに、センサノード210は、部分参照データ受信部215と、部分参照データ記憶部216と、部分参照データ要求部217と、トポロジ検出部218と、トポロジ送信部219とを有する。
センサ情報受信部211は、センサノード210に内蔵または付設されたセンサデバイスからセンサ情報を受信する処理部である。例えば、センサ情報受信部211は、センサノード210に電力センサが内蔵されている場合には、電力センサによって計測された電力を受信する。また、例えば、センサ情報受信部211は、センサノード210に温度センサが内蔵されている場合には、温度センサによって計測された温度を受信する。また、例えば、センサ情報受信部211は、センサノード210に湿度センサが内蔵されている場合には、湿度センサによって計測された湿度を受信する。なお、センサノード210に複数のセンサデバイスが内蔵されている場合には、各々のセンサデバイスに対応してセンサ情報受信部211が設けられる。
モジュール受信部212は、サーバノード110からモジュールを受信する処理部である。このモジュール受信部212によって受信されたモジュールは、モジュールの実行制御を行うモジュール実行部213に出力される。また、モジュール受信部212は、例えば、モジュール回収要求を上位ノードから受信する。モジュール受信部212は、モジュール回収要求を受信すると、センサノード210に配備されているモジュールを削除する。
モジュール実行部213は、センサノード210に配備されたモジュールの実行制御を行う処理部である。例えば、モジュール実行部213は、センサ情報受信部211によってセンサ情報が受信された場合に、受信されたセンサ情報を入力イベント型とするモジュールがセンサノード210に配備されているか否かを判定する。このとき、モジュール実行部213は、モジュールがセンサノード210に配備されている場合には、当該モジュールを実行することによってイベントの加工処理を実行する。その際、後述するように必要に応じて部分参照データ記憶部内のデータを参照しながら加工処理を行う。その後、モジュール実行部213は、モジュールによって加工処理が実行されたデータを新たなイベントとしてイベント送信部214へ出力する。なお、モジュールがセンサノード210に配備されていない場合には、センサ情報を加工処理せずにそのままイベント送信部214へ出力する。
イベント送信部214は、イベントを上位ノードに送信する処理部である。例えば、イベント送信部214は、モジュール実行部213によって加工処理されたイベント、あるいはセンサ情報受信部211によってセンサデバイスから受信されたセンサ情報を上位ノードに送信する。このとき、イベント送信部214は、センサ情報を上位ノードに送信する場合には、発生ノードであるセンサノード210のノードID、自装置を含む複数のノードを集約する集約属性の属性名及び属性値をセンサ情報に付加する。その上で、イベント送信部214は、センサ情報とともに発生ノードのノードID及び集約属性を含むイベントを上位ノードに送信する。
ここで、上記の「集約属性」の属性名及び属性値は、センサノード210の製造段階でデバイスドライバなどに組み込んでおくことができる。例えば、センサデバイスが電力センサである場合には、電力が計測される枠組みである「コンセントID」などの集約属性をイベントに付加するようにデバイスドライバを構成しておく。その上で、センサノード210がサーバノード110との間で通信コネクションが確立された段階で、既にサービスに加入している他のセンサノード210に先だって付与されているコンセントIDの属性値をサーバノード110から自動的に取得することもできる。
部分参照データ受信部215は、部分参照データ送信部163によって送信された部分参照データを受信する処理部である。このようにして受信された部分参照データは後述の部分参照データ記憶部216に登録される。また、部分参照データ受信部215は、例えば、部分参照データ回収を受信する。部分参照データ受信部215は、部分参照データ回収を受信すると、当該部分参照データを部分参照データ記憶部216から削除する。
部分参照データ記憶部216は、部分参照データを記憶する記憶部である。この部分参照データ記憶部216は、センサノード210に配備されたモジュールによってイベントが加工処理される場合に、モジュール実行部213によって参照される。
部分参照データ要求部217は、部分参照データ要求をサーバノード110に送信する処理部である。例えば、部分参照データ要求部217は、モジュール実行部213によって部分参照データ記憶部216が参照された場合に、部分参照データの不足が検出されると、部分参照データ要求をサーバノード110に送信する。
トポロジ検出部218は、センサノード210がどの上位ノードに接続されているかを表すノード間の接続情報をトポロジとして検出する処理部である。例えば、トポロジ検出部218は、UPnPプロトコル等を用いて、センサノード210と同一のネットワーク内に存在するGWノード310を認識したり、サーバノード110からGWノード310の存在の通知を受けたりすることによってトポロジを検出する。なお、サーバノード110とのネットワーク接続の確立は、サーバノード110のURL等のアドレスを設定しておくことにより実現できる。さらに、トポロジ検出部218は、自ノード内の使用リソース量(記憶容量)を確認し、上記ノード間接続情報に付与などする。
トポロジ送信部219は、トポロジ検出部218によって検出されたトポロジをサーバノード110に送信する処理部である。例えば、トポロジ送信部219は、センサノード210が接続されている上位ノードのノードIDをサーバノード110に送信する。
[センサノードにおける処理の流れ]
次に、本実施例に係るセンサノード210における処理の流れについて説明する。図31は、実施例1に係るセンサノードにおける処理の手順を示すフローチャートである。図31に示した処理は、センサノード210の電源がON状態である限り、繰り返し実行される。
図31に示すように、新たな上位ノードを検出した場合(ステップS601肯定)には、センサノード210は、次のような処理を実行する。すなわち、センサノード210は、当該上位ノードのノードIDをサーバノード110へ送信する(ステップS602)。さらに、トポロジ検出部218は、自ノード内の使用リソース量(記憶容量)を確認し、上記ノード間接続情報に付与などする。なお、新たな上位ノードを検出しなかった場合(ステップS601否定)には、ステップS602の処理を実行せずにステップS603の処理へ移行する。
続いて、サーバノード110からモジュールを受信した場合(ステップS603肯定)には、センサノード210は、サーバノード110から受信したモジュールを配備する(ステップS604)。なお、モジュールを受信しなかった場合(ステップS603否定)には、ステップS604の処理を実行せずにステップS605の処理へ移行する。
ここで、部分参照データを受信した場合(ステップS605肯定)には、センサノード210は、部分参照データを部分参照データ記憶部216に格納する(ステップS606)。なお、部分参照データを受信しなかった場合(ステップS605否定)には、ステップS606の処理を実行せずにステップS607の処理へ移行する。
そして、センサデバイスからセンサ情報を受信した場合(ステップS607肯定)には、センサノード210は、当該センサ情報を入力イベント型とするモジュールが配備されているか否かをさらに判定する(ステップS608)。なお、センサ情報を受信しなかった場合(ステップS607否定)には、ステップS601の処理に戻る。
このとき、モジュールが配備されている場合(ステップS608肯定)には、センサノード210は、部分参照データ記憶部に部分参照データが配備されているか否かをさらに判定する(ステップS609)。なお、モジュールが配備されていない場合(ステップS608否定)には、センサノード210は、センサデバイスから受信したセンサ情報に発生ノードIDや集約属性などを付加した上で上位ノードへ送信し(ステップS614)、ステップS601の処理に移行する。
このとき、部分参照データが配備されている場合には(ステップS609肯定)、部分参照データを参照し、モジュールを実行することによってイベントを加工処理する(ステップS610)。そして、センサノード210は、加工処理が実行されたイベントを上位ノードへ送信し(ステップS611)、ステップS601の処理に移行する。
一方、部分参照データが配備されていない場合(ステップS609否定)には、センサノード210は、部分参照データ要求をサーバノード110へ送信する(ステップS612)。そして、センサノード210は、部分参照データに対応する部分参照データをサーバノード110から受信し、当該部分参照データを格納すると(ステップS613)、ステップS610の処理に移行する。なお、ステップS613の処理において、所定時間内に、部分参照データに対応する部分参照データをサーバノード110から受信しない場合には、サーバノード110は、センサデバイスから受信したセンサ情報に発生ノードIDや集約属性などを付加した上で上位ノードへ送信し、当該センサ情報を上位ノードにて処理することとしても良い。
[実施例1の効果]
上述してきたように、本実施例に係るサーバノード110は、データ参照を伴う処理を実行するモジュールをネットワークに接続されたノードに配備するセンサネットワークから入力イベントを受信する。サーバノード110は、モジュール定義記憶部を参照し、受信した入力イベントに関連する処理を実行するモジュールに対応付けられた参照データ抽出用情報と、参照箇所情報とに対応するデータを、マスタから抽出する。サーバノード110は、抽出されたデータをノードに配備する。このように、サーバノード110は、参照データから必要カラムの必要レコードのみを抽出してノードに配備するので、大量のレコードを配備することなくノードにて固有処理が実現できる。
また、例えば、サーバノード110は、指標に基づいて、受信した入力イベントに関連する処理を実行する前記モジュールを前記ノードに配備できるか否かを判定するので、将来の再配備にかかる通信負荷を軽減できる。
また、例えば、サーバノード110は、既に配備されたモジュールに関連する入力イベントを発生するノードが変更された場合に、その変更によって必要になる後続処理の配備先ノードの変更時も、該当配備先ノードに該当モジュールを配備できるか否かを判定するので、モジュールの配備に伴う再配備を簡易に実現できる。
また、例えば、サーバノード110は、モジュールが配備されたノードから、モジュールによって参照されるデータを要求する旨を示すデータ要求を受信した場合に、データ要求に対応するデータを前記マスタから抽出する。このため、サーバノード110は、データ参照に伴う通信負荷を軽減できる。
[適用例]
次に、開示技術の適用例について説明する。本開示技術は、上述した電力センシング以外の事例に対しても適用可能である。以降では事例として3種の適用例1〜3について説明する。
[適用例1]
図32を用いて、開示技術の適用例1について説明する。図32は、開示技術の適用例1について説明するための図である。適用例1としては、開示技術が、物流等の貯蔵物管理に適用できることを示したものである。具体的にはタグリーダ付き温度センサに適用される場合を示す。図32に示す適用例1では、開示技術が、タグリーダ付き温度センサに適用される場合を説明する。すなわち、適用例1では、いちごやメロンなどの青果を貯蔵する貯蔵庫に、貯蔵庫内の温度を測定する温度センサが備えられている場合を想定する。この温度センサから、温度センサのセンサID、貯蔵庫内の温度及び青果ごとに付されたタグのタグIDなどを含むイベントが発生する。イベントが検知されると、貯蔵物、つまり青果ごとに応じて適温かどうかを判定する処理がモジュール実行部で実行される。この処理では、モジュール実行部に配備された処理は、貯蔵庫内の各センサ(センサID)が検出したタグIDに応じた青果に紐付けられた貯蔵条件を含む参照データが部分参照データとして必要となるが、図5のデータ5dのケースを用いた間接参照に基づき、センサID⇒タグID⇒青果名⇒貯蔵条件と辿り、必要な参照データ{タグID、貯蔵条件}のみを配備することができる。このように、開示技術は、タグリーダ付き温度センサに好適に適用される。
[適用例2]
図33を用いて、開示技術の適用例2について説明する。図33は、開示技術の適用例2について説明するための図である。図33に示す適用例2では、開示技術が、工場などでの作業支援に適用できることを示したものである。具体的にはモーションセンサによる作業効率の評価に適用される場合を説明する。すなわち、適用例2では、ある生産ラインに含まれる複数の工程が各作業員に分担されている場合に、各工程で作業する作業員の動作を検出するモーションセンサに開示技術が適用された場合を想定する。このモーションセンサから、センサID、作業員の作業中の動作を示すモーションデータ及び作業ごとの作業IDなどを含むイベントが発生する。イベントが検知されると、モーションデータが解析され、モジュール実行部で作業員の作業の効率を評価する処理が実行される。この処理では、作業IDに紐付けられた評価基準を含む参照データが参照される。なお、この評価によって効率の良い作業中の動作が検出された場合には、その動作はノウハウとして抽出され、さらに、その動作を示すモーションデータが評価用の参照データとして更新・再配備される。この処理ではモジュール実行部に配備された処理は、各モーションセンサ(センサID)に解析対象とする作業IDに応じた適正動作判定用のデータを必要とする。この場合も適用例1と同様に間接参照に基づいて必要データのみを配備することができる。このように、開示技術は、モーションセンサによる作業効率の評価に好適に適用される。
[適用例3]
図34を用いて、開示技術の適用例3について説明する。図34は、開示技術の適用例3について説明するための図である。図34に示す適用例3では、開示技術が、工作機械の稼働状態の監視に適用される場合を説明する。すなわち、適用例3では、工作機械の稼働状態を検出するセンサに開示技術が適用された場合を想定する。このセンサから、工作機械の機器ID、稼働状態、機械使用者のIDを含むイベントが発生する。この稼働状態の例としては、工作機械に搭載された消耗品の使用量、使用者による使用状況などを含む。イベントが検知されると、モジュール実行部で工作機械に搭載された消耗品の消耗状況、安全に使用されているか否かを示す使用状況などを使用者ごとに判定する処理が実行される。この処理では、モジュール実行部に配備された処理は、機械IDに対応づく機械が有する消耗品に対する交換時期に関するデータや、機械IDに対応づく危険操作/適正操作等の操作安全性に関するデータなどを含む参照データを必要とする。この場合も適用例1と同様に間接参照に基づいて、機械ID⇒消耗品⇒交換時期データや機械ID⇒操作安全性データなどと辿り、必要データのみを配備することができる。このように、開示技術は、工作機械の稼働状態の監視に好適に適用される。
以上、適用例1〜3に示したように、種々のソリューション事例であっても、開示技術は好適に適用される。