(57)【要約】【課題】ネットワークに接続された複数の機器が自律的に動作する環境下で、複数の機器を制御し、全体として１つのサービスを効率的に実現する。【解決手段】ワークフロー管理装置１２は、ＩＯＴ機器１１の動作を複数のステージに亘り制御するワークフローについて、各ステージから次のステージへの移行条件と、ワークフローの現在のステージを示すステージ情報を保持する。ステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、ワークフロー管理装置１２は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すようステージ情報を更新する。【選択図】図５
2015204013.tif 000002
【特許請求の範囲】
【請求項１】
外部機器の動作を複数のステージに亘り制御するワークフローについて、各ステージから次のステージへの移行条件を保持する移行条件保持部と、
前記ワークフローが現在どのステージであるかを示すステージ情報を保持するステージ情報保持部と、
前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させるステージ通知部と、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて前記現在のステージの移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新するステージ更新部と、
を備え、
前記ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、前記ステージ更新部は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、前記ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すよう前記ステージ情報を更新することを特徴とするワークフロー管理装置。
【請求項２】
前記ステージ通知部は、前記ワークフローの現在のステージを識別可能な情報であり、かつ、前記外部機器の動作態様を指定する内容を排除した情報を前記外部機器へ送信することを特徴とする請求項１に記載のワークフロー管理装置。
【請求項３】
前記ワークフローは複数の外部機器の動作を制御するものであり、
前記複数の外部機器は、第１ブローカを介して、各機器が使用するデータを互いに送受し、
前記ステージ通知部は、前記第１ブローカとは異なる第２ブローカを介して、前記ワークフローの現在のステージを識別可能な情報を前記複数の外部機器へ送信し、
前記ステージ更新部は、前記第２ブローカを介して、前記複数の外部機器から動作終了通知を受信することを特徴とする請求項２に記載のワークフロー管理装置。
【請求項４】
前記ステージ通知部は、前記ワークフローの現在のステージを複数の外部機器へ通知し、
前記複数のステージのうち少なくとも１つの移行条件は、前記複数の外部機器の全てから動作終了通知がなくても、所定数の外部機器から動作終了通知を受け付けた場合に次のステージへ移行することを定めることを特徴とする請求項１から３のいずれかに記載のワークフロー管理装置。
【請求項５】
外部機器の動作を複数のステージに亘り制御するワークフローについて、各ステージから次のステージへの移行条件を保持する移行条件保持部と、
前記ワークフローが現在どのステージであるかを示すステージ情報を保持するステージ情報保持部と、
前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させるステージ通知部と、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて前記現在のステージの移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新するステージ更新部と、
を備え、
前記ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージと第２ステージの次に実行可能である場合には、前記ステージ更新部は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、前記ワークフローが第１ステージを終了した状態であり、かつ、第２ステージでもあることを示すよう前記ステージ情報を更新し、第２ステージの移行条件が満たされた場合に前記ワークフローを第３ステージへ移行させることを特徴とするワークフロー管理装置。
【請求項６】
外部機器の動作を複数のステージに亘り制御するワークフローについて、所定の記憶領域に記憶された前記ワークフローが現在どのステージであるかを示すステージ情報にしたがって、前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させるステップと、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて、前記現在のステージから次のステージへの予め定められた移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新するステップと、
をコンピュータが実行し、
前記ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、前記更新するステップは、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、前記ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すよう前記ステージ情報を更新することを特徴とするワークフロー管理方法。
【請求項７】
外部機器の動作を複数のステージに亘り制御するワークフローについて、所定の記憶領域に記憶された前記ワークフローが現在どのステージであるかを示すステージ情報にしたがって、前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させる機能と、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて、前記現在のステージから次のステージへの予め定められた移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新する機能と、
をコンピュータに実現させ、
前記ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、前記更新する機能は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、前記ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すよう前記ステージ情報を更新することを特徴とするワークフロー管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理技術に関し、特にワークフロー管理技術に関する。
【背景技術】
【０００２】
本発明者は、家計や事業所等、様々な粒度の組織におけるエネルギーのフローおよびストックに関する変化をエネルギー簿記により記録し、組織における総合的なエネルギー管理を容易にする技術を提案している（例えば特許文献１参照）。特許文献１のエネルギーイベント記録装置はセンサ機器として実装されることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１３／１６８４１９号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
センサネットワークでは、複数のセンサ機器のそれぞれが自律的に動作する。そのため複数のセンサ機器を統合して１つのサービスを提供するためには、処理の同期制御が必要になることがあった。従来、並列分散処理における同期制御には、割り込み制御やマーカー検出制御（例えばフレーム同期、タイミング同期）が使用されてきた。しかし、従来の同期制御では、同期制御対象機器の増加に伴い、制御内容を定義するための記述量が増大し、また記述が複雑になっていた。
【０００５】
本発明は上記課題を鑑みてなされたものであり、その主な目的は、ネットワークに接続された複数の機器が自律的に動作する環境下で、複数の機器を制御し、全体として１つのサービスを効率的に実現するための技術を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明のある態様のワークフロー管理装置は、外部機器の動作を複数のステージに亘り制御するワークフローについて、各ステージから次のステージへの移行条件を保持する移行条件保持部と、ワークフローが現在どのステージであるかを示すステージ情報を保持するステージ情報保持部と、ワークフローの現在のステージを外部機器へ通知することにより、現在のステージに応じた動作を外部機器に実行させるステージ通知部と、外部機器から現在のステージの動作を終了した旨が通知されて現在のステージの移行条件が満たされた場合に、ワークフローのステージを進めるようステージ情報を更新するステージ更新部と、を備える。ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、ステージ更新部は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すようステージ情報を更新する。
【０００７】
本発明の別の態様もまた、ワークフロー管理装置である。この装置は、外部機器の動作を複数のステージに亘り制御するワークフローについて、各ステージから次のステージへの移行条件を保持する移行条件保持部と、ワークフローが現在どのステージであるかを示すステージ情報を保持するステージ情報保持部と、ワークフローの現在のステージを外部機器へ通知することにより、現在のステージに応じた動作を外部機器に実行させるステージ通知部と、外部機器から現在のステージの動作を終了した旨が通知されて現在のステージの移行条件が満たされた場合に、ワークフローのステージを進めるようステージ情報を更新するステージ更新部と、を備える。ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージと第２ステージの次に実行可能である場合には、ステージ更新部は、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、ワークフローが第１ステージを終了した状態であり、かつ、第２ステージでもあることを示すようステージ情報を更新し、第２ステージの移行条件が満たされた場合にワークフローを第３ステージへ移行させる。
【０００８】
本発明のさらに別の態様は、ワークフロー管理方法である。この方法は、外部機器の動作を複数のステージに亘り制御するワークフローについて、所定の記憶領域に記憶されたワークフローが現在どのステージであるかを示すステージ情報にしたがって、ワークフローの現在のステージを外部機器へ通知することにより、現在のステージに応じた動作を外部機器に実行させるステップと、外部機器から現在のステージの動作を終了した旨が通知されて、現在のステージから次のステージへの予め定められた移行条件が満たされた場合に、ワークフローのステージを進めるようステージ情報を更新するステップと、をコンピュータが実行する。ワークフローのステージ間に半順序関係があり、第１ステージと第２ステージが比較不可能でかつ、第３ステージが第１ステージの次に実行可能であるが、第３ステージが第２ステージとは比較不可能な場合には、更新するステップは、第１ステージの移行条件が満たされた一方、第２ステージの移行条件が満たされていない場合に、ワークフローが第１ステージの次の第３ステージであり、かつ、第２ステージでもあることを示すようステージ情報を更新する。
【０００９】
なお、以上の構成要素の任意の組合せ、本発明の表現を、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、ネットワークに接続された複数の機器が自律的に動作する環境下で、複数の機器を制御し、全体として１つのサービスを効率的に実現することができる。
【図面の簡単な説明】
【００１１】
【図１】分散協調制御の事例１を示す図である。
【図２】分散協調制御の事例１を示す図である。
【図３】分散協調制御の事例２を示す図である。
【図４】実世界ＯＳによる制御範囲を模式的に示す図である。
【図５】実施の形態のＩＯＴ機器制御システムを示す図である。
【図６】図５のワークフロー管理装置の機能構成を示すブロック図である。
【図７】実施の形態のワークフローを模式的に示す図である。
【図８】ＩＯＴ機器制御システムの動作を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
（概要の説明）
まず、実施の形態の概要として、複数のタスクを半順序関係で整列したワークフローベースのシステムデザインを説明する。プロジェクトであれ定型業務であれ、順序づけられたタスクの集合という意味でのワークフローは、何らかの仕事を体系立てて整理し、理解し、実行するための基本的な認識の単位である。ワークフローは、ワークフローを構成する個々のタスクに対して、実際にタスクを遂行するリソースを割り当てていき、一連の作業、サービスを実現する。
【００１３】
実際にタスクを遂行するリソースは、例えば人、プログラム、機器等であってよく、以下「エージェント」とも呼ぶ。特に、インターネット等のネットワークに接続されて外部機器と通信可能なエージェントを「ＩＯＴ（Internet Of Things）機器」とも呼ぶ。
【００１４】
様々なセンサやコントローラ、アクチュエータ等、膨大な数のエージェントを対象として、あるワークフローにおいてこれらの制御を行う場合に、各エージェントの並列作業を効率的に管理する手法は、これまで十分な提案がなされていない。ワークフロー内のタスク間の関係は、線形順序（すなわち全順序）ではなく半順序構造を持つことがある。例えば、あるタスクの後に実行可能な複数のタスクがあり、これら複数のタスクのどちらが先に実行されてもよいことがしばしばある。これら複数のタスクは並列関係と言え、各タスクの遂行を並列実行することができる。この並列性は、同じタスクが割り当てられた複数のエージェント間でのタスク遂行の並列性とは次元が異なる。
【００１５】
ワークフローが定めるタスクを、実行順序を制御するための因果順序のシンボルとして用いる場合に「タスクステージ」と呼ぶ。ワークフローの各タスクステージに対応するエージェントの活動は、個々のノード（例えばエージェントが実装されたセンサ等、各種機器）において自律動作を行うプログラムとして記述されていることが前提となる。個々のノードは、現在どのタスクステージであるかを示す情報を取得し、そのタスクステージに対応する個々のエージェントプログラムを起動する。また、個々のエージェントはタスクステージに対応する処理が終了したことをワークフロー側へ報告し、次のタスクの指示を待つ。
【００１６】
ワークフローにもとづいて、実世界のエージェント個々によるタスクの実行順序を制御する機能を「タスクマネージャ」と呼ぶ。タスクマネージャは、ワークフローの実行エンジンとも言え、今どのタスクステージを実行すべきであるかをエージェントへ通知する。さらにタスクの完了通知をエージェントから受け取り、適宜タスクステージを進める。このように、タスクマネージャとエージェント間にはタスク管理のためのデータフローが生じる。
【００１７】
以下、分散した環境で自律的に動作する個々のエージェントを、全体として協調して動作するよう制御することを「分散協調制御」とも呼ぶ。実施の形態ではワークフローを使用して分散協調制御を実現する。また、分散協調制御により、自律した個々のエージェントを全体として協調動作させるシステムを「自律分散協調システム」とも呼ぶ。本実施の形態では、ネットワークを介して結ばれたＩＯＴ機器の間での分散協調的ワークフローの管理技術を提案する。
【００１８】
自律分散協調システムでは、個々のエージェント間におけるデータストリームの意味でのデータフローも重要になる。例えば、あるタスクステージにおける計測タスクや計算タスクの実行結果は、その結果を入力とする別のタスクステージにおける計算タスクや制御タスクへ受け渡さなければならない。また、このようなエージェント間のデータフローはタスクマネージャを経由する必要はない。
【００１９】
実施の形態では、タスクマネージャとエージェント間のデータフロー、および、あるエージェントと別のエージェント間のデータフローをパブリッシュ・サブスクライブ（以下「ＰＵＢーＳＵＢ」とも呼ぶ。）のスキームを使って実現する。ＰＵＢ−ＳＵＢスキームは、送信元と送信先でデータを共有するために、ブローカと呼ばれる特殊なエージェントを用いる。
【００２０】
送信先の主体に対して渡すべきデータにトピックと呼ばれるタグを付加し、トピックを付加したデータをブローカへ送信する送信元の主体はパブリッシャと呼ばれる。また、特定のトピックが付加されたデータの転送リクエストをブローカへ登録する主体（すなわちデータの送信先の主体）はサブスクライバと呼ばれる。ブローカへパブリッシュされたデータのうち、サブスクライバが登録したトピックを有するデータを、ブローカはサブスクライバへ配信する。
【００２１】
ＰＵＢ−ＳＵＢは、アドレス等の概念なしに必要なデータを必要な所に、多対多で送ることができるスキームである。実施の形態では、タスクマネージャとエージェント間においてタスクステージに関する管理情報を転送するための管理ブローカと、複数のエージェント間でタスク遂行に必要なデータを転送するためのデータブローカの２つを使用するシステムを提案する。
【００２２】
タスクマネージャとエージェントの基本的な動作を説明する。
（１）タスクマネージャは、管理ブローカに、現在実行可能なタスクステージ名をパブリッシュする。エージェントは、予め自分の遂行するタスクステージ名をブローカへ登録しておき、登録したタスクステージ名がパブリッシュされると、その事実を管理ブローカからサブスクライブしてタスクを遂行する。タスクの遂行が終了したエージェントは、タスクステージの終了と必要な管理情報を管理ブローカへパブリッシュするとともに、必要なトピックを付して他のエージェントによるタスク遂行用のデータをデータブローカへパブリッシュする。
【００２３】
（２）タスクマネージャは、タスクステージの遷移可否を判断する。これを決めるのがタスク遷移述語である。タスク遷移述語は、エージェントから受け付けたタスク終了情報や管理データなどにもとづいて、次のタスクステージへ遷移してよいかを判定するプログラムである。
【００２４】
例えば、エージェントとしてのセンサを数百個設置して所定の環境状態（温度等）を計測し、環境状態の平均値を求めて何らかの制御を実行するシステムを考える。このシステムのタスクマネージャには、半数のセンサが計測（すなわちタスク処理）を終了してタスク終了情報を送ってくれば、次のステージに遷移してよいことを定めるタスク遷移述語を実装してもよい。また、分散ストリーム計算においては、計算が無事終了したことを示すタスク終了情報の受け付けをもってステージの遷移を決定するタスク遷移述語を実装してもよい。また、計算が異常終了した旨のタスク終了情報を受け付けた場合に、通常のワークフローから非常用のワークフローへ遷移する等の分岐の判断についてもタスク遷移述語に実装する。
【００２５】
（３）上記（１）（２）のプロセスを繰り返すことで、タスクマネージャはタスクステージ毎に実世界のエージェントとのハンドシェイクを遂行していく。この場合、タスクステージ間の並列性は、複数のタスクステージ名を並列してパブリッシュすることで実現される。また、同じタスクステージに属する複数のエージェントは、実世界において並列にタスクを遂行する。エージェント間の並列処理は、順序が入れ替わったり遅延があったとしても、タスクマネージャによる判定結果には影響がない。これは、人間によるプロジェクト管理においても、ワークフローを用いた分散協調制御においても同様である。
【００２６】
次に分散協調制御の事例を説明する。
事例１．センサによる機器の管理とエネルギー会計の制御：
この例では、複数の温度センサと複数の照度センサのデータから、平均温度と最小照度を計算し、それをもとにコントローラがエアコンと照明を制御する。また、エアコンと照明の稼働状態にもとづいてエネルギー消費を計算し、その計算結果をステークホルダへ通知する処理を制御する。
【００２７】
図１は、事例１の制御のためのタスクステージと、各タスクステージへのリソースマッピングを示している。事例１では、センサ（図中の「Ｓ」）によるデータ収集のタスクステージに対して複数のセンサが割り当てられている。また、各タスクステージに対するリソースの割当は固定的である。図２は、ブローカを介したデータ連携を模式的に示している。事例１では、タスクマネージャと実世界エージェント間のステージ管理を仲介する管理ブローカであるステージブローカと、複数のエージェント間のデータフローを仲介するデータブローカの２つが、制御フローとデータフローのそれぞれをＰＵＢ−ＳＵＢスキームで仲介する。
【００２８】
図２では、複数のエージェント間のデータフローをシーケンス図で示している。シーケンス図の特性上、矢印の記載位置（上下関係）により処理の前後関係があるように見えるが、実際には並列実行される処理を含む。例えば、センサから計算ノードへのデータの転送はどの順序で実行されてもよい。また、計算ノード１、２からそれぞれコントローラ１、２への計算結果の転送も順序に依存しない。なお旧来のアクティビティ図は、図１の図式と同様に見えるが、制御のメカニズムは定式化されていない。
【００２９】
事例２．内装工事のワークフローとタスク管理：
図３は、マンション等の内装工事のプロジェクトを簡略化して示している。ここでは、タスクの遂行リソース（実世界エージェント）を電気工、配管工、床工、壁貼り工、塗装工とする。また、図３に示すプロジェクトが部屋の数だけあるとする。この場合、図３のワークフローを制御する複数のタスクマネージャを並行して動作させ、各エージェントは、各タスクマネージャからの指示にしたがって特定の部屋の作業を実施する。実際には、各エージェントは、ＰＣやスマートフォン、タブレット端末等の情報端末を保持し、タスクマネージャは当該情報端末との間でタスクステージ情報を送受する。
【００３０】
各エージェントは、割り当てられた部屋の担当タスクが終了すると、その終了の事実を情報端末へ入力し、タスクマネージャは各エージェントの情報端末からの終了通知にもとづいてタスクステージを適宜進行させる。各エージェントは、別の部屋の担当タスクを、それが遂行可能な状態にあるならば着手する。遂行可能な状態にあるとは、すなわち前段階のタスクステージが終了し、タスクマネージャから別の部屋のタスクに対応するタスクステージの開始が通知されたことである。このようにヒューマン・エージェント（人が保持する情報端末を含む）は、タスクマネージャからステージの着手可能信号を受け取ることを契機としてタスクに着手する。
【００３１】
本発明者が考えるリアルワールド・オペレーティングシステム（以下「実世界ＯＳ」とも呼ぶ。）は、実世界のエージェントの複雑で分散協調的な相互作用を、これまでに述べたタスクマネージャの機能を中核にして、ワークフロー単位で管理し、実行させるための仕組みである。これからのＩＯＥ（Internet Of Everything）時代には、分散環境にある様々な自律的エージェントが同期し、協調し、全体としてワークフローとしてデザインされたサービスを提供することが求められる。実世界ＯＳは、膨大なエージェントが結びついた様々なシステムを設計、実装、管理するための基幹プラットフォームになる。
【００３２】
図４は、実世界ＯＳのビジョンを示し、実世界ＯＳによる制御範囲を模式的に示す。図の左側は仮想領域であり、シミュレーションによる仮想エージェントを含む。また図の右側は実世界エージェントの管理領域である。図４で示すように、タスクマネージャはエージェントベースのシミュレーションのコアエンジンになり、また、実世界エージェントの制御エンジンにもなる。これにより、仮想世界でのエージェントベースモデリングから、実世界でのエージェントコンピューティングまでシームレスに繋ぐことができる。シミュレーションによる設計と実世界エージェントを対象としたワークフローの管理の間で、仮想世界でシミュレーションをしたワークフローとプログラムとしてのエージェントを、実世界のエージェントに部分的に入れ替えること（部分実装）を行いながら、プロトタイピングを様々に行う設計方式が可能となり、最終的には実世界エージェントの管理のための動的な設計図として、エージェントベースのシミュレーションが残る。
【００３３】
実世界ＯＳが、ＩＯＴエージェントに対して分散協調制御を実行することで提供可能なサービスの例として、以下の（１）〜（７）が想定される。
（１）センサリング＆コントロール系サービスとして、ＨＥＭＳ、ＢＥＭＳ、ＣＥＭＳでのエネルギーセンサリングとそれによる機器制御のサービス、また、家やオフィス、コミュニティにおける見守りサービスやセキュリティサービスを提供する。
（２）データの分散検索系サービスとして、複数の病院の電子カルテの並列検索サービスを提供する。
（３）ビジネスデータ処理系サービスとして、図１〜図３で示すような自律分散的なビジネスデータ処理を提供する。
【００３４】
（４）安心安全やコミュニティ系のサービスとして、４−１）災害時のデータ収集とデータ共有サービス、４−２）災害時の電子カルテサービス、４−３）日常的なコミュニティでのアンケート調査と、調査結果の共有および加工サービスを提供する。
（５）センサリング＆統計・会計処理系サービスとして、ＨＥＭＳ、ＢＥＭＳ、ＣＥＭＳでのエネルギーセンサリングにもとづくエネルギー統計サービスや会計処理サービスを提供する。
（６）ライフログ系サービスとして、様々なライフログの収集・利用システムを提供する。
（７）ファクトリー系サービスとして、工場のエネルギー管理システムから工場のセンサネットワークを提供する。
【００３５】
このように、生活世界や産業社会の諸サービスは多かれ少なかれＩＯＴエージェントを利活用した自律分散協調システムとしてデザインできる。その自律分散協調システムの設計、実装、制御を支援することが実世界ＯＳの重要なミッションとなる。なお、実世界におけるＩＯＴエージェントの複雑な相互作用をバーチャルにデザインし、エミュレーションによるテストを行いつつ、徐々に実世界エージェントに置き換えていくこと、そして最終的に実世界エージェントによる自律分散協調システムを実現するという新しいシステム開発手法も想定される。
【００３６】
（実施の形態）
以下では、上記の概要で説明した分散協調制御を実現するワークフロー管理装置を詳細に説明する。図５は、実施の形態のＩＯＴ機器制御システム１０を示す。ＩＯＴ機器制御システム１０は、自律分散協調システムを具現化した情報処理システムである。ＩＯＴ機器制御システム１０は、ＩＯＴ機器１１、ワークフロー管理装置１２、ステークホルダ端末１３、ブローカ１５を備える。
【００３７】
ＩＯＴ機器１１は、実世界に存在する複数種類のエージェント機器である。各ＩＯＴ機器１１は、インターネットに接続されており、それぞれ自律して動作する。例えば、ワークフロー管理装置１２から通信網を介してステージが通知された場合に、そのステージに対応する動作を実行するものであり、この動作を実行するためのプログラム（およびプログラムを実行するためのＭＰＵ等）を搭載したものであってよい。実施の形態のＩＯＴ機器１１は、センサ機器２０、計算ノード３０、コントローラ４０、サービス機器５０を含む。
【００３８】
センサ機器２０は、公知の種々のセンサを備える機器である。例えばセンサ機器２０は、周囲の環境状態を検出し、その環境状態を示す情報を出力する。また例えば、周囲の環境状態が特定の状態になった場合にその事実を検出し、出力する。実施の形態のセンサ機器２０は、複数の温度センサ２２と複数の照度センサ２４を含む。例えば、工場に設置された数百個の温度センサを含み、また、オフィスビルのある居室に設置された数十個の照度センサを含む。
【００３９】
計算ノード３０は、各種の計算処理を実行する情報処理装置である。計算ノード３０は、温度計算ノード３２、照度計算ノード３４、会計計算ノード３６を含む。温度計算ノード３２は、複数の温度センサ２２により計測された温度にもとづ平均温度を計算し、照度計算ノード３４は、複数の照度センサ２４により計測された照度にもどづき最小照度を計算する。会計計算ノード３６は、エアコンの設定温度と、照明のオンオフ状態にもとづいて、所定のエネルギー会計計算を実行する。例えば、エネルギーの消費量や消費金額等を算出し、またエネルギー簿記を実行する。
【００４０】
サービス機器５０は、電気やガス等のエネルギーを消費しつつ生活世界や産業社会の諸サービスをユーザへ提供する機器であり、エネルギー消費機器とも言える。サービス機器５０は、エアコン５２と照明５４を含む。コントローラ４０は、サービス機器５０の動作を制御する制御機器である。コントローラ４０は、エアコンコントローラ４２と照明コントローラ４４を含む。エアコンコントローラ４２は、エアコンの設定温度を制御し、照明コントローラ４４は、照明のオンオフを制御する。
【００４１】
ワークフロー管理装置１２は、概要で説明したタスクマネージャと実世界ＯＳを具現化した情報処理装置である。ワークフロー管理装置１２は、ワークフローで定められたタスクステージ（以下、単に「ステージ」と呼ぶ。）の遷移にしたがって、複数のＩＯＴ機器１１の動作を制御する。ワークフロー管理装置１２の詳細な機能は後述する。なおワークフロー管理装置１２の物理的な態様に制限はなく、例えばＰＣやサーバでもよく、マイクロコントローラ、シングルボードコンピュータであってもよい。
【００４２】
ステークホルダ端末１３は、ＩＯＴ機器１１が設置された企業の担当者等、所定のステークホルダーにより操作される情報端末である。ステークホルダ端末１３は、会計計算ノード３６による計算結果であるエネルギー会計情報を取得し、適宜ディスプレイ等に表示させる。
【００４３】
ブローカ１５は、ＰＵＢ−ＳＵＢスキームにより装置間でのデータ送受を仲介する装置である。ブローカ１５は、公知のメッセージキュー製品やメッセージ指向ミドルウェアにより実現されてもよい。図５の各装置は、ＬＡＮ・ＷＡＮ・インターネット等の通信網を介し、ブローカ１５が定める通信プロトコルにしたがってＰＵＢ−ＳＵＢのスキームにてブローカ１５と通信し、装置間でデータを送受する。
【００４４】
ブローカ１５は、ステージブローカ１６とデータブローカ１７を含む。ステージブローカ１６は、上述の管理ブローカであり、ワークフロー管理装置１２と各ＩＯＴ機器１１間におけるステージの開始・終了に関する管理情報の送受を仲介する。データブローカ１７は、ＩＯＴ機器１１同士、または、ＩＯＴ機器１１とステークホルダ端末１３間におけるデータの送受を仲介する。
【００４５】
ここでＩＯＴ機器制御システム１０では、ワークフロー管理装置１２が管理するワークフローがどのようなステージを有するか、また、各ステージにおいてエージェントがどのような処理をすべきかが予め決められ、ＩＯＴ機器１１の製造者に公開される。各ＩＯＴ機器１１は、ワークフロー管理装置１２から特定のステージが通知された場合に、そのステージに応じた処理を行うよう実装される。
【００４６】
例えば、後述の温度収集ステージについて、周囲の温度を取得するタスクを実行すべきであることが予め定められ、公開される。温度センサ２２は、温度収集ステージの通知をサブスクライブしたことを契機に、周囲の温度を測定し、タスクの終了をステージブローカ１６へパブリッシュし、測定した温度をデータブローカ１７へパブリッシュするよう実装される。また後述の平均温度計算ステージについて、複数の温度データの平均を算出するタスクを実行すべきであることが予め定められ、公開される。温度計算ノード３２は、平均温度計算ステージの通知をサブスクライブしたことを契機に、複数の温度センサ２２が測定した温度の平均値を算出し、タスクの終了をステージブローカ１６へパブリッシュし、算出した平均温度をデータブローカ１７へパブリッシュするよう実装される。
【００４７】
図６は、図５のワークフロー管理装置１２の機能構成を示すブロック図である。ワークフロー管理装置１２は、通信部６０、制御部７０、データ記憶部８０を備える。通信部６０は、所定の通信プロトコルにしたがって外部装置とデータを送受する。例えば、予め定められたメッセージプロトコルにしたがって、ステージブローカ１６とのＰＵＢ−ＳＵＢスキームでのデータ送受を実行する。
【００４８】
制御部７０は、ワークフロー管理装置１２の動作を制御する。また、ワークフロー管理、言い換えれば、複数のＩＯＴ機器１１を分散協調制御するためのデータ処理を実行する。データ記憶部８０は、制御部７０によるデータ処理において参照され、また更新される各種データを記憶する記憶領域である。
【００４９】
本明細書のブロック図で示す各ブロックは、ハードウェア的には、コンピュータのＣＰＵやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００５０】
例えば、制御部７０の各機能ブロックに対応するソフトウェアモジュールを備えるアプリケーションプログラムがワークフロー管理装置１２にインストールされてもよい。そして、ワークフロー管理装置１２のＣＰＵが、各ソフトウェアモジュールをメモリに読み出して実行することにより、制御部７０の各機能ブロックの機能が発揮されてもよい。また、データ記憶部８０の各機能ブロックは、ストレージやメモリ等の記憶装置がデータを記憶することにより実現されてもよい。
【００５１】
データ記憶部８０は、ワークフロー情報保持部８２とステージ情報保持部８４を含む。ワークフロー情報保持部８２は、ワークフロー情報として、ワークフローが定める各ステージの前後関係と、各ステージから次のステージへ移行させる条件を保持する。典型的な移行条件は、ステージに予め対応づけられたタスクを終了したエージェントから、当該ステージのタスクを終了した旨の通知を受け付けることである。
【００５２】
ただし、複数のエージェントが１つのステージのタスクを並列実行する場合、当該ステージから次のステージへの移行条件として、一部のエージェントからタスク終了通知を受け付けたことをもって次のステージへの以降を許可得することを定めることができる。言い換えれば、タスクを実行させた複数のエージェントの全てからタスク終了通知を受け付けなくても、複数のエージェントのうち所定数以上のエージェントからタスク終了通知を受け付ければ次のステージへ移行させることを定めることができる。
【００５３】
図７は、実施の形態のワークフローを模式的に示す。実施の形態のワークフローは、概要で説明した事例１（例えば図１）に対応する形で、複数のステージ間の遷移を定め、また複数種類の実世界エージェントの動作を制御する。
【００５４】
ワークフロー情報保持部８２は、各ステージの前後関係として、ワークフロー開始後に、温度収集ステージ１００と照度収集ステージ１０２に移行すること、温度収集ステージ１００の次が平均温度計算ステージ１０４であることを示す情報を保持する。また、平均温度計算ステージ１０４の次がエアコン制御ステージ１０８であり、エアコン制御ステージ１０８の次がエネルギー会計計算ステージ１１２であることを示す情報を保持する。また、照度収集ステージ１０２の次が最小照度計算ステージ１０６であり、最小照度計算ステージ１０６の次が照明制御ステージ１１０であり、照明制御ステージ１１０の次がエネルギー会計計算ステージ１１２であることを示す情報を保持する。また、エネルギー会計計算ステージ１１２の終了によりワークフローが終了することを示す情報を保持する。
【００５５】
またワークフロー情報保持部８２は、温度収集ステージ１００から平均温度計算ステージ１０４への移行条件として、１００個の温度センサ２２のうち５０個以上の温度センサ２２から温度測定タスクの終了が通知されることを定めている。また、平均温度計算ステージ１０４からエアコン制御ステージ１０８への移行条件として、温度計算ノード３２から平均温度計算タスクの終了が通知されることを定めている。また、照度収集ステージ１０２から最小照度計算ステージ１０６への移行条件として、２０個の照度センサ２４のうち１５個以上の照度センサ２４から照度測定タスクの終了が通知されることを定めている。また、最小照度計算ステージ１０６から照明制御ステージ１１０への移行条件として、照度計算ノード３４から最小照度計算タスクの終了が通知されることを定めている。
【００５６】
図６に戻り、ステージ情報保持部８４は、ワークフローが現在どのステージであるかを示すステージ情報を保持する。ステージ情報には、ワークフローのステージがそれまでとは異なる新たなステージに移行した場合に、新たなステージの識別情報（名称やＩＤ等）が記録される。
【００５７】
ステージ情報は、現在のステージとして、複数のステージが同時に記録されることを許容する。図７の例では、温度収集ステージ１００〜平均温度計算ステージ１０４〜エアコン制御ステージ１０８と、照度収集ステージ１０２〜最小照度計算ステージ１０６〜照明制御ステージ１１０が並列して進められる。したがってステージ情報保持部８４は、現在のステージが温度収集ステージ１００であり、かつ、照度収集ステージ１０２、最小照度計算ステージ１０６、照明制御ステージ１１０のいずれかでもあることを示すステージ情報を保持し得る。またステージ情報保持部８４は、現在のステージが照度収集ステージ１０２であり、かつ、温度収集ステージ１００、平均温度計算ステージ１０４、エアコン制御ステージ１０８のいずれかでもあることを示すステージ情報を保持し得る。
【００５８】
制御部７０は、ステージ通知部７２、終了通知受付部７４、移行判定部７６、ステージ更新部７８を含む。ステージ通知部７２は、ステージ情報保持部８４に保持されたステージ情報を監視し、ステージ情報が更新された場合に、現在のステージを示す情報（以下「現在ステージ情報」と呼ぶ。）をステージブローカ１６へ送信する。これにより、現在のステージを１つ以上のＩＯＴ機器１１へ通知し、現在のステージに応じた動作を１つ以上のＩＯＴ機器１１に並列実行させる。
【００５９】
ステージ通知部７２が送信する現在ステージ情報は、現在のステージを識別可能な情報（例えばステージ名称やＩＤ）を含む。例えば、現在のステージの識別情報を示すトピックを付加したメッセージである。その一方、ＩＯＴ機器１１の動作態様を指定する内容は現在ステージ情報から排除されている。例えば現在ステージ情報は、ＩＯＴ機器１１の動作を直接的に規定するコマンドや、ＩＯＴ機器１１の動作時に参照され、ＩＯＴ機器１１の動作を間接的に規定するパラメータを含まない。このようにワークフロー管理装置１２は、ＩＯＴ機器１１に対して現在のステージを通知しつつ、現在のステージに対する具体的な動作は各ＩＯＴ機器１１の実装に委ねる。これにより、ＩＯＴ機器制御システム１０における各ＩＯＴ機器１１の独立性を高め、またセキュリティを高める。
【００６０】
終了通知受付部７４は、各ＩＯＴ機器１１から送信された動作終了通知をステージブローカ１６から受信する。動作終了通知は、ワークフローの現在のステージに対応する処理、言い換えれば、現在のステージで実行するよう定められたタスクが終了したことを示す情報であり、「タスク終了通知」とも言える。動作終了通知は、ＩＯＴ機器１１側で動作を終了したステージの識別情報を含むものであってよい。ただし動作終了通知は、ＩＯＴ機器１１におけるタスク処理で得られたデータ、例えば温度データや平均温度データを含まない。これらのデータは、データブローカ１７を介して、ＩＯＴ機器１１同士で送受される。これにより、ワークフロー管理装置１２は、ステージの開始、終了、移行判断に専念することができる。
【００６１】
移行判定部７６は、終了通知受付部７４における動作終了通知の受信状況にもとづいて、ワークフローの現在のステージについてワークフロー情報保持部８２に保持された次のステージへの移行条件が充足されたか否かを判定する。移行判定部７６は、移行条件が充足されたことを検出すると、移行元のステージと移行先のステージの組み合わせをステージ更新部７８へ通知する。
【００６２】
例えば、温度収集ステージ１００から平均温度計算ステージ１０４への移行条件として、１００個の温度センサ２２のうち半分の温度センサ２２から温度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部７６は、温度収集ステージ１００の動作が終了した旨を示す動作終了通知が５０個以上受信された場合に上記移行条件が充足されたと判定してもよい。同様に、照度収集ステージ１０２から最小照度計算ステージ１０６への移行条件として、２０個の照度センサ２４のうち１５個以上の照度センサ２４から照度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部７６は、照度収集ステージ１０２の動作が終了した旨を示す動作終了通知が１５個以上受信された場合に上記移行条件が充足されたと判定してもよい。
【００６３】
ステージ更新部７８は、現在のステージの移行条件が充足されたことが移行判定部７６により判定された場合に、現在のステージを次のステージへ進めるようステージ情報保持部８４に保持されたステージ情報を更新する。具体的には、移行判定部７６から移行元ステージと移行先ステージの組み合わせが通知された場合に、ステージ情報に記録された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。
【００６４】
またステージ更新部７８は、複数のステージが現在のステージとしてステージ情報に記録されている場合、それら複数のステージのうち移行判定部７６から通知された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。その一方、複数のステージのうち移行元ステージとして指定されないステージは、ステージ情報に記録されたままとし、すなわち現在のステージとして維持する。
【００６５】
例えば、現在のステージが温度収集ステージ１００と照度収集ステージ１０２であり、温度収集ステージ１００の移行条件のみが充足された場合、ステージ更新部７８は、現在のステージを平均温度計算ステージ１０４と照度収集ステージ１０２とするようステージ情報を更新する。その後、平均温度計算ステージ１０４の移行条件のみが充足された場合、ステージ更新部７８は、現在のステージをエアコン制御ステージ１０８と照度収集ステージ１０２とするようステージ情報を更新する。このように、複数のステージを並列して進めるようワークフローが規定されている場合、ＩＯＴ機器１１の動作制御および次のステージへの遷移を、並列するステージ毎に独立して実行する。
【００６６】
以上の構成によるＩＯＴ機器制御システム１０の動作を以下説明する。
図８は、ＩＯＴ機器制御システム１０の動作を示すシーケンス図である。図８は、図７のワークフローにしたがってワークフロー管理装置１２がＩＯＴ機器１１を制御する際の動作を示している。また図８は、概要で説明した事例１（例えば図２）に対応する。シーケンス図上、並列するステージ（例えば照度収集ステージ１０２と平均温度計算ステージ１０４等）の処理に前後関係があるように見えるが、並列するステージの処理は結果として前後関係が生じるものの、本質的には同時並列的に実行される。
【００６７】
前提として、ＩＯＴ機器１１のそれぞれは、自身が動作すべき特定のステージに対して予め定められたトピック名をステージブローカ１６およびデータブローカ１７に事前に登録しておく。これにより、各ＩＯＴ機器１１は、上記特定のステージの開始を示すメッセージ、また、タスクを実行するために必要なデータを含むメッセージのサブスクライバとして動作する。また各ＩＯＴ機器１１は、上記特定のステージに対応する動作が実装される。例えば、温度センサ２２は、温度収集ステージの開始を示す所定のトピック名をステージブローカ１６に登録しておき、また、温度収集ステージにおいて温度測定処理を実行するよう定めたプログラムを搭載している。
【００６８】
ワークフロー管理装置１２は、定期的に、もしくは、ユーザの指示に応じて図７のワークフローを開始する。ワークフロー管理装置１２のステージ更新部７８は、現在のステージを、温度収集ステージ１００および照度収集ステージ１０２とするようステージ情報を更新する。ステージ通知部７２は、温度収集ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ２）、それとともに照度収集ステージのトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュする（Ｓ４）。
【００６９】
複数の温度センサ２２のそれぞれは、温度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ１６からサブスクライブし（Ｓ６）、周囲の温度を測定する。そして、温度測定結果を示すトピックを付加し、温度データを本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ８）。各温度センサ２２は、温度収集ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ１０）、ワークフロー管理装置１２の終了通知受付部７４は、各温度センサ２２からの動作終了通知をステージブローカ１６からサブスクライブする（Ｓ１２）。
【００７０】
これに並行して、複数の照度センサ２４のそれぞれは、照度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ１６からサブスクライブし（Ｓ１４）、周囲の照度を測定する。そして、照度測定結果を示すトピックを付加し、照度データを本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ１６）。各照度センサ２４は、照度収集ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ１８）、ワークフロー管理装置１２の終了通知受付部７４は、各照度センサ２４からの動作終了通知をステージブローカ１６からサブスクライブする（Ｓ２０）。
【００７１】
ワークフロー管理装置１２の移行判定部７６は、温度収集ステージについての動作終了通知の受信状況に応じて、温度収集ステージ１００から平均温度計算ステージ１０４への移行条件が満たされたと判定する。例えば、数百個の温度センサ２２のうち移行条件が定める個数である５０個の温度センサ２２からパブリッシュされた５０個の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部７８は、現在のステージを温度収集ステージ１００から平均温度計算ステージ１０４へ切り替えるようステージ情報を更新する。これに並行して、移行判定部７６は、照度収集ステージについての動作終了通知の受信状況に応じて、照度収集ステージ１０２から最小照度計算ステージ１０６への移行条件が満たされたと判定する。例えば、数十個の照度センサ２４のうち移行条件が定める個数の照度センサ２４からパブリッシュされた当該個数の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部７８は、現在のステージを照度収集ステージ１０２から最小照度計算ステージ１０６へ切り替えるようステージ情報を更新する。
【００７２】
このように実施の形態のワークフローでは、複数のステージ間の実行順序（言い換えれば前後関係）として半順序関係を規定することを許容する。例えば、温度収集ステージ１００と照度収集ステージ１０２は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。また、温度収集ステージ１００の次の平均温度計算ステージ１０４と照度収集ステージ１０２も半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。既述したように、このようなステージ間の順序関係はワークフロー情報保持部８２に保持される。
【００７３】
ステージ更新部７８は、ワークフロー情報保持部８２に保持された順序関係を参照し、温度収集ステージ１００から平均温度計算ステージ１０４への移行条件が満たされた一方、照度収集ステージ１０２から最小照度計算ステージ１０６への移行条件が満たされていない場合、ワークフローの現在ステージが平均温度計算ステージ１０４であり、かつ、照度収集ステージ１０２でもあることを示すようステージ情報を更新する。すなわち、温度収集ステージ１００・平均温度計算ステージ１０４側のステージ移行と、照度収集ステージ１０２・最小照度計算ステージ１０６側のステージ移行を独立して実行する。
【００７４】
温度計算ノード３２は、温度測定結果を示すトピックが付加された複数の温度データをデータブローカ１７からサブスクライブする（Ｓ２２）。照度計算ノード３４は、照度測定結果を示すトピックが付加された複数の照度データをデータブローカ１７からサブスクライブする（Ｓ２４）。
【００７５】
ワークフロー管理装置１２のステージ通知部７２は、平均温度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ２６）、温度計算ノード３２はその現在ステージ情報をステージブローカ１６からサブスクライブする（Ｓ２８）。温度計算ノード３２は、複数の温度センサ２２で測定された温度にしたがって平均温度を算出し、平均温度計算結果を示すトピックを付加し、平均温度データを本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ３０）。温度計算ノード３２は、平均温度計算ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ３２）、ワークフロー管理装置１２の終了通知受付部７４はその動作終了通知をステージブローカ１６からサブスクライブする（Ｓ３４）。エアコンコントローラ４２は、平均温度計算結果を示すトピックが付加された平均温度データをデータブローカ１７からサブスクライブする（Ｓ３６）。
【００７６】
これに並行して、ワークフロー管理装置１２のステージ通知部７２は、最小照度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ３８）、照度計算ノード３４はその現在ステージ情報をステージブローカ１６からサブスクライブする（Ｓ４０）。照度計算ノード３４は、複数の照度センサ２４で測定された照度にしたがって最小照度を算出し、最小照度計算結果を示すトピックを付加し、最小照度データを本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ４２）。照度計算ノード３４は、最小照度計算ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ４４）、ワークフロー管理装置１２の終了通知受付部７４はその動作終了通知をステージブローカ１６からサブスクライブする（Ｓ４６）。照明コントローラ４４は、最小照度計算結果を示すトピックが付加された最小照度データをデータブローカ１７からサブスクライブする（Ｓ４８）。
【００７７】
ワークフロー管理装置１２の移行判定部７６は、平均温度計算ステージについての動作終了通知の受信状況にしたがって、平均温度計算ステージ１０４からエアコン制御ステージ１０８への移行条件が満たされたと判定する。ステージ更新部７８は、現在のステージを平均温度計算ステージ１０４からエアコン制御ステージ１０８へ切り替えるようステージ情報を更新する。これに並行して、移行判定部７６は、最小照度計算ステージについての動作終了通知の受信状況にしたがって、最小照度計算ステージ１０６から照明制御ステージ１１０への移行条件が満たされたと判定する。ステージ更新部７８は、現在のステージを最小照度計算ステージ１０６から照明制御ステージ１１０へ切り替えるようステージ情報を更新する。
【００７８】
ワークフロー管理装置１２のステージ通知部７２は、エアコン制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ５０）、エアコンコントローラ４２はその現在ステージ情報をステージブローカ１６からサブスクライブする（Ｓ５２）。エアコンコントローラ４２は、温度計算ノード３２で決定された平均温度にしたがってエアコン５２の新たな設定温度を決定し、その設定温度で動作するようエアコン５２を制御する（Ｓ５４）。この例ではエアコンコントローラ４２とエアコン５２が直接接続されるが、データブローカ１７を介して間接的に接続されてもよい。
【００７９】
エアコンコントローラ４２は、エアコン制御結果を示すトピックを付加し、新たな設定温度を本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ５６）。また、エアコンコントローラ４２は、エアコン制御ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ５８）、ワークフロー管理装置１２の終了通知受付部７４はその動作終了通知をステージブローカ１６からサブスクライブする（Ｓ６０）。
【００８０】
これに並行して、ワークフロー管理装置１２のステージ通知部７２は、照明制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ６２）、照明コントローラ４４はその現在ステージ情報をステージブローカ１６からサブスクライブする（Ｓ６４）。照明コントローラ４４は、照度計算ノード３４で決定された最小照度にしたがって照明５４のオンもしくはオフを決定し、照明５４を点灯もしくは消灯させる（Ｓ６６）。この例では照明コントローラ４４と照明５４が直接接続されるが、データブローカ１７を介して間接的に接続されてもよい。
【００８１】
照明コントローラ４４は、照明制御結果を示すトピックを付加し、照明５４のオンオフ状態を本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ６８）。また、照明コントローラ４４は、照明制御ステージについての動作終了通知をステージブローカ１６へパブリッシュし（Ｓ７０）、ワークフロー管理装置１２の終了通知受付部７４はその動作終了通知をステージブローカ１６からサブスクライブする（Ｓ７２）。
【００８２】
会計計算ノード３６は、エアコン制御結果を示すトピックが付加された設定温度データをデータブローカ１７からサブスクライブする（Ｓ７４）。これに並行して、会計計算ノード３６は、照明制御結果を示すトピックが付加された照明オンオフ情報をデータブローカ１７からサブスクライブする（Ｓ７６）。
【００８３】
ワークフロー管理装置１２の移行判定部７６は、エアコン制御ステージについての動作終了通知の受信状況にしたがって、エアコン制御ステージ１０８からエネルギー会計計算ステージ１１２への移行条件が満たされたと判定する。また移行判定部７６は、照明制御ステージについての動作終了通知の受信状況にしたがって、照明制御ステージ１１０からエネルギー会計計算ステージ１１２への移行条件が満たされたと判定する。ステージ更新部７８は、エアコン制御ステージ１０８からエネルギー会計計算ステージ１１２への移行条件が満たされ、かつ、照明制御ステージ１１０からエネルギー会計計算ステージ１１２への移行条件も満たされた場合に、現在のステージを、エアコン制御ステージ１０８および照明制御ステージ１１０から、エネルギー会計計算ステージ１１２へ切り替えるようステージ情報を更新する。
【００８４】
このように実施の形態のワークフローでは、複数のステージ間の実行順序として半順序関係を規定することを許容する。例えば、エアコン制御ステージ１０８と照明制御ステージ１１０は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。またここでは、エネルギー会計計算ステージ１１２は、エアコン制御ステージ１０８と照明制御ステージ１１０の両方が終了したことを条件として実行可能である。既述したように、このようなステージ間の順序関係はワークフロー情報保持部８２に保持される。
【００８５】
ステージ更新部７８は、ワークフロー情報保持部８２に保持された順序関係を参照し、エアコン制御ステージ１０８からエネルギー会計計算ステージ１１２への移行条件が満たされた一方、照明制御ステージ１１０からエネルギー会計計算ステージ１１２への移行条件が満たされていない場合に、エアコン制御ステージ１０８が終了した状態であり、かつ、照明制御ステージ１１０でもあることを示すようステージ情報を更新する。その後、照明制御ステージ１１０からエネルギー会計計算ステージ１１２の移行条件が満たされると、ステージ更新部７８は、現在のステージをエネルギー会計計算ステージ１１２へ切り替えるようステージ情報を再度更新する。これにより、ワークフローをエネルギー会計計算ステージ１１２へ移行させる。
【００８６】
ワークフロー管理装置１２のステージ通知部７２は、エネルギー会計計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ１６へパブリッシュし（Ｓ７８）、会計計算ノード３６はその現在ステージ情報をステージブローカ１６からサブスクライブする（Ｓ８０）。会計計算ノード３６は、エアコンコントローラ４２で決定されたエアコン５２の設定温度と、照明コントローラ４４で決定された照明５４のオンオフにしたがって、エネルギー会計計算処理を実行する。会計計算ノード３６は、エネルギー会計計算結果を示すトピックを付加し、エネルギー会計データを本文に含むメッセージをデータブローカ１７へパブリッシュする（Ｓ８２）。また、会計計算ノード３６は、エネルギー会計計算ステージについての動作終了通知をステージブローカ１６へパブリッシュする（Ｓ８４）。
【００８７】
ワークフロー管理装置１２の終了通知受付部７４は、エネルギー会計計算ステージについての動作終了通知をステージブローカ１６からサブスクライブする（Ｓ８６）。移行判定部７６がエネルギー会計計算ステージ１１２からエンドステージへの移行条件が満たされたと判定すると、ワークフロー管理装置１２における図７のワークフローの１サイクルの処理が完了する。なお、所定時間（１０分等）が経過するたびに、ワークフロー管理装置１２は図７のワークフローの処理を繰り返してもよく、すなわち、図８に示す動作を定期的に繰り返してもよい。
【００８８】
ステークホルダ端末１３は、エネルギー会計計算結果を示すトピックが付加されたエネルギー会計データをデータブローカ１７からサブスクライブし（Ｓ８８）、そのデータを所定の記憶装置に記憶させる。ステークホルダ端末１３は、会計計算ノード３６から定期的に通知されるエネルギー会計データを蓄積してもよく、複数回に亘り通知されたエネルギー会計データを１日単位や１月単位で集計する処理を実行してもよい。また、その集計結果を所定の記憶装置に記憶させ、また、ディスプレイや印刷装置へ出力してもよい。
【００８９】
実施の形態のワークフロー管理装置１２は、並列する複数のステージのタスクを複数のエージェントに並列して割当て、各エージェントにタスクを並列して実行させる。また、並列する各ステージを次のステージへ進めるか否かを、タスク割当先の各エージェントが互いに独立して送信するタスク終了通知の受信状況にもとづいて決定する。これにより、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。すなわち、１つのサービス提供のために実行すべき複数のタスクの処理順序を半順序で定義可能にすることで、多数のエージェントによるタスク処理を効率的に制御し、効率的なサービス提供を実現する。
【００９０】
例えば、あるステージの移行条件として、当該ステージのタスクを割当てた複数のエージェントのうち所定数のエージェントからタスク終了通知を受け付けた場合に次のステージへ移行することを定めることができる。この場合、具体的にどのエージェントからタスク終了通知を受け付けたかにはよらず、受信したタスク終了通知の個数が所定数に達したことを契機にステージ移行がなされる。これにより、タスク終了通知の送信元がエージェントＡである場合の処理、エージェントＢである場合の処理等、多くの種類の処理を定義する必要がなく、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。
【００９１】
また、実施の形態のＩＯＴ機器制御システム１０では、ワークフロー管理装置１２とＩＯＴ機器１１間のデータフローのためのステージブローカ１６と、ＩＯＴ機器１１同士のデータフローのためのデータブローカ１７を別個に設けた。これにより、中継対象のデータの特性に合わせて、パフォーマンスやセキュリティ等の設定を最適化したブローカを設けることができ、システム全体のパフォーマンスやセキュリティを効果的に高めることができる。例えば、ステージブローカ１６は、パフォーマンスよりもセキュリティを重点的に高めた設定とすることが望ましい。その一方、データブローカ１７は、仲介するデータ数の多寡やデータサイズの大小に応じた設定がなされてもよく、仲介するデータの特性に応じて複数のデータブローカ１７を設けてもよい。
【００９２】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００９３】
第１の変形例を説明する。上記実施の形態では、ワークフロー管理装置１２による制御対象のエージェントとしてＩＯＴ機器１１を示したが、概要の事例２で示したように、エージェントは人であってもよい。この場合、ワークフロー管理装置１２は、人が保持する情報端末に対して現在のステージを通知してもよい。この情報端末は、通知されたステージに応じたタスクの内容をディスプレイに表示させてもよい。人（すなわちタスク作業者）は、タスクが完了するとその旨を情報端末へ入力し、情報端末はワークフロー管理装置１２へタスク終了通知を送信し、ワークフロー管理装置１２は、そのタスク終了通知にしたがってステージを進行させてもよい。
【００９４】
第２の変形例として、ステージの移行条件を含むタスク遷移述語について付言する。ワークフロー情報保持部８２は、各ステージについて定められたタスク遷移述語を保持し、ステージ更新部７８は、タスク遷移述語にしたがって各ステージの移行態様を決定する。タスク遷移述語には、ステージ移行に関する様々なＡＮＤ条件、ＯＲ条件、ＮＯＴ条件を記述可能である。
【００９５】
あるステージのタスク遷移述語は、移行条件が満たされた場合に次のステージへ移行することを定め、かつ、現在のステージ情報を外部へ通知後（もしくは現在のステージへ移行後）の所定時間内に次のステージへの移行条件が満たされない（例えばタイマによるタイムアウトを検出した）場合に、代替的・例外的なステージ移行を実行することを定めてもよい。所定時間内に次のステージへの移行条件が満たされないとは、例えば、ＩＯＴ機器１１からのタスク終了通知を待つべき所定の待機時間が経過した場合である。同様に、タスク遷移述語は、タスクを実行したＩＯＴ機器１１から異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行することを定めてもよい。
【００９６】
ステージ更新部７８は、所定時間内に移行条件が満たされない、または異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行してもよい。代替的・例外的なステージ移行は、それまでのワークフロー、もしくはそれまでとは異なるワークフローの特定のステージへ移行することでもよい。例えば、ワークフロー管理装置１２が複数のワークフローによる外部機器の制御を並行して実行する場合に、どのワークフローで例外やエラーが検出された際にも、例外処理用の共通のワークフローの特定のステージへ移行することを規定したものでもよい。本変形例によると、ワークフローにおける多様なステージ遷移を実現でき、また、ワークフローによる外部機器制御に要求される様々なエラー処理、例外処理に柔軟に対応できる。
【００９７】
第３の変形例を説明する。上記実施の形態では言及していないが、ワークフロー管理装置１２により制御対象となるＩＯＴ機器１１は、複数のタスクステージに対応した複数の機能を備えてもよく、それら複数の機能を呼び出すための複数のＡＰＩを備えてもよい。複数のＡＰＩは、例えば、ワークフロー管理装置１２からステージＡの開始が通知された場合に呼び出されるインタフェースＡと、ステージＢの開始が通知された場合に呼び出されるインタフェースＢを含んでもよい。これにより、物理的に１つのＩＯＴ機器１１に複数種類の役割（すなわちタスク）を実行させることができる。
【００９８】
例えば、１つのＩＯＴ機器１１が、複数種類の環境情報を検知するマルチセンサ機器の場合に、温度収集ステージ１００を通知することで温度センサ２２として機能させ、また、照度収集ステージ１０２を通知することで照度センサ２４として機能させることができる。また例えば、１つのＩＯＴ機器１１が、複数機器を集中制御するコントローラの場合に、エアコン制御ステージ１０８を通知することでエアコンコントローラ４２として機能させ、また、照明制御ステージ１１０を通知することで照明コントローラ４４として機能させることができる。
【００９９】
なお、１つのＩＯＴ機器１１は、１つのワークフロー管理装置１２で動作する複数のワークフロー、または、複数のワークフロー管理装置１２で動作する複数のワークフローからステージの通知を受け付け、各ワークフローから通知されたステージに応じたタスクを実行してもよい。すなわち、１つのＩＯＴ機器１１によるサービスを複数のワークフローが利用してもよい。
【０１００】
また、ＩＯＴ機器１１は、ワークフローとステージの組み合わせを単位としてタスクを識別してもよく、言い換えれば、ワークフローとステージの組み合わせと、実行すべきタスクとの対応関係を保持してもよい。この場合、ワークフロー管理装置１２は、ワークフローの識別情報とステージの識別情報の組み合わせを、現在ステージ情報としてＩＯＴ機器１１へ送信してもよい。ＩＯＴ機器１１は、呼び出し元のワークフローが異なれば、同じステージ名が通知されても異なるタスクを実行してもよく、逆に、呼び出し元のワークフローが異なれば、異なるステージ名が通知されても同じタスクを実行してもよい。
【０１０１】
第４の変形例を説明する。上記実施の形態では、ブローカを介したメッセージ技術により、ワークフロー管理装置１２とＩＯＴ機器１１間のデータフローと、複数のＩＯＴ機器１１間のデータフローを実現したが、他の技術によりデータを送受してもよい。例えば、データの送信元装置と送信先装置間で公知のユニキャスト通信、マルチキャスト通信、Ｐ２Ｐ通信を実行してもよい。また、公知のデータ共有技術を使用してもよい。また、一方の装置がクラウドシステムへデータをアップロードし、他方の装置がクラウドシステムからデータをダウンロードすることで、情報通知およびデータ共有を実現してもよい。
【０１０２】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。
【符号の説明】
【０１０３】
１０  ＩＯＴ機器制御システム、  １１  ＩＯＴ機器、  １２  ワークフロー管理装置、  １６  ステージブローカ、  １７  データブローカ、  ７２  ステージ通知部、  ７４  終了通知受付部、  ７６  移行判定部、  ７８  ステージ更新部、  ８２  ワークフロー情報保持部、  ８４  ステージ情報保持部。
【図１】
2015204013.tif 000003
【図２】
2015204013.tif 000004
【図３】
2015204013.tif 000005
【図４】
2015204013.tif 000006
【図５】
2015204013.tif 000007
【図６】
2015204013.tif 000008
【図７】
2015204013.tif 000009
【図８】
2015204013.tif 000010