【国等の委託研究の成果に係る記載事項】(出願人による申告)平成25年度、独立行政法人科学技術振興機構、研究成果展開事業 センターオブイノベーション(COI)プログラム、COI−T「オンデマンド・ライフ&ワークを全世界が享受できるSmart社会を支える世界最先端ICT創出COI拠点」、産業技術力強化法第19条の適用を受ける特許出願
【文献】
田沼 英樹,エージェントベース社会シミュレーション言語SOARSの開発,電子情報通信学会論文誌,2007年 9月 1日,Vol.J90-D No.9,pp.2415-2422
(58)【調査した分野】(Int.Cl.,DB名)
前記ステージ通知部は、前記ワークフローの現在のステージを識別可能な情報であり、かつ、前記外部機器の動作態様を指定する内容を排除した情報を前記外部機器へ送信することを特徴とする請求項1に記載のワークフロー管理装置。
外部機器の動作を複数のステージに亘り制御するワークフローについて、所定の記憶領域に記憶された前記ワークフローが現在どのステージであるかを示すステージ情報にしたがって、前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させるステップと、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて、前記現在のステージから次のステージへの予め定められた移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新するステップと、
をコンピュータが実行し、
前記ワークフローのステージ間に半順序関係があり、第1ステージと第2ステージが比較不可能でかつ、第3ステージが第1ステージの次に実行可能であるが、第3ステージが第2ステージとは比較不可能な場合には、前記更新するステップは、第1ステージの移行条件が満たされた一方、第2ステージの移行条件が満たされていない場合に、前記ワークフローが第1ステージの次の第3ステージであり、かつ、第2ステージでもあることを示すよう前記ステージ情報を更新することを特徴とするワークフロー管理方法。
外部機器の動作を複数のステージに亘り制御するワークフローについて、所定の記憶領域に記憶された前記ワークフローが現在どのステージであるかを示すステージ情報にしたがって、前記ワークフローの現在のステージを前記外部機器へ通知することにより、前記現在のステージに応じた動作を前記外部機器に実行させる機能と、
前記外部機器から前記現在のステージの動作を終了した旨が通知されて、前記現在のステージから次のステージへの予め定められた移行条件が満たされた場合に、前記ワークフローのステージを進めるよう前記ステージ情報を更新する機能と、
をコンピュータに実現させ、
前記ワークフローのステージ間に半順序関係があり、第1ステージと第2ステージが比較不可能でかつ、第3ステージが第1ステージの次に実行可能であるが、第3ステージが第2ステージとは比較不可能な場合には、前記更新する機能は、第1ステージの移行条件が満たされた一方、第2ステージの移行条件が満たされていない場合に、前記ワークフローが第1ステージの次の第3ステージであり、かつ、第2ステージでもあることを示すよう前記ステージ情報を更新することを特徴とするワークフロー管理プログラム。
【発明を実施するための形態】
【0012】
(概要の説明)
まず、実施の形態の概要として、複数のタスクを半順序関係で整列したワークフローベースのシステムデザインを説明する。プロジェクトであれ定型業務であれ、順序づけられたタスクの集合という意味でのワークフローは、何らかの仕事を体系立てて整理し、理解し、実行するための基本的な認識の単位である。ワークフローは、ワークフローを構成する個々のタスクに対して、実際にタスクを遂行するリソースを割り当てていき、一連の作業、サービスを実現する。
【0013】
実際にタスクを遂行するリソースは、例えば人、プログラム、機器等であってよく、以下「エージェント」とも呼ぶ。特に、インターネット等のネットワークに接続されて外部機器と通信可能なエージェントを「IOT(Internet Of Things)機器」とも呼ぶ。
【0014】
様々なセンサやコントローラ、アクチュエータ等、膨大な数のエージェントを対象として、あるワークフローにおいてこれらの制御を行う場合に、各エージェントの並列作業を効率的に管理する手法は、これまで十分な提案がなされていない。ワークフロー内のタスク間の関係は、線形順序(すなわち全順序)ではなく半順序構造を持つことがある。例えば、あるタスクの後に実行可能な複数のタスクがあり、これら複数のタスクのどちらが先に実行されてもよいことがしばしばある。これら複数のタスクは並列関係と言え、各タスクの遂行を並列実行することができる。この並列性は、同じタスクが割り当てられた複数のエージェント間でのタスク遂行の並列性とは次元が異なる。
【0015】
ワークフローが定めるタスクを、実行順序を制御するための因果順序のシンボルとして用いる場合に「タスクステージ」と呼ぶ。ワークフローの各タスクステージに対応するエージェントの活動は、個々のノード(例えばエージェントが実装されたセンサ等、各種機器)において自律動作を行うプログラムとして記述されていることが前提となる。個々のノードは、現在どのタスクステージであるかを示す情報を取得し、そのタスクステージに対応する個々のエージェントプログラムを起動する。また、個々のエージェントはタスクステージに対応する処理が終了したことをワークフロー側へ報告し、次のタスクの指示を待つ。
【0016】
ワークフローにもとづいて、実世界のエージェント個々によるタスクの実行順序を制御する機能を「タスクマネージャ」と呼ぶ。タスクマネージャは、ワークフローの実行エンジンとも言え、今どのタスクステージを実行すべきであるかをエージェントへ通知する。さらにタスクの完了通知をエージェントから受け取り、適宜タスクステージを進める。このように、タスクマネージャとエージェント間にはタスク管理のためのデータフローが生じる。
【0017】
以下、分散した環境で自律的に動作する個々のエージェントを、全体として協調して動作するよう制御することを「分散協調制御」とも呼ぶ。実施の形態ではワークフローを使用して分散協調制御を実現する。また、分散協調制御により、自律した個々のエージェントを全体として協調動作させるシステムを「自律分散協調システム」とも呼ぶ。本実施の形態では、ネットワークを介して結ばれたIOT機器の間での分散協調的ワークフローの管理技術を提案する。
【0018】
自律分散協調システムでは、個々のエージェント間におけるデータストリームの意味でのデータフローも重要になる。例えば、あるタスクステージにおける計測タスクや計算タスクの実行結果は、その結果を入力とする別のタスクステージにおける計算タスクや制御タスクへ受け渡さなければならない。また、このようなエージェント間のデータフローはタスクマネージャを経由する必要はない。
【0019】
実施の形態では、タスクマネージャとエージェント間のデータフロー、および、あるエージェントと別のエージェント間のデータフローをパブリッシュ・サブスクライブ(以下「PUBーSUB」とも呼ぶ。)のスキームを使って実現する。PUB−SUBスキームは、送信元と送信先でデータを共有するために、ブローカと呼ばれる特殊なエージェントを用いる。
【0020】
送信先の主体に対して渡すべきデータにトピックと呼ばれるタグを付加し、トピックを付加したデータをブローカへ送信する送信元の主体はパブリッシャと呼ばれる。また、特定のトピックが付加されたデータの転送リクエストをブローカへ登録する主体(すなわちデータの送信先の主体)はサブスクライバと呼ばれる。ブローカへパブリッシュされたデータのうち、サブスクライバが登録したトピックを有するデータを、ブローカはサブスクライバへ配信する。
【0021】
PUB−SUBは、アドレス等の概念なしに必要なデータを必要な所に、多対多で送ることができるスキームである。実施の形態では、タスクマネージャとエージェント間においてタスクステージに関する管理情報を転送するための管理ブローカと、複数のエージェント間でタスク遂行に必要なデータを転送するためのデータブローカの2つを使用するシステムを提案する。
【0022】
タスクマネージャとエージェントの基本的な動作を説明する。
(1)タスクマネージャは、管理ブローカに、現在実行可能なタスクステージ名をパブリッシュする。エージェントは、予め自分の遂行するタスクステージ名をブローカへ登録しておき、登録したタスクステージ名がパブリッシュされると、その事実を管理ブローカからサブスクライブしてタスクを遂行する。タスクの遂行が終了したエージェントは、タスクステージの終了と必要な管理情報を管理ブローカへパブリッシュするとともに、必要なトピックを付して他のエージェントによるタスク遂行用のデータをデータブローカへパブリッシュする。
【0023】
(2)タスクマネージャは、タスクステージの遷移可否を判断する。これを決めるのがタスク遷移述語である。タスク遷移述語は、エージェントから受け付けたタスク終了情報や管理データなどにもとづいて、次のタスクステージへ遷移してよいかを判定するプログラムである。
【0024】
例えば、エージェントとしてのセンサを数百個設置して所定の環境状態(温度等)を計測し、環境状態の平均値を求めて何らかの制御を実行するシステムを考える。このシステムのタスクマネージャには、半数のセンサが計測(すなわちタスク処理)を終了してタスク終了情報を送ってくれば、次のステージに遷移してよいことを定めるタスク遷移述語を実装してもよい。また、分散ストリーム計算においては、計算が無事終了したことを示すタスク終了情報の受け付けをもってステージの遷移を決定するタスク遷移述語を実装してもよい。また、計算が異常終了した旨のタスク終了情報を受け付けた場合に、通常のワークフローから非常用のワークフローへ遷移する等の分岐の判断についてもタスク遷移述語に実装する。
【0025】
(3)上記(1)(2)のプロセスを繰り返すことで、タスクマネージャはタスクステージ毎に実世界のエージェントとのハンドシェイクを遂行していく。この場合、タスクステージ間の並列性は、複数のタスクステージ名を並列してパブリッシュすることで実現される。また、同じタスクステージに属する複数のエージェントは、実世界において並列にタスクを遂行する。エージェント間の並列処理は、順序が入れ替わったり遅延があったとしても、タスクマネージャによる判定結果には影響がない。これは、人間によるプロジェクト管理においても、ワークフローを用いた分散協調制御においても同様である。
【0026】
次に分散協調制御の事例を説明する。
事例1.センサによる機器の管理とエネルギー会計の制御:
この例では、複数の温度センサと複数の照度センサのデータから、平均温度と最小照度を計算し、それをもとにコントローラがエアコンと照明を制御する。また、エアコンと照明の稼働状態にもとづいてエネルギー消費を計算し、その計算結果をステークホルダへ通知する処理を制御する。
【0027】
図1は、事例1の制御のためのタスクステージと、各タスクステージへのリソースマッピングを示している。事例1では、センサ(図中の「S」)によるデータ収集のタスクステージに対して複数のセンサが割り当てられている。また、各タスクステージに対するリソースの割当は固定的である。
図2は、ブローカを介したデータ連携を模式的に示している。事例1では、タスクマネージャと実世界エージェント間のステージ管理を仲介する管理ブローカであるステージブローカと、複数のエージェント間のデータフローを仲介するデータブローカの2つが、制御フローとデータフローのそれぞれをPUB−SUBスキームで仲介する。
【0028】
図2では、複数のエージェント間のデータフローをシーケンス図で示している。シーケンス図の特性上、矢印の記載位置(上下関係)により処理の前後関係があるように見えるが、実際には並列実行される処理を含む。例えば、センサから計算ノードへのデータの転送はどの順序で実行されてもよい。また、計算ノード1、2からそれぞれコントローラ1、2への計算結果の転送も順序に依存しない。なお旧来のアクティビティ図は、
図1の図式と同様に見えるが、制御のメカニズムは定式化されていない。
【0029】
事例2.内装工事のワークフローとタスク管理:
図3は、マンション等の内装工事のプロジェクトを簡略化して示している。ここでは、タスクの遂行リソース(実世界エージェント)を電気工、配管工、床工、壁貼り工、塗装工とする。また、
図3に示すプロジェクトが部屋の数だけあるとする。この場合、
図3のワークフローを制御する複数のタスクマネージャを並行して動作させ、各エージェントは、各タスクマネージャからの指示にしたがって特定の部屋の作業を実施する。実際には、各エージェントは、PCやスマートフォン、タブレット端末等の情報端末を保持し、タスクマネージャは当該情報端末との間でタスクステージ情報を送受する。
【0030】
各エージェントは、割り当てられた部屋の担当タスクが終了すると、その終了の事実を情報端末へ入力し、タスクマネージャは各エージェントの情報端末からの終了通知にもとづいてタスクステージを適宜進行させる。各エージェントは、別の部屋の担当タスクを、それが遂行可能な状態にあるならば着手する。遂行可能な状態にあるとは、すなわち前段階のタスクステージが終了し、タスクマネージャから別の部屋のタスクに対応するタスクステージの開始が通知されたことである。このようにヒューマン・エージェント(人が保持する情報端末を含む)は、タスクマネージャからステージの着手可能信号を受け取ることを契機としてタスクに着手する。
【0031】
本発明者が考えるリアルワールド・オペレーティングシステム(以下「実世界OS」とも呼ぶ。)は、実世界のエージェントの複雑で分散協調的な相互作用を、これまでに述べたタスクマネージャの機能を中核にして、ワークフロー単位で管理し、実行させるための仕組みである。これからのIOE(Internet Of Everything)時代には、分散環境にある様々な自律的エージェントが同期し、協調し、全体としてワークフローとしてデザインされたサービスを提供することが求められる。実世界OSは、膨大なエージェントが結びついた様々なシステムを設計、実装、管理するための基幹プラットフォームになる。
【0032】
図4は、実世界OSのビジョンを示し、実世界OSによる制御範囲を模式的に示す。図の左側は仮想領域であり、シミュレーションによる仮想エージェントを含む。また図の右側は実世界エージェントの管理領域である。
図4で示すように、タスクマネージャはエージェントベースのシミュレーションのコアエンジンになり、また、実世界エージェントの制御エンジンにもなる。これにより、仮想世界でのエージェントベースモデリングから、実世界でのエージェントコンピューティングまでシームレスに繋ぐことができる。シミュレーションによる設計と実世界エージェントを対象としたワークフローの管理の間で、仮想世界でシミュレーションをしたワークフローとプログラムとしてのエージェントを、実世界のエージェントに部分的に入れ替えること(部分実装)を行いながら、プロトタイピングを様々に行う設計方式が可能となり、最終的には実世界エージェントの管理のための動的な設計図として、エージェントベースのシミュレーションが残る。
【0033】
実世界OSが、IOTエージェントに対して分散協調制御を実行することで提供可能なサービスの例として、以下の(1)〜(7)が想定される。
(1)センサリング&コントロール系サービスとして、HEMS、BEMS、CEMSでのエネルギーセンサリングとそれによる機器制御のサービス、また、家やオフィス、コミュニティにおける見守りサービスやセキュリティサービスを提供する。
(2)データの分散検索系サービスとして、複数の病院の電子カルテの並列検索サービスを提供する。
(3)ビジネスデータ処理系サービスとして、
図1〜
図3で示すような自律分散的なビジネスデータ処理を提供する。
【0034】
(4)安心安全やコミュニティ系のサービスとして、4−1)災害時のデータ収集とデータ共有サービス、4−2)災害時の電子カルテサービス、4−3)日常的なコミュニティでのアンケート調査と、調査結果の共有および加工サービスを提供する。
(5)センサリング&統計・会計処理系サービスとして、HEMS、BEMS、CEMSでのエネルギーセンサリングにもとづくエネルギー統計サービスや会計処理サービスを提供する。
(6)ライフログ系サービスとして、様々なライフログの収集・利用システムを提供する。
(7)ファクトリー系サービスとして、工場のエネルギー管理システムから工場のセンサネットワークを提供する。
【0035】
このように、生活世界や産業社会の諸サービスは多かれ少なかれIOTエージェントを利活用した自律分散協調システムとしてデザインできる。その自律分散協調システムの設計、実装、制御を支援することが実世界OSの重要なミッションとなる。なお、実世界におけるIOTエージェントの複雑な相互作用をバーチャルにデザインし、エミュレーションによるテストを行いつつ、徐々に実世界エージェントに置き換えていくこと、そして最終的に実世界エージェントによる自律分散協調システムを実現するという新しいシステム開発手法も想定される。
【0036】
(実施の形態)
以下では、上記の概要で説明した分散協調制御を実現するワークフロー管理装置を詳細に説明する。
図5は、実施の形態のIOT機器制御システム10を示す。IOT機器制御システム10は、自律分散協調システムを具現化した情報処理システムである。IOT機器制御システム10は、IOT機器11、ワークフロー管理装置12、ステークホルダ端末13、ブローカ15を備える。
【0037】
IOT機器11は、実世界に存在する複数種類のエージェント機器である。各IOT機器11は、インターネットに接続されており、それぞれ自律して動作する。例えば、ワークフロー管理装置12から通信網を介してステージが通知された場合に、そのステージに対応する動作を実行するものであり、この動作を実行するためのプログラム(およびプログラムを実行するためのMPU等)を搭載したものであってよい。実施の形態のIOT機器11は、センサ機器20、計算ノード30、コントローラ40、サービス機器50を含む。
【0038】
センサ機器20は、公知の種々のセンサを備える機器である。例えばセンサ機器20は、周囲の環境状態を検出し、その環境状態を示す情報を出力する。また例えば、周囲の環境状態が特定の状態になった場合にその事実を検出し、出力する。実施の形態のセンサ機器20は、複数の温度センサ22と複数の照度センサ24を含む。例えば、工場に設置された数百個の温度センサを含み、また、オフィスビルのある居室に設置された数十個の照度センサを含む。
【0039】
計算ノード30は、各種の計算処理を実行する情報処理装置である。計算ノード30は、温度計算ノード32、照度計算ノード34、会計計算ノード36を含む。温度計算ノード32は、複数の温度センサ22により計測された温度にもとづ平均温度を計算し、照度計算ノード34は、複数の照度センサ24により計測された照度にもどづき最小照度を計算する。会計計算ノード36は、エアコンの設定温度と、照明のオンオフ状態にもとづいて、所定のエネルギー会計計算を実行する。例えば、エネルギーの消費量や消費金額等を算出し、またエネルギー簿記を実行する。
【0040】
サービス機器50は、電気やガス等のエネルギーを消費しつつ生活世界や産業社会の諸サービスをユーザへ提供する機器であり、エネルギー消費機器とも言える。サービス機器50は、エアコン52と照明54を含む。コントローラ40は、サービス機器50の動作を制御する制御機器である。コントローラ40は、エアコンコントローラ42と照明コントローラ44を含む。エアコンコントローラ42は、エアコンの設定温度を制御し、照明コントローラ44は、照明のオンオフを制御する。
【0041】
ワークフロー管理装置12は、概要で説明したタスクマネージャと実世界OSを具現化した情報処理装置である。ワークフロー管理装置12は、ワークフローで定められたタスクステージ(以下、単に「ステージ」と呼ぶ。)の遷移にしたがって、複数のIOT機器11の動作を制御する。ワークフロー管理装置12の詳細な機能は後述する。なおワークフロー管理装置12の物理的な態様に制限はなく、例えばPCやサーバでもよく、マイクロコントローラ、シングルボードコンピュータであってもよい。
【0042】
ステークホルダ端末13は、IOT機器11が設置された企業の担当者等、所定のステークホルダーにより操作される情報端末である。ステークホルダ端末13は、会計計算ノード36による計算結果であるエネルギー会計情報を取得し、適宜ディスプレイ等に表示させる。
【0043】
ブローカ15は、PUB−SUBスキームにより装置間でのデータ送受を仲介する装置である。ブローカ15は、公知のメッセージキュー製品やメッセージ指向ミドルウェアにより実現されてもよい。
図5の各装置は、LAN・WAN・インターネット等の通信網を介し、ブローカ15が定める通信プロトコルにしたがってPUB−SUBのスキームにてブローカ15と通信し、装置間でデータを送受する。
【0044】
ブローカ15は、ステージブローカ16とデータブローカ17を含む。ステージブローカ16は、上述の管理ブローカであり、ワークフロー管理装置12と各IOT機器11間におけるステージの開始・終了に関する管理情報の送受を仲介する。データブローカ17は、IOT機器11同士、または、IOT機器11とステークホルダ端末13間におけるデータの送受を仲介する。
【0045】
ここでIOT機器制御システム10では、ワークフロー管理装置12が管理するワークフローがどのようなステージを有するか、また、各ステージにおいてエージェントがどのような処理をすべきかが予め決められ、IOT機器11の製造者に公開される。各IOT機器11は、ワークフロー管理装置12から特定のステージが通知された場合に、そのステージに応じた処理を行うよう実装される。
【0046】
例えば、後述の温度収集ステージについて、周囲の温度を取得するタスクを実行すべきであることが予め定められ、公開される。温度センサ22は、温度収集ステージの通知をサブスクライブしたことを契機に、周囲の温度を測定し、タスクの終了をステージブローカ16へパブリッシュし、測定した温度をデータブローカ17へパブリッシュするよう実装される。また後述の平均温度計算ステージについて、複数の温度データの平均を算出するタスクを実行すべきであることが予め定められ、公開される。温度計算ノード32は、平均温度計算ステージの通知をサブスクライブしたことを契機に、複数の温度センサ22が測定した温度の平均値を算出し、タスクの終了をステージブローカ16へパブリッシュし、算出した平均温度をデータブローカ17へパブリッシュするよう実装される。
【0047】
図6は、
図5のワークフロー管理装置12の機能構成を示すブロック図である。ワークフロー管理装置12は、通信部60、制御部70、データ記憶部80を備える。通信部60は、所定の通信プロトコルにしたがって外部装置とデータを送受する。例えば、予め定められたメッセージプロトコルにしたがって、ステージブローカ16とのPUB−SUBスキームでのデータ送受を実行する。
【0048】
制御部70は、ワークフロー管理装置12の動作を制御する。また、ワークフロー管理、言い換えれば、複数のIOT機器11を分散協調制御するためのデータ処理を実行する。データ記憶部80は、制御部70によるデータ処理において参照され、また更新される各種データを記憶する記憶領域である。
【0049】
本明細書のブロック図で示す各ブロックは、ハードウェア的には、コンピュータのCPUやメモリをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【0050】
例えば、制御部70の各機能ブロックに対応するソフトウェアモジュールを備えるアプリケーションプログラムがワークフロー管理装置12にインストールされてもよい。そして、ワークフロー管理装置12のCPUが、各ソフトウェアモジュールをメモリに読み出して実行することにより、制御部70の各機能ブロックの機能が発揮されてもよい。また、データ記憶部80の各機能ブロックは、ストレージやメモリ等の記憶装置がデータを記憶することにより実現されてもよい。
【0051】
データ記憶部80は、ワークフロー情報保持部82とステージ情報保持部84を含む。ワークフロー情報保持部82は、ワークフロー情報として、ワークフローが定める各ステージの前後関係と、各ステージから次のステージへ移行させる条件を保持する。典型的な移行条件は、ステージに予め対応づけられたタスクを終了したエージェントから、当該ステージのタスクを終了した旨の通知を受け付けることである。
【0052】
ただし、複数のエージェントが1つのステージのタスクを並列実行する場合、当該ステージから次のステージへの移行条件として、一部のエージェントからタスク終了通知を受け付けたことをもって次のステージへの以降を許可得することを定めることができる。言い換えれば、タスクを実行させた複数のエージェントの全てからタスク終了通知を受け付けなくても、複数のエージェントのうち所定数以上のエージェントからタスク終了通知を受け付ければ次のステージへ移行させることを定めることができる。
【0053】
図7は、実施の形態のワークフローを模式的に示す。実施の形態のワークフローは、概要で説明した事例1(例えば
図1)に対応する形で、複数のステージ間の遷移を定め、また複数種類の実世界エージェントの動作を制御する。
【0054】
ワークフロー情報保持部82は、各ステージの前後関係として、ワークフロー開始後に、温度収集ステージ100と照度収集ステージ102に移行すること、温度収集ステージ100の次が平均温度計算ステージ104であることを示す情報を保持する。また、平均温度計算ステージ104の次がエアコン制御ステージ108であり、エアコン制御ステージ108の次がエネルギー会計計算ステージ112であることを示す情報を保持する。また、照度収集ステージ102の次が最小照度計算ステージ106であり、最小照度計算ステージ106の次が照明制御ステージ110であり、照明制御ステージ110の次がエネルギー会計計算ステージ112であることを示す情報を保持する。また、エネルギー会計計算ステージ112の終了によりワークフローが終了することを示す情報を保持する。
【0055】
またワークフロー情報保持部82は、温度収集ステージ100から平均温度計算ステージ104への移行条件として、100個の温度センサ22のうち50個以上の温度センサ22から温度測定タスクの終了が通知されることを定めている。また、平均温度計算ステージ104からエアコン制御ステージ108への移行条件として、温度計算ノード32から平均温度計算タスクの終了が通知されることを定めている。また、照度収集ステージ102から最小照度計算ステージ106への移行条件として、20個の照度センサ24のうち15個以上の照度センサ24から照度測定タスクの終了が通知されることを定めている。また、最小照度計算ステージ106から照明制御ステージ110への移行条件として、照度計算ノード34から最小照度計算タスクの終了が通知されることを定めている。
【0056】
図6に戻り、ステージ情報保持部84は、ワークフローが現在どのステージであるかを示すステージ情報を保持する。ステージ情報には、ワークフローのステージがそれまでとは異なる新たなステージに移行した場合に、新たなステージの識別情報(名称やID等)が記録される。
【0057】
ステージ情報は、現在のステージとして、複数のステージが同時に記録されることを許容する。
図7の例では、温度収集ステージ100〜平均温度計算ステージ104〜エアコン制御ステージ108と、照度収集ステージ102〜最小照度計算ステージ106〜照明制御ステージ110が並列して進められる。したがってステージ情報保持部84は、現在のステージが温度収集ステージ100であり、かつ、照度収集ステージ102、最小照度計算ステージ106、照明制御ステージ110のいずれかでもあることを示すステージ情報を保持し得る。またステージ情報保持部84は、現在のステージが照度収集ステージ102であり、かつ、温度収集ステージ100、平均温度計算ステージ104、エアコン制御ステージ108のいずれかでもあることを示すステージ情報を保持し得る。
【0058】
制御部70は、ステージ通知部72、終了通知受付部74、移行判定部76、ステージ更新部78を含む。ステージ通知部72は、ステージ情報保持部84に保持されたステージ情報を監視し、ステージ情報が更新された場合に、現在のステージを示す情報(以下「現在ステージ情報」と呼ぶ。)をステージブローカ16へ送信する。これにより、現在のステージを1つ以上のIOT機器11へ通知し、現在のステージに応じた動作を1つ以上のIOT機器11に並列実行させる。
【0059】
ステージ通知部72が送信する現在ステージ情報は、現在のステージを識別可能な情報(例えばステージ名称やID)を含む。例えば、現在のステージの識別情報を示すトピックを付加したメッセージである。その一方、IOT機器11の動作態様を指定する内容は現在ステージ情報から排除されている。例えば現在ステージ情報は、IOT機器11の動作を直接的に規定するコマンドや、IOT機器11の動作時に参照され、IOT機器11の動作を間接的に規定するパラメータを含まない。このようにワークフロー管理装置12は、IOT機器11に対して現在のステージを通知しつつ、現在のステージに対する具体的な動作は各IOT機器11の実装に委ねる。これにより、IOT機器制御システム10における各IOT機器11の独立性を高め、またセキュリティを高める。
【0060】
終了通知受付部74は、各IOT機器11から送信された動作終了通知をステージブローカ16から受信する。動作終了通知は、ワークフローの現在のステージに対応する処理、言い換えれば、現在のステージで実行するよう定められたタスクが終了したことを示す情報であり、「タスク終了通知」とも言える。動作終了通知は、IOT機器11側で動作を終了したステージの識別情報を含むものであってよい。ただし動作終了通知は、IOT機器11におけるタスク処理で得られたデータ、例えば温度データや平均温度データを含まない。これらのデータは、データブローカ17を介して、IOT機器11同士で送受される。これにより、ワークフロー管理装置12は、ステージの開始、終了、移行判断に専念することができる。
【0061】
移行判定部76は、終了通知受付部74における動作終了通知の受信状況にもとづいて、ワークフローの現在のステージについてワークフロー情報保持部82に保持された次のステージへの移行条件が充足されたか否かを判定する。移行判定部76は、移行条件が充足されたことを検出すると、移行元のステージと移行先のステージの組み合わせをステージ更新部78へ通知する。
【0062】
例えば、温度収集ステージ100から平均温度計算ステージ104への移行条件として、100個の温度センサ22のうち半分の温度センサ22から温度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部76は、温度収集ステージ100の動作が終了した旨を示す動作終了通知が50個以上受信された場合に上記移行条件が充足されたと判定してもよい。同様に、照度収集ステージ102から最小照度計算ステージ106への移行条件として、20個の照度センサ24のうち15個以上の照度センサ24から照度測定タスクの終了が通知されることを定めることができる。この場合、移行判定部76は、照度収集ステージ102の動作が終了した旨を示す動作終了通知が15個以上受信された場合に上記移行条件が充足されたと判定してもよい。
【0063】
ステージ更新部78は、現在のステージの移行条件が充足されたことが移行判定部76により判定された場合に、現在のステージを次のステージへ進めるようステージ情報保持部84に保持されたステージ情報を更新する。具体的には、移行判定部76から移行元ステージと移行先ステージの組み合わせが通知された場合に、ステージ情報に記録された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。
【0064】
またステージ更新部78は、複数のステージが現在のステージとしてステージ情報に記録されている場合、それら複数のステージのうち移行判定部76から通知された移行元ステージを、移行先ステージへ切り替えるようステージ情報を更新する。その一方、複数のステージのうち移行元ステージとして指定されないステージは、ステージ情報に記録されたままとし、すなわち現在のステージとして維持する。
【0065】
例えば、現在のステージが温度収集ステージ100と照度収集ステージ102であり、温度収集ステージ100の移行条件のみが充足された場合、ステージ更新部78は、現在のステージを平均温度計算ステージ104と照度収集ステージ102とするようステージ情報を更新する。その後、平均温度計算ステージ104の移行条件のみが充足された場合、ステージ更新部78は、現在のステージをエアコン制御ステージ108と照度収集ステージ102とするようステージ情報を更新する。このように、複数のステージを並列して進めるようワークフローが規定されている場合、IOT機器11の動作制御および次のステージへの遷移を、並列するステージ毎に独立して実行する。
【0066】
以上の構成によるIOT機器制御システム10の動作を以下説明する。
図8は、IOT機器制御システム10の動作を示すシーケンス図である。
図8は、
図7のワークフローにしたがってワークフロー管理装置12がIOT機器11を制御する際の動作を示している。また
図8は、概要で説明した事例1(例えば
図2)に対応する。シーケンス図上、並列するステージ(例えば照度収集ステージ102と平均温度計算ステージ104等)の処理に前後関係があるように見えるが、並列するステージの処理は結果として前後関係が生じるものの、本質的には同時並列的に実行される。
【0067】
前提として、IOT機器11のそれぞれは、自身が動作すべき特定のステージに対して予め定められたトピック名をステージブローカ16およびデータブローカ17に事前に登録しておく。これにより、各IOT機器11は、上記特定のステージの開始を示すメッセージ、また、タスクを実行するために必要なデータを含むメッセージのサブスクライバとして動作する。また各IOT機器11は、上記特定のステージに対応する動作が実装される。例えば、温度センサ22は、温度収集ステージの開始を示す所定のトピック名をステージブローカ16に登録しておき、また、温度収集ステージにおいて温度測定処理を実行するよう定めたプログラムを搭載している。
【0068】
ワークフロー管理装置12は、定期的に、もしくは、ユーザの指示に応じて
図7のワークフローを開始する。ワークフロー管理装置12のステージ更新部78は、現在のステージを、温度収集ステージ100および照度収集ステージ102とするようステージ情報を更新する。ステージ通知部72は、温度収集ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S2)、それとともに照度収集ステージのトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュする(S4)。
【0069】
複数の温度センサ22のそれぞれは、温度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ16からサブスクライブし(S6)、周囲の温度を測定する。そして、温度測定結果を示すトピックを付加し、温度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S8)。各温度センサ22は、温度収集ステージについての動作終了通知をステージブローカ16へパブリッシュし(S10)、ワークフロー管理装置12の終了通知受付部74は、各温度センサ22からの動作終了通知をステージブローカ16からサブスクライブする(S12)。
【0070】
これに並行して、複数の照度センサ24のそれぞれは、照度収集ステージを示すトピックが付加された現在ステージ情報をステージブローカ16からサブスクライブし(S14)、周囲の照度を測定する。そして、照度測定結果を示すトピックを付加し、照度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S16)。各照度センサ24は、照度収集ステージについての動作終了通知をステージブローカ16へパブリッシュし(S18)、ワークフロー管理装置12の終了通知受付部74は、各照度センサ24からの動作終了通知をステージブローカ16からサブスクライブする(S20)。
【0071】
ワークフロー管理装置12の移行判定部76は、温度収集ステージについての動作終了通知の受信状況に応じて、温度収集ステージ100から平均温度計算ステージ104への移行条件が満たされたと判定する。例えば、数百個の温度センサ22のうち移行条件が定める個数である50個の温度センサ22からパブリッシュされた50個の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを温度収集ステージ100から平均温度計算ステージ104へ切り替えるようステージ情報を更新する。これに並行して、移行判定部76は、照度収集ステージについての動作終了通知の受信状況に応じて、照度収集ステージ102から最小照度計算ステージ106への移行条件が満たされたと判定する。例えば、数十個の照度センサ24のうち移行条件が定める個数の照度センサ24からパブリッシュされた当該個数の動作終了通知をサブスクラブした場合に、移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを照度収集ステージ102から最小照度計算ステージ106へ切り替えるようステージ情報を更新する。
【0072】
このように実施の形態のワークフローでは、複数のステージ間の実行順序(言い換えれば前後関係)として半順序関係を規定することを許容する。例えば、温度収集ステージ100と照度収集ステージ102は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。また、温度収集ステージ100の次の平均温度計算ステージ104と照度収集ステージ102も半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。既述したように、このようなステージ間の順序関係はワークフロー情報保持部82に保持される。
【0073】
ステージ更新部78は、ワークフロー情報保持部82に保持された順序関係を参照し、温度収集ステージ100から平均温度計算ステージ104への移行条件が満たされた一方、照度収集ステージ102から最小照度計算ステージ106への移行条件が満たされていない場合、ワークフローの現在ステージが平均温度計算ステージ104であり、かつ、照度収集ステージ102でもあることを示すようステージ情報を更新する。すなわち、温度収集ステージ100・平均温度計算ステージ104側のステージ移行と、照度収集ステージ102・最小照度計算ステージ106側のステージ移行を独立して実行する。
【0074】
温度計算ノード32は、温度測定結果を示すトピックが付加された複数の温度データをデータブローカ17からサブスクライブする(S22)。照度計算ノード34は、照度測定結果を示すトピックが付加された複数の照度データをデータブローカ17からサブスクライブする(S24)。
【0075】
ワークフロー管理装置12のステージ通知部72は、平均温度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S26)、温度計算ノード32はその現在ステージ情報をステージブローカ16からサブスクライブする(S28)。温度計算ノード32は、複数の温度センサ22で測定された温度にしたがって平均温度を算出し、平均温度計算結果を示すトピックを付加し、平均温度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S30)。温度計算ノード32は、平均温度計算ステージについての動作終了通知をステージブローカ16へパブリッシュし(S32)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S34)。エアコンコントローラ42は、平均温度計算結果を示すトピックが付加された平均温度データをデータブローカ17からサブスクライブする(S36)。
【0076】
これに並行して、ワークフロー管理装置12のステージ通知部72は、最小照度計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S38)、照度計算ノード34はその現在ステージ情報をステージブローカ16からサブスクライブする(S40)。照度計算ノード34は、複数の照度センサ24で測定された照度にしたがって最小照度を算出し、最小照度計算結果を示すトピックを付加し、最小照度データを本文に含むメッセージをデータブローカ17へパブリッシュする(S42)。照度計算ノード34は、最小照度計算ステージについての動作終了通知をステージブローカ16へパブリッシュし(S44)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S46)。照明コントローラ44は、最小照度計算結果を示すトピックが付加された最小照度データをデータブローカ17からサブスクライブする(S48)。
【0077】
ワークフロー管理装置12の移行判定部76は、平均温度計算ステージについての動作終了通知の受信状況にしたがって、平均温度計算ステージ104からエアコン制御ステージ108への移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを平均温度計算ステージ104からエアコン制御ステージ108へ切り替えるようステージ情報を更新する。これに並行して、移行判定部76は、最小照度計算ステージについての動作終了通知の受信状況にしたがって、最小照度計算ステージ106から照明制御ステージ110への移行条件が満たされたと判定する。ステージ更新部78は、現在のステージを最小照度計算ステージ106から照明制御ステージ110へ切り替えるようステージ情報を更新する。
【0078】
ワークフロー管理装置12のステージ通知部72は、エアコン制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S50)、エアコンコントローラ42はその現在ステージ情報をステージブローカ16からサブスクライブする(S52)。エアコンコントローラ42は、温度計算ノード32で決定された平均温度にしたがってエアコン52の新たな設定温度を決定し、その設定温度で動作するようエアコン52を制御する(S54)。この例ではエアコンコントローラ42とエアコン52が直接接続されるが、データブローカ17を介して間接的に接続されてもよい。
【0079】
エアコンコントローラ42は、エアコン制御結果を示すトピックを付加し、新たな設定温度を本文に含むメッセージをデータブローカ17へパブリッシュする(S56)。また、エアコンコントローラ42は、エアコン制御ステージについての動作終了通知をステージブローカ16へパブリッシュし(S58)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S60)。
【0080】
これに並行して、ワークフロー管理装置12のステージ通知部72は、照明制御ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S62)、照明コントローラ44はその現在ステージ情報をステージブローカ16からサブスクライブする(S64)。照明コントローラ44は、照度計算ノード34で決定された最小照度にしたがって照明54のオンもしくはオフを決定し、照明54を点灯もしくは消灯させる(S66)。この例では照明コントローラ44と照明54が直接接続されるが、データブローカ17を介して間接的に接続されてもよい。
【0081】
照明コントローラ44は、照明制御結果を示すトピックを付加し、照明54のオンオフ状態を本文に含むメッセージをデータブローカ17へパブリッシュする(S68)。また、照明コントローラ44は、照明制御ステージについての動作終了通知をステージブローカ16へパブリッシュし(S70)、ワークフロー管理装置12の終了通知受付部74はその動作終了通知をステージブローカ16からサブスクライブする(S72)。
【0082】
会計計算ノード36は、エアコン制御結果を示すトピックが付加された設定温度データをデータブローカ17からサブスクライブする(S74)。これに並行して、会計計算ノード36は、照明制御結果を示すトピックが付加された照明オンオフ情報をデータブローカ17からサブスクライブする(S76)。
【0083】
ワークフロー管理装置12の移行判定部76は、エアコン制御ステージについての動作終了通知の受信状況にしたがって、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされたと判定する。また移行判定部76は、照明制御ステージについての動作終了通知の受信状況にしたがって、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件が満たされたと判定する。ステージ更新部78は、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされ、かつ、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件も満たされた場合に、現在のステージを、エアコン制御ステージ108および照明制御ステージ110から、エネルギー会計計算ステージ112へ切り替えるようステージ情報を更新する。
【0084】
このように実施の形態のワークフローでは、複数のステージ間の実行順序として半順序関係を規定することを許容する。例えば、エアコン制御ステージ108と照明制御ステージ110は半順序関係である。すなわち、これらのステージ間の実行順序は一意に定められておらず、ステージ間の実行順序を比較することはできない。言い換えれば、どちらのステージを先に開始してもよく、どちらのステージを先に終了してもよい。またここでは、エネルギー会計計算ステージ112は、エアコン制御ステージ108と照明制御ステージ110の両方が終了したことを条件として実行可能である。既述したように、このようなステージ間の順序関係はワークフロー情報保持部82に保持される。
【0085】
ステージ更新部78は、ワークフロー情報保持部82に保持された順序関係を参照し、エアコン制御ステージ108からエネルギー会計計算ステージ112への移行条件が満たされた一方、照明制御ステージ110からエネルギー会計計算ステージ112への移行条件が満たされていない場合に、エアコン制御ステージ108が終了した状態であり、かつ、照明制御ステージ110でもあることを示すようステージ情報を更新する。その後、照明制御ステージ110からエネルギー会計計算ステージ112の移行条件が満たされると、ステージ更新部78は、現在のステージをエネルギー会計計算ステージ112へ切り替えるようステージ情報を再度更新する。これにより、ワークフローをエネルギー会計計算ステージ112へ移行させる。
【0086】
ワークフロー管理装置12のステージ通知部72は、エネルギー会計計算ステージを示すトピックを付加した現在ステージ情報をステージブローカ16へパブリッシュし(S78)、会計計算ノード36はその現在ステージ情報をステージブローカ16からサブスクライブする(S80)。会計計算ノード36は、エアコンコントローラ42で決定されたエアコン52の設定温度と、照明コントローラ44で決定された照明54のオンオフにしたがって、エネルギー会計計算処理を実行する。会計計算ノード36は、エネルギー会計計算結果を示すトピックを付加し、エネルギー会計データを本文に含むメッセージをデータブローカ17へパブリッシュする(S82)。また、会計計算ノード36は、エネルギー会計計算ステージについての動作終了通知をステージブローカ16へパブリッシュする(S84)。
【0087】
ワークフロー管理装置12の終了通知受付部74は、エネルギー会計計算ステージについての動作終了通知をステージブローカ16からサブスクライブする(S86)。移行判定部76がエネルギー会計計算ステージ112からエンドステージへの移行条件が満たされたと判定すると、ワークフロー管理装置12における
図7のワークフローの1サイクルの処理が完了する。なお、所定時間(10分等)が経過するたびに、ワークフロー管理装置12は
図7のワークフローの処理を繰り返してもよく、すなわち、
図8に示す動作を定期的に繰り返してもよい。
【0088】
ステークホルダ端末13は、エネルギー会計計算結果を示すトピックが付加されたエネルギー会計データをデータブローカ17からサブスクライブし(S88)、そのデータを所定の記憶装置に記憶させる。ステークホルダ端末13は、会計計算ノード36から定期的に通知されるエネルギー会計データを蓄積してもよく、複数回に亘り通知されたエネルギー会計データを1日単位や1月単位で集計する処理を実行してもよい。また、その集計結果を所定の記憶装置に記憶させ、また、ディスプレイや印刷装置へ出力してもよい。
【0089】
実施の形態のワークフロー管理装置12は、並列する複数のステージのタスクを複数のエージェントに並列して割当て、各エージェントにタスクを並列して実行させる。また、並列する各ステージを次のステージへ進めるか否かを、タスク割当先の各エージェントが互いに独立して送信するタスク終了通知の受信状況にもとづいて決定する。これにより、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。すなわち、1つのサービス提供のために実行すべき複数のタスクの処理順序を半順序で定義可能にすることで、多数のエージェントによるタスク処理を効率的に制御し、効率的なサービス提供を実現する。
【0090】
例えば、あるステージの移行条件として、当該ステージのタスクを割当てた複数のエージェントのうち所定数のエージェントからタスク終了通知を受け付けた場合に次のステージへ移行することを定めることができる。この場合、具体的にどのエージェントからタスク終了通知を受け付けたかにはよらず、受信したタスク終了通知の個数が所定数に達したことを契機にステージ移行がなされる。これにより、タスク終了通知の送信元がエージェントAである場合の処理、エージェントBである場合の処理等、多くの種類の処理を定義する必要がなく、制御対象のエージェント数が増加しても、各エージェントを協調動作させたサービスの提供を効率的に実現することができる。
【0091】
また、実施の形態のIOT機器制御システム10では、ワークフロー管理装置12とIOT機器11間のデータフローのためのステージブローカ16と、IOT機器11同士のデータフローのためのデータブローカ17を別個に設けた。これにより、中継対象のデータの特性に合わせて、パフォーマンスやセキュリティ等の設定を最適化したブローカを設けることができ、システム全体のパフォーマンスやセキュリティを効果的に高めることができる。例えば、ステージブローカ16は、パフォーマンスよりもセキュリティを重点的に高めた設定とすることが望ましい。その一方、データブローカ17は、仲介するデータ数の多寡やデータサイズの大小に応じた設定がなされてもよく、仲介するデータの特性に応じて複数のデータブローカ17を設けてもよい。
【0092】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【0093】
第1の変形例を説明する。上記実施の形態では、ワークフロー管理装置12による制御対象のエージェントとしてIOT機器11を示したが、概要の事例2で示したように、エージェントは人であってもよい。この場合、ワークフロー管理装置12は、人が保持する情報端末に対して現在のステージを通知してもよい。この情報端末は、通知されたステージに応じたタスクの内容をディスプレイに表示させてもよい。人(すなわちタスク作業者)は、タスクが完了するとその旨を情報端末へ入力し、情報端末はワークフロー管理装置12へタスク終了通知を送信し、ワークフロー管理装置12は、そのタスク終了通知にしたがってステージを進行させてもよい。
【0094】
第2の変形例として、ステージの移行条件を含むタスク遷移述語について付言する。ワークフロー情報保持部82は、各ステージについて定められたタスク遷移述語を保持し、ステージ更新部78は、タスク遷移述語にしたがって各ステージの移行態様を決定する。タスク遷移述語には、ステージ移行に関する様々なAND条件、OR条件、NOT条件を記述可能である。
【0095】
あるステージのタスク遷移述語は、移行条件が満たされた場合に次のステージへ移行することを定め、かつ、現在のステージ情報を外部へ通知後(もしくは現在のステージへ移行後)の所定時間内に次のステージへの移行条件が満たされない(例えばタイマによるタイムアウトを検出した)場合に、代替的・例外的なステージ移行を実行することを定めてもよい。所定時間内に次のステージへの移行条件が満たされないとは、例えば、IOT機器11からのタスク終了通知を待つべき所定の待機時間が経過した場合である。同様に、タスク遷移述語は、タスクを実行したIOT機器11から異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行することを定めてもよい。
【0096】
ステージ更新部78は、所定時間内に移行条件が満たされない、または異常を示すタスク終了通知が返された場合に、代替的・例外的なステージ移行を実行してもよい。代替的・例外的なステージ移行は、それまでのワークフロー、もしくはそれまでとは異なるワークフローの特定のステージへ移行することでもよい。例えば、ワークフロー管理装置12が複数のワークフローによる外部機器の制御を並行して実行する場合に、どのワークフローで例外やエラーが検出された際にも、例外処理用の共通のワークフローの特定のステージへ移行することを規定したものでもよい。本変形例によると、ワークフローにおける多様なステージ遷移を実現でき、また、ワークフローによる外部機器制御に要求される様々なエラー処理、例外処理に柔軟に対応できる。
【0097】
第3の変形例を説明する。上記実施の形態では言及していないが、ワークフロー管理装置12により制御対象となるIOT機器11は、複数のタスクステージに対応した複数の機能を備えてもよく、それら複数の機能を呼び出すための複数のAPIを備えてもよい。複数のAPIは、例えば、ワークフロー管理装置12からステージAの開始が通知された場合に呼び出されるインタフェースAと、ステージBの開始が通知された場合に呼び出されるインタフェースBを含んでもよい。これにより、物理的に1つのIOT機器11に複数種類の役割(すなわちタスク)を実行させることができる。
【0098】
例えば、1つのIOT機器11が、複数種類の環境情報を検知するマルチセンサ機器の場合に、温度収集ステージ100を通知することで温度センサ22として機能させ、また、照度収集ステージ102を通知することで照度センサ24として機能させることができる。また例えば、1つのIOT機器11が、複数機器を集中制御するコントローラの場合に、エアコン制御ステージ108を通知することでエアコンコントローラ42として機能させ、また、照明制御ステージ110を通知することで照明コントローラ44として機能させることができる。
【0099】
なお、1つのIOT機器11は、1つのワークフロー管理装置12で動作する複数のワークフロー、または、複数のワークフロー管理装置12で動作する複数のワークフローからステージの通知を受け付け、各ワークフローから通知されたステージに応じたタスクを実行してもよい。すなわち、1つのIOT機器11によるサービスを複数のワークフローが利用してもよい。
【0100】
また、IOT機器11は、ワークフローとステージの組み合わせを単位としてタスクを識別してもよく、言い換えれば、ワークフローとステージの組み合わせと、実行すべきタスクとの対応関係を保持してもよい。この場合、ワークフロー管理装置12は、ワークフローの識別情報とステージの識別情報の組み合わせを、現在ステージ情報としてIOT機器11へ送信してもよい。IOT機器11は、呼び出し元のワークフローが異なれば、同じステージ名が通知されても異なるタスクを実行してもよく、逆に、呼び出し元のワークフローが異なれば、異なるステージ名が通知されても同じタスクを実行してもよい。
【0101】
第4の変形例を説明する。上記実施の形態では、ブローカを介したメッセージ技術により、ワークフロー管理装置12とIOT機器11間のデータフローと、複数のIOT機器11間のデータフローを実現したが、他の技術によりデータを送受してもよい。例えば、データの送信元装置と送信先装置間で公知のユニキャスト通信、マルチキャスト通信、P2P通信を実行してもよい。また、公知のデータ共有技術を使用してもよい。また、一方の装置がクラウドシステムへデータをアップロードし、他方の装置がクラウドシステムからデータをダウンロードすることで、情報通知およびデータ共有を実現してもよい。
【0102】
請求項に記載の各構成要件が果たすべき機能は、実施の形態および変形例において示された各構成要素の単体もしくはそれらの連携によって実現されることも当業者には理解されるところである。