以下の説明では、「インターフェースデバイス部」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちのいずれでもよい。
・I/O(Input/Output)デバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するI/Oインターフェースデバイス。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボードおよびポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
以下の説明では、「メモリ部」は、一つ以上のメモリでよい。少なくとも一つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「PDEV部」は、一つ以上のPDEVでよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)、例えばHDD(Hard Disk Drive)またはSSD(Solid State Drive)である。PDEV部は、RAIDグループであってもよい。「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。
また、以下の説明では、「記憶部」は、メモリ部およびPDEV部のうちの少なくともメモリ部を含む。
また、以下の説明では、「プロセッサ部」は、一つ以上のプロセッサでよい。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。一つ以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。一部のプロセッサは、処理の一部または全部を行うハードウェア回路でもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部および/またはインターフェース部を用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有する装置またはシステム)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、以下の説明では、「xxxテーブル」(または「xxxメッセージ」)といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」(または「xxxメッセージ」)を「xxx情報」と言うことができる。また、以下の説明において、各テーブル(および各メッセージ)の構成は一例であり、一つのテーブル(または一つのメッセージ)は、二つ以上のテーブル(または二つ以上のメッセージ)に分割されてもよいし、二つ以上のテーブル(または二つ以上のメッセージ)の全部または一部が一つのテーブル(または一つのメッセージ)であってもよい。
また、以下の説明では、「仲介装置」は、一以上の計算機で構成されてよい。具体的には、例えば、計算機が表示デバイスを有していて計算機が自分の表示デバイスに情報を表示する場合、当該計算機が仲介装置でよい。また、例えば、第1計算機(例えばサーバ)が表示用情報を遠隔の第2計算機(表示用計算機(例えばクライアント))に送信し表示用計算機がその情報を表示する場合(第1計算機が第2計算機に情報を表示する場合)、第1計算機と第2計算機とのうちの少なくとも第1計算機が仲介装置でよい。仲介装置が「表示用情報を表示する」ことは、当該装置が有する表示デバイスに表示用情報を表示することであってもよいし、当該装置が表示用計算機に表示用情報を送信することであってもよい(後者の場合は表示用計算機によって表示用情報が表示される)。
また、以下の説明では、「連携サービス連鎖」は、一つ以上の連携サービスで構成された連携サービス群である。「連携サービス」は、連携サービス連鎖の構成要素となるサービスであって、他の連携サービスと連携可能なサービスである。例えば、検索という連携サービスと、表示という連携サービスの組合せが、検索を行い検索の結果を表示するという連携サービス連鎖に相当する。
図1は、一実施例に係る連携サービスシステムの構成例を示す図である。
連携サービスシステムは、仲介装置(CSB(Cooperation Service Broker)とよばれてもよい)1と、管理端末5と、複数のローカルシステム3とを備える。仲介装置1、管理端末5および複数のローカルシステム3が、ネットワーク4に接続される。管理端末5は、仲介装置1の表示用計算機の一例でよく、例えば、キーボードやポインティングデバイスのような入力デバイスと、液晶ディスプレイのような表示デバイスとを有する。
各ローカルシステム3は、連携サービスの利用と提供の少なくとも一方を行うシステムである。複数のローカルシステム3のうちの一つ以上のローカルシステム3が異なる複数の連携サービスを提供する。各ローカルシステム3は、一つ以上のローカル装置(CSLM(Cooperation Service Local Manager)と呼ばれてもよい)2を備える。ローカル装置2としては、プロセッサ、マイクロフォン、スピーカ、表示デバイス等を採用することができる。
複数のローカルシステム3のうちの少なくとも一つのローカルシステム3が、当該ローカルシステム3が提供する連携サービスに代えてまたは加えて当該ローカルシステム3以外の一つ以上の連携サービスで構成された連携サービス連鎖を提供する。例えば、各ローカルシステム3は、自分の連携サービス(機能)を提供する提供者となることもできれば、他のローカルシステム3の連携サービスを求める依頼者および利用者となることもできる。以下の説明では、「依頼者」および「利用者」は、連携サービスの依頼者および利用者、典型的には、連携サービスの依頼を出し当該依頼に応答して提供された連携サービスを利用するローカルシステム3(または、当該ローカルシステム3における一つ以上のローカル装置2)を意味する。また、「提供者」は、連携サービスの提供者、典型的には、連携サービスの依頼に応答して当該連携サービスを提供するローカルシステム3(または、当該ローカルシステム3における一つ以上のローカル装置2)を意味する。
ネットワーク4は、有線LAN(Local Area Network)、無線LAN、WAN(Wide Area Network)など、一または複数の種類のネットワークで構成してもよい。
本実施例の概要は次の通りである。すなわち、本実施例では、サービスロボット(ローカル装置2の一例)が当該ロボットを含むシステム3に代えてまたは加えて当該ロボットを含まない他のシステム3が提供するサービスを含んだ一つ以上のサービスを連携することで、多様なサービスを提供する。具体的には、例えば、下記(1)および(2)のうち少なくとも(1)が行われる。
(1)サービスロボットが仲介装置1に希望の連携サービスまたはサービス分類を伝えると、仲介装置1が、当該希望に沿った適切な連携サービスまたは連携サービス連鎖を提案する。サービスロボットが、その提案を受けて、連携サービスまたは連携サービス連鎖を選び、選んだ連携サービスまたは連携サービス連鎖を利用する。連携サービスまたは連携サービス連鎖の提案と利用を実現するために、全ローカルシステム3において、連携サービスの定義と、その実行に必要なインプットの定義と、その実行によるアウトプットの定義と、連携サービスに必要なアクションといった要素が標準化されている。
(2)連携サービスを提供することで提供者が得られる対価と、連携サービスを利用することで利用者にかかる対価が定義される。
図2は、仲介装置1の構成例を示す図である。
仲介装置1においては、マイクロプロセッサからなるCPU(Central Processing Unit)11(プロセッサ部の一例)にバス12を介して記憶装置13(PDEV部の一例)、メモリ14(メモリ部の一例)、および通信インターフェース15(インターフェース部の一例)が接続されている。
通信インターフェース15は、CPU11の制御の下で、ネットワーク4により規定される通信プロトコルに従い、ネットワーク4に接続しているローカルシステム3のローカル装置2および管理端末5と通信を行う。通信プロトコルとしては、例えばTCP/IP(Transmission Control Protocol/Internet Protocol)等を使用するが、他の通信プロトコルを使用することも可能である。
記憶装置13には、サービス分類テーブル131と、連携サービステーブル132と、標準アクションテーブル133と、標準シナリオ定義テーブル134と、提供者テーブル135といったテーブルが格納されている。
メモリ14には、仲介プログラム141と、管理プログラム142といったプログラムが格納されている。
図3は、ローカル装置2の構成例を示す図である。
ローカル装置2においては、マイクロプロセッサからなるCPU21にバス22を介して記憶装置23、メモリ24、および通信インターフェース25が接続されている。ローカル装置2は、典型的には、図3に例示のように、CPU21やメモリ24といった計算機リソースを備える装置であるが、仲介装置1と通信可能な他のローカル装置2から制御される装置であってもよい。
通信インターフェース25は、CPU21の制御の下で、ネットワーク4により規定される通信プロトコルに従い、ネットワーク4に接続しているほかのローカルシステム3のローカル装置2および仲介装置1と通信を行う。
記憶装置23には、提供可能サービステーブル231と、利用可能サービステーブル232と、提供中サービステーブル233と、利用中サービステーブル234といったテーブルが格納されている。
メモリ24には、ローカル管理プログラム241と、依頼受付プログラム242と、利用申請プログラム243と、利用実行プログラム244と、提供実行プログラム245といったプログラムが格納されている。
図4は、サービス分類テーブル131の構成例を示す図である。
サービス分類テーブル131は、木構造または包含関係にあるサービス分類の関係に関する情報を保持する。具体的には、例えば、サービス分類テーブル131は、バージョン情報13101を格納する。また、サービス分類テーブル131は、サービス分類毎にエントリを有する。各エントリが、分類UUID13102、分類名13103、下位分類名13104、下位分類UUID13105、および有効性13106といった情報を記憶する。各エントリに記憶される情報の説明については、一つのサービス分類を例に取る(図4の説明において「対象分類」)。
分類UUID13102は、対象分類のUUID(Universally Unique Identifier)を示す。各分類のUUIDは、連携サービスシステムにおいて一意の(重複の無い)IDである。
分類名13103は、対象分類の名称を示す。当該名称は、例えば、対象分類に属する連携サービスの性質の内容を人間が理解できる文字列である。
下位分類名13104は、対象分類の下位分類の名称を示す。下位分類UUID13105は、当該下位分類のUUIDを示す。なお、対象分類の下位に直列になった複数の分類が存在する場合、下位分類名13104は、子分類(対象分類の下位に存在する分類のうち対象分類の最も近くに存在する分類)の名称を示し、下位分類UUID13105は、当該子分類のUUIDを示す。
有効性13106は、下位分類名13104の表す分類が対象分類(分類名13103の表す分類)に所属する関係が成立しているかどうかを示す。有効性13106の値は「有効」または「無効」がある。従って、上述したように、本テーブル131が、連携サービスシステムの管理対象となる連携サービスの分類体系(サービス分類の関係)を示す情報を保存している。本テーブル131を用いて、連携サービスシステムに関与するプログラムそしてシステムに関与する人間が、性質の近い二つ以上の連携サービスを見つけることがきる。一つのサービス分類に複数の下位分類(複数の子分類)が所属することが考えられる。
バージョン情報13101は、本テーブル131のバージョン(具体的には、サービス分類の関係の最新のパターンを意味する最新のバージョン)を示す。パターン更新ごとに(サービス分類の関係が更新されるごとに)一定のルールでバージョン情報13101も変更される。
図5は、連携サービステーブル132の構成例を示す図である。
連携サービステーブル132は、連携サービスに関する情報を保持する。具体的には、例えば、連携サービステーブル132は、連携サービス毎にエントリを有する。各エントリは、サービスUUID13201と、サービス名13202と、分類名13203と、分類UUID13204と、インプット13205と、インプット定義13206と、インプットUUID13207と、アウトプット13208と、アウトプット定義13209と、アウトプットUUID13210と、有効性13211と、バージョン13212といった情報を記憶する。以下、一つの連携サービスを例に取る(図5の説明において「対象サービス」)。
サービスUUID13201は、対象サービスのUUIDを示す。サービス名13202は、対象サービスの名称を示す。当該名称は、例えば、対象サービスの内容を人間が理解できる文字列である。
分類名13203は、対象サービスが所属するサービス分類を示す。分類UUID13204は、当該サービス分類のUUIDを示す。
インプット13205が、対象サービスの実行に必要なインプットを示す。インプット(インプットしての材料)は、連携サービスの性質によって様々な形態が考えられ、例えば実際の物体や、ある事象の状態や、ある通信手段で送られた情報などでもありえる。インプット定義13206が、当該インプットの定義を示す。インプットUUID13207は、当該インプットのUUIDを示す。
連携サービスの依頼者と提供者を設計または管理する人間が事前にインプット定義13026を通して、このインプットに対する理解について、コンセンサスを取っていることが望ましい。例えば、「短距離荷物運搬」という連携サービスがあり、運搬の対象が、インプット13205およびインプット定義13206により示される。例えば、インプット13205は「5Kg以下の縦横高さの合計が160cm以内の立方体」である。運搬能力のないサービスロボットを作っている設計者が連携サービス「短距離荷物運搬」のインプット定義13206を理解し、サービスロボットが荷物の配達任務を人間にアサインされたら、連携サービス「短距離荷物運搬」を依頼するというロジックをプログラミングなどの手段で実現することができる。同様に、短距離で荷物を運搬できる自動台車ロボットが連携サービス「短距離荷物運搬」を正しく提供するためには、運搬対象が「5Kg以下の縦横高さの合計が160cm以内の立方体」と想定した上で自動台車ロボットを設計することが必要である。
アウトプット13208は、対象サービスの実行によって生み出した成果としてのアウトプットを示す。アウトプット定義13209が、当該アウトプットの定義を示す。アウトプットUUID13210は、当該アウトプットのUUIDを示す。
インプットUUID13207とアウトプットUUID13210は同じ識別システムに属す識別子であり、両者の値が同じであれば、これらが指しているインプットとアウトプットは同じである。例えば、連携サービス「A」のアウトプットUUID13210は連携サービス「B」のインプットUUID13027と同じである場合は、連携サービス「A」のアウトプットが連携サービス「B」のインプットになれる。従って、連携サービス「A」と連携サービス「B」の順次組み合わせが「連携サービス連鎖」である。
有効性13211は、対象サービスが現在連携サービスシステムに取り扱われているかどうかを示す。有効性13211「無効」は、対象サービスの依頼者が対象サービスを依頼することができず、対象サービスの提供者も対象サービスを提供することもできないことを意味する。
バージョン13212は、対象サービスのバージョンを示す。対象サービスに対応した情報13201~13211の少なくとも一部が更新された場合、対象サービスのバージョン13212が一定のルールで変更される。
図6は、標準アクションテーブル133の構成例を示す図である。
標準アクションテーブル133は、連携サービスの実行において実行される処理の単位であるアクションに関する情報を保持する。標準アクションテーブル133は、アクション毎に、エントリを有する。各エントリは、アクションUUID13301と、アクション名13302と、サービス名13303と、サービスUUID13304と、アクション定義13305と、バージョン13306といった情報を記憶する。以下、一つのアクションを例に取る(図6の説明において「対象アクション」)。
アクションUUID13301は、対象アクションのUUIDを示す。アクション名13302は、対象アクションの名称を示す。当該名称は、対象アクションの内容を人間が理解できる文字列である。
「アクション」というのは、連携サービスを実現するために、連携に関与した依頼者と提供者が連携中で実際に行う処理である。アクション定義13305は、当該処理(対象アクション)の定義を示す。依頼者と提供者が対象アクションを実行する際に当該アクション定義13305に従う。一つの連携サービスの実行のためには、依頼者と提供者が決まった順番通りに指定されたアクションを適切なタイミングに実行する必要があり、この詳細は後述する標準シナリオ定義テーブル134に規定されている。
同じアクションは複数の連携サービスに実行されることがあり、所属関係は一対一とは限らない。サービス名13303およびサービスUUID13304は、対象アクションが属する一つ以上の連携サービスの各々の名称およびUUIDを示す。
アクション定義13305は、提供者および依頼者を管理または開発する人間向けの情報でよく、例えば、対象アクションの詳細を説明する文章や、対象アクションに関わる標準名や、対象アクションにかかわるウェブサイトのURLなどの、人間が対象アクションの形態や効果に対してコンセンサスをとるために必要な情報である。
バージョン13306は、対象アクションのバージョンを示す。対象アクションに対応した情報13301~13305の少なくとも一部の変更が発生したら、バージョン13306が一定のルールで変更される。
図7は、標準シナリオ定義テーブル134の構成例を示す図である。
標準シナリオ定義テーブル134は、連携サービス毎に用意されるテーブルであり、連携サービスの実行として行われる一つ以上のアクションとその実行順序とに関する情報を保持する。標準シナリオ定義テーブル134は、サービスUUID13401と、バージョン情報13402とを格納する。サービスUUID13401は、本テーブル134に対応した連携サービスのUUIDを示す。バージョン情報13402は、本テーブル134のバージョンを示す。本テーブル134に任意の箇所に変更が発生したら、バージョン情報13402が一定のルールで変更される。ここで言う変更は、例えば、タイミング13407の変更や、アクション内容の添削や、順番13403の変更などであると考えられる。
また、本テーブル134は、本テーブル134に対応した連携サービスの実行として行われる一つ以上のアクションの各々についてエントリを有する。各エントリは、アクション順番13403と、アクションUUID13404と、アクション名13405と、実行者13406と、実行タイミング13407と、必須フラグ13408と、バージョン13409といった情報を格納する。以下、一つのアクションを例に取る(図7の説明において「対象アクション」)。
アクションUUID13404とアクション名13405は、対象アクションのUUIDと名称を示し、標準アクションテーブル133に従う。
実行者13406は、対象アクションを実行する主体であり、例えば、依頼者、提供者、または、対象アクションが属するいずれかの連携サービスに関与する全員でよい。タイミング13407は、対象アクションを実行するタイミングを示す、必須フラグ13408は、対象アクションの実行が必須であるかどうかを示す。バージョン13409は、対象アクションの実行前提になる最低バージョン(対象アクションに対応したバージョンの下限値)を示す。
図8は、提供者テーブル135の構成例を示す図である。
提供者テーブル135は、提供者に関する情報を保持する。提供者が、本テーブル135を通して、連携サービスを提供する様々な条件を開示することができる。依頼者が、本テーブル135を通して、提供者を見つけることができる。提供者テーブル135は、連携サービス毎にエントリを有する。各エントリは、サービス名13501と、サービスUUID13502と、提供者名13503と、提供者UUID13504と、通信窓口13505と、提供場所13506と、提供時間13507と、対価13508といった情報を記憶する。以下、一つの連携サービスを例に取る(図8の説明において「対象サービス」)。
サービス名13501とサービスUUID13502は、対象サービスの名称とUUIDを示し、連携サービステーブル132に従う。
提供者名13503は、対象サービスの提供者の名称を示す。提供者UUID13504は、当該提供者のUUID(例えば、提供者の身分を識別または認証するために必要なID)を示す。通信窓口13505は、対象サービスの依頼の送信先、典型的には、提供者のインターフェース(例えば、対象サービスの実行中に行われる様々な通信(データ通信や、アクションの実施タイミングを制御する通信など)の際の提供者側インターフェース)を示す。
提供場所13506は、対象サービスの提供場所(対象サービスを提供できる場所)を示している。連携サービスの提供場所としては、例えば、あるエリア内、建物内、建物の中の特定階層や部屋、または、ピンポイントのスポット(あるいは、場所の制限なし)などが考えられる。対象サービスに関与するローカルシステム3が提供場所に対する理解が同じであること確保するために、提供者が決まったルール(例えば、GPSの座標群、建物の住所、室内座標系、あるいは事前の合意)に随って開示することが望ましい。
提供時間13507は、対象サービスを提供できる時間帯を示す。
対価13508は、対象サービスを提供するたびに受け取る対価(例えば報償額)を示す。対価は、対象サービスの提供のインセンティブの一例であり、金銭に限られないでよい。
図9は、提供可能サービステーブル231の構成例を示す図である。
提供可能サービステーブル231は、本テーブル231を格納するローカルシステム3(図9の説明において対象システム3)が提供可能な連携サービスに関する情報を保持している。上述した提供者テーブル135は、提供者のリスト相当であることに対して、提供可能サービステーブル231は、依頼者から連携サービスの依頼を受けた提供者がこの依頼に対応するかどうかを判断するために使用される。本テーブル231は、対象システム3が提供可能な連携サービス毎に、サービス名2301と、サービスUUID23102と、開始時間23104と、同時数23108と、対価23101と、バージョン23107と、シナリオ内容23108といった情報を記憶する。以下、一つの連携サービスを例に取る(図9の説明において「対象サービス」)。
サービス名23101は、対象サービスの名称を示しており、サービスUUID23102との対応関係は、連携サービステ-ブル132に随う。
提供場所23103は、提供者テーブル135における提供場所13506に一致する。
同時数23105は、対象システム3が対象サービスを同時に提供できる数を示す。
対価23106は、対象サービスを提供するたびに受け取る対価(例えば報償額)であり、提供者テーブル135の対価13508に一致する。
バージョン23107は、シナリオ内容23108に保存されているシナリオのバージョンを示す。当該シナリオに対応したバージョン情報13402(標準シナリオ定義テーブル134内のバージョン情報13402)とバージョン23107が一致していない場合は、後述する更新処理で更新が行われる。
シナリオ内容23108は、標準シナリオ定義テーブル134が有する情報13403~13409に対応した情報231081~231087に加えて、内部コマンド231088という情報を含む。内部コマンド231088は、標準アクションテーブル133にリストアップされたアクションを対象システム3内で実行するコマンドを示している。本実施例において、二つ以上のローカルシステム3の内部構造や稼動原理が異なるため、アクションを実行するための命令、条件およびコマンドのうちの少なくとも一つも異なる。内部コマンド231088の詳細は後述する。
図10は、利用可能サービステーブル232の構成例を示す図である。
利用可能サービステーブル232は、本テーブル232を格納するローカルシステム3(図10の説明において対象システム3)が利用可能な連携サービスに関する情報を保持している。本テーブル232は、対象システム3が提供可能な連携サービス毎に、サービス名23201と、サービスUUID23202と、対価23203と、バージョン23204と、シナリオ内容23205といった情報を記憶する。以下、一つの連携サービスを例に取る(図10の説明において「対象サービス」)。
サービス名23201は、対象サービスの名称を示しており、サービスUUID23202との対応関係は、連携サービステ-ブル132に従う。
対価23203は、対象サービスを利用するたびに対象サービスの提供者に支払う対価(例えば報償額の最大値)を示す。
バージョン23204は、シナリオ内容23205に保存されているシナリオのバージョンを示す。当該シナリオに対応したバージョン情報13402(標準シナリオ定義テーブル134内のバージョン情報13402)とバージョン23204が一致していない場合は、後述する更新処理で更新が行われる。
シナリオ内容23205は、図10が示すシナリオ内容23108と同様に、標準シナリオ定義テーブル134が有する情報13403~13409に対応した情報232051~232057に加えて、内部コマンド232058という情報を含む。内部コマンド232058については図10に示した内部コマンド231088と同様である。
図11は、提供中サービステーブル233の構成例を示す図である。
提供中サービステーブル233は、本テーブル233を格納するローカルシステム3(図11の説明において対象システム3)が提供している連携サービスの状態に関する情報を保持している。本テーブル233は、対象システム3が提供中の連携サービス毎に、サービス番号23301と、進行状態23302と、サービス名23303と、サービスUUID23304と、利用者名23305と、利用者UUID23306と、通信窓口23307と、提供開始時刻23308と、提供終了時刻23309といった情報を記憶する。以下、一つの連携サービスを例に取る(図11の説明において「対象サービス」)。
サービス番号23301は、対象サービスを制御および管理するために使われる臨時番号である(当該番号の使い方については後述する)。
進行状態23302は、対象サービスの進行状態を示す。
サービス名23303は、対象サービスの名称を示し、サービスUUID23304との対応関係は、連携サービステ-ブル132に従う。
利用者名23305は、対象サービスの利用者(典型的には、対象サービスを利用するローカルシステム3)の名称を示す。利用者UUID23306は、当該利用者のUUIDを示す。
通信窓口23307は、対象サービスの依頼に対する返事の送信先(対象サービスの利用者の窓口としての利用者側インターフェース)を示す。
提供開始時刻23308および提供終了時刻23309は、対象サービスの提供が実際に開始された時刻および当該提供の予定終了時刻を示す。
図12は、利用中サービステーブル234の構成例を示す図である。
利用中サービステーブル234は、本テーブル234を格納するローカルシステム3(図11の説明において対象システム3)が利用している連携サービスの状態に関する情報を保持している。本テーブル234は、対象システム3が利用中の連携サービス毎に、サービス番号23401と、進行状態23402と、サービス名23403と、サービスUUID23404と、提供者名23405と、提供者UUID23406と、通信窓口23407と、利用開始時刻23408と、利用終了時刻23409と、次サービス番号23410といった情報を記憶する。
サービス番号23401については、図11に示したサービス番号23301と同様である。進行状態2302は、対象サービスの進行状態を示す。サービス名23403は、対象サービスを示し、サービスUUID23404との対応関係は、連携サービステ-ブル132に従う。
提供者名23405は、対象サービスの提供者(典型的には、対象サービスを提供するローカルシステム3)の名称を示す。提供者UUID23406は、当該提供者のUUIDを示す。提供者UUID23406は、前述した利用者UUID23306と、同じ編成系統に属すものである。例えば、あるローカルシステム3が利用者として連携サービスを利用しているときの利用者UUIDを「12345」とすると、このローカルシステム3が提供者として連携サービスを提供するときの提供者UUIDも「12345」である。
通信窓口23407は、対象サービスの依頼の送信先(対象サービスの提供者の窓口としての提供者側インターフェース)を示す。
利用開始時刻23408および利用終了時刻23409は、対象サービスの利用が実際に開始された時刻および当該利用の予定終了時刻を示す。
次サービス番号23410は、対象サービスを含んだ複数の連携サービスを連続的に利用する場合(すなわち、対象サービスを含んだ連携サービス連鎖を利用する場合)に有効な情報であり、対象サービスの次に利用する連携サービスに対応するサービス番号23401を値として含む。
本実施例において使用されるメッセージを説明する。使用されるメッセージは例えばアプリケーション層でのメッセージである。以下の説明では、メッセージのペイロードにある内容を述べる。当該内容をデータとして送受信するためのカプセル化は通信手段により異なる。
図13は、分類更新メッセージM1の構成例を示す図である。
分類更新メッセージM1は、サービス分類テーブル131の更新のためのメッセージである。分類更新メッセージM1は、送信元M101と、身分確認M102と、更新内容M103と、メッセージ番号M104とを含む。
送信元M101は、サービス分類テーブル131の中身を更新する主体のID(例えばUUID)を示す。身分確認M102は、このメッセージM1の送信元の認証用の情報(例えば送信元M101を基に生成された文字列)である。
更新内容M103は、更新種類M10301と、分類UUIDM10302と、下位分類名M10304と、下位分類UUIDM10305と、有効性M10306といった情報を含む。更新種類M10301は、当該更新が既存サービス分類の変更であるかあるいは新しいサービス分類の追加であるかといった更新種類を示す。更新内容M103にある他の項目の情報M10302~M10306の定義は、サービス分類テーブル131にある同名の情報13102~13106と同じである。
メッセージ番号M104は、このメッセージM1を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図14は、サービス更新メッセージM2の構成例を示す図である。
サービス更新メッセージM2は、連携サービステーブル132の更新のためのメッセージである。サービス更新メッセージM2は、送信元M201と、身分確認M202と、更新内容M203と、メッセージ番号M204とを含む。
送信元M201は、連携サービステーブル132の中身を更新する主体のID(例えばUUID)を示す。身分確認M202は、このメッセージM2の送信元の認証用の情報(例えば送信元M201を基に生成された文字列)である。
更新内容M203は、更新種類M20301と、サービスUUIDM20302と、サービス名M20303と、分類名M20304と、分類UUIDM20305と、インプットM20306と、インプットUUIDM20307と、インプット定義M20308と、サートプットM20309と、アウトプットUUIDM20310と、アウトプット定義M20311と、有効性M20312とを含む。更新種類M20301は、当該更新が既存連携サービスの変更であるか、新しい連携サービスの追加であるかといった更新種類を示している。更新内容M203にある他の情報M20302~M20312の定義は、連携サービステーブル132にある同名の情報13201~13211と同じである。
メッセージ番号M204は、このメッセージM2を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図15は、アクション更新メッセージM3の構成例を示す図である。
アクション更新メッセージM3は、標準アクションテーブル133の更新のためのメッセージである。アクション更新メッセージM3は、送信元M301と、身分確認M302と、更新内容M303と、メッセージ番号M304とを含む。
送信元M301は、標準アクションテーブル133の中身を更新する主体のID(例えばUUID)を示す。身分確認M302は、このメッセージM3の送信元の認証用の情報(例えば送信元M301を基に生成された文字列)である。
更新内容M303は、更新種類M30301と、アクションUUIDM30302と、アクション名M30303と、サービス名M30304と、サービスUUIDM30305と、アクション定義M30306とを含む。更新種類M30301は、当該更新が既存標準アクションの変更であるか新しい標準アクションの追加であるかといった更新種類を示す。更新内容M303にある他の情報M30302~M30306の定義は、標準アクションテーブル133にある同名の情報13301~13305と同じである。
メッセージ番号M304は、このメッセージM3を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図16は、シナリオ更新メッセージM4の構成例を示す図である。
シナリオ更新メッセージM4は、標準シナリオ定義テーブル134の更新のためのメッセージである。シナリオ更新メッセージM4は、送信元M401と、身分確認M402と、更新種類M403と、サービスUUIDM404と、更新内容M405と、メッセージ番号M406と、記憶されている。
送信元M401は、標準シナリオ定義テーブル134の中身を更新する主体のID(例えばUUID)を示す。身分確認M402は、このメッセージM4の送信元の認証用の情報(例えば送信元M401を基に生成された文字列)である。
更新種類M403は、更新内容M405にある情報は既存のシナリオの変更であるか、新しい標準シナリオ定義テーブル134の追加であるかといった更新種類を示している。
更新内容M405は、アクションUUIDM40501と、アクション名M40502と、実行者M40503と、タイミングM40504と、必須フラグM40505とを含む。これらの情報M40501~M40505の定義は、標準シナリオ定義テーブル134にある同名の情報13404~13408と同じである。
メッセージ番号M406は、このメッセージM4を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図17は、提供者更新メッセージM5の構成例を示す図である。
提供者更新メッセージM5は、提供者テーブル135の更新のためのメッセージである。提供者更新メッセージM5は、送信元M501と、身分確認M502と、更新種類M503と、更新内容M504と、メッセージ番号M505とを含む。
送信元M501は、提供者テーブル135の中身を更新する主体(つまり提供者)のID(例えばUUID)を示す。身分確認M502は、このメッセージM5の送信元の認証用の情報(例えば送信元M501を基に生成された文字列)である。
更新種類M503は、提供者が提供可能な新しい連携サービスを追加するのか、既存の提供可能な連携サービスを変更するのか、既存の提供可能な連携サービスを削除するのかといった更新種類を示している。
更新内容M504は、サービス名M50401と、サービスUUIDM50402と、提供者名M50403と、提供者UUIDM50404と、通信窓口M50405と、提供場所M50406と、提供時間M50407と、対価M50408とを含む。これらの情報M50401~M50408の定義は、提供者テーブル135にある同名の情報13501~13508と同じである。
メッセージ番号M505は、このメッセージM5を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図18は、対応結果通知メッセージM6の構成例を示す図である。
対応結果通知メッセージM6は、前述した分類更新メッセージM1と、サービス更新メッセージM2と、アクション更新メッセージM3と、シナリオ更新メッセージM4といったメッセージ(図18の説明において「元メッセージ」)に対する返事である。対応結果通知メッセージM6は、送信先M601と、対応メッセージ番号M602と、対応結果M603とを含む。
送信先M601は、このメッセージM6の送信先、すなわち、元メッセージの送信元のID(例えばUUID)を示す。対応メッセージ番号M602は、元メッセージのメッセージ番号を示す。対応結果M603は、「更新成功」(図18の例1を参照)、「権限承認失敗で拒否」(図18の例2を参照)といったような、元メッセージに応答して行われた処理の結果を示す。
図19は、バージョン変更周知メッセージM7の構成例を示す図である。
バージョン変更周知メッセージM7は、サービス分類テーブル131、連携サービステーブル132、標準アクションテーブル133、または標準シナリオ定義テーブル134といったテーブル(図19の説明において「元テーブル」)にあるバージョン情報が更新されたことを周知するためのメッセージである。バージョン変更周知メッセージM7は、変更対象M701と、変更箇所M702と、前バージョン番号M703と、新バージョン番号M704とを含む。
変更対象M701は、元テーブルを示す。変更箇所M702は、変更が発生した連携サービスのサービスUUID、またはアクションUUIDを示す。複数の変更対象がある場合は、複数のサービスUUID、またはアクションUUIDを示す。前バージョン番号M703は、変更前のときのバージョンを示す。新バージョン番号M704は、変更後のときのバージョンを示す。
図19によれば、例1は、サービス分類テーブル131に関し、全てのサービス分類に何らかの更新があったことを示す。例2は、標準シナリオ定義テーブル134に関し、一つの連携サービスの追加があったことを示す。例3は、連携サービステーブル132に関し、一つの連携サービスの削除があったことを示す。例4は、標準アクションテーブル133に関し、二つのアクションに何らかの更新があったことを示す。
図20は、調査依頼メッセージM8の構成例を示す図である。
調査依頼メッセージM8は、連携サービスを利用したいローカルシステム3が希望の連携サービスを提供する提供者を探すために仲介プログラム141に送信するメッセージである。調査依頼メッセージM8は、送信元M801と、身分確認M802と、サービス名M803と、サービスUUIDM804と、場所条件M805と、時間条件M806と、対価M807と、メッセージ番号M808とを含む。
送信元M801は、このメッセージM8を出した依頼者の依頼者名(またはUUID)を示す。身分確認M802は、このメッセージM8の送信元の認証用の情報である。
サービス名M803およびサービスUUIDM804は、利用したい連携サービスの名称およびUUIDを示す。
場所条件M805、時間条件M806、および対価M807は、連携サービスを提供する場所に関する条件と、時間に関する条件と、対価に関する条件(例えば支払える報償の上限)とを示す。
メッセージ番号M808は、このメッセージM8を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図21は、設計依頼メッセージM9の構成例を示す図である。
設計依頼メッセージM9は、サービス分類のみ(決まった連携サービスではなく)を希望した利用者の利用申請プログラム243から送信されるメッセージであり、連携サービス連鎖を設計してその連携サービス連鎖を提供できる連携サービスの提供者の集合を探すために仲介プログラム141に送信されるメッセージである。設計依頼メッセージM9は、送信元M901と、分類名M902と、分類UUIDM903と、インプットM904と、インプットUUIDM905と、場所条件M906と、時間条件M907と、対価M908と、メッセージ番号M906とを含む。
送信元M901は、このメッセージM9を出した依頼者の依頼者名(またはUUID)を示す。
分類名M902および分類UUIDM903は、希望した連携サービスの分類名およびUUIDを示す。
インプットM904とインプットUUIDM905は、依頼者が提供できるインプットとそれのUUIDとを示す。
場所条件M906、時間条件M907、および対価M908は、連携サービス連鎖が行われる場所に関する要件と、時間に関する条件と、対価に関する条件(例えば支払える報償の上限)とを示す。
メッセージ番号M906は、このメッセージM9を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図22は、調査依頼返答メッセージM10の構成例を示す図である。
調査依頼返答メッセージM10は、仲介プログラム141が調査依頼メッセージM8に対して依頼者へ出した返事である。調査依頼返答メッセージM10は、送信先M1001と、対応メッセージ番号M1002と、検索結果M1003とを含む。
送信先M1001が、このメッセージM10の送信先(調査依頼メッセージM8の送信元)の依頼者名(またはUUID)を示す。対応メッセージ番号M1002は、調査依頼メッセージM8のメッセージ番号を示す。
検索結果M1003は、提供者名M100301と、提供者UUIDM100302と、通信窓口M100303と、対価M100304とを含む(図22の例1を参照)。上記提供者名M100301および提供者UUIDM100302は、仲介プログラム141が後述する処理で、調査依頼メッセージM8に記載された条件に対して見つけた提供者提供者候補名およびそれの提供者UUIDを示す。通信窓口M100303は、上記提供者候補が後述するサービス依頼メッセージM12を受信する窓口(提供者側インターフェース)を示す。
なお、図22の例2が示すように、検索結果として一つも候補が見つからなかった場合、検索結果M1003は「NULL」となる。
図23は、設計依頼返答メッセージM11の構成例を示す図である。
設計依頼返答メッセージM11は、仲介プログラム141が設計依頼メッセージM9に対して依頼者へ出した返事である。設計依頼返答メッセージM11は、送信先M1101と、対応メッセージ番号M1102と、検索結果M1103とを含む。
送信先M1101が、このメッセージM11の送信先(設計依頼メッセージM9の送信元)の依頼者名(またはUUID)を示す。対応メッセージ番号M1102は、設計依頼メッセージM9のメッセージ番号を示す。
検索結果M1103は、順番M110301と、サービス名M110302と、分類名M110303と、インプットM110304と、インプットUUIDM110305と、インプット定義M110306と、アウトプットM110307と、アウトプットUUIDM110308と、アウトプット定義M110309と、提供者名M110310と、提供者UUIDM110311と、通信窓口M110312と、対価M110313とを含む(図23の例1を参照)。順番M110301は、連携サービス連鎖が含む連携サービスが提供される順番を示す。情報M110302~M110309の定義は、連携サービステーブル132にある同名の情報13202、13203および13205~13210と同じである。情報M110310~M110313の定義は、提供者テーブル135にある同名の情報13503~13505および13508と同じである。
なお、設計依頼返答メッセージM11は、連携サービス連鎖を構成する各連携サービスについて、当該連携サービスの利用(実行)において行われる一つ以上のアクションの各々に関する情報(例えば標準シナリオ定義テーブル134相当の情報)を含んでもよい。
図24は、サービス依頼メッセージM12の構成例を示す図である。
サービス依頼メッセージM12は、連携サービスを希望した利用者の利用申請プログラム243から提供者候補の依頼受付プログラム242に送信されるメッセージであって、連携可否に関する問い合わせとしてのメッセージである。サービス依頼メッセージM12は、送信元M1201と、身分確認M1202と、サービス名M1203と、サービスUUIDM1204と、場所条件M1205と、開始時刻範囲M1206と、終了時刻範囲M1207と、対価M1208と、メッセージ番号M1209と、通信窓口M1210とを含む。
情報M1201~M1205およびM1208の定義は、調査依頼メッセージM8における同名の情報M801~M805およびM807と同じである。
開始時刻範囲M1206と終了時刻範囲M1207は、連携サービスの利用開始時刻および利用終了時刻の各々の範囲を示す。
メッセージ番号M1209は、このメッセージM12を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
通信窓口M1210は、上記提供者候補が後述するサービス依頼返答メッセージM13を送信する送信先の窓口を示す。
図25は、サービス依頼返答メッセージM13の構成例を示す図である。
サービス依頼返答メッセージM13は、提供者候補の依頼受付プログラム242がサービス依頼メッセージM12に対して依頼者へ出して返事である。サービス依頼返答メッセージM13は、送信元M1301と、対応メッセージ番号M1302と、返答内容M1303とを含む。
送信元M1301が、本メッセージM13を送信する提供者の名称(またはUUID)を示す。対応メッセージ番号M1302は、サービス依頼返答メッセージM13のメッセージ番号を示す。
返答内容M1303は、回答種類M130301と、利用開始時刻M130302と、利用終了時刻M130303とを含む。回答種類M130301は、サービス依頼メッセージM12に対する回答の種類(例えば「承諾」または「拒否」)を示す。利用開始時刻M130302および利用終了時刻M130303は、提供者候補の依頼受付プログラム242が定めた連携サービスの開始時刻および終了予定時刻を示す。
図26は、アクション実行状態通知メッセージM14の構成例を示す図である。
アクション実行状態通知メッセージM14は、連携サービスの実行中における該当アクションを実行し始めること、または終了したことを連携先となる利用者または提供者に通知するために使われるメッセージである。アクション実行状態通知メッセージM14は、
送信元M1401と、サービス名M1402と、サービスUUIDM1403と、アクション順番M1404と、アクションUUIDM1405と、実行状態M1406と、メッセージ番号M1407とを含む。
送信元M1401は、このメッセージM14を送る利用者名または提供者名を示す。
サービス名M1402とサービスUUIDM1403は、本メッセージM14の対象であるアクションが属する連携サービス、すなわち、現在実行している連携サービスのサービス名およびそのサービスUUIDを示す。
アクションの順番M1404およびアクションUUIDM1405は、サービスUUIDM1403が指した標準シナリオ定義テーブル134にある同名の情報13403および13404に対応している。実行状態M1406は、当該アクションの実行を開始したかまたは終了したかといった状態を示す。
メッセージ番号M1407は、このメッセージM14を識別するための番号であり、メッセージ送信前に一定のルールで生成された番号である。
図27は、終了通知返答メッセージM15の構成例を示す図である。
終了通知返答メッセージM15は、アクション実行状態通知メッセージM14に対する返事である。終了通知返答メッセージM15は、送信元M1501と、対応メッセージ番号M1502と、受信確認M1503とを含む。
送信先M1501が、このメッセージM15の送信先(アクション実行状態通知メッセージM14の送信元)の名称(またはUUID)を示す。対応メッセージ番号M1502は、アクション実行状態通知メッセージM14のメッセージ番号を示す。受信確認M1503は、アクション実行状態通知メッセージM14を受信したことを示す。
以下、本実施例で行われる処理の一例を説明する。
図28は、管理プログラム142が行う処理の一例を示すフローチャートである。
管理プログラム142は、起動したら、S14201で、分類更新メッセージM1、サービス更新メッセージM2、アクション更新メッセージM3、シナリオ更新メッセージM4、または、提供者更新メッセージM5、の受信を待機する。上記メッセージのいずれかを受信したら(S14202:Yes)、処理がS14203に移る。
S14203で、管理プログラム142は、上記受信したメッセージ(図28の説明において「受信メッセージ」)に含まれた身分確認情報を確認し、当該受信メッセージが対応するテーブルを更新することの権限を当該受信メッセージの送信元が持っているかどうかを確認する。具体的には、例えば、管理プログラム142は、受信メッセージに含まれた身分確認情報と、更新対象のテーブル内の該当情報(例えば提供者UUID)を基に生成される身分確認情報とが一致するか否かを判断する。
確認の結果が不通過である場合は(S14204:No)、S14208で、管理プログラム142は、当該結果を記述した対応結果通知メッセージM6を生成して受信メッセージの送信元に送信する。
一方、確認の結果が通過である場合は(S14204:Yes)、S14205で、管理プログラム142は、上記受信メッセージが提供者更新メッセージM5であるかどうかを判断する。
受信メッセージが提供者更新メッセージM5の場合は(S14205:Yes)、S14206で、管理プログラム142は、提供者更新メッセージM5内の更新種類M503に応じて当該メッセージM5内の更新内容M504を提供者テーブル135の相応箇所に反映するといった更新を行う。当該更新が終了したら、S14207で、管理プログラム142は、今回の処理結果を記述した対応結果通知メッセージM6を生成して受信メッセージの送信元に返信する。
受信メッセージが提供者更新メッセージM5ではない場合は(S14205:No)、S14209で、管理プログラム142は、上記受信メッセージおよび当該受信メッセージが示す更新内容に応じて、相応の更新を行う。S14209の具体例は、例えば下記ケース1~ケース4の通りである。
(ケース1)受信メッセージが分類更新メッセージM1であった場合:図4および図13を用いて一例を説明する。先ず、管理プログラム142は、分類更新メッセージM1の更新内容M103の各行を読み込む。対象の行の更新種類M10301が「変更」と記載されている場合は、管理プログラム142は、その行で記載された分類UUID M10302および下位分類UUID M10305を用いて、サービス分類テーブル131に保存された同じ行を検索する。当該行を見つけたら、管理プログラム142は、その行の各箇所の内容を更新する。ここでは、管理プログラム142は、更新内容M103の1行目の情報に応じて、「映像再生」の下位分類に「Local再生」が存在することの有効性を「有効」から「無効」に変更する。一方、対象の行の更新種類M10301が「追加」と記載されている場合は、管理プログラム142は、その行の内容を、サービス分類テーブル131に追加する。更新内容M103の2行目から4行目によれば、管理プログラム142は、マルチメディア再生の下位分類にスライド再生の分類を追加し、スライド再生の下位分類に「Streaming再生」の分類を追加し、「Streaming再生」を最下位分類とする。最後に、管理プログラム142は、サービス分類テーブル131のバージョン情報10101を一定のルールで更新する。
(ケース2)受信メッセージがサービス更新メッセージM2であった場合:図5および図14を用いて一例を説明する。先ず、管理プログラム142は、サービス更新メッセージM2の更新内容M203の各行を読み込む。対象の行の更新種類M20301が「変更」と記載されている場合は、管理プログラム142は、その行で記載されたサービスUUID M20302を用いて、連携サービステーブル132に保存された同じ行を検索する。当該行を見つけたら、管理プログラム142は、その行の各箇所の内容を更新し、バージョン13212を一定のルールで追記する。一方、対象の行の更新種類M20301が「追加」と記載されている場合は、管理プログラム142は、その行の内容を、連携サービステーブル132に追加し、バージョン13212を一定のルールで追記する。図5が示した例の更新内容の1行目と2行目の情報に応じて、DVD再生およびUSB再生のサービスの有効性を「有効」から「無効」に変更する。管理プログラム142は、更新内容M203の3行目の情報に応じて、「Streaming再生」(分類のUUIDが「1351」)という分類に「M社製品スライド再生」という新しい連携サービスを追加する。
(ケース3)受信メッセージがアクション更新メッセージM3であった場合:図6および図15を用いて一例を説明する。先ず、管理プログラム142は、アクション更新メッセージM3の更新内容M303の各行を読み込む。対象の行の更新種類M30301が「更新」と記載されている場合は、管理プログラム142は、その行で記載されたアクションUUID M30302を用いて、標準アクションテーブル133に保存された同じ行を検索する。当該行を見つけたら、管理プログラム142は、その行の各箇所の内容を更新し、バージョン13306を一定のルールで追記する。一方、対象の行の更新種類M30301が「追加」と記載されている場合は、管理プログラム142は、その行の内容を、連携サービステーブル132に追加し、バージョン13306を一定のルールで追記する。
(ケース4)受信メッセージがシナリオ更新メッセージM4であった場合:図7および図16を用いて一例を説明する。先ず、管理プログラム142は、シナリオ更新メッセージM4の更新種類M403が「追加」である場合は、サービスUUID M404および更新内容M405を用いて、新しい標準シナリオ定義テーブル134を作成する。一方、更新種類403が「変更」である場合は、管理プログラム142は、サービスUUID M404および更新内容M405を用いて、該当の標準シナリオ定義テーブル134を上書きする。最後に、管理プログラム142は、標準シナリオ定義テーブル134のバージョン情報13402を一定のルールで更新する。
S14209での更新が終了したら、S14210で、管理プログラム142は、処理の結果を記述した対応結果通知メッセージM6を受信メッセージの送信元に返信する。そして、S14211で、管理プログラム142は、テーブル更新を行ったことを記述したバージョン変更周知メッセージM7をブロードキャストする。変更(更新)のあったテーブルがサービス分類テーブル131である場合は、バージョン変更周知メッセージM7の変更箇所M702は「全域」である(サービス分類テーブル131はサービス分類を記録する複雑なテーブルであるため、変更が発生したら、テーブル全域が変更されたとみなされる)。一方、変更のあったテーブルが標準シナリオ定義テーブル134、連携サービステーブル132もしくは標準アクションテーブル133の場合は、バージョン変更周知メッセージM7の変更対象M701は、当該変更のあったテーブルの名称であり、変更箇所M702は、変更があるサービスもしくはアクションのUUIDである。なお、変更のあるサービスまたはアクションが複数存在する場合は、変更箇所M702、前バージョン番号M703、および新バージョン番号M704の各々に、同じ順番で相応する情報が記入されればよい。
S14207またはS14211での処理が終わったら、S14212で、管理プログラム142が、外部からの終了コマンドを受信したか否かを判断する。判断結果が肯定の場合は(S14212:Yes)、管理プログラム142が終了する。一方、判断結果が否定の場合は(S14212:No)、処理がS14201に戻る。
図29は、仲介プログラム141が行う処理の一例を示すフローチャートである。
仲介プログラム141は、起動したら、S14101で、調査依頼メッセージM8、または、設計依頼メッセージM9の受信を待機する。上記メッセージのいずれかを受信したら(S14102:Yes)、S14103で、仲介プログラム141は、上記受信したメッセージ(図29の説明において「受信メッセージ」)に含まれた身分確認情報を基に、図28のS14203と同様に権限を確認する。
確認の結果が不通過である場合は(S14104:No)、S14108で、仲介プログラム141は、当該結果を記述した対応結果通知メッセージM6を生成して受信メッセージの送信元に送信する。
一方、確認の結果が通過である場合は(S14104:Yes)、S14105で、仲介プログラム141は、受信メッセージが調査依頼メッセージM8であるかどうかを判断する。
受信メッセージが調査依頼メッセージM8である場合は(S14105:No)、S14109で、仲介プログラム141は、調査依頼メッセージM8の場所条件M805、時間条件M806および対価M807が示す条件を満たした提供者を提供者テーブル135から検索する。この検索処理の一例を、図20を用いて説明する。受信メッセージは、送信元「H社ロボット管理システム」が連携サービス「エレベータ乗用」を利用するために仲介プログラム141に送信されたメッセージであって、当該連携サービスを利用する場所条件M805、時間条件M806,および対価M807を含んだ調査依頼メッセージM8である。図8の例によれば、連携サービス「エレベータ乗用」の提供者として「A社ビルシステム」および「F社昇降機管理システム」があるが、「H社ロボット管理システム」が指定した提供場所は「Building_A」であるので、提供時間、対価を含めて全条件に満たした提供者は「A社ビルシステム」のみである。そこで、S14110で、仲介プログラム141は、この検索結果を記述した調査依頼返答メッセージM10を生成して受信メッセージの送信元(依頼元)へ返信する。
受信メッセージが設計依頼メッセージM9である場合は(S14105:Yes)、S14106で、連鎖設計処理が行われる。つまり、可能な連携サービス連鎖が設計される。次に、S14107で、仲介プログラム141は、設計の結果を記述した設計依頼返答メッセージM11(連鎖設計処理で生成されたメッセージ)を受信メッセージの送信元(依頼元)に返送する。
S14107またはS14110での処理が終わったら、S14111で、終了か否かが判断される。外部から終了コマンドを受信した等の理由により終了の場合は(S14111:Yes)、仲介プログラム141が終了する。一方、終了ではない場合は(S14111:No)、処理がS14101に戻る。
図30は、連鎖設計処理の一例を示すフローチャートである。
S14106_01で、仲介プログラム141は、設計依頼メッセージM9内の場所条件M906、時間条件M907、対価M908および分類UUIDM903に該当する候補を提供者テーブル135から検索する。図21の例を用いて、これからの処理の一例を説明すると、次の通りである。すなわち、送信元901が「H社ロボット管理システム」であり、分類名M902は「映像再生」であり、インプットM904は「検索文」である。そして、このメッセージM9によると、場所条件M906は「Building_A、Room301」であり、時間条件M907は「2018/09/12の9:00から2018/09/12の10:00まで」であり、対価M908は「50」である。まず、仲介プログラム141は、サービス分類テーブル131から、「映像再生」(分類UUID13102=134)というサービス分類を検索する、図4の例によれば、「映像再生」というサービス分類のなかに、「Streaming再生」(分類UUID13102=1345)および「Local再生」(分類UUID13102=1346)という下位分類がある。そして、仲介プログラム141は、連携サービステーブル132を参照して、「Streaming再生」および「Local再生」に所属する連携サービスが「HTTP Browser」(サービスUUID13201=S1345_1)や、「DVD再生」(サービスUUID13201=S1346_2)や、「USB再生」(サービスUUID13201=S1346_5)などのサービスがあることが分かる。仲介プログラム141は、提供者テーブル135から、場所条件M906である「Building_A、Room301」、時間条件M907である「2018/09/12の9:00から2018/09/12の10:00まで」、および対価M908である「50」という条件を満たす連携サービス「HTTP Browser」、「DVD再生」、または「USB再生」を提供する提供者を検索する。検索の結果、「HTTP Browser」を提供する提供者「S社」が存在することが分かる。なお、条件として、場所条件M906、時間条件M907および対価M908のうちの一部の条件は無くてもよい。また、場所条件M906、時間条件M907および対価M908の各々について、条件を満たすとは、次の通りである。
・場所条件M906が場所を、提供場所13506が示す場所が含むこと(これは、それらの場所が一致することを含む)。
・時間条件M907が示す時間を、提供時間13507が示す時間が含むこと(これは、それらの時間が一致することを含む)。
・対価M908が示す対価よりも、対価13508が示す対価の方が高いこと(これは、それらの対価が一致することを含む)。
続いて、S14106_02で、仲介プログラム141は、これまでの検索結果で候補がいるかを判断する。
もし、「映像再生」というサービス分類に所属する連携サービスを提供し場所条件M906、時間条件M907および対価M908が示す条件を満たした提供者がなければ(S14106_02:No)、S14106_09で、仲介プログラム141は、当該結果を記述した設計依頼返答メッセージM11を生成することで、処理を終了する。
一方、提供者候補がいれば(S14106_02:Yes)、S14106_03で、仲介プログラム141は、各候補のインプット13205と、設計依頼メッセージM9内のインプットM904とを比較する。ここでの比較処理について、これまで使っている例を用いて説明すると、次の通りである。連携サービステーブル132で「HTTP Borwser」という連携サービスに対して、インプット13205が「URL」(インプットUUID13207=7123)であることが分かる。一方、設計依頼メッセージM9内のインプットM904が「検索文」(インプットUUID13207=12)である。比較の結果、「HTTP Borwser」に必要なインプット13205が設計依頼メッセージM9内のインプットM904と一致していない。仲介プログラム141は、このような比較をすべての候補について行う。
一致したサービス候補(連携サービスの候補)が存在しない場合は(S14106_04:Yes)、S14106_05で、仲介プログラム141は、連携サービステーブル132および提供者テーブル135を用いて、各不一致サービス候補(インプット13205がインプットM904と一致しないサービス候補)について、当該不一致サービス候補のインプット13205になれるアウトプット13208を提供する(サービス候補のインプット13205をアウトプット13208として提供できる)連携サービスの提供者を検索する。具体的には、先ず、仲介プログラム141は、連携サービステーブル132から「URL」をアウトプット13208とする連携サービスを検索する。図5の例によれば、「URL」をアウトプット13208とする連記サービスは「ウェブ動画検索」である。実際の運用では、不一致サービス候補のインプット13205になれるアウトプット13208を提供してくれる連携サービスは複数存在すると考えられる。そして、仲介プログラム141は、提供者テーブル135を用いて、「ウェブ動画検索」を提供する提供者を検索する。図8の例では、「ウェブ動画検索」を提供する提供者として「G社」が存在することがわかる。
続いて、S14106_06で、仲介プログラム141は、これまでのステップで検索した結果となった一つ以上のサービス連鎖の各々について、当該サービス連鎖にかかわる提供者の提供場所13506、提供時間13507および対価13508と、設計依頼メッセージM9内の場所条件M906、時間条件M907および対価M908とを比較し、当該一つ以上のサービス連鎖から、場所条件M906、時間条件M907および対価M908が示す条件を満たしたサービス連鎖をリストアップする。例えば、図8の例によれば、「ウェブ動画検索」の提供者「G社」の提供場所13506が「制限なし」で、提供時間13507が「0AM-12PM」で、対価13508が「0/回」であり、「HTTP Browser」の提供者「S社」の各要件に矛盾がない。つまり、「ウェブ動画検索」の提供場所や提供時間は、「HTTP Browser」の提供場所および提供時間を含む。そして、両社の対価13508の合計は40であるため、設計依頼メッセージM9内の対価M908よりも小さい。従って、「ウェブ動画検索」と「HTTPブラウザ」との組み合わせは連携サービス連鎖の候補として、リストアップされる。続いて、S14106_07で、仲介プログラム141は、前ステップでできたリストに候補となった連携サービス連鎖があるか否かを確認する。このリストに候補となった連携サービス連鎖がない場合は(S14106_07:No)、連携サービス連鎖の設計の結果を失敗とし、処理がS14106_09に移る。一方、リストに連携サービス連鎖の候補がある場合は(S14106_07:Yes)、処理がS14106_08に進む。実際の運用では、連携サービス連鎖の候補が複数存在する場合も考えられる。
S14106_08で、仲介プログラム141は、最新の結果を一時保存する。具体的には、仲介プログラム141は、前のステップでリストアップされた連携サービス連鎖の候補に新しく追加された連携サービスを新たにサービス候補とする。これまでの例で言えば、この処理は次の通りである。すなわち、これまでできた連携サービス連鎖は「ウェブ動画検索」と「HTTP Browser」との組み合わせであり、「ウェブ動画検索」は、新しく連鎖に入れられた連携サービスであり、サービス候補とされる。S14106_08が完了したら、処理がS14106_03に戻る。つまり、再度、各サービス候補のインプット13205と、設計依頼メッセージM9内のインプットM904とが比較される。一致がない場合は、処理が再びS14106_05移る。これまでの例によれば、「ウェブ動画検索」はサービス候補である。図5に例示の連携サービステーブル132によると、「ウェブ動画検索」のインプット13205が「検索文」(インプットUUID=13207)であり、設計依頼メッセージM9内のインプットM904「検索文」と一致している。従って、連携サービスの連鎖ができたので、処理がS14106_09に移る。
つまり、連携設計処理によれば、仲介プログラム141は、設計依頼メッセージM9が示す条件(場所条件M906、時間条件M907および対価M908が示す条件)を満たすことを維持する範囲で、一致サービス候補(設計依頼メッセージM9内のインプットM904と一致するインプット13205に対応したサービス候補)が見つかるまで、不一致サービス候補のインプット13205になれるアウトプット13208を提供する連携サービスを探し、見つかった連携サービスをサービス連鎖候補に加えていく。
図31は、利用申請プログラム243が行う処理の一例を示すフローチャートである。
利用申請プログラム243は、起動したら、S24401で、システム内部からの連携サービスの利用指令の受信を待機する。「システム内部」は、人間でもよいし、装置でもよいし、プログラムでもよい。利用指令の送り条件、送受信方法、フォーマットおよび内容は、システム内部の動作メカニズムに依存する。たとえば、人間がサービスロボット(ローカル装置2の一例)に対して「猫の動画が見たい」という話をしたという時、ロボットシステム(当該人間及び当該サービスロボットを含むローカルシステム3)の内部が下記のように処理を行うことが考えられる。
一例として、「動画が見たい」というリクエストに対して、何で動画を見るのか指定されていない。このため、サービスロボットが、この話を音声処理、語意分析などの処理を行った結果、この話の意味を「「猫」という「検索文」を用いて、「映像再生」というサービス分類にあるサービスを提供しなさい」と理解できる。そして、当該サービスロボットが、「映像再生」というサービス分類にある連携サービスは自分自身で実現できないと判断した場合、利用可能サービステーブル232を調べる。その結果、そのような連携サービスで利用できると分かった場合、当該サービスロボットにおいて、所定の機能(例えば、人間との対話を処理するプログラム)は、利用申請プログラム243に、「「検索文」を用いて「映像再生」というサービス分類にある連携サービスの利用を申請しなさい」という利用指令を送信する。
もう一つの例として、人間がサービスロボットに対して「搬送ロボットでこの荷物をルーム301に運んでくれ」と話した時、当該サービスロボットは、その話の意味を「「荷物」を用いて、「短距離荷物運搬」というサービスを提供しなさい」と理解できる。そして、当該サービスロボットが、「短距離荷物運搬」という連携サービスは自分自身で実現できないと判断した場合、当該サービスロボットにおいて、所定の機能が、利用申請プログラム243に、「「荷物」を用いて「短距離荷物運搬」という連携サービスの利用を申請しなさい」という利用指令を送信する。
利用指令を受信したら、S24302で、利用申請プログラム243は、当該利用指令を解読して、当該利用指令に連携サービスが指定されているか否かを判断する。また、当該利用指令を解読することで、インプットが特定される。
利用指令に連携サービスが指定されている場合は(S24302:Yes)、利用申請プログラム243は、S24303で、調査依頼メッセージM8を生成して仲介プログラム141に送信する。S24304で、利用申請プログラム243は、当該調査依頼メッセージM8に応答して仲介プログラム141から調査依頼返答メッセージM10を受信する。S24305で、利用申請プログラム243は、受信したメッセージM10で提供者の情報があるかどうかを確認する。
提供者の情報がなければ(S24305:No)、S24309で、利用申請プログラム243は、連携サービステーブル132およびサービス分類テーブル131を用いて、利用指令で指定された連携サービスの所属するサービス分類を確認する。なお、連携サービステーブル132にある分類名13203及び分類UUID13204は、当該連携サービス直属の分類の名称およびUUIDであるが、場合によって、サービス分類テーブル131を用いて、この直属分類の上位にある分類を検索することも考えられる。そして、S24310で、利用申請プログラム243は、S24309で確認したサービス分類(または、S24302で指定されたサービス分類)と上記特定されたインプットとを指定した設計依頼メッセージM9を生成して仲介プログラム141に送信する。S24311で、利用申請プログラム243は、当該設計依頼メッセージM9に応答して仲介プログラム141から設計依頼返答メッセージM11を受信する。
このメッセージM11を受信したら、S24306で、利用申請プログラム243は、下記(a)または(b)、
(a)S24304で受信した調査依頼返答メッセージM10にある提供者名M100301(複数ある可能性がある)および関連情報、
(b)設計依頼返答メッセージM11にある検索結果M1103の連携サービス連鎖の案(複数ある可能性がある)、
を抽出してシステム内部に報告する。報告の後、利用申請プログラム243は、システム内部から、当該報告に対する返信、具体的には、提供者の選定結果(いずれの提供者を選択したかを示す情報)を受信する。システム内部で上記の報告およびそれに対する返信の送受信方法や、提供者の選定基準は、例えば当該システム(ローカルシステム3)自身のメカニズムに依存してよい。例えばTCP/IPプロトコルでの上記の報告の送信およびそれに対する返信の受信を行うことが考えられ、選定基準は、例えば、対価が低い連携サービス或いは連携サービスの連鎖を選ぶこと、あるいは関与する人間の意志、が考えられる。
S24307で、利用申請プログラム243は、提供者の選定結果から、いずれかの提供者が選らばれているか否かを判断する。
少なくとも一つの提供者が選定されていたら(S24307:Yes)、S24308で、利用申請プログラム243は、当該選定結果を用いて、該当する提供者の依頼受付プログラム242に、サービス依頼メッセージM12を送信する。S24312で、利用申請プログラム243は、当該サービス依頼メッセージM12に応答して送信先の提供者の依頼受付プログラム242から、サービス依頼返答メッセージM13を、送信したサービス依頼メッセージM12内の通信窓口M1210が示す窓口で受信する。提供者テーブル135に提供者が存在しても、連携サービスを依頼される時点でこの提供者が依頼内容どおりに対応できるかどうか保証されるとは限らないので、本実施例のように、サービス依頼メッセージM12を送ることが望ましい。
S24313で、利用申請プログラム243は、受信したすべてのサービス依頼返答メッセージM13の返答内容M1303が「承諾」であるかを判断する。
すべての返答内容M1303が「承諾」である場合は(S24313:Yes)、S24314で、利用申請プログラム243は、利用中サービステーブル234に、関連情報を新規登録する。例えば、利用対象が、連携サービス連鎖ではない場合は、利用中サービステーブル234の進行状態23402は「実施前」とされる。利用対象が、連携サービス連鎖である場合は、一連の連携サービスに関する情報が全て利用中サービステーブル234に登録されるが、最初の連携サービスの進行状態23402は、「実施前」とされ、残りの連携サービスの進行状態23402は、「連鎖待ち」とされ、次サービス番号23410が、連鎖順番に基づく相応の連携サービス番号とされる。
すべての返答内容M1303が「承諾」ではない場合は(S24313:No)、S24306で、利用申請プログラム243は、システム内部に返答をする。
S24315で、終了か否かが判断される。終了の場合は(S24315:Yes)、利用申請プログラム243が終了する。一方、終了ではない場合は(S24315:No)、処理がS24301に戻る。
図32は、利用実行プログラム244が行う処理の一例を示すフローチャートである。
利用実行プログラム244は、起動したら、S24401で、利用中サービステーブル234をスキャンする。S24402で、利用実行プログラム244は、進行状態23402が「実施前」で、かつ利用開始時刻23408が指定した時間になった連携サービスがあるか否かを判断する。
S24402の判断結果が肯定の場合は(S24402:Yes)、S24403で、利用実行プログラム244は、進行状態23402が「実施前」で現在時刻が利用開始時刻23408になった連携サービスについて、利用実行処理を行う。
一方、S24402の判断結果が否定の場合は(S24402:No)、S24405で、利用実行プログラム244は、進行状態23402が「完了」である連携サービスがあるかどうかを判断する。「完了」である連携サービスがなければ(S24405:No)、処理がS24401に戻る。一方、「完了」である連携サービスがあれば(S24405:YEs)、S24406で、利用実行プログラム244は、S24402およびS24405の判断結果をシステム内部に報告する。報告先のシステム内部は、利用実行プログラム244を実行する利用者のメカニズムに依存してよい。例えば、システム内部は、連携サービスの利用申請を利用実行プログラム244に対して起こしたインスタンスでよい。S24406の後、S24407で、利用実行プログラム244は、対象の連携サービス(進行状態23402が「完了」である連携サービス)の次サービス番号23410に一致するサービス番号23401が利用中サービステーブル234にあるかどうかを確認する。当該番号23401がなければ、処理がS24409に進むが、当該番号23401がある場合は、S24408で、利用実行プログラム244は、当該番号23401に対応する連携サービスの進行状態23402を「実施前」と更新し、処理がS24409に移る。S24409で、利用実行プログラム244は、進行状態23402「完了」である連携サービスのエントリを利用中サービステーブル234から削除する。
S24410で、終了か否かが判断される。終了の場合は(S24410:Yes)、利用実行プログラム244が終了する。一方、終了ではない場合は(S24410:No)、処理がS24401に戻る。
図33は、利用実行処理のフローチャートである。なお、図33の説明において、「対象サービス」は、進行状態23402が「実施前」で現在時刻が利用開始時刻23408になった連携サービスである。
利用実行プログラム244は、対象サービスのサービスUUID13201と現在のアクションの順番「1」とを例えばメモリ24のワーク領域に記録する初期化を行い、その際、連携サービスの進行状態23402を「実施中」と更新する。そして、S24403_02で、利用実行プログラム244は、記録されたサービスUUID13201と順番とをキーに、利用可能サービステーブル232から、当該順番に対応しているアクションを特定する。このS24403_02で特定されたアクションを、図33の説明では「対象アクション」と言う。S24403_03~S24403_08とS24403_11~S24403_14の一方または両方が行われるかは、対象アクションを実行する主体がこの利用者であるか否かに応じて異なる。例えば対象アクションの実行者13406(図7参照)が「全参加者」の場合、両方の処理が行われる。両方の処理が行われる場合、その両方の処理は並行処理でよい。先ず、S24403_03からの処理を説明する。なお、S24403_11~S24403_14に相当する処理は、図33が示す利用実行処理とは別に(例えば、別のローカルシステム3が行う利用実行処理に関連して)行われてもよい。
S24403_03で、利用実行プログラム244は、対象アクションに対応した内部コマンド232058を利用可能サービステーブル232から特定し、この内部コマンド232058を用いて、システム内部に指令を出す。当該指令の送信先および上記内部コマンドの内容やフォーマットはシステム自身(利用者自身)のメカニズムに依存してよい。送信先が、例えば、アクションを実行するインスタンスであり、内部コマンドは例えばシステム内の実行関数であり、Act(アクションUUID,t,x,y,z)と表すとする。Actはシステム内で実行可能な関数であり、アクションUUID、t、x、y、zなどの引数を導入することで、アクションUUID232052の指すアクション名232053が意味するアクションがシステム内で行われる。
そして、S24403_04で、利用実行プログラム244は、対象アクションの実行状態M1406「開始」を記述したアクション実行状態通知メッセージM14を連携先に送信する。なお、「連携先」は、対象サービスの提供者であり、メッセージM14の送信先は、調査依頼返答メッセージM10または設計依頼返答メッセージM11にある通信窓口が意味する窓口である。そして、S24403_05で、利用実行プログラム244は、連携先から終了通知返答メッセージM15を受信する。続いて、利用実行プログラム244は、S24403_06で、実行させた指令(S24403_03で出した指令)の実行完了の通知をシステム内部から受信する。続いて、S24403_07で、利用実行プログラム244は、対象アクションの実行状態M1406「終了」を記述したアクション実行状態通知メッセージM14を連携先に送信する。そして、S24403_08で、利用実行プログラム244は、終了通知返答メッセージM14を連携先から受信する。
一方、S24403_11で、利用実行プログラム244は、連携先からアクション実行状態通知メッセージM14を受信するまで待機する。それを受信したら、S24403_12で、利用実行プログラム244は、終了通知返答メッセージM15を連携先に送信する。そして、S24403_13で、利用実行プログラム244は、連携先からのアクション実行状態通知メッセージM14を受信するまで待機する。それを受信したら、S24403_14で、利用実行プログラム244は、終了通知返答メッセージM15を連携先に送信する。
S24403_08、S24403_14またはその両方の処理が完了したら、S24403_09で、利用実行プログラム244は、利用可能サービステーブル232を参照して対象アクションが最後のアクションであるかどうかを確認する。対象アクションが最後のアクションではない場合は(S24403_09:No)、S24403_10で、利用実行プログラム244は、現在のアクション順番に1を加算し、処理が、S24403_02に戻る。一方、対象アクションが最後のアクションである場合は(S24403_09:Yes)、S24403_15で、利用実行プログラム244は、利用中サービステーブル234で相応する行の進行状態23402を「完了」と更新する。
図34は、ローカル管理プログラム241が行う処理の一例を示すフローチャートである。
S24102で、ローカル管理プログラム241は、システム内部からの更新指令(サービスローカル情報を更新する指令)、または、仲介プログラム141からのバージョン変更周知メッセージM7、の受信を待機する。いずれかが受信されたら処理がS24102に移る。なお、「サービスローカル情報」とは、このローカル管理プログラム241を実行するシステム3が提供可能なまたは利用可能な連携サービスに関する情報であり、具体的には、例えば、提供可能サービステーブル231または利用可能サービステーブル232である。
S24102で、ローカル管理プログラム241は、バージョン変更周知メッセージM7を受信したか否かを判断する。
S24102の判断結果が肯定の場合は(S24102:Yes)、S24103で、ローカル管理プログラム241は、バージョン変更周知メッセージM7を解読し、解読の結果に従う更新通知をシステム内部に送信する。更新通知には内部コマンドが関連付けられておよい。送信先、および、更新通知(内部コマンド)の内容やフォーマットはシステム自身のメカニズムに依存してよい。例えば、送信先は、標準アクションテーブル133とシステム内部のアクションとの対応関係を管理するインスタンスでもよいし、当該対応関係を管理する管理者または開発者に対するユーザインターフェースを提供するサーバでもよい。内部コマンドは、例えば、システム内の実行関数であり、Version_Change(Action_Table,new_ver)と表されてよい。Version_Changeはシステム内で実行可能な関数であり、Action_Table,new_verを導入することで、標準アクションテーブル133が新しいバージョン(new_ver)が更新されたと意味する通知がシステム内で転送されたこととなってよい。バージョンの変更に伴って、更新内容を把握する方法は、例えば、標準アクションテーブル133とシステム内部のアクションとの対応関係を管理するインスタンス、管理者または開発者が別途で管理端末5経由で確認することが考えられる。
更新内容によって、システム3の利用可能サービステーブル232または提供可能サービステーブル231の内容を変更する可能性があり、その場合は、更新指令がローカル管理プログラム241に送られる。なお、どのように変更するのかはシステム内部のメカニズムに依存してよい。例えば、管理者または開発者が上記連携サービス標準の更新内容を解読し、システム内部のアクションとの対応関係を確認し、必要な場合は関数やパラメータを修正または添削したり、該当連携サービスを利用および提供の可否を変更したりするこが考えられる。ローカル管理プログラム241は、システム内部から更新指令を受信した場合は(S24102:No)、S24105で、更新指令の内容に応じて、利用可能サービステーブル232、または提供可能サービステーブル231を更新する。更新されたテーブルが提供可能サービステーブル231の場合(S24106:Yes)、S24107で、ローカル管理プログラム241は、提供者更新メッセージM5を生成し、管理プログラム142に送信する。S24108で、ローカル管理プログラム241は、管理プログラム142から、提供者更新メッセージM5に対する対応結果通知メッセージM6を受信する。更新されたテーブルが提供可能サービステーブル231ではない場合は(S24106:No)、処理がS24109に移る。
S24109で、終了か否かが判断される。終了の場合は(S24109:Yes)、ローカル管理プログラム241が終了する。一方、終了ではない場合は(S24109:No)、処理がS24101に戻る。
図35は、依頼受付プログラム242が行う処理の一例を示すフローチャートである。
依頼受付プログラム242は、起動したら、S24201で、サービス依頼メッセージM12の受信を待機する。サービス依頼メッセージM12を受信すると、S24202で、依頼受付プログラム242は、当該メッセージM12を解読し、解読結果に応じて、提供可能サービステーブル231で対応可能であるかどうかを確認する。S24202では、例えば、提供可能サービステーブル231とサービス依頼メッセージM12の相応箇所が比較される。サービス依頼メッセージM12で指定されている連携サービスが提供可能な連携サービスの一つとして存在し当該連携サービスがメッセージM12内の情報M1205~M1208が示す条件を満たしていれば、対応可能であるとの判断結果が得られる。対応可能との判断結果が得られなかった場合(S24203:No)、S24206で、サービス依頼メッセージM12は、回答種類M130301「拒否」を記述したサービス依頼返答メッセージM13を生成して送信元(依頼元)へ送信する。なお、「送信元」は、具体的には、受信したサービス依頼メッセージM12にある通信窓口M1210が示す窓口である。
一方、対応可能との判断結果が得られたら(S24203:Yes)、S24204で、依頼受付プログラム242は、提供中サービステーブル233に、当該サービスに関する情報を新規で登録する。そして、S24205で、依頼受付プログラム242は、提供可能サービステーブル231を更新する。具体的には、依頼受付プログラム242は、当該サービスが利用可能となったため当該サービスに対応する同時数23105を1減らす。もし、同時数23105が「0」になった場合は、依頼受付プログラム242は、当該サービスに対応する開始時間23104として一定のルールに従う情報で記入する(例えば、当該サービスの完了までの時間を考慮して、適切な時間を記入する)。続いて、S24206で、依頼受付プログラム242は、回答種類M130301「承諾」、利用開始時刻M130302および利用終了時刻M130303などの情報を記述したサービス依頼返答メッセージM13を生成して送信元(依頼元)へ送信する。
S24207で、終了か否かが判断される。終了の場合は(S24207:Yes)、依頼受付プログラム242が終了する。一方、終了ではない場合は(S24207:No)、処理がS24201に戻る。
図36は、提供実行プログラム245が行う処理の一例を示すフローチャートである。
提供実行プログラム245は、起動したら、S24501で、提供中サービステーブル233をスキャンする。S24502で、提供実行プログラム245は、進行状態23302が「実施前」で現在時刻が提供開始時刻23308になった連携サービスがあるか否かを判断する。
S24502の判断結果が肯定の場合は(S24502:Yes)、S24503で、提供実行プログラム245は、進行状態23302が「実施前」で現在時刻が提供開始時刻23308になった連携サービスについて、提供実行処理を行う。その後、S24504で、提供実行プログラム245は、現在のアクションの順番を1と記憶する。
一方、S24502の判断結果が否定の場合は(S24502:No)、S24505で、提供実行プログラム245は、進行状態23302が「完了」である連携サービスがあるかどうかを判断する。「完了」である連携サービスがなければ(S24505:No)、処理がS24501に戻る。一方、「完了」である連携サービスがあれば(S24505:Yes)、提供実行プログラム245は、S24506で、進行状態23302が「完了」である連携サービスに関する情報を提供中サービステーブル233から削除する。そして、S24507で、提供実行プログラム245は、提供可能サービステーブル231を更新する。具体的には、提供実行プログラム245は、同時数23105を1増やし、開始時間23104として情報を一定のルールで記入する。
S24508で、終了か否かが判断される。終了の場合は(S24508:Yes)、提供実行プログラム245が終了する。一方、終了ではない場合は、処理がS24501に戻る。
図37は、提供実行処理の一例を示すフローチャートである。なお、図37の説明において、「対象サービス」は、進行状態23302が「実施前」で現在時刻が提供開始時刻23308になった連携サービスである。
提供実行プログラム245は、対象サービスのサービスUUID13201と現在のアクションの順番「1」とを例えばメモリ24のワーク領域に記録する初期化を行い、その際、進行状態23302を「実施中」と更新する。そして、S24503_02で、提供実行プログラム245は、記録されたサービスUUID13201と順番とをキーに、提供可能サービステーブル231から、当該順番に対応しているアクションを特定する。このS24503_02で特定されたアクションを、図37の説明では「対象アクション」と言う。S24503_03~S24503_08とS24503_11~S24503_14の一方または両方が行われるかは、対象アクションを実行する主体がこの提供者であるか否かに応じて異なる。例えば対象アクションの実行者13406(図7参照)が「全参加者」の場合、両方の処理が行われる。両方の処理が行われる場合、その両方の処理は並行処理でよい。先ず、S24503_03からの処理を説明する。なお、S24503_11~S24503_14に相当する処理は、図37が示す提供実行処理とは別に(例えば、別のローカルシステム3が行う提供実行処理に関連して)行われてもよい。
S24503_03で、提供実行プログラム245は、対象アクションに対応した内部コマンド231088を提供可能サービステーブル231から特定し、この内部コマンド231088を用いて、システム内部に指令を出す。当該指令の送信先および上記内部コマンドの内容やフォーマットはシステム自身(提供者自身)のメカニズムに依存してよい。この点については、図33のS24403_03と同様である。
そして、S24503_04で、提供実行プログラム245は、対象アクションの実行状態M1406「開始」を記述したアクション実行状態通知メッセージM14を連携先に送信する。なお、「連携先」は、対象サービスの依頼者であり、メッセージM14の送信先は、サービス依頼メッセージM12にある通信窓口M1210が示す窓口である。そして、S24503_05で、提供実行プログラム245は、連携先からの終了通知返答メッセージM15を受信する。続いて、提供実行プログラム245は、実行させた指令(S24503_03で出した指令)の実行完了の通知をシステム内部から受信する。続いて、S24503_07で、提供実行プログラム245は、対象アクションの実行状態M1406「終了」を記述したアクション実行状態通知メッセージM14を連携先に送信する。そして、S24503_08で、提供実行プログラム245は、終了通知返答メッセージM15を連携先から受信する。
一方、S24503_11で、提供実行プログラム245は、連携先からアクション実行状態通知メッセージM14を受信するまで待機する。それを受信したら、S24503_12で、提供実行プログラム245は、終了通知返答メッセージM15を連携先に送信する。そして、S24503_13で、提供実行プログラム245は、連携先からのアクション実行状態通知メッセージM14を受信するまで待機する。それを受信したら、S24503_14で、提供実行プログラム245は、終了通知返答メッセージM15を連携先に送信する。
S24503_08、S24503_14またはその両方の処理が完了したら、S24503_09で、提供実行プログラム245は、提供可能サービステーブル231を参照して対象アクションが最後のアクションであるかどうかを確認する。対象アクションが最後のアクションではない場合は(S24503_09:No)、S24503_10で、提供実行プログラム245は、現在のアクション順番に1を加算し、処理が、S24503_02に戻る。一方、対象アクションが最後のアクションである場合は(S24503_09:Yes)、S24503_15で、提供実行プログラム245は、提供中サービステーブル233で相応する行の進行状態23302を「完了」と更新する。
図38は、メッセージシーケンスの第1の例を示す。図38の説明において、利用者がサービスロボット(ローカル装置2の一例)を有するローカルシステムであると想定する(サービスロボットが連携サービスを提供することも考えられる)。なお、図38では、利用者および提供者内のローカル装置2の図示を省略し、図38を参照した説明でも、ローカル装置2の説明は省略する。
利用者内の利用申請プログラム243が、連携サービス「DVD再生」を申請せよという趣旨の内部コマンドを受け取って、仲介装置1の仲介プログラム141に、連携サービス「DVD再生」を指定した調査依頼メッセージM8を送信する(MT01)。しかし、利用申請プログラム243が、仲介プログラム141から、連携サービス「DVD再生」を提供する提供者がいないことを表す調査依頼返答メッセージM10を受信する(MT02)。
そこで、利用申請プログラム243が、サービス分類「Streaming再生」を指定した設計依頼メッセージM9を仲介プログラム141に送信する(MT03)。仲介プログラム141が、このメッセージM9に応じて、「ウェブ動画検索」を行った後に「HTTP Browser」を行うという連携サービス連鎖の提案と提供者候補とを表す設計依頼返答メッセージM11を利用申請プログラム243に返す(MT04)。
利用申請プログラム243が、この返答メッセージM11を解読し、「ウェブ動画検索」と「HTTP Broswer]を提供する提供者AおよびB内の依頼受付プログラム242にそれぞれサービス依頼メッセージM12を送信する(MT05およびMT06)。その結果、提供者AおよびBのいずれもが承諾し、提供者AおよびB内の依頼受付プログラム242が、それぞれ、利用申請プログラム243に、承諾を示すサービス依頼返答メッセージM13を返す(MT07およびMT08)。
そして、利用者内の利用実行プログラム244が、まず、「ウェブ動画検索」を利用するために、「ウェブ動画検索」を提供する提供者A内の提供実行プログラム245と、「ウェブ動画検索」に属するアクション毎に、アクション実行状態通知メッセージM14および終了通知返答メッセージM15をやり取りする(MT09、MT10)。なお、図38において、「MT09-nS」と「MT10-nS」の組は、n番目のアクションの開始の通知と受信確認を意味し、「MT09-nE」と「MT10-nE」の組は、n番目のアクションの完了(終了)の通知と受信確認を意味する。
「ウェブ動画検索」の終了後、利用実行プログラム244が、「ウェブ動画検索」の次の連携サービスである「HTTP Browser」を利用するために、「HTTP Browser」を提供する提供者B内の提供実行プログラム245と、「HTTP Browser」に属するアクション毎に、アクション実行状態通知メッセージM14と終了通知返答メッセージM15をやり取りする(MT11、MT12)。この連携サービス「HTTP Browser」が終了することで、連携サービス連鎖が完了する。なお、図38において、「MT11-nS」と「MT12-nS」の組は、n番目のアクションの開始の通知と受信確認を意味し、「MT11-nE」と「MT12-nE」の組は、n番目のアクションの完了(終了)の通知と受信確認を意味する。
図39は、メッセージシーケンスの第2の例を示す。なお、図39でも、ローカルシステム3内のローカル装置2の図示を省略し、図39を参照した説明でも、ローカル装置2の説明は省略する。
管理者が、管理端末5を利用して仲介装置1内のサービス分類テーブル131、連携サービステーブル132、標準アクションテーブル133、または標準シナリオ定義テーブル134を変更するために、分類更新メッセージM1、サービス更新メッセージM2、アクション更新メッセージM3、またはシナリオ更新メッセージM4を、仲介装置1内の管理プログラム142に送信したとする(MT20)。そして、管理プログラム142が、受信したメッセージに応じたテーブル変更を行い、対応結果通知メッセージM6を返信する(MT21)。
上記テーブル変更で、変更箇所に関連するバージョンが変わったので、仲介装置1内の管理プログラム142が、ネットワーク4に繋いでいる全ローカルシステム3(この例ではシステムXおよびY)のローカル管理プログラム241にバージョン変更周知メッセージM7をブロードキャストする(MT22)。その結果、システムXおよびYのうち、当該バージョン変更に応じて提供するサービスを変更する必要がシステムXにおいてあるとする。このため、システムX内のローカル管理プログラム241が、管理プログラム142に、提供者更新メッセージM5を送信する(MT23)。最後に、管理プログラム142が、当該メッセージM5の返事として、対応結果通知メッセージM6を返す(MT24)。
図40は、検索画面と結果画面の一例を示す図である。
検索画面61は、連携サービスまたは連携サービス連鎖を検索するためのGUIの一例である。結果画面62は、その検索結果を表示するためのGUIの一例である。GUIは、ユーザインターフェース(UI)の一例である。検索画面61および結果画面62は、例えば仲介装置1内の仲介プログラム141および管理プログラム142のうちの少なくとも一つにより管理端末5に提供される。
検索画面61は、例えば、インプット13205の選択を受け付けるGUI部品6101と、連携サービスのサービス名13202またはサービス分類名13103の選択を受け付けるGUI部品6102と、連携サービス実行に関する他の条件(例えば、場所条件、時間条件および対価)の入力または選択を受け付けるGUI部品6103と、検索実行の命令を受け付けるボタン6104とを含む。当該ボタン6104が押された場合、GUI部品6101~6103を介して受け付けられた情報がメッセージが管理端末5から管理プログラム142に送られ、そのメッセージに応答した結果に従う情報が、結果画面62に表示される。
結果画面62は、検索結果の説明を表示するサブ領域6201と、連携サービスまたは連携サービス連鎖の検索結果を表示するメイン領域6202とを含む。メイン領域6202には、検索結果として例えば下記が表示される。
・インプット(例えば「検索文」)とアウトプット(例えば「映像再生」)をそれぞれ共通とする一つ以上の連携サービス連鎖の各々について、インプットを受けアウトプットを出すまでに実行される一つ以上の連携サービスとその順番。
・各連携サービス連鎖について、連携サービス毎に、当該連携サービスに関連付いている代表的な情報(例えば、サービス名(例えば「ウェブ動画検索」、提供者名(例えば「Z社」)、対価(例えば「5/回」)。
・各連携サービス連鎖について、連携サービスペア毎に、一方の連携サービスから他方の連携サービスへのインプットを示す情報(例えば「URL」)。
・各連携サービス連鎖について、当該連携サービス連鎖の実行に必要な対価(例えば「25/回」)、具体的には、当該連携サービス連鎖を構成する一つ以上の連携サービス連鎖にそれぞれ対応した一つ以上の対価の合計。
この発明は上記実施例に限定されるものではない。要するにこの発明は、上記実施例そのままに限定されるものではなく、この発明の要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施例に示される全構成要素から幾つかの構成要素が削除されてもよい。
なお、上記の説明を、下記のように総括することができる。なお、以下の説明では、「kkk部」(インターフェース部、記憶部及びプロセッサ部を除く)の表現にて機能を説明することがあるが、当該機能は、「kkkプログラム」(kkkは名称)がプロセッサ部によって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))によって実現されてもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
サービス制御システムは、ネットワーク4に接続された複数のローカルシステム3が提供可能な複数の連携サービスに関する情報を含んだ管理情報(例えば、テーブル131~135のうちの少なくとも一部を含んだ情報)を管理する管理部と、対象ローカル装置2(いずれかのローカルシステム3における一のローカル装置2)から、希望のサービスに関する情報である希望情報(例えば設計依頼メッセージM9が含む情報の少なくとも一部)が関連付けられたリクエスト(例えば設計依頼メッセージM9)を受け付ける仲介部とを有する。仲介部は、当該リクエストに関連付けられている情報を満たす連携サービス連鎖(一つ以上の連携サービスの連鎖)を、管理情報を基に設計する。仲介部は、当該連携サービス連鎖を示す情報である連鎖情報(例えば設計依頼返答メッセージM11が含む情報の少なくとも一部)を、対象ローカル装置2に送信する。これにより、対象ローカル装置2が多様で複雑なサービスを遂行できる。
管理情報は、複数の連携サービスの各々について、当該連携サービスのインプットおよびアウトプットの定義であり複数のローカルシステム3において標準化された定義を含む。連携サービス連鎖において、一の連携サービスについて定義されたアウトプットと次の連携サービスについて定義されたインプットが同じである。これにより、二つ以上の連携サービスの連鎖を容易に設計することができる。
希望情報が、希望のサービスへのインプットの指定を含む。連携サービス連鎖における先頭の連携サービスについて定義されたインプットが、当該希望情報において指定されているインプットと同じである。これにより、所望の希望のサービスになるべく近い連携サービス連鎖の設計が可能である。
希望情報が、希望のサービスの提供場所に関する条件である場所条件を含む。管理情報は、複数の連携サービスの各々について、当該連携サービスの提供場所を示す情報を含む。連携サービス連鎖を構成する各連携サービスは、希望情報が含む場所条件を満たす提供場所に対応した連携サービスである。これにより、希望の提供場所で連携サービス連鎖が遂行されることを維持できる。
希望情報が、希望のサービスの提供時間に関する条件である時間条件を含む。管理情報は、複数の連携サービスの各々について、当該連携サービスの提供時間を示す情報を含む。連携サービス連鎖を構成する各連携サービスは、希望情報が含む時間条件を満たす提供時間に対応した連携サービスである。これにより、希望の提供時間に連携サービス連鎖が遂行されることを維持できる。
希望情報が、希望のサービスの利用にかかる対価に関する条件である対価条件を含む。管理情報は、複数の連携サービスの各々について、当該連携サービスの提供にかかる対価を示す情報を含む。連携サービス連鎖を構成する一つ以上の連携サービスにそれぞれ対応した一つ以上の対価に基づき定まる、当該連携サービス連鎖の対価は、希望情報が含む対価条件を満たす対価である。これにより、希望の対価以下の対価で連携サービス連鎖が遂行されることを維持できる。
希望情報が、当該希望のサービスの分類に関する情報を含む。管理情報が、複数の連携サービスの各々について、当該連携サービスが所属する分類を示す情報を含む。連携サービス連鎖を構成する各連携サービスは、希望情報が示す分類と同じ分類またはその分類に所属する分類に所属する連携サービスである。これにより、希望のサービスの分類という粗い指定で、希望のサービスと同じまたはそれに近い連携サービス連鎖の設計が可能である。
連鎖情報は、連携サービス連鎖を構成する各連携サービスについて、当該連携サービスの順番を示す情報である順番情報と、当該連携サービスを提供するローカルシステムに関する情報である提供者情報とを含む。これにより、対象ローカル装置2が、連携サービス連鎖を構成する一つ以上の連携サービスをどういった順序で実行し、いずれのローカルシステム3からいずれの連携サービスの提供を受ければよいかを特定することができる。
サービス制御システムは、更に、対象ローカル装置2が有する利用申請部および利用実行部を更に有する。利用申請部が、上記リクエストを送信する。利用実行部は、連鎖情報に従い連携サービス連鎖を実行する。具体的には、例えば、利用実行部が、連鎖情報に従う順序で連携サービス連鎖を構成する一つ以上の連携サービスを実行する。当該一つ以上の連携サービスの各々の実行において、当該連携サービスに対応した提供者情報が示すローカルシステムから提供される当該連携サービスを実行する。このようにして、対象ローカル装置2によって連携サービス連鎖を実行することを実現できる。
一つ以上の連携サービスの各々の実行において、利用実行部は、当該連携サービスに対応した提供者情報が示すローカルシステム3に、当該連携サービスの実行に必要なアクション毎に当該アクションの開始と終了を伝える。これにより、連携サービスを提供するローカルシステム3は、連携サービスの進捗を把握できる。
利用申請部が、連携サービス連鎖を構成する一つ以上の連携サービスの各々について、当該連携サービスを提供するローカルシステム3に、当該連携サービスの提供の依頼であるサービス依頼(例えばサービス依頼メッセージM12)を出する。すべてのサービス依頼について連携サービスの提供の承諾が得られた場合に、利用申請部が、連鎖情報に含まれる情報であって、連携サービス連鎖を構成する各連携サービスの利用に必要な情報を登録する。これにより、連携サービス連鎖の一部の連携サービスを実行できないといったことを避けることができる。
サービス制御システムは、複数のローカルシステム3の各々における各ローカル装置2が有する依頼受付部を更に有する。連携サービス連鎖を構成する一つ以上の連携サービスの各々について、サービス依頼に、連携サービスが指定されており、かつ、当該連携サービスに関する条件(例えば、上述した場所条件、時間条件および対価条件のうちの少なくとも一つ)が関連付けられている。依頼受付部が、サービス依頼を受け付けた場合、当該サービス依頼で指定されている連携サービスが、当該サービス依頼に関連付けられている条件を満たしていれば、当該サービス依頼に対して提供の承諾を返す。これにより、条件を満たす連携サービス連鎖の設計と実行を維持することができる。