(57)【特許請求の範囲】
【請求項１】
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段と、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段と、
を含み、
前記データ処理手段は、
前記部分処理の処理対象となるデータに直前に実行されることが設定された部分処理を特定する第１識別情報と、実行する前記部分処理を特定する第２識別情報と、を対応付けて記憶する記憶手段と、
前記配信手段から受信したデータである受信データが、前記データ処理手段が実行するように設定された前記部分処理の処理対象であるか否かを、前記受信データに付加された識別情報に基づいて判別する判別手段であって、前記受信データに付加されている前記識別情報が前記第１識別情報と一致する場合に、前記受信データが前記部分処理の処理対象であると判別する、判別手段と、
前記判別手段が、前記受信データが前記部分処理の処理対象であると判別すると、前記部分処理を実行する処理実行手段と、
前記処理実行手段による前記部分処理の実行結果であるデータに新たな前記識別情報として前記第２識別情報を付加し、前記第２識別情報を付加したデータを前記配信手段に送信する送信手段と、
を備える、
データ処理システム。
【請求項２】
前記判別手段は、前記受信データに付加されている前記識別情報が前記第１識別情報と一致しない場合に、前記受信データが前記部分処理の処理対象ではないと判別し、
前記処理実行手段は、前記判別手段が前記受信データが前記部分処理の処理対象ではないと判別すると、前記受信データを破棄する、
請求項１に記載のデータ処理システム。
【請求項３】
前記判別手段が、前記受信データが前記部分処理の処理対象であると判別した場合、前記処理実行手段は、前記受信データから前記第１識別情報を削除し、そのデータに前記部分処理を実行し、
前記送信手段は、前記処理実行手段が前記部分処理を実行した後のデータに前記第２識別情報を付加し、前記第２識別情報を付加したデータを前記配信手段に送信する、
請求項１または２に記載のデータ処理システム。
【請求項４】
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段と、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段と、
を含み、
前記データ処理手段は、
実行対象の前記部分処理の処理対象であるデータがその直前に実行対象であった前記部分処理の工程から前記部分処理の工程に流されたデータであることを特定する前工程間識別情報と、実行対象である前記部分処理を特定する処理識別情報と、データが実行対象である前記部分処理の工程からその直後に実行すべきである前記部分処理の工程に流されたデータであることを特定する後工程間識別情報と、を対応付けて記憶する記憶手段と、
前記配信手段から受信したデータである受信データが、前記データ処理手段が実行するように設定された前記部分処理の処理対象であるか否かを、前記受信データに付加された識別情報に基づいて判別する判別手段であって、前記受信データに付加されている識別情報が、複数の前記処理識別情報のうちのいずれか１つに対応する前記前工程間識別情報と一致する場合に、前記受信データが前記部分処理の処理対象であると判別する、判別手段と、
前記判別手段が、前記受信データが前記部分処理の処理対象であると判別すると、前記受信データに前記部分処理を実行する処理実行手段と、
前記処理実行手段が実行対象である前記部分処理を実行した後のデータに新たな前記識別情報として実行した前記部分処理の工程からその直後に実行すべき前記部分処理の工程に対応する前記後工程間識別情報を前記記憶手段から取得して付加し、新たな前記識別情報を付加したデータを前記配信手段に送信する送信手段と、
を備える、
データ処理システム。
【請求項５】
前記判別手段が、前記受信データに付加された前記識別情報に基づいて、前記受信データに付加されている前記識別情報が、複数の前記前工程間識別情報のうちのいずれにも一致しないと判別すると、前記処理実行手段は、前記受信データを破棄する、
請求項４に記載のデータ処理システム。
【請求項６】
機器から収集されたデータであって、前記処理フローのうち最初の部分処理が実行される前のデータに前記識別情報を付加し、前記識別情報を付加したデータを前記配信手段に送信するフロー制御手段、
を備え、
前記配信手段は、
前記フロー制御手段から受信したデータを、前記データ処理手段に配信する、
請求項１から５のいずれか１項に記載のデータ処理システム。
【請求項７】
前記配信手段は、受信したデータに付加された前記識別情報に基づいて、前記処理フローについて設定されたすべての部分処理が完了したと判別すると、そのデータを前記フロー制御手段に供給し、
前記フロー制御手段は、前記処理フローについて設定されたすべての部分処理が完了したデータに基づいて、前記機器に指示を出力する、
請求項６に記載のデータ処理システム。
【請求項８】
前記機器から収集したデータを前記フロー制御手段に供給する収集手段、
を備える、
請求項６または７に記載のデータ処理システム。
【請求項９】
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段と、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段と、
を含み、
前記データ処理手段は、
前記部分処理の処理対象となるデータに直前に実行されることが設定された部分処理を特定する第１識別情報と、実行する前記部分処理を特定する第２識別情報と、を対応付けて記憶する記憶手段と、
前記配信手段から受信したデータである受信データが、前記データ処理手段が実行するように設定された前記部分処理の処理対象であるか否かを、前記受信データに付加された識別情報に基づいて判別する判別手段であって、前記受信データに付加されている前記識別情報が前記第１識別情報と一致する場合に、前記受信データが前記部分処理の処理対象であると判別する、判別手段と、
前記判別手段が、前記受信データが前記部分処理の処理対象であると判別すると、前記部分処理を実行する処理実行手段と、
前記処理実行手段による前記部分処理の実行結果であるデータに新たな前記識別情報として前記第２識別情報を付加し、前記第２識別情報を付加したデータを前記配信手段に送信する送信手段と、
を備える、
データ処理装置。
【請求項１０】
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段と、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段と、
を含み、
前記データ処理手段は、
実行対象の前記部分処理の処理対象であるデータがその直前に実行対象であった前記部分処理の工程から実行対象である前記部分処理の工程に流されたデータであることを特定する前工程間識別情報と、実行対象である前記部分処理を特定する処理識別情報と、データが実行対象である前記部分処理の工程からその直後に実行すべきである前記部分処理の工程に流されたデータであることを特定する後工程間識別情報と、を対応付けて記憶する記憶手段と、
前記配信手段から受信したデータである受信データが、前記データ処理手段が実行するように設定された前記部分処理の処理対象であるか否かを、前記受信データに付加された識別情報に基づいて判別する判別手段であって、前記受信データに付加されている識別情報が、複数の前記処理識別情報のうちのいずれか１つに対応する前記前工程間識別情報と一致する場合に、前記受信データが実行対象である前記部分処理の処理対象であると判別する、判別手段と、
前記判別手段が、前記受信データが実行対象である前記部分処理の処理対象であると判別すると、前記受信データに前記部分処理を実行する処理実行手段と、
前記処理実行手段が実行対象である前記部分処理を実行した後のデータに新たな前記識別情報として実行した前記部分処理の工程からその直後に実行すべき前記部分処理の工程に対応する前記後工程間識別情報を前記記憶手段から取得して付加し、新たな前記識別情報を付加したデータを前記配信手段に送信する送信手段と、
を備える、
データ処理装置。
【請求項１１】
データ処理手段が、順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行するデータ処理ステップと、
配信手段が、出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信ステップと、
記憶手段が、前記部分処理の処理対象となるデータに直前に実行されることが設定された部分処理を特定する第１識別情報と、前記データ処理手段が実行する前記部分処理を特定する第２識別情報と、を対応付けて記憶する記憶ステップと、
を含み、
前記配信ステップでは、
前記配信手段が、前記データ処理手段に前記データを送信し、又は、前記データ処理ステップにおいて前記データ処理手段から送信された前記データを受信し、
前記データ処理ステップでは、前記データ処理手段が、
前記配信手段から受信したデータである受信データに付加されている識別情報が前記記憶ステップにおいて前記記憶手段に記憶された前記第１識別情報と一致する場合に、前記受信データが前記部分処理の処理対象であると判別し、
前記受信データが前記部分処理の処理対象であると判別すると、前記部分処理を実行し、
前記部分処理の実行結果であるデータに新たな前記識別情報として前記記憶ステップにおいて前記記憶手段に記憶された前記第２識別情報を付加し、前記第２識別情報を付加したデータを前記配信手段に送信する、
データ処理方法。
【請求項１２】
データ処理手段が、順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行するデータ処理ステップと、
配信手段が、出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信ステップと、
記憶手段が、実行対象の前記部分処理の処理対象であるデータがその直前に実行対象であった前記部分処理の工程から前記部分処理の工程に流されたデータであることを特定する前工程間識別情報と、実行対象である前記部分処理を特定する処理識別情報と、データが実行対象である前記部分処理の工程からその直後に実行すべきである前記部分処理の工程に流されたデータであることを特定する後工程間識別情報と、を対応付けて記憶する記憶ステップと、
を含み、
前記配信ステップでは、
前記配信手段が、前記データ処理手段に前記データを送信し、又は、前記データ処理ステップにおいて前記データ処理手段から送信された前記データを受信し、
前記データ処理ステップでは、前記データ処理手段が、
前記配信手段から受信したデータである受信データに付加されている識別情報が前記記憶ステップにおいて前記記憶手段に記憶された複数の前記処理識別情報のうちのいずれか１つに対応する前記前工程間識別情報と一致する場合に、前記受信データが実行対象である前記部分処理の処理対象であると判別し、
前記受信データが実行対象である前記部分処理の処理対象であると判別すると、前記受信データに前記部分処理を実行し、
実行対象である前記部分処理を実行した後のデータに新たな前記識別情報として実行した前記部分処理の工程からその直後に実行すべき前記部分処理の工程に対応する前記後工程間識別情報を前記記憶手段から取得して付加し、新たな前記識別情報を付加したデータを前記配信手段に送信する、
データ処理方法。
【請求項１３】
コンピュータを、
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段、
として機能させ、
前記データ処理手段に、
前記部分処理の処理対象となるデータに直前に実行されることが設定された部分処理を特定する第１識別情報と、前記データ処理手段が実行する前記部分処理を特定する第２識別情報と、を対応付けて記憶させ、
前記配信手段から受信したデータである受信データに付加されている識別情報が前記第１識別情報と一致する場合に、前記受信データが前記部分処理の処理対象であると判別させ、
前記受信データが前記部分処理の処理対象である場合に、前記部分処理を実行させ、
前記部分処理の実行結果であるデータに新たな前記識別情報として前記第２識別情報を付加させ、
前記第２識別情報を付加したデータを前記配信手段に送信させる、
プログラム。
【請求項１４】
コンピュータを、
順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段、
出版／購読型モデルに従って、前記データ処理手段の間におけるデータのやり取りを仲介する配信手段、
として機能させ、
前記データ処理手段に、
実行対象である前記部分処理の処理対象であるデータがその直前に実行対象であった前記部分処理の工程から前記部分処理の工程に流されたデータであることを特定する前工程間識別情報と、実行対象である前記部分処理を特定する処理識別情報と、データが実行対象である前記部分処理の工程からその直後に実行すべきである前記部分処理の工程に流されたデータであることを特定する後工程間識別情報と、を記憶手段に対応付けて記憶させ、
前記配信手段から受信したデータである受信データが、前記データ処理手段が実行するように設定された前記部分処理の処理対象であるか否かを、前記受信データに付加された識別情報に基づいて、前記受信データに付加されている識別情報が、複数の前記処理識別情報のうちのいずれか１つに対応する前記前工程間識別情報と一致する場合に、前記受信データが実行対象である前記部分処理の処理対象であると判別させ、
前記受信データが実行対象である前記部分処理の処理対象であると判別すると、前記受信データに前記部分処理を実行させ、
実行対象である前記部分処理を実行した後のデータに新たな前記識別情報として実行した前記部分処理の工程からその直後に実行すべき前記部分処理の工程に対応する前記後工程間識別情報を前記記憶手段から取得して付加し、新たな前記識別情報を付加したデータを前記配信手段に送信させる、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システム、データ処理装置、データ処理方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１に開示されている情報処理システムにおいては、データ処理装置が、データの生成者である作用装置が送信したデータに決められた処理を実行し、処理後のデータをデータの需要者である他の作用装置に送信する。この情報処理システムにおいては、データの生成者である作用装置と、データ処理装置と、データの需要者である他の作用装置とが、出版／購読型モデルに従ってデータ交換する。データ処理装置は、出版／購読型モデルに従ったデータ交換を仲介するブローカと、データに決められた処理を実行するフロー関数とを備えている。【０００３】
データの生成者である作用装置が、生成したデータを、ブローカに設定された決められたチャネルに出版する。よって、ブローカは、そのチャネルを購読しているフロー関数にデータを渡す。さらに、フロー関数が、処理後のデータをブローカに設定された他のチャネルに出版すると、ブローカは、そのチャネルを購読している他の作用装置にデータを渡す。このように、特許文献１に記載されている情報処理システムにおいては、データをやり取りする２つの処理部が決められたチャネルを使用してデータをやり取りすることで、２つの処理部間でデータを一対一でやり取りすることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１６５１７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された構成では、データを決められた順序で処理するため、複数のチャネルをブローカに設定する必要がある。図１５に、複数の処理部が連携して処理を行うためブローカに複数のチャネルを設定する例を示す。図示するように、ブローカＢ１にはチャネルＸとチャネルＹとが設定されている。ここでは、処理部Ａ２がチャネルＸを購読し、処理部Ａ３がチャネルＹを購読するよう設定されている。処理部Ａ１が、チャネルＸにデータを出版すると、ブローカＢ１はデータを処理部Ａ２に配信する。処理部Ａ２はチャネルＸから受信したデータを処理する。処理部Ａ２が、処理した後のデータをチャネルＹに出版すると、ブローカＢ１はデータを処理部Ａ３に配信する。処理部Ａ３はチャネルＹから受信したデータを処理する。このように、ブローカＢ１に複数のチャネルを設定することで、データを決められた順序で処理部に流すことができる。【０００６】
ここで、データの処理の流れが変更された場合には、チャネルの追加、削除等について、ブローカの設定を変更する必要がある。さらに、出版または購読するチャネルについて、それぞれの処理部の設定を変更する必要がある。例えば、図１６に示すように、新たに処理部Ａ４が追加され、処理部Ａ２が処理したデータを、処理部Ａ４が処理し、その後、データが処理部Ａ３に供給される、というように処理の流れが変更されたとする。【０００７】
この場合、次のような設定変更が必要となる。ブローカＢ１に、新たにチャネルＺを追加する。チャネルＹを購読するように処理部Ａ４の設定を変更する。さらに、処理後のデータをチャネルＺに出版するように処理部Ａ４の設定を変更する。処理部Ａ３の購読するチャネルをチャネルＹに変更する。このように、データの処理の流れが変更された場合には、ブローカのチャネルの設定を変更し、さらに、出版または購読するチャネルについて、それぞれの処理部の設定を変更する必要がある。特許文献１に記載されている構成では、設定変更に係るユーザの作業負担が重くなる。【０００８】
本発明は、上記実情に鑑みてなされたものであり、出版／購読型モデルに従ったメッセージングを採用したシステムにおいて、簡易な構成で、複数の処理部が連携してデータを順次処理することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係るデータ処理システムは、順次実行される複数の部分処理を含む処理フローのうち設定された部分処理を実行する複数のデータ処理手段と、出版／購読型モデルに従って、データ処理手段の間におけるデータのやり取りを仲介する配信手段と、を含む。データ処理手段が備える記憶手段は、部分処理の処理対象となるデータに直前に実行されることが設定された部分処理を特定する第１識別情報と、処理実行手段が実行する部分処理を特定する第２識別情報と、を対応付けて記憶する。データ処理手段が備える判別手段は、配信手段から受信したデータである受信データが、データ処理手段が実行するように設定された部分処理の処理対象であるか否かを、受信データに付加された識別情報に基づいて判別し、受信データに付加されている識別情報が第１識別情報と一致する場合に、受信データが部分処理の処理対象であると判別する。データ処理手段が備える処理実行手段は、判別手段が、受信データが部分処理の処理対象であると判別すると、部分処理を実行する。データ処理手段が備える送信手段は、処理実行手段による部分処理の実行結果であるデータに新たな識別情報として第２識別情報を付加し、第２識別情報を付加したデータを配信手段に送信する。
【発明の効果】
【００１０】
本発明に係るデータ処理システムにおいて、データ処理手段は、配信手段から受信した受信データが、データ処理手段が実行するように設定された部分処理の対象であるか否かを、受信データに付加された識別情報に基づいて判別する。データ処理手段は、受信データが部分処理の対象であると判別すると、部分処理を実行し、部分処理の実行結果であるデータに新たな識別情報を付加し、新たな識別情報を付加したデータを配信手段に送信する。このような構成を備えることで、出版／購読型モデルに従ったメッセージングを採用した場合に、簡易な構成で、複数の処理部が連携してデータを順次処理することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施の形態に係るデータ処理システムの構成を示すブロック図
【図２】実施の形態に係る処理フローの設定の一例を示す図
【図３】実施の形態に係る出版／購読型モデルに従ったメッセージングを説明するための図
【図４】実施の形態に係るデータ処理装置のハードウェア構成を示すブロック図
【図５】実施の形態に係るデータ処理装置の機能構成を示すブロック図
【図６】実施の形態に係るＩＤ記憶部に登録されるデータの一例を示す図
【図７】実施の形態に係るメッセージの一例を示す図
【図８】実施の形態に係るデータ処理部のメッセージ処理のフローチャート
【図９Ａ】実施の形態に係るＩＤ記憶部に登録されるデータの例を示す図
【図９Ｂ】実施の形態に係るＩＤ記憶部に登録されるデータの他の例を示す図
【図９Ｃ】実施の形態に係るＩＤ記憶部に登録されるデータのさらに他の例を示す図
【図１０】実施の形態に係るデータ配信部間でやり取りされるデータの流れの例を示す図
【図１１】変形例１に係るＩＤ記憶部に登録されるデータの例を示す図
【図１２】変形例３に係る処理フローの他の例を示す図
【図１３】変形例４に係るデータに付加されるＩＤを説明するための図
【図１４】ブローカにトピックを設定した場合の出版／購読型モデルに従ったメッセージングを説明するための図
【図１５】従来技術を説明するための図
【図１６】従来技術の問題点を説明するための図
【発明を実施するための形態】
【００１２】
（実施の形態）
以下、本発明の実施の形態に係るデータ処理装置について、図面を参照しつつ詳細に説明する。
【００１３】
実施の形態に係るデータ処理装置１０は、例えば、図１に示すように、機器６１、６２にネットワーク７０１を介して接続されており、データ処理システム１を構成する。実施の形態においては、データ処理装置１０は、例えば、機器６１、６２と同じ工場内に配置されているＩＰＣ（Industrial Personal Computer）である。機器６１、６２は、例えば、アクチュエータ、ロボットといったＦＡ機器である。以下、機器６１、６２を機器６０と称することがある。ネットワーク７０１は、例えば、フィールドネットワークの規格に則ったネットワークである。
【００１４】
データ処理装置１０は、機器６０が備えるセンサが取得したデータを機器６０から収集する。機器６０が備えるセンサは、例えば、振動センサ、温度センサ、圧力センサ、流量センサである。データ処理装置１０は、例えば、機器６０からデータを収集し、収集したデータに、加工処理、分析処理等の各種のデータ処理を実行する。
【００１５】
データ処理装置１０は、連携して一連の処理を行う複数の処理部を含む。データ処理装置１０が実行する処理として、例えば、図２に示すように、順次実行される部分処理Ｐ１０１、Ｐ１０２、…、Ｐ１０５を含む処理フローＰ１００が、ユーザによって規定されている。
【００１６】
処理フローＰ１００は、機器６０が出力したデータに対して実行する部分処理を含む。図２中の矢印はデータの伝送を示す。例えば、部分処理Ｐ１０１は機器６０からデータを収集する処理であり、部分処理Ｐ１０５はデータ出力である。例えば、部分処理Ｐ１０１の実行により機器６０からデータが収集され、収集されたデータに部分処理Ｐ１０２が施される。続いて、部分処理Ｐ１０２が施されたデータに部分処理Ｐ１０３が施される。さらに、部分処理Ｐ１０３が施されたデータに部分処理Ｐ１０４が施される。部分処理Ｐ１０４が施されたデータは部分処理Ｐ１０５の処理対象となり、例えば、データ処理装置１０の外部へ出力される。
【００１７】
データ処理装置１０は、処理フローについて定義された内容を示す設定データを有しており、定義された処理フローの設定に従った処理を実行する。具体的には、データ処理装置１０が備える処理部が、決められた順序で決められた部分処理を実行する。
【００１８】
また、実施の形態において、データ処理装置１０の部分処理を実行する処理部は、出版／購読型モデルに従ってデータをやり取りする。各処理部の機能は、例えば、それぞれのアプリケーションにより実現される。
【００１９】
出版／購読型モデルにおいて、メッセージを送信する側のアプリケーションをパブリッシャといい、メッセージを受信する側のアプリケーションをサブスクライバという。パブリッシャとサブスクライバとのデータ交換を仲介するアプリケーションをブローカという。
【００２０】
図３に出版／購読型モデルに従ったメッセージングの一例を示す。図示するように、パブリッシャＰ１は、メッセージＭ１を生成し、生成したメッセージＭ１をブローカＢ１に送信する。パブリッシャＰ１がメッセージＭ１を送信することを出版ということがある。サブスクライバＳ１、Ｓ２、Ｓ３はメッセージの購読をブローカＢ１に要求する。サブスクライバＳ１、Ｓ２、Ｓ３が出版されたメッセージを受信することを購読ということがある。ブローカＢ１は、メッセージＭ１の購読を要求しているサブスクライバＳ１、Ｓ２、Ｓ３に、パブリッシャＰ１が出版したメッセージＭ１を送信する。
【００２１】
出版／購読型モデルに従ったメッセージングでは、パブリッシャＰ１は、メッセージＭ１の受信者を想定せずにメッセージＭ１を送信する。サブスクライバＳ１、Ｓ２、Ｓ３は、メッセージＭ１の送信者を想定せずにメッセージＭ１を受信する。出版／購読型モデルに従ったメッセージングを採用することで、パブリッシャＰ１とサブスクライバＳ１、Ｓ２、Ｓ３との結合度が低くなり、システムのスケーラビリティが高くなる。その一方で、メッセージの送信者は特定の受信者だけにメッセージを送信することができず、メッセージの受信者はメッセージの送信者を特定することができない。
【００２２】
前述のように、データ処理装置１０においては、複数の処理部が、部分処理を順次実行する。処理部はそれぞれ、処理フローで規定された順に部分処理を実行する必要がある。このため、実施の形態に特徴的な構成として、データ処理装置１０の処理部がやり取りするデータには、処理フローの進捗度を識別するための識別情報が付加されている。具体的には、識別情報は、そのデータに施された直前の部分処理を特定するための情報である。各処理部は、識別情報により受信したデータが処理対象のデータであるか否かを判別する。
【００２３】
図４に示すように、データ処理装置１０は、ハードウェア構成として、データ処理装置１０全体を制御するＣＰＵ（Central Processing Unit）１１と、各種のプログラム及びデータを記憶するメモリ１２と、ネットワーク７０１を介して他の装置と通信する通信インタフェース１３と、ユーザインタフェースである入力デバイス１４及び出力デバイス１５とを有する。メモリ１２と通信インタフェース１３と入力デバイス１４と出力デバイス１５とは、バス１９を介してＣＰＵ１１と接続されており、それぞれＣＰＵ１１と通信する。
【００２４】
ＣＰＵ１１は、メモリ１２に記憶されているプログラムを実行することにより、後述する処理を実行する。
【００２５】
メモリ１２は、揮発性メモリと不揮発性メモリとを含む。メモリ１２は、データ処理装置１０の各種機能を実現するためのプログラムを格納する。さらに、メモリ１２はＣＰＵ１１のワークメモリとして用いられる。
【００２６】
通信インタフェース１３は、ネットワークインタフェース回路を含み、ＣＰＵ１１の制御の下、ネットワーク７０１を介して機器６０と通信する。
【００２７】
入力デバイス１４は、入力キー、ポインティングデバイス等を含む。入力デバイス１４は、ユーザからの操作入力を受け付け、ユーザの操作入力を示す信号をＣＰＵ１１に出力する。ユーザは、例えば、データ処理装置１０の管理者である。
【００２８】
出力デバイス１５は、ディスプレイ、スピーカ等を含む。出力デバイス１５は、ＣＰＵ１１から供給された信号に基づく画像をディスプレイに表示する。出力デバイス１５は、ＣＰＵ１１から供給された信号に基づく音声をスピーカから出力する。
【００２９】
図５に示すように、データ処理装置１０は、機能的には、機器６０からデータを収集するデータ収集部１００と、処理フローを制御する実行制御部２００と、部分処理を実行するデータ処理部３００と、ユーザとの間で情報を授受するユーザインタフェース部４００と、処理フローの設定を受け付ける受付部５００と、各種データを記憶する記憶部６００とを含む。図５において、矢印の向きは、データ処理装置１０の各部の間で、データ、信号等が流れる向きを示す。
【００３０】
データ収集部１００は、機器６０に設けられたセンサが取得したデータを、機器６０から収集する。データ収集部１００は、例えば、指定された対象から指定された収集間隔で指定されたデータを収集する。データ収集部１００は、収集したデータを実行制御部２００に供給する。データ収集部１００の機能は、主として図４に示すＣＰＵ１１、通信インタフェース１３により実現される。データ収集部１００は、本発明に係る収集手段の一例である。
【００３１】
図５に示す実行制御部２００は、データ配信部２１０とフロー制御部２２０とを含む。実行制御部２００の機能は、主として図４に示すＣＰＵ１１により実現される。
【００３２】
図５に示すデータ配信部２１０は、出版／購読型モデルにおけるブローカとして動作し、データ処理部３００間のデータのやり取りを仲介する。後述するフロー制御部２２０は、パブリッシャとして動作する。データ処理部３００は、パブリッシャかつサブスクライバとして動作する。データ配信部２１０は、フロー制御部２２０から受信したデータを含むメッセージをデータ処理部３００に配信する。データ配信部２１０がフロー制御部２２０から受信したデータは、データ収集部１００が機器６０から収集したデータである。さらに、データ配信部２１０は、データ処理部３００から受信した部分処理が施されたデータを含むメッセージをデータ処理部３００に配信する。データ配信部２１０は、データ処理部３００から受信したデータに付加された識別情報からすべての部分処理が完了したと判別すると、そのデータをフロー制御部２２０に出力する。データ配信部２１０は、本発明に係るデータ配信手段の一例である。
【００３３】
フロー制御部２２０は、定義された処理フローの設定に従って、データ収集部１００から供給されたデータを含むメッセージをデータ配信部２１０に出力する。処理フローは次のように設定される。後述の受付部５００が、ユーザから処理フローの設定を受け付け、フロー制御部２２０に通知する。フロー制御部２２０は、通知された処理フローの設定を示すデータを記憶部６００に格納する。また、フロー制御部２２０は、データ配信部２１０からすべてのデータ処理部３００による部分処理が実行されたデータを含むメッセージを受信すると、例えば、処理結果に基づく指示を機器６０に出力する。あるいは、フロー制御部２２０は、処理結果に基づき、決められたアプリケーションを起動してもよい。また、あるいは、フロー制御部２２０は、データ配信部２１０からすべてのデータ処理部３００による部分処理が実行されたデータを含むメッセージを受信すると、受信したデータが示す処理結果をユーザに提示してもよい。フロー制御部２２０は、本発明に係るフロー制御手段の一例である。
【００３４】
データ処理部３００は、データ配信部２１０から受信したメッセージに含まれているデータに自身が実行するように設定された部分処理を施し、部分処理を施したデータを含むメッセージをデータ配信部２１０に送信する。データ配信部２１０から受信したデータは、本発明の受信データの一例である。図５に示す例では、データ処理部３００は、データ処理部３０１、３０２、３０３を含む。例えば、データ処理部３０１は、加工処理１を実行する。データ処理部３０２は、加工処理２を実行する。データ処理部３０３は、データ処理部３０２が加工したデータを分析する。加工処理１、２は、データの分析前に必要な前処理である。
【００３５】
以下、データ処理部３００の具体的な機能を説明する。データ処理部３００は、データ変換部３１０と、ＩＤ記憶部３２０と、ＩＤ照合部３３０と、データ処理実行部３４０とを含む。データ処理部３００の機能は、主として図４に示すＣＰＵ１１、メモリ１２により実現される。データ処理部３００は、本発明に係るデータ処理手段の一例である。
【００３６】
図５に示すデータ変換部３１０は、データ配信部２１０とメッセージを送受信するインタフェースとして動作する。さらに、データ変換部３１０は、データ配信部２１０から受信したメッセージに含まれているデータを、後述のデータ処理実行部３４０が処理可能な形式に変換する。
【００３７】
例えば、データ変換部３１０がデータ配信部２１０から受信するメッセージは、図７に示すように、ヘッダとメッセージ本文とを含む。メッセージ本文は、データ処理部３００が処理するデータを含む。ヘッダはＩＤを含む。前述したように、データ処理装置１０内において、データ処理部３００がやり取りするデータには、処理フローの進捗度を識別するための識別情報が付加されている。ここで、ＩＤは、処理フローの進捗度を識別するための識別情報としての役割を持つ。ＩＤは、任意の値でよく、例えば、初期値から順次加算される数値であってもよいし、あるいは、数値と文字列とを含むものであってもよい。
【００３８】
図５に示すデータ変換部３１０は、データ配信部２１０からメッセージを受信すると、受信したメッセージをメッセージ本文とヘッダとに分離する。データ変換部３１０は、ヘッダからＩＤを抽出し、ＩＤをＩＤ照合部３３０に出力する。さらに、データ変換部３１０は、メッセージ本文をデータ処理実行部３４０に出力する。
【００３９】
データ変換部３１０は、データ処理実行部３４０からから処理済みのデータが供給されると、メッセージを生成する。具体的には、データ変換部３１０は、処理済みのデータをメッセージ本文にセットし、現在の工程のＩＤをヘッダにセットして、メッセージを生成する。現在の工程のＩＤは、後述のＩＤ照合部３３０からデータ変換部３１０に通知される。データ変換部３１０は、生成したメッセージをデータ配信部２１０に送信する。データ変換部３１０は、本発明に係る送信手段の一例である。
【００４０】
ＩＤ記憶部３２０は、データ処理実行部３４０が部分処理を実行する現在の工程のＩＤと、その工程の直前の工程のＩＤとの対応付けを記憶する。現在の工程のＩＤは、データ処理実行部３４０が実行する部分処理を特定する情報である。直前の工程のＩＤは、データ処理実行部３４０が実行する部分処理の対象となるデータに直前に実行されることが設定された部分処理を特定する情報である。例えば、ＩＤ記憶部３２０は、図６に示すように、直前の工程を示すＩＤと現在の工程を示すＩＤとを対応付けたデータを記憶する。データ処理部３００が受信したデータに付加されているＩＤは、直前に部分処理を実行した他のデータ処理部３００が付加したものである。データに直前の工程のＩＤが付加されている場合、そのデータは、データ処理部３００が部分処理を実行すべきでデータであることを示す。
【００４１】
なお、最初の部分処理を実行するデータ処理部３００の処理の対象は、いずれの部分処理も施されていないデータである。このデータは、具体的には、データ収集部１００から、フロー制御部２２０を介してデータ配信部２１０に供給されたデータである。この場合、最初の部分処理を実行するデータ処理部３００が有するＩＤ記憶部３２０には、直前の工程のＩＤとして、データにいずれの部分処理も施されていないことを示すＩＤが格納されている。フロー制御部２２０が、このＩＤをデータに付加するものとする。直前の工程のＩＤは、本発明に係る第１識別情報の一例である。現在の工程のＩＤは、本発明に係る第２識別情報の一例である。ＩＤ記憶部３２０は、本発明に係る記憶手段の一例である。
【００４２】
ＩＤ照合部３３０は、データ変換部３１０が出力したＩＤがＩＤ記憶部３２０に記憶されているか否かを判別する。具体的には、ＩＤ照合部３３０は、ヘッダに含まれていたＩＤと、ＩＤ記憶部３２０が記憶する直前の工程のＩＤとが一致する場合、データ配信部２１０から受信したメッセージに含まれているデータが処理すべきデータであると判別する。そのデータには直前の工程における部分処理が施されているからである。ＩＤ照合部３３０は、判別結果をデータ処理実行部３４０に通知する。さらに、ＩＤ照合部３３０は、現在の工程のＩＤをデータ変換部３１０に通知する。
【００４３】
一方、ＩＤ照合部３３０は、ヘッダに含まれるＩＤが、直前の工程のＩＤとしてＩＤ記憶部３２０に記憶されていない場合、データ配信部２１０から受信したメッセージに含まれているデータが処理対象のデータではないと判別する。ＩＤ照合部３３０は、判別結果をデータ処理実行部３４０に通知する。ＩＤ照合部３３０は、本発明に係る判別手段の一例である。
【００４４】
データ処理実行部３４０は、ＩＤ照合部３３０から通知された結果がデータ変換部３１０が出力したメッセージ本文を処理すべきであることを示す場合、メッセージ本文に予め設定された部分処理を行う。例えば、データ処理部３０１のデータ処理実行部３４０は、加工処理１を実行する。データ処理実行部３４０は、処理後のデータをデータ変換部３１０に出力する。一方、データ処理実行部３４０は、ＩＤ照合部３３０から通知された結果が、データ変換部３１０が出力したメッセージ本文を処理すべきではないことを示す場合、メッセージ本文を破棄する。データ処理実行部３４０は、本発明のデータ処理実行手段の一例である。
【００４５】
ユーザインタフェース部４００は、ユーザインタフェース機能を提供する。例えば、ユーザインタフェース部４００は、ユーザによって入力された処理フローの設定を受付部５００に通知する。また、ユーザインタフェース部４００は、受付部５００を介して実行制御部２００から供給された情報をユーザに提示する。ユーザインタフェース部４００の機能は、主として図４に示す入力デバイス１４、出力デバイス１５により実現される。
【００４６】
図５に示す受付部５００は、ユーザインタフェース部４００を介して処理フローの設定を受け付け、処理フローの設定を実行制御部２００に通知する。受付部５００は、実行制御部２００から供給された情報をユーザインタフェース部４００に出力する。受付部５００の機能は、主として図４に示すＣＰＵ１１により実現される。
【００４７】
図５に示す記憶部６００は、処理フローの設定データを含むデータ処理装置１０が機能するために必要なデータを記憶する。記憶部６００の機能は、主として図４に示すメモリ１２により実現される。
【００４８】
続いて、データ配信部２１０からメッセージを受信したデータ処理部３００の処理を説明する。まず、フロー制御部２２０は、データ収集部１００からデータを受信すると、受信したデータをメッセージ本文にセットし、データにいずれの部分処理も施されていないことを示すＩＤをヘッダにセットして、図７に示すようなメッセージを生成する。図５に示すように、フロー制御部２２０は、生成したメッセージをデータ配信部２１０に送信する。データ配信部２１０は、フロー制御部２２０からメッセージを受信すると、メッセージをサブスクライバであるデータ処理部３００に配信する。
【００４９】
図８に示すように、データ変換部３１０は、データ配信部２１０からメッセージを受信すると（ステップＳ１１；Ｙｅｓ）、受信したメッセージをメッセージ本文とヘッダとに分離する（ステップＳ１２）。データ変換部３１０は、ヘッダからＩＤを抽出し（ステップＳ１３）、ＩＤをＩＤ照合部３３０に出力する。さらに、データ変換部３１０は、メッセージ本文をデータ処理実行部３４０に出力する。
【００５０】
ＩＤ照合部３３０は、データ変換部３１０が出力したＩＤが、ＩＤ記憶部３２０に記憶されているか否かを判別する（ステップＳ１４）。ＩＤ照合部３３０は、ＩＤが直前の工程のＩＤとしてＩＤ記憶部３２０に記憶されている場合（ステップＳ１４；Ｙｅｓ）、データ配信部２１０から受信したメッセージが処理対象である旨をデータ処理実行部３４０に通知する。この場合、データ処理実行部３４０は、データ変換部３１０が出力したメッセージ本文に含まれているデータに部分処理を実行する（ステップＳ１５）。データ処理実行部３４０は、処理後のデータをデータ変換部３１０に出力する。
【００５１】
データ変換部３１０は、データ処理実行部３４０が出力した処理後のデータに現在の工程のＩＤを付加する（ステップＳ１６）。具体的には、データ変換部３１０は、データ処理実行部３４０が出力した処理済みのデータをメッセージ本文にセットし、さらに、ＩＤ記憶部３２０に格納されている現在の工程のＩＤをヘッダにセットして、メッセージを生成する。データ変換部３１０は、生成したメッセージをデータ配信部２１０に送信する（ステップＳ１７）。データ配信部２１０は、データ処理部３００からメッセージを受信すると、メッセージをデータ処理部３００に配信する。
【００５２】
一方、ステップＳ１４で、ＩＤ照合部３３０は、ＩＤが直前の工程のＩＤとしてＩＤ記憶部３２０に記憶されていないと判別すると（ステップＳ１４；Ｎｏ）、その旨をデータ処理実行部３４０に通知する。この場合、データ処理実行部３４０は、データを破棄する（ステップＳ１８）。その後、データ変換部３１０は、再びステップＳ１１の処理を実行する。以上がデータ処理部３００の処理である。
【００５３】
続いて、実施の形態におけるデータ処理装置１０内のデータの流れの一例を説明する。ここで、データ処理部３０１が実行する加工処理１の工程を示すＩＤが“Ｐ１０１”、データ処理部３０２が実行する加工処理２の工程を示すＩＤが“Ｐ１０２”、データ処理部３０３が実行する分析処理の工程を示すＩＤが“Ｐ１０３”であるとする。いずれの部分処理も施されていないことを示すＩＤが“Ｐ０００”であるとする。加工処理１、加工処理２、分析処理の順で、収集されたデータに処理が実行されることが規定されていると仮定する。フロー制御部２２０は、いずれの部分処理も施されていないことを示すＩＤとデータ処理部３０３により最後に実行される部分処理の工程を示すＩＤとを予め記憶しているものとする。
【００５４】
以下、説明の便宜上、データ処理部３０１が有するＩＤ記憶部３２０をＩＤ記憶部３２０Ａとする。データ処理部３０２が有するＩＤ記憶部３２０をＩＤ記憶部３２０Ｂとする。データ処理部３０３が有するＩＤ記憶部３２０をＩＤ記憶部３２０Ｃとする。データ処理部３０１が有するＩＤ記憶部３２０Ａには、図９Ａに示すようなデータが格納されているものとする。データ処理部３０２が有するＩＤ記憶部３２０Ｂには、図９Ｂに示すようなデータが格納されているものとする。データ処理部３０３が有するＩＤ記憶部３２０Ｃには、図９Ｃに示すようなデータが格納されているものとする。
【００５５】
フロー制御部２２０は、データ収集部１００からデータが供給されると、データにＩＤ“Ｐ０００”を付加し、そのデータを含むメッセージをデータ配信部２１０に出力するものとする。よって、図１０に示すように、データ配信部２１０は、データをデータ処理部３０１、３０２、３０３に配信する（Ｓ１００１）。
【００５６】
データ処理部３０１は、ＩＤ“Ｐ０００”が付加されたデータを受信すると、図９Ａに示すＩＤ記憶部３２０Ａを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ０００”であり、ＩＤ記憶部３２０Ａに格納されている直前の工程のＩＤと一致するため、データ処理部３０１のＩＤ照合部３３０は受信したデータが処理対象のデータであると判別する。よって、図１０に示すように、データ処理部３０１のデータ処理実行部３４０は加工処理１を実行する（Ｓ１００２）。データ処理部３０１のデータ変換部３１０は、加工処理１が施されたデータに図９Ａに示すＩＤ記憶部３２０Ａに格納されている現在の工程のＩＤ“Ｐ１０１”を付加し、ＩＤを付加したデータを含むメッセージをデータ配信部２１０に送信する（Ｓ１００３）。
【００５７】
データ処理部３０２は、ＩＤ“Ｐ０００”が付加されたデータを受信すると、図９Ｂに示すＩＤ記憶部３２０Ｂを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ０００”であり、ＩＤ記憶部３２０Ｂに格納されている直前の工程のＩＤと一致しないため、データ処理部３０２のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０２のデータ処理実行部３４０はデータを破棄する（Ｓ１００４）。
【００５８】
データ処理部３０３は、ＩＤ“Ｐ０００”が付加されたデータを受信すると、図９Ｃに示すＩＤ記憶部３２０Ｃを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ０００”であり、ＩＤ記憶部３２０Ｃに格納されている直前の工程のＩＤと一致しないため、データ処理部３０３のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０３のデータ処理実行部３４０はデータを破棄する（Ｓ１００５）。
【００５９】
データ配信部２１０は、データ処理部３０１からデータを受信すると、データをデータ処理部３０１、３０２、３０３に配信する（Ｓ１００６）。
【００６０】
データ処理部３０１は、ＩＤ“Ｐ１０１”が付加されたデータを受信すると、図９Ａに示すＩＤ記憶部３２０Ａを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０１”であり、ＩＤ記憶部３２０Ａに格納されている直前の工程のＩＤと一致しないため、データ処理部３０１のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０１のデータ処理実行部３４０はデータを破棄する（Ｓ１００７）。
【００６１】
データ処理部３０２は、ＩＤ“Ｐ１０１”が付加されたデータを受信すると、図９Ｂに示すＩＤ記憶部３２０Ｂを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０１”であり、ＩＤ記憶部３２０Ｂに格納されている直前の工程のＩＤと一致するため、データ処理部３０２のＩＤ照合部３３０は受信したデータが処理対象のデータであると判別する。よって、図１０に示すように、データ処理部３０２のデータ処理実行部３４０は加工処理２を実行する（Ｓ１００８）。データ処理部３０２のデータ変換部３１０は、加工処理２が施されたデータに図９Ｂに示すＩＤ記憶部３２０Ｂに格納されている現在の工程のＩＤ“Ｐ１０２”を付加し、ＩＤを付加したデータを含むメッセージをデータ配信部２１０に送信する（Ｓ１００９）。
【００６２】
データ処理部３０３は、ＩＤ“Ｐ１０１”が付加されたデータを受信すると、図９Ｃに示すＩＤ記憶部３２０Ｃを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０１”であり、ＩＤ記憶部３２０Ｃに格納されている直前の工程のＩＤと一致しないため、データ処理部３０３のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０３のデータ処理実行部３４０はデータを破棄する（Ｓ１０１０）。
【００６３】
データ配信部２１０は、データ処理部３０２からデータを受信すると、データをデータ処理部３０１、３０２、３０３に配信する（Ｓ１０１１）。
【００６４】
データ処理部３０１は、ＩＤ“Ｐ１０２”が付加されたデータを受信すると、図９Ａに示すＩＤ記憶部３２０Ａを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０２”であり、ＩＤ記憶部３２０Ａに格納されている直前の工程のＩＤと一致しないため、データ処理部３０１のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０１のデータ処理実行部３４０はデータを破棄する（Ｓ１０１２）。
【００６５】
データ処理部３０２は、ＩＤ“Ｐ１０２”が付加されたデータを受信すると、図９Ｂに示すＩＤ記憶部３２０Ｂを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０２”であり、ＩＤ記憶部３２０Ｂに格納されている直前の工程のＩＤと一致しないため、データ処理部３０２のＩＤ照合部３３０は受信したデータが処理対象のデータではないと判別する。よって、図１０に示すように、データ処理部３０２のデータ処理実行部３４０はデータを破棄する（Ｓ１０１３）。
【００６６】
データ処理部３０３は、ＩＤ“Ｐ１０２”が付加されたデータを受信すると、図９Ｃに示すＩＤ記憶部３２０Ｃを参照して、受信したデータが処理対象のデータであるか否かを判別する。ここで、ＩＤが“Ｐ１０２”であり、ＩＤ記憶部３２０Ｃに格納されている直前の工程のＩＤと一致するため、データ処理部３０３のＩＤ照合部３３０は受信したデータが処理対象のデータであると判別する。よって、図１０に示すように、データ処理部３０３のデータ処理実行部３４０は分析処理を実行する（Ｓ１０１４）。
【００６７】
なお、分析処理に決められた数のデータが必要な場合がある。このような場合、データ処理部３０３は、データ処理部３０２が処理したデータを蓄積し、必要な数のデータが揃ったところで分析処理を実行してもよい。
【００６８】
データ処理部３０３のデータ変換部３１０は、分析処理結果を示すデータに図９Ｃに示すＩＤ記憶部３２０Ｃに格納されている現在の工程のＩＤ“Ｐ１０３”を付加し、ＩＤを付加したデータを含むメッセージをデータ配信部２１０に送信する（Ｓ１０１５）。
【００６９】
データ配信部２１０がデータ処理部３００が最終工程を示すＩＤ“Ｐ１０３”が付加されたデータを受信すると、フロー制御部２２０は、分析結果を示す画像を受付部５００を介してユーザインタフェース部４００に出力する。よって、ユーザは分析結果を視認することが可能となる。以上が実施の形態に係る構成である。
【００７０】
以上説明したように、データ処理装置１０におけるデータ処理部３００は、データ配信部２１０から受信したデータに付加されたＩＤが、直前の工程を示すＩＤとしてＩＤ記憶部３２０に記憶されているか否かに応じて、データが部分処理の対象であるか否かを判別する。データ処理部３００は、データに付加されたＩＤからデータが部分処理の対象であると判別した場合、部分処理を実行し、現在の工程を示すＩＤを付加したデータをデータ配信部２１０に送信する。一方、データ処理部３００は、データが部分処理の対象ではないと判別すると、部分処理を実行しない。
【００７１】
このように、データ処理部３００は、データが処理対象であるか否かをデータに付加されたＩＤに基づいて判別することができる。よって、データの送信元を特定することができない出版／購読型モデルに従ったメッセージングを採用している場合であっても、複数の処理部が連携してデータを順次処理することができる。実施の形態においては、データ処理部３００が処理後のデータに処理フローの進捗度を識別するための識別情報であるＩＤを付加するという簡易な構成により、定義された処理フローに従ってデータを処理することができる。
【００７２】
データ処理部３００は、ＩＤに基づいて設定された処理フローに従ってデータを処理するので、ブローカとして動作するデータ配信部２１０はデータを配信するだけでよい。例えば、特許文献１に記載されているように、ブローカに複数のチャネルを設定することによりデータを流す順序を制御する必要はない。処理フローが変更された場合であっても、ブローカとして動作するデータ配信部２１０の設定の変更を要することなく、データ処理部３００の設定を変更すれば変更後の処理フローに対応することができる。例えば、ブローカとして動作するデータ配信部２１０の役割を、外部のシステム事業提供者が提供するサーバ上で動作するアプリケーションが果たすことがある。この場合、ブローカが出版されたデータをすべてのデータ処理部３００にデータを配信するように設定しておけば、データ処理部３００を追加または削除した場合、処理の順序の変更等に簡便に対応することができる。
【００７３】
（変形例１）
実施の形態においては、データ処理部３００がそれぞれ１つの部分処理を実行する例を説明したが、データ処理部３００は、２つ以上の部分処理を実行してもよい。この場合、データ処理部３００が有するＩＤ記憶部３２０には、図１１に示すように、直前の工程と現在の工程の組み合わせ毎に、対象の部分処理を定義したデータが格納される。
【００７４】
この場合、ＩＤ照合部３３０は、ヘッダに含まれていたＩＤと図１１に示すＩＤ記憶部３２０が記憶する直前の工程のＩＤのいずれとが一致する場合、データ配信部２１０から受信したメッセージに含まれているデータが処理対象のデータであると判別する。ＩＤ照合部３３０は、該当する直前の工程のＩＤに対応付けられている部分処理をデータ処理実行部３４０に通知する。従って、データ処理実行部３４０は、通知された部分処理を実行する。さらに、ＩＤ照合部３３０は、対応する現在の工程のＩＤをデータ変換部３１０に通知する。データ変換部３１０は、データ処理実行部３４０により部分処理が実行されたデータに、現在の工程のＩＤを追加してデータをデータ配信部２１０に送信する。
【００７５】
例えば、ヘッダに含まれていたＩＤが“Ｐ００４”である場合、ＩＤ照合部３３０は、対応する処理が“加工処理５”であることをデータ処理実行部３４０に通知する。従って、データ処理実行部３４０は加工処理５を実行する。データ変換部３１０は、処理後のデータにＩＤ“Ｐ００５”を付加したものをデータ配信部２１０に送信する。
【００７６】
一方、ＩＤ照合部３３０は、ヘッダに含まれていたＩＤが、図１１に示すＩＤ記憶部３２０が記憶する直前の工程のＩＤのいずれにも該当しない場合、データ配信部２１０から受信したデータが処理対象ではないと判別し、判別した結果をデータ処理実行部３４０に通知する。従って、データ処理実行部３４０はデータを破棄する。
【００７７】
（変形例２）
実施の形態においては、データ処理部３００が、メッセージからヘッダを分離することにより、メッセージから直前の工程のＩＤを削除し、部分処理後のデータに現在の工程のＩＤを追加する例を説明したが、これに限られない。
【００７８】
データ処理部３００は、メッセージから直前の工程のＩＤを削除せず、直前の工程のＩＤに、現在の工程のＩＤを付加したものをヘッダにセットしてもよい。従って、データ処理部３００が部分処理を実行するたびに、ヘッダに新たなＩＤが追加されていくことになる。データ処理部３００は、受信したメッセージのヘッダに含まれるＩＤのうち最後に追加されたＩＤを直前の工程のＩＤとみなして、データが処理対象であるか否かを判別すればよい。このような構成の場合、例えば、フロー制御部２２０が、最終工程における部分処理が実行された後のデータについて、処理フローで定義されたすべての処理が実行されたかを確認することができる。
【００７９】
（変形例３）
実施の形態では、図２に示すような処理フローの例を示したが、処理フローの例はこれに限られない。図１２に処理フローの他の例を示す。図示する処理フローＰ２００では、部分処理Ｐ１０１により収集されＩＤ“Ｐ００１”が付加されたデータは、部分処理Ｐ１０２の工程に渡される。
【００８０】
部分処理Ｐ１０２の工程において、ＩＤ“Ｐ００１”が付加されていたデータには、部分処理Ｐ１０２が施された後、ＩＤ“Ｐ０１１”が付加され、部分処理Ｐ１０３の工程と部分処理Ｐ１０７の工程に渡される。
【００８１】
部分処理Ｐ１０３の工程において、ＩＤ“Ｐ０１１”が付加されていたデータには、部分処理Ｐ１０３が施された後、ＩＤ“Ｐ０１２”が付加され、部分処理Ｐ１０４の工程に渡される。部分処理Ｐ１０７の工程において、ＩＤ“Ｐ０１１”が付加されていたデータには、部分処理Ｐ１０７が施された後、ＩＤ“Ｐ０３１”が付加され、部分処理Ｐ１０４の工程に流される。
【００８２】
部分処理Ｐ１０４の工程において、ＩＤ“Ｐ０１２”が付加されていたデータには、部分処理Ｐ１０４が施された後、ＩＤ“Ｐ０１３”が付加され、データ配信部２１０に出力される。ＩＤ“Ｐ０３１”が付加されていたデータには、部分処理Ｐ１０４が施された後、ＩＤ“Ｐ０３２”が付加され、データ配信部２１０に出力される。
【００８３】
（変形例４）
実施の形態、変形例１においては、ＩＤが処理の各工程を示す例を説明したが、これに限られない。例えば、図１３に示すように処理が実行されるとする。図示する例では、矢印は、部分処理が実行される順序を示す。変形例４においては、ＩＤは、工程間をつなぐ矢印に割り当てられる。
【００８４】
ここでは、データ加工１の工程からデータ加工３の工程をつなぐ矢印にＩＤ１が割り振られている。データ加工１の工程から出力されるデータにはＩＤ１が付加されているとする。データ加工３を実行するデータ処理部３００のＩＤ記憶部３２０には、ＩＤ１が付加されたデータがデータ加工３の対象であることを定義した情報が格納されている。データ加工３を実行するデータ処理部３００のＩＤ照合部３３０は、ＩＤ１が付加されたデータを受信すると、ＩＤ記憶部３２０に格納された情報に基づいて、受信したデータが、データ加工１の工程からデータ加工３の工程に流されたものであると判別する。よって、ＩＤ照合部３３０は、そのデータにデータ加工３を実行すべきであると判別する。この場合、データ処理実行部３４０は、そのデータにデータ加工３の処理を実行する。一方、データ加工３を実行するデータ処理部３００のＩＤ照合部３３０は、受信したデータに付加されているＩＤがＩＤ１以外である場合、そのデータが処理の対象でないと判別する。この場合、データ処理実行部３４０はそのデータを破棄する。
【００８５】
また、データ加工１の工程からデータ加工４の工程をつなぐ矢印にはＩＤ２が割り振られている。データ加工２の工程からデータ加工４の工程をつなぐ矢印にはＩＤ３が割り振られている。
【００８６】
データ加工４を実行するデータ処理部３００のＩＤ記憶部３２０には、ＩＤ２が付加されたデータがデータ加工４の対象であること、ＩＤ３が付加されたデータがデータ加工４の対象であること、を定義した情報が格納されている。データ加工４を実行するデータ処理部３００のＩＤ照合部３３０は、ＩＤ２またはＩＤ３が付加されたデータを受信すると、ＩＤ記憶部３２０に格納された情報に基づいて、そのデータにデータ加工４を実行すべきであると判別する。この場合、データ処理実行部３４０は、そのデータにデータ加工４の処理を実行する。一方、データ加工４を実行するデータ処理部３００のＩＤ照合部３３０は、受信したデータに付加されているＩＤが、ＩＤ２、ＩＤ３のいずれでもない場合、そのデータが処理の対象でないと判別する。よって、データ処理実行部３４０はそのデータを破棄する。
【００８７】
このように、ＩＤは、データが直前の部分処理の工程から次の部分処理の工程に流されたデータであることを特定するものであってもよい。
【００８８】
また、データ処理装置１０が有するデータ収集部１００の数は１つに限られず、２つ以上であってもよい。データ処理装置１０が有するデータ処理部３００の数は、３つに限られず、２つであってもよいし、４つ以上であってもよい。
【００８９】
実施の形態においては、データ処理装置１０がデータ収集部１００を有する例を説明したが、例えば、データ処理装置１０とネットワークを介して接続されている他の装置がデータ収集部１００として機能してもよい。この場合、データ処理装置１０は、他の装置が機器６０から収集したデータを当該装置から受信する。
【００９０】
また、データ処理部３００の一部または全部が、データ処理装置１０にネットワークを介して接続されている他の装置に設けられていてもよい。また、ブローカとして動作するデータ配信部２１０は、データ処理装置１０にネットワークを介して接続されている他の装置に設けられていてもよい。例えば、外部のシステム事業提供者が提供するサーバ上で動作するアプリケーションがブローカとして機能してもよい。あるいは、クラウド上のサービスがブローカとして機能してもよい。
【００９１】
実施の形態においては、ブローカにトピックが設定されていない例を説明したが、ブローカにトピックを設定してもよい。トピックは、パブリッシャが出版するメッセージに含まれる情報の主題を表す。パブリッシャはトピックを指定してメッセージを出版することができる。サブスクライバは、トピックを指定してメッセージの購読をブローカに要求する。ブローカは、トピックを購読しているサブスクライバに、パブリッシャが出版したメッセージを送信する。
【００９２】
例えば、データ処理装置１０がデータ収集部１０１、１０２を有していると仮定する。図１４に示すように、フロー制御部２２０には、データ収集部１０１、１０２からデータが供給される。ブローカであるデータ配信部２１０には、トピックＴ１、Ｔ２が設定されているとする。データ処理部３０１はトピックＴ１及びＴ２を購読しており、データ処理部３０２はトピックＴ２を購読しているものとする。
【００９３】
例えば、フロー制御部２２０は、データ収集部１０１から供給されたデータを含むメッセージＭ１をトピックＴ１に出版し、データ収集部１０２から供給されたデータを含むメッセージM２をトピックＴ２に出版する。なお、フロー制御部２２０は、それぞれのメッセージに含まれるデータにＩＤを付加しているものとする。よって、データ配信部２１０は、フロー制御部２２０から、トピックＴ１に出版されたメッセージＭ１をデータ処理部３０１に配信し、トピックＴ２に出版されたメッセージＭ２をデータ処理部３０１及び３０２に配信する。データ処理部３０１、３０２は、それぞれ受信したメッセージに含まれるデータに付加されたＩＤに基づいて部分処理を実行すればよい。
【００９４】
データ処理部３００のＩＤ記憶部３２０へのデータの格納方法は任意である。例えば、ユーザがデータ処理部３００毎のＩＤ記憶部３２０のデータを、ユーザインタフェース部４００を介してデータ処理装置１０の記憶部６００に登録してもよい。この場合、データ処理部３００は、起動された後に記憶部６００から必要なデータを読み出してもよい。あるいは、実行制御部２００がデータ処理部３００を起動する場合には、実行制御部２００がデータ処理部３００に与えるパラメータに必要なデータを指定してもよい。また、あるいは、実行制御部２００が、定義された処理フローの設定に従って、ＩＤ記憶部３２０に格納するＩＤを生成し、生成したＩＤについてのデータをデータ処理部３００に与えてもよい。
【００９５】
図１０に示す例では、１つのデータが、データ処理部３００間でやり取りされる例を説明したが、データ収集部１００が短い時間間隔でデータを収集し、収集したデータをフロー制御部２２０に供給することもある。このような場合、個々のデータを識別することができるように、例えば、フロー制御部２２０は、データ収集部１００からデータを受信した時刻情報と、いずれの部分処理も施されていないことを示すＩＤとを結合した値をＩＤとしてデータにセットしてもよい。例えば、フロー制御部２２０がデータを受信した時刻が９時０３分１５秒だとする。この場合、フロー制御部２２０は、ＩＤを“090315_Ｐ０００”としてもよい。データ処理部３００は、時刻情報を除く部分、ここでは“Ｐ０００”の部分、に基づいて、データが処理の対象か否かを判別すればよい。
【００９６】
実施の形態においては、データ収集を実行するデータ収集部１００はパブリッシャとして動作していないが、データ収集部１００もパブリッシャとして動作してよい。この場合、データ収集部１００は、フロー制御部２２０にデータを送信するのではなく、データ配信部２１０にデータを含むメッセージを出版すればよい。
【００９７】
上記のプログラムを記録する記録媒体としては、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリ、半導体メモリ、磁気テープを含むコンピュータ読取可能な記録媒体を使用することができる。
【００９８】
本発明は、広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、請求の範囲によって示される。そして、請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【００９９】
Ａ１，Ａ２，Ａ３  処理部、Ｂ１  ブローカ、Ｍ１，Ｍ２  メッセージ、Ｐ１００  処理フロー、Ｐ１  パブリッシャ、Ｐ１０１，Ｐ１０２，Ｐ１０３，Ｐ１０４，Ｐ１０５  部分処理、Ｓ１，Ｓ２，Ｓ３  サブスクライバ、Ｔ１，Ｔ２  トピック、Ｘ，Ｙ  チャネル、１  データ処理システム、１０  データ処理装置、１１  ＣＰＵ、１２  メモリ、１３  通信インタフェース、１４  入力デバイス、１５  出力デバイス、１９  バス、６０，６１，６２  機器、１００，１０１，１０２  データ収集部、２００  実行制御部、２１０  データ配信部、２２０  フロー制御部、３００，３０１，３０２，３０３  データ処理部、３１０  データ変換部、３２０，３２０Ａ，３２０Ｂ，３２０Ｃ  ＩＤ記憶部、３３０  ＩＤ照合部、３４０  データ処理実行部、４００  ユーザインタフェース部、５００  受付部、６００  記憶部、７０１  ネットワーク
【要約】
データ処理装置（１０）は、順次実行される複数の部分処理を含む処理フローのうち設定された処理を実行する複数のデータ処理部（３００）と、出版／購読型モデルに従って、データ処理部（３００）の間におけるデータのやり取りを仲介するデータ配信部（２１０）と、を含む。ＩＤ照合部（３３０）は、データ配信部（２１０）から受信したデータである受信データが、データ処理部（３００）が実行するように設定された部分処理の対象であるか否かを、受信データに付加された識別情報に基づいて判別する。データ処理実行部（３４０）は、ＩＤ照合部（３３０）が受信データが部分処理の対象であると判別すると、部分処理を実行する。データ変換部（３１０）は、データ処理実行部（３４０）による部分処理の実行結果であるデータに新たな識別情報を付加し、新たな識別情報を付加したデータをデータ配信部（２１０）に送信する。【図１】
0006861894.tif 000002
【図２】
0006861894.tif 000003
【図３】
0006861894.tif 000004
【図４】
0006861894.tif 000005
【図５】
0006861894.tif 000006
【図６】
0006861894.tif 000007
【図７】
0006861894.tif 000008
【図８】
0006861894.tif 000009
【図９Ａ】
0006861894.tif 000010
【図９Ｂ】
0006861894.tif 000011
【図９Ｃ】
0006861894.tif 000012
【図１０】
0006861894.tif 000013
【図１１】
0006861894.tif 000014
【図１２】
0006861894.tif 000015
【図１３】
0006861894.tif 000016
【図１４】
0006861894.tif 000017
【図１５】
0006861894.tif 000018
【図１６】
0006861894.tif 000019