(57)【要約】【課題】サービスプログラムの実行中に当該サービスプログラムへのデバイスの割り当て処理および割り当て解放処理を実行できるようにする。【解決手段】実行管理部１１１２の制御の下、受信されたデバイス送信データが所定の状態遷移の遷移条件を満たすデバイス送信データである場合、サービスプログラムのサービス状態が更新される。その後、実行管理部１１１２の制御の下、上記サービス状態の更新の通知がサービスコンテキスト判定部１１３に送信される。サービスコンテキスト判定部１１３の制御の下、サービスコンテキスト情報に基づいて、上記サービスプログラムで実行するサービスコンテキストの変更の有無が確認される。上記サービスコンテキストの変更が有ることが確認されると、サービスコンテキスト判定部１１３の制御の下、デバイス占有要求またはデバイス占有解放要求がデバイス管理部１１４に送信される。【選択図】図４
2019160024.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアプロセッサおよびメモリを備える装置が実行する、記憶部に記憶されているサービスプログラムにサービス提供フィールド上のデバイスを割り当てるデバイス割り当て制御方法であって、
前記装置による前記サービスプログラムの実行中に、当該サービスプログラムに割り当てられているデバイスと前記装置が通信するデータに基づいて、前記サービスプログラムの処理単位としての所定のサービスコンテキストが開始または終了することを判定するサービスコンテキスト判定過程と、
前記装置による前記サービスプログラムの実行中に、
前記所定のサービスコンテキストが開始すると判定された場合に、前記開始すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスを前記サービスプログラムに割り当てる過程、および、
前記所定のサービスコンテキストが終了すると判定された場合に、前記終了すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスの前記サービスプログラムへの割り当てを解放する過程の少なくとも一方を備えるデバイス占有制御過程と
を備えるデバイス割り当て制御方法。
【請求項２】
前記サービスプログラムに含まれる予め定義された状態および状態遷移の各々が有するデータ通信イベントを抽出する過程と、
前記抽出された状態および状態遷移の各々が有するデータ通信イベントと、当該データ通信イベント毎に設定された、当該データ通信イベント後の別のデータ通信イベントの発生のしやすさを表すスコア値に対応するコンテキスト係数とに基づいて、前記サービスプログラムの処理単位としてのサービスコンテキストを決定する過程と
をさらに備える、請求項１に記載のデバイス割り当て制御方法。
【請求項３】
前記サービスプログラムに割り当てられているデバイスと前記装置との間で発生したデータ通信イベントの履歴に基づいて、前記コンテキスト係数を補正する過程をさらに備える、請求項２に記載のデバイス割り当て制御方法。
【請求項４】
前記デバイス占有制御過程は、前記所定のサービスコンテキストが開始すると判定され、かつ、当該所定のサービスコンテキストを実行するのに使用されるデバイスが第２のサービスプログラムに割り当てられている場合に、当該デバイスが前記サービスプログラムに割り当て可能となる時刻を通知する過程を備える、請求項１乃至３のいずれかに記載のデバイス割り当て制御方法。
【請求項５】
前記デバイス占有制御過程は、前記所定のサービスコンテキストが開始すると判定され、かつ、当該所定のサービスコンテキストを実行するのに使用されるデバイスが前記第２のサービスプログラムに割り当てられている場合に、前記第２のサービスプログラム実行時の当該第２のサービスプログラムに含まれる各状態の維持時間の履歴、および、前記第２のサービスプログラム実行時の当該第２のサービスプログラムにおける状態遷移の遷移前後の状態を示す状態遷移の履歴とに基づいて、前記デバイスが前記サービスプログラムに割り当て可能となる時刻を算出する過程を備える、請求項４に記載のデバイス割り当て制御方法。
【請求項６】
記憶部に記憶されているサービスプログラムにサービス提供フィールド上のデバイスを割り当てるデバイス割り当て制御システムであって、
前記システムによる前記サービスプログラムの実行中に、当該サービスプログラムに割り当てられているデバイスと前記システムが通信するデータに基づいて、前記サービスプログラムの処理単位としての所定のサービスコンテキストが開始または終了することを判定するサービスコンテキスト判定部と、
前記システムによる前記サービスプログラムの実行中に、
前記所定のサービスコンテキストが開始すると判定された場合に、前記開始すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスを前記サービスプログラムに割り当てる制御部、および、
前記所定のサービスコンテキストが終了すると判定された場合に、前記終了すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスの前記サービスプログラムへの割り当てを解放する制御部の少なくとも一方を備えるデバイス占有制御部と
を備えるデバイス割り当て制御システム。
【請求項７】
請求項１乃至５のいずれかに記載のデバイス割り当て制御方法が備える各過程を前記ハードウェアプロセッサに実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、サービスプログラムの実行に係るデバイスの当該サービスプログラムへの割り当てを制御する方法、システムおよびプログラムに関する。
【背景技術】
【０００２】
近年、状態と状態遷移とによる状態遷移モデルによりサービスプログラムを作成する技術が知られている。このようなサービスプログラムでは、当該サービスプログラムの実行に係るデバイスがサービスプログラムに関連付けて登録され、サービスプログラムの実行により、当該デバイス群を制御することでサービスが提供される（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−９７４９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところが、特許文献１に記載されるような技術では、常時起動するようなサービスで利用するデバイスは、当該サービスに係るサービスプログラムに常に割り当てられ占有されているため、複数サービスでの共用ができない。
【０００５】
この発明は上記事情に着目してなされたもので、その目的とするところは、サービスプログラムの実行中に当該サービスプログラムへのデバイスの割り当て処理および割り当て解放処理を実行する方法、システムおよびプログラムを提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、この発明の第１の態様は、ハードウェアプロセッサおよびメモリを備える装置が実行する、記憶部に記憶されているサービスプログラムにサービス提供フィールド上のデバイスを割り当てるデバイス割り当て制御方法にあって、前記装置による前記サービスプログラムの実行中に、当該サービスプログラムに割り当てられているデバイスと前記装置が通信するデータに基づいて、前記サービスプログラムの処理単位としての所定のサービスコンテキストが開始または終了することを判定するサービスコンテキスト判定過程と、前記装置による前記サービスプログラムの実行中に、前記所定のサービスコンテキストが開始すると判定された場合に、前記開始すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスを前記サービスプログラムに割り当てる過程、および、前記所定のサービスコンテキストが終了すると判定された場合に、前記終了すると判定された所定のサービスコンテキストを実行するのに使用されるデバイスの前記サービスプログラムへの割り当てを解放する過程の少なくとも一方を備えるデバイス占有制御過程とを備えるようにしたものである。
【０００７】
この発明の第２の態様は、前記デバイス割り当て制御方法が、前記サービスプログラムに含まれる予め定義された状態および状態遷移の各々が有するデータ通信イベントを抽出する過程と、前記抽出された状態および状態遷移の各々が有するデータ通信イベントと、当該データ通信イベント毎に設定された、当該データ通信イベント後の別のデータ通信イベントの発生のしやすさを表すスコア値に対応するコンテキスト係数とに基づいて、前記サービスプログラムの処理単位としてのサービスコンテキストを決定する過程とをさらに備えるようにしたものである。
【０００８】
この発明の第３の態様は、前記デバイス割り当て制御方法が、前記サービスプログラムに割り当てられているデバイスと前記装置との間で発生したデータ通信イベントの履歴に基づいて、前記コンテキスト係数を補正する過程をさらに備えるようにしたものである。
【０００９】
この発明の第４の態様は、前記デバイス占有制御過程が、前記所定のサービスコンテキストが開始すると判定され、かつ、当該所定のサービスコンテキストを実行するのに使用されるデバイスが第２のサービスプログラムに割り当てられている場合に、当該デバイスが前記サービスプログラムに割り当て可能となる時刻を通知する過程を備えるようにしたものである。
【００１０】
この発明の第５の態様は、前記デバイス占有制御過程が、前記所定のサービスコンテキストが開始すると判定され、かつ、当該所定のサービスコンテキストを実行するのに使用されるデバイスが前記第２のサービスプログラムに割り当てられている場合に、前記第２のサービスプログラム実行時の当該第２のサービスプログラムに含まれる各状態の維持時間の履歴、および、前記第２のサービスプログラム実行時の当該第２のサービスプログラムにおける状態遷移の遷移前後の状態を示す状態遷移の履歴とに基づいて、前記デバイスが前記サービスプログラムに割り当て可能となる時刻を算出する過程を備えるようにしたものである。
【発明の効果】
【００１１】
この発明の第１の態様によれば、サービスプログラムの実行中に、サービスプログラムの処理単位であるサービスコンテキストに基づいて、当該サービスプログラムへのデバイスの割り当てが制御される。このため、サービスプログラムの実行中に、当該サービスプログラムを実行するのに必要とされるデバイスであっても当該サービスプログラムに割り当てられていないデバイスが存在することとなる。したがって、他のサービスプログラムによる割り込みの際にも、実行中のサービスプログラムを中断することなくこのようなデバイスをそのサービスプログラムに割り当てることが可能となり、複数サービスによるデバイス共用が可能となる。一方、サービスコンテキストの単位でサービスプログラムにその都度必要とされるデバイスが割り当てられるように制御するので、当該サービスプログラムがデバイスを必要とする期間に他のサービスによりそのデバイスが利用されることを防止することも可能となる。
【００１２】
この発明の第２の態様によれば、コンテキスト係数という基準にしたがって、上記サービスプログラムの処理単位であるサービスコンテキストが決定される。これにより、コンテキスト係数に基づいて決定されたサービスコンテキストの最適な粒度でサービスプログラムへのデバイスの割り当て制御が実行される。
【００１３】
この発明の第３の態様によれば、上記サービスプログラムの実行に伴うデータ通信イベントの実データに基づいて上記コンテキスト係数が補正される。このように、例えば、上記サービスプログラムの実行に伴うその都度の通信状況等をコンテキスト係数に反映させることができるので、当該コンテキスト係数に基づいて決定されるサービスコンテキストをより現実に即した粒度とすることが可能となる。
【００１４】
この発明の第４の態様によれば、サービスコンテキストを実行するのに使用したいデバイスが使用できない場合に、当該デバイスが上記サービスコンテキストに割り当て可能となる時刻が通知される。例えば、このような通知を利用することにより、複数のサービスの間で共用されるデバイスの時間管理が容易となる。
【００１５】
この発明の第５の態様によれば、第２のサービスプログラム実行時の過去の履歴に基づいて、当該第２のサービスプログラムに割り当てられているデバイスが他のサービスプログラムに割り当て可能となる時刻が算出される。このように過去の実データに基づいて算出される予測時刻は信頼性が高いものとなる。
【００１６】
すなわち、この発明の各態様によれば、サービスプログラムの実行中に当該サービスプログラムへのデバイスの割り当て処理および割り当て解放処理を実行する方法、システムおよびプログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】この発明の第１の実施形態の俯瞰図。
【図２】この発明の第１の実施形態に係るサービスプログラムのサービスコンテキスト構成の一例を示す図。
【図３】図２に示したサービスプログラムに係るデバイス占有状況と経過時間の一例を示す図。
【図４】この発明の第１の実施形態に係るデバイス管理システムの機能構成を示すブロック図。
【図５】コンテキスト係数情報の一例を示す図。
【図６】サービスコンテキスト情報の一例を示す図。
【図７】デバイス占有情報の一例を示す図。
【図８Ａ】状態維持時間ログ情報の一例を示す図。
【図８Ｂ】状態遷移ログ情報の一例を示す図。
【図９】図４に示した制御ユニットによって実行されるサービスコンテキスト決定処理の一例を示すフロー図。
【図１０】遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移を決定する処理の概略を示す図。
【図１１】コンテキスト係数の補正処理に係る、サービスプログラムのサービスコンテキスト構成の第１のイメージ図。
【図１２】図１１に示したサービスプログラムに係るデバイスの占有予約と経過時間の一例を示す図。
【図１３】コンテキスト係数の補正処理に係る、サービスプログラムのサービスコンテキスト構成の第２のイメージ図。
【図１４】図１３に示したサービスプログラムに係るデバイスの占有予約と経過時間の一例を示す図。
【図１５】図４に示した制御ユニットによって実行されるサービスプログラム登録処理の一例を示すシーケンス図。
【図１６】図４に示した制御ユニットによって実行されるサービス開始処理の一例を示すシーケンス図。
【図１７】図４に示した制御ユニットによって実行されるデバイス占有処理の一例を示すシーケンス図。
【図１８】図４に示した制御ユニットによって実行されるデバイス占有予約処理およびデバイス占有処理の一例を示すシーケンス図。
【図１９】図４に示した制御ユニットによって実行されるデバイス通信処理の一例を示すシーケンス図。
【図２０】図４に示した制御ユニットによって実行されるサービスコンテキスト切替処理の一例を示すシーケンス図。
【図２１】図４に示した制御ユニットによって実行されるサービス停止処理の一例を示すシーケンス図。
【発明を実施するための形態】
【００１８】
以下、図面を参照してこの発明に係わる実施形態を説明する。  
なお、本実施形態では、サービスプログラムにデバイスが割り当てられている状況を、サービスプログラムによりデバイスが占有されているという表現によっても表している点に留意して頂きたい。
【００１９】
［第１の実施形態］
図１は、この発明の第１の実施形態の俯瞰図である。  
この発明の第１の実施形態に係るデバイス管理システム１は、サービス提供フィールド上のデバイスを制御することにより提供可能なデバイス連携サービスを複数提供することができる。デバイス管理システム１では、あるデバイス連携サービスのサービスプログラムにより制御されているデバイスが、当該サービスプログラムの実行中に他のデバイス連携サービスのサービスプログラムにより割り込み制御されることが可能となる。
【００２０】
図１では、デバイス連携サービスＸのサービスプログラムにより制御されているデバイス３Ｂが、デバイス連携サービスＸの提供中に、デバイス連携サービスＹのサービスプログラムにより割り込み制御される様子が図示されている。
【００２１】
ここで、このような制御を可能にするために、サービスプログラムの処理単位であるサービスコンテキストを定義する。
【００２２】
図２は、この発明の第１の実施形態に係るサービスプログラムのサービスコンテキスト構成の一例を示す図である。
【００２３】
先ず、この発明の第１の実施形態で扱うサービスプログラムは、「状態」と「状態遷移」から構成される。
【００２４】
状態は、サービスプログラムによって定義されるサービスのある一状態であり、デバイスから送信されたデータ（以降、デバイス送信データと称する。）の受信、デバイス送信データの処理、デバイスに対する制御命令（以降、デバイス制御命令と称する。）の送信のうち１つ以上から成る。
【００２５】
状態遷移は、ある状態から別の状態へ遷移するための条件であり、条件式から成る。また、状態遷移条件の一部は、例えば「温度センサが送信するデータが２８℃以上であったら」次の状態へ遷移する等の、デバイス送信データを受信した結果から成る。
【００２６】
図２の例では、サービスプログラムＡにおいて、上述したようなサービスプログラムの処理単位として、状態Ａ１および状態Ａ２からなるサービスコンテキストＡＣ１と、状態Ａ３、状態Ａ４、状態Ａ５、状態Ａ６および状態Ａ７からなるサービスコンテキストＡＣ２と、状態Ａ８、状態Ａ９および状態Ａ１０からなるサービスコンテキストＡＣ３とが定義されている。
【００２７】
また、サービスプログラムＢにおいては、上述したようなサービスプログラムの処理単位として、状態Ｂ１からなるサービスコンテキストＢＣ１と、状態Ｂ２、状態Ｂ３、状態Ｂ４、状態Ｂ６、状態Ｂ７、状態Ｂ９および状態Ｂ１０からなるサービスコンテキストＢＣ２と、状態Ｂ５および状態Ｂ８からなるサービスコンテキストＢＣ３と、状態Ｂ１１からなるサービスコンテキストＢＣ４とが定義されている。
【００２８】
例えば、サービスコンテキストＡＣ１が実行される際には状態Ａ１および状態Ａ２の処理に利用するデバイスだけをサービスプログラムＡにより占有するようにする。サービスコンテキストＡＣ１の処理が完了する際には、サービスコンテキストＡＣ１の実行中にサービスプログラムＡにより占有されていたデバイスを解放するようにする。
【００２９】
このようにサービスプログラムの実行中にサービスコンテキスト単位でデバイス群の占有や占有解放が行われるようにするので、サービスプログラムの実行中にも、占有されていないデバイスを他のサービスプログラムにより割り込み制御することが可能となる。
【００３０】
図３は、図２に示したサービスプログラムＡ，Ｂに係るあるデバイスの占有状況と経過時間の一例を示す図である。
【００３１】
最初にサービスプログラムＡのサービスコンテキストＡＣ１は当該デバイスを用いるため、当該デバイスはサービスコンテキストＡＣ１から占有された。サービスコンテキストＡＣ１が完了すると、当該デバイスの占有は解放される。その後、サービスプログラムＢのサービスコンテキストＢＣ２から当該デバイスは占有された。その後、サービスコンテキストＢＣ２の完了前に、サービスコンテキストＡＣ３からの占有の予約があったため、サービスコンテキストＢＣ２完了後は、当該デバイスはサービスコンテキストＡＣ３にリソース予約される。その後、サービスコンテキストＡＣ３の完了前にサービスコンテキストＢＣ３からの占有の予約があったため、デバイスの占有状態は変更せず、サービスコンテキストＡＣ３完了後はサービスコンテキストＢＣ３がデバイスを専用できるよう当該デバイスは予約される。
【００３２】
（構成）
図４は、この発明の第１の実施形態に係るデバイス管理システム１の機能構成を示すブロック図である。本実施形態では、デバイス割り当て制御システムの非限定的な例としてデバイス管理システム１について説明する。なお、図４に示すデバイス管理システム１は一例に過ぎず、デバイス管理システム１が備える各構成要素は任意の組み合わせで物理的に別個の装置として存在していてもよい。
【００３３】
デバイス管理システム１は、ハードウェアとして、制御ユニット１１と、記憶ユニット１２と、通信インタフェースユニット１３とを備えている。
【００３４】
通信インタフェースユニット１３は、例えば１つ以上の有線または無線の通信インタフェースユニットを含んでいる。通信インタフェースユニット１３は、例えばキーボードやマウス等を含む入力部２により入力されたサービスプログラムおよび当該サービスプログラムの操作信号を、制御ユニット１１に入力する。なお、サービスプログラムは、例えば、「第１のデバイスが第１のデータを送信したら、第２のデバイスに第１の処理をさせる」のような、デバイスのインタフェースを介してデバイス送信データを受信したりデバイス制御命令を送信したりする、サービスの処理ロジックが記載されたプログラムである。
【００３５】
また、通信インタフェースユニット１３は、例えばロボットやセンサ等の端末であるデバイス３Ａ，…，３Ｎから送信されたデバイス送信データを制御ユニット１１に出力し、制御ユニット１１から出力されたデバイス制御命令等のデータをデバイス３Ａ，…，３Ｎに出力する。
【００３６】
記憶ユニット１２は、記憶媒体として例えばＨＤＤ（Hard Disc Drive）またはＳＳＤ（Solid State Drive）等の随時書き込みおよび読み出しが可能な不揮発メモリを使用したもので、本実施形態を実現するために、サービスプログラム記憶部１２１と、コンテキスト係数記憶部１２２と、サービスコンテキスト記憶部１２３と、デバイス占有情報記憶部１２４と、状態遷移情報記憶部１２５とを備えている。
【００３７】
サービスプログラム記憶部１２１は、登録されるサービスプログラムを記憶させるために使用される。
【００３８】
コンテキスト係数記憶部１２２は、コンテキスト係数情報を記憶している。コンテキスト係数情報は、例えば、各デバイス送信データの受信および各デバイス制御命令の送信のイベント毎に設定された、当該イベント後の別のデータ通信イベントの発生のしやすさを表すスコア値に対応するコンテキスト係数を含んでいる。
【００３９】
サービスコンテキスト記憶部１２３は、サービスコンテキスト情報を記憶させるために使用される。サービスコンテキスト情報は、例えば、サービスコンテキスト解析部１１２の制御下で決定された、サービスプログラム毎のサービスコンテキスト情報を含んでいる。
【００４０】
デバイス占有情報記憶部１２４は、デバイス占有情報を記憶させるために使用される。デバイス占有情報は、例えば、実行中の各サービスプログラムが占有しているデバイス群や占有予約しているデバイス群の情報を含んでいる。
【００４１】
状態遷移情報記憶部１２５は、状態遷移情報を記憶させるために使用される。状態遷移情報は、例えば、状態遷移に関する、状態が開始されてから終了するまでに要した時間のログを含む状態維持時間ログ情報と、ある状態への遷移前の状態およびサービスコンテキストならびに当該状態からの遷移後の状態およびサービスコンテキストのログを含む状態遷移ログ情報とを含んでいる。
【００４２】
制御ユニット１１は、ＣＰＵ（Central Processing Unit）等のハードウェアプロセッサと、プログラムメモリとを備え、本実施形態における処理機能を実行するために、サービスプログラム管理部１１１と、サービスコンテキスト解析部１１２と、サービスコンテキスト判定部１１３と、デバイス管理部１１４とを備えている。これらの各部における処理機能はいずれも、プログラムメモリに格納されたプログラムを上記ハードウェアプロセッサに実行させることによって実現される。なお、これらの処理機能は、プログラムメモリに格納されたプログラムを用いて実現されるのではなく、ネットワークを通して提供されるプログラムを用いて実現されてもよい。
【００４３】
サービスプログラム管理部１１１は、登録管理部１１１１と実行管理部１１１２とを備えている。  
登録管理部１１１１は、サービスプログラムを登録する処理を実行する。具体的には、先ず、登録管理部１１１１は、通信インタフェースユニット１３を介して入力部２からサービスプログラムを取得し、当該取得されたサービスプログラムをサービスプログラム記憶部１２１に記憶させる処理を実行する。その後、登録管理部１１１１は、サービスコンテキスト解析部１１２に、上記サービスプログラムを解析するように要求する処理を実行する。
【００４４】
実行管理部１１１２は、サービスプログラム記憶部１２１に記憶されたサービスプログラムを読み出して実行し、デバイス制御命令をサービスコンテキスト判定部１１３に送信し、デバイス送信データをサービスコンテキスト判定部１１３から受信する処理を実行する。また、実行管理部１１１２は、サービスプログラムの実行に伴い、当該サービスプログラムに係る状態の維持時間長の履歴を状態維持時間ログ情報として、当該サービスプログラムに係る状態遷移の履歴を状態遷移ログ情報として、状態遷移情報記憶部１２５に記憶させる処理を実行する。
【００４５】
サービスコンテキスト解析部１１２は、登録管理部１１１１からの上記要求に応答して、サービスプログラム記憶部１２１に記憶されたサービスプログラムを読み出し、コンテキスト係数記憶部１２２に記憶されるコンテキスト係数情報を参照して、上記読み出されたサービスプログラムを解析してサービスコンテキストを決定する処理を実行する。次に、サービスコンテキスト解析部１１２は、上記決定されたサービスコンテキストの情報を、サービスコンテキスト記憶部１２３に記憶させる処理を実行する。
【００４６】
サービスコンテキスト判定部１１３は、サービスプログラム管理部１１１の実行管理部１１１２からデバイス制御命令を受信し、当該受信されたデバイス制御命令をデバイス管理部１１４に送信する処理を実行する。また、サービスコンテキスト判定部１１３は、デバイス管理部１１４からデバイス送信データを受信し、当該受信されたデバイス送信データを、サービスプログラム管理部１１１の実行管理部１１１２に送信する処理を実行する。
【００４７】
ここで、サービスコンテキスト判定部１１３は、サービスプログラム管理部１１１の実行管理部１１１２から受信したデバイス制御命令や、デバイス管理部１１４から受信したデバイス送信データと、サービスコンテキスト記憶部１２３に記憶されるサービスコンテキスト情報とに基づいて、実行中のサービスプログラムがどの状態にあるかを判定することにより、サービスコンテキストの開始および終了を判定する処理を実行することができる。
【００４８】
例えば、サービスコンテキスト判定部１１３は、受信したデバイス制御命令やデバイス送信データがあるサービスコンテキストの最後の状態が有する所定のデバイス制御命令またはデバイス送信データに該当すると判定し、そのサービスコンテキストが終了することを判定する処理を実行するようにしてもよい。また、サービスコンテキスト判定部１１３は、受信したデバイス送信データがある状態遷移の遷移条件を満たすことを判定し、その状態遷移の遷移前の状態が含まれるサービスコンテキストが終了することや、その状態遷移の遷移後の状態が含まれるサービスコンテキストが開始することを判定する処理を実行するようにしてもよい。
【００４９】
サービスコンテキスト判定部１１３は、サービスコンテキストの終了を判定した場合には、サービスプログラムが当該サービスコンテキストを実行するために占有していたデバイス群の占有を解放するための要求（以降、デバイス占有解放要求と称する。）をデバイス管理部１１４に送信する処理を実行する。また、サービスコンテキスト判定部１１３は、上記実行中のサービスプログラムがどの状態にあるかの判定に基づいて、当該サービスコンテキスト内で以降利用されることがないデバイス群がある場合には当該占有していたデバイス群の占有を解放するためのデバイス占有解放要求をデバイス管理部１１４に送信する処理を実行してもよい。
【００５０】
さらに、サービスコンテキスト判定部１１３は、サービスコンテキストの開始を判定した場合には、当該サービスコンテキストを実行するために必要なデバイス群をサービスプログラムが占有するための要求（以降、デバイス占有要求と称する。）をデバイス管理部１１４に送信する処理を実行する。
【００５１】
デバイス管理部１１４は、サービスコンテキスト判定部１１３からデバイス制御命令を受信し、当該受信されたデバイス制御命令を、通信インタフェースユニット１３を介して、デバイス３Ａ〜３Ｎのうちの宛先の実デバイスに送信する処理を実行する。また、デバイス管理部１１４は、デバイス３Ａ〜３Ｎから送信されたデバイス送信データを通信インタフェースユニット１３を介して取得し、当該取得されたデータを、サービスコンテキスト判定部１１３に送信する処理を実行する。
【００５２】
ここで、デバイス管理部１１４は、デバイス占有制御部１１４１と、デバイス占有開始時刻算出部１１４２と、コンテキスト係数補正部１１４３とを備えている。  
デバイス占有制御部１１４１は、サービスコンテキスト判定部１１３から送信されるデバイス占有要求およびデバイス占有解放要求を受信し、当該受信されたデバイス占有要求およびデバイス占有解放要求において指定されたデバイス群の占有や占有解放を行う処理を実行する。その後、デバイス占有制御部１１４１は、上記デバイス群の占有または占有解放の情報を、デバイス占有情報記憶部１２４に記憶させる処理を実行する。
【００５３】
なお、デバイス占有制御部１１４１は、デバイス占有要求において指定されたデバイス群が他サービスプログラムで占有されている等により占有できない場合は、当該デバイス群の占有予約を実行し、当該デバイス群の占有予約の情報を、デバイス占有情報記憶部１２４に記憶させる処理を実行する。デバイス占有制御部１１４１は、上記占有予約したデバイス群が占有解放された際に、占有予約しておいたデバイス群の占有を行う処理を実行する。
【００５４】
デバイス占有開始時刻算出部１１４２は、上述したようにデバイス群の占有予約をした際に、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報を読み出す処理を実行する。その後、デバイス占有開始時刻算出部１１４２は、デバイス占有開始時刻として、上記読み出されたデバイス占有情報に基づいて、上記デバイス群が他のサービスプログラムから占有解放されて利用可能になる時刻を算出する処理を実行する。
【００５５】
コンテキスト係数補正部１１４３は、状態遷移情報記憶部１２５に記憶される状態遷移情報を読み出し、当該読み出された状態遷移情報に基づいて、コンテキスト係数記憶部１２２に記憶されるコンテキスト係数を読み出して補正して、補正後のコンテキスト係数をコンテキスト係数記憶部１２２に記憶させる処理を実行する。
【００５６】
図５、図６、図７、図８Ａおよび図８Ｂにおいて、本実施形態で使用される情報のデータ構造を例示する。  
図５では、コンテキスト係数記憶部１２２に記憶されるコンテキスト係数情報の一例が示されている。当該コンテキスト係数情報は、例えばオペレータがサービスプログラムの登録の際に予め登録しておくものとする。
【００５７】
図６では、サービスコンテキスト記憶部１２３に記憶されるサービスコンテキスト情報の一例が示されている。
【００５８】
図７では、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報の一例が示されている。
【００５９】
図８Ａでは、状態遷移情報記憶部１２５に記憶される状態維持時間ログ情報の一例が示されている。
【００６０】
図８Ｂでは、状態遷移情報記憶部１２５に記憶される状態遷移ログ情報の一例が示されている。
【００６１】
（動作）
次に、以上のように構成されたデバイス管理システム１の動作を説明する。  
先ず、図４に示したデバイス管理システム１の制御ユニット１１によって実行される、サービスコンテキスト決定処理、コンテキスト係数補正処理、およびデバイス占有開始時刻算出処理について説明する。
【００６２】
＜サービスコンテキスト決定処理＞
サービスコンテキスト記憶部１２３に記憶されるサービスコンテキスト識別子、状態リスト、利用デバイスリスト、ならびに、各状態および状態遷移のコンテキスト係数のセットは、サービスプログラムの登録の際に明示的に入力してもよいが、サービスコンテキスト解析部１１２が以下のように自動決定するようにしてもよい。
【００６３】
図９は、図４に示した制御ユニット１１によって実行されるサービスコンテキスト決定処理の一例を示すフロー図である。当該サービスコンテキスト決定処理は、サービスコンテキスト解析部１１２の制御下で実行される。
【００６４】
先ず、ステップＳ１１において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、サービスプログラム記憶部１２１に記憶されるサービスプログラムを読み出し、当該読み出されたサービスプログラムに含まれる予め定義された状態および状態遷移を抽出してリストアップする。
【００６５】
ここで、状態および状態遷移は各々、「デバイス送信／受信別」、「デバイス識別子」および「デバイスインタフェース識別子」によって一意に識別可能な「デバイス制御命令の送信」または「デバイス送信データの受信」の１つないしは複数の組み合わせから成る。
【００６６】
ステップＳ１２において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、ステップＳ１１において抽出された状態毎に、当該状態が有するデバイス制御命令の送信およびデバイス送信データの受信のイベントを抽出する。次に、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、コンテキスト係数記憶部１２２に記憶される、上記抽出されたデバイス制御命令の送信およびデバイス送信データの受信のイベントのコンテキスト係数を読み出す。その後、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、上記抽出された状態毎に、当該状態のコンテキスト係数として、当該状態が有するデバイス制御命令の送信およびデバイス送信データの受信のイベントのコンテキスト係数の総和を、デバイス制御命令の送信およびデバイス送信データの受信のイベントの総数で割った値を算出する。
【００６７】
ステップＳ１３において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、ステップＳ１１において抽出された状態遷移毎に、コンテキスト係数記憶部１２２に記憶される、当該状態遷移が有するデバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数を読み出す。その後、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、上記抽出された状態遷移毎に、当該状態遷移のコンテキスト係数として、当該状態遷移が有するデバイス制御命令の送信およびデバイス送信データの受信のイベントのコンテキスト係数の総和を、デバイス制御命令の送信およびデバイス送信データの受信のイベントの総数で割った値を算出する。
【００６８】
なお、ステップＳ１２とステップＳ１３の処理は、上述したのとは逆の順序で実行してもよいし、あるいは、並列して実行してもよい。
【００６９】
ステップＳ１４において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、ステップＳ１２において算出された各状態のコンテキスト係数と、ステップＳ１３において導出された各状態遷移のコンテキスト係数とを利用して、上記サービスプログラムに係るサービスコンテキストを決定および抽出する。
【００７０】
ステップＳ１４におけるサービスコンテキストの決定処理の一例を以下に示す。
【００７１】
先ず、ステップＳ１４−１において、遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移を決定する。具体的には、以下の状態遷移を、遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移として決定する。
【００７２】
１）コンテキスト係数が閾値ｔｃ以上である状態遷移
２）コンテキスト係数が閾値ｔｃ未満であるが、遷移元の状態のコンテキスト係数と遷移先の状態のコンテキスト係数がともに閾値ｔｉ以上である状態遷移
【００７３】
また、遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移として、以下の３），４）の状態遷移を含めてもよい。
【００７４】
３）Ｎ（Ｎは１以上の自然数）個先の状態遷移に１）または２）に該当する状態遷移がある状態遷移
４）Ｎ（Ｎは１以上の自然数）個先の状態遷移までの各状態遷移について、各遷移元の状態のコンテキスト係数を重み付けして加算したものを遷移元の状態のコンテキスト係数とし、各状態遷移のコンテキスト係数を重み付けして加算したものを状態遷移のコンテキスト係数とし、各遷移先の状態のコンテキスト係数を重み付けして加算したものを遷移先の状態のコンテキスト係数としたものが、１）または２）に該当する状態遷移
【００７５】
次に、ステップＳ１４−２において、サービスコンテキストを抽出する。具体的には、ステップＳ１４−１において「遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移」と決定されなかった状態遷移の遷移元の状態と遷移後の状態が異なるサービスコンテキストとなるように、サービスコンテキストを抽出する。
【００７６】
図１０は、ステップＳ１４−１における、遷移元と遷移先の状態を同一のサービスコンテキストに含める状態遷移を決定する処理の概略を示す図である。  
パターン１〜４は、上記の１）に該当する状態遷移である。パターン５は、上記の２）に該当する状態遷移である。パターン６〜８は、上記の１），２）には該当しない状態遷移である。
【００７７】
＜コンテキスト係数補正処理＞
デバイス管理部１１４のコンテキスト係数補正部１１４３の制御下で実行されるコンテキスト係数補正処理について詳細に説明する。  
当該コンテキスト係数補正処理では、サービスプログラム実行時のログ（状態遷移の時刻、デバイス予約、制御命令の受信時刻等）を用いて、以下の場合にコンテキスト係数の加算または減算が行われる。このように補正されたコンテキスト係数に基づいて、サービスコンテキストの再抽出を行うことが可能である。
【００７８】
（１）加算処理
図１１は、コンテキスト係数の補正処理に係る、サービスプログラムのサービスコンテキスト構成の第１のイメージ図である。
【００７９】
サービスプログラムＡでは、状態Ａ２終了後、状態Ａ３が直ちに開始することが多い。この場合、図１１に図示するように、状態Ａ２と状態Ａ３が１つのサービスコンテキストに含まれるようにするために、状態Ａ２のコンテキスト係数、状態Ａ３のコンテキスト係数、または、状態Ａ２から状態Ａ３への状態遷移のコンテキスト係数を大きくするようにする。これにより、分割した２つのサービスコンテキストが１つにまとめられやすくなる。
【００８０】
このようなコンテキスト係数の補正処理では、サービスプログラム内のあるサービスコンテキストａが終了してから、次のサービスコンテキストｂの開始要求命令を受けるまでの時間長の評価を行う。時間長が短い場合に、サービスコンテキストａの最後の状態とサービスコンテキストｂの最初の状態、両者の状態間の状態遷移のコンテキスト係数が大きくなるようにする。
【００８１】
図１２は、図１１に示したサービスプログラムＡに係るデバイスの占有予約と経過時間の一例を示す図である。
【００８２】
上述したような状態Ａ２と状態Ａ３とに係るコンテキスト係数の補正処理の例では、図１２に示すように、サービスコンテキストＡＣ１の完了時刻と、サービスコンテキストＡＣ１完了後に次のサービスコンテキストＡＣ２に遷移する遷移条件を満たすデバイス送信データを受信した時刻の履歴とを用いて、上記コンテキスト係数の補正処理を実行する。
【００８３】
上記コンテキスト係数の補正処理では、指定された回数ｄｃ＿｛ａｌｌ｝分、サービスコンテキストＡＣ＿｛ｉ｝からサービスコンテキストＡＣ＿｛ｊ｝への遷移が発生した時点で、
【数１】
2019160024.tif 000003
なるコンテキスト係数加算時の評価値を用いてコンテキスト係数の加算処理を行う。
ここで、
ａ：定数
ｄｃｓ：ｄｃ＿｛ａｌｌ｝のうち、前サービスコンテキスト完了後から閾値ｂ秒以内で初めて受信したデバイス制御命令の送信またはデバイス送信データの受信の回数
ｄｃａｌｌ：サービスコンテキストＡＣ＿｛ｉ｝からサービスコンテキストＡＣ＿｛ｊ｝への遷移が発生した回数
ｔＭＣ：コンテキスト係数を加算するか加算しないかを定める閾値
【００８４】
コンテキスト係数の加算は、以下の式にしたがって行われる。
【数２】
2019160024.tif 000004
ここで、
Ｃ＿｛ｓｔ＿ＡＣ＿｛ｉ｝｝：サービスコンテキストＡＣ＿｛ｉ｝の最後の状態が有するデバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数
Ｃ＿｛ｔｒ＿ＡＣ＿｛ｉ｝｝：サービスコンテキストＡＣ＿｛ｉ｝からサービスコンテキストＡＣ＿｛ｊ｝への状態遷移が有するデバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数
Ｃ＿｛ｓｔ＿ＡＣ＿｛ｊ｝｝：サービスコンテキストＡＣ＿｛ｊ｝の最初の状態が有するデバイス制御命令の送信またはデバイス送信データの受信のコンテキスト係数
ＣＭＡＸ：コンテキスト係数の最大値
【００８５】
（２）減算処理
図１３は、コンテキスト係数の補正処理に係る、サービスプログラムのサービスコンテキスト構成の第２のイメージ図である。
【００８６】
サービスプログラムＡでは、状態Ａ２から状態Ａ３に遷移するまでに常時時間を要する。この場合、図１３に図示するように、状態Ａ２と状態Ａ３を別のサービスコンテキストに含まれるようにするために、状態Ａ２のコンテキスト係数、状態Ａ３のコンテキスト係数、または、状態Ａ２から状態Ａ３への状態遷移のコンテキスト係数が小さくするようにする。これにより、１つのサービスコンテキストが分割されやすくなり、また、他サービスによるデバイス共用を行いやすくすることができる。
【００８７】
このようなコンテキスト係数の補正処理では、あるサービスコンテキスト開始後、当該サービスコンテキスト内の各状態遷移に要する時間長の評価を行う。時間長が長い場合に、当該状態遷移と遷移前状態、遷移先状態のコンテキスト係数が小さくなるようにする。
【００８８】
図１４は、図１３に示したサービスプログラムＡに係るデバイスの占有予約と経過時間の一例を示す図である。
【００８９】
上述したような状態Ａ２と状態Ａ３とに係るコンテキスト係数の補正処理の例では、図１４に示すように、あるサービスコンテキスト内において状態遷移に要した時間の履歴である、状態Ａ２から状態Ａ３に遷移するまでに要した時間を用いて、上記コンテキスト係数の補正処理を実行する。なお、図１４において図示しているサービス状態の更新通知は、サービスプログラム管理部１１１の実行管理部１１１２において発生される、デバイス送信データがある遷移条件を満たし状態遷移が発生しているときにその「状態が変更となった」旨の通知である。
【００９０】
上記コンテキスト係数の補正処理では、指定された回数ｓｔ＿｛ａｌｌ｝分、あるサービスコンテキスト内での遷移が発生した時点で、
【数３】
2019160024.tif 000005
なるコンテキスト係数減算時の評価値を用いてコンテキスト係数の減算処理を行う。
ここで、
ｃ：定数
ｓｔｓ：ｓｔ＿｛ａｌｌ｝のうち、前サービスコンテキスト完了後から閾値ｄ秒以上要して初めて受信したデバイス制御命令の送信またはデバイス送信データの受信の回数
ｓｔａｌｌ：状態｛ｉ｝から状態｛ｊ｝への遷移が発生した回数
ｔＤＣ：コンテキスト係数を減算するか減算しないかを定める閾値
【００９１】
コンテキスト係数の減算は、以下の式にしたがって行われる。
【数４】
2019160024.tif 000006
ここで、
Ｃ＿｛ｓｔ＿｛ｉ｝｝：サービスコンテキスト内での状態遷移に対し、状態｛ｉ｝が有するデバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数
Ｃ＿｛ｔｒ＿｛ｉ｝｝：状態｛ｉ｝から状態｛ｊ｝への状態遷移が有する各デバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数
Ｃ＿｛ｓｔ＿｛ｊ｝｝：状態｛ｊ｝が有するデバイス制御命令の送信またはデバイス送信データの受信のイベントのコンテキスト係数
ＣＭＩＮ：コンテキスト係数の最小値
【００９２】
＜デバイス占有開始時刻算出処理＞
デバイス管理部１１４のデバイス占有開始時刻算出部１１４２の制御下で実行されるデバイス占有開始時刻算出処理について詳細に説明する。  
デバイス管理部１１４は、複数のサービスプログラムからのデバイス占有要求を受けつける。デバイス管理部１１４は、あるサービスプログラムからのデバイス占有要求を受け付けた際に、当該デバイスが他のサービスプログラムによって既に占有中の場合は、各サービスプログラムに設定された優先度やデバイス占有要求の受付時刻に基づいてデバイス占有要求を許可または拒否する。
【００９３】
デバイス管理部１１４は、デバイス占有要求を拒否する場合には、各サービスプログラムに設定された優先度またはデバイス占有要求の受付時刻に基づいて占有予約を行い、デバイス占有情報記憶部１２４にその旨を記録する。さらに、デバイス管理部１１４のデバイス占有開始時刻算出部１１４２が、サービスコンテキストの情報に基づいて、デバイス占有を一括で可能となる時刻を算出し、応答してもよい。
【００９４】
当該デバイス占有開始時刻算出処理では、次のログ情報が状態遷移情報記憶部１２５に記憶されていることを前提とする。
【００９５】
１）状態維持時間ログ情報
サービスコンテキストを構成する状態毎に、当該状態が開始されてから終了するまでに要した時間のログを、状態遷移情報記憶部１２５に記憶させておく。
【００９６】
２）状態遷移ログ情報
サービスコンテキストを構成する状態毎に、当該状態への遷移前の状態およびサービスコンテキストのログと、当該状態からの遷移後の状態およびサービスコンテキストのログとを、状態遷移情報記憶部１２５に記憶させておく。
【００９７】
１）先ず、最初のステップにおいて、デバイス占有要求で要求されるデバイスの占有状況および占有予約状況が抽出される。具体的には、デバイス占有要求したサービスプログラムの指定されたサービスコンテキストで必要なデバイスリスト（以降、要求デバイスリストと称する。）に含まれるデバイス毎に、デバイス占有情報記憶部１２４に記憶されているデータから以下が抽出される。
【００９８】
当該デバイスを占有中のサービスコンテキスト（以降、要求デバイス占有サービスコンテキストと称する。）
当該デバイスの占有予約を行っている他サービスコンテキスト（以降、要求デバイス先約サービスコンテキストと称する。）
【００９９】
２）次のステップでは、上記ステップにおいて抽出された要求デバイス占有サービスコンテキストと要求デバイス先約サービスコンテキストの実行所要時間が、状態遷移情報記憶部１２５に記憶されているデータに基づいて算出される。
【０１００】
ａ）サービスコンテキストの実行開始状態および終了状態が取得される。
算出対象が「要求デバイス占有サービスコンテキスト」の場合は、実行開始状態として、実行中の状態が取得され、実行終了状態として、当該サービスコンテキストから他サービスコンテキストへ遷移する際に最後に実行される状態群が取得される。
【０１０１】
算出対象が「要求デバイス先約サービスコンテキスト」の場合は、実行開始状態として、他サービスコンテキストから当該サービスコンテキストへ遷移した際に最初に実行される状態が取得され、実行終了状態として、当該サービスコンテキストから他サービスコンテキストへ遷移する状態群が取得される。
【０１０２】
ｂ）状態遷移情報記憶部１２５に記憶される状態遷移ログ情報から、ある状態から他の状態に遷移する確率（以降、単独状態遷移確率と称する。）が算出される。遷移元の状態ａから遷移可能な状態がｂ＿｛１｝，…，ｂ＿｛ｎ｝のｎ個存在する場合、状態ａから状態ｂ＿｛ｉ｝への単独状態遷移確率が以下式より算出される。
ｐ＿｛ａ→ｂ＿｛ｉ｝｝＝（状態ａから状態ｂ＿｛ｉ｝へ遷移した回数）／Σｊ＝１．．ｎ（状態ａから状態ｂ＿｛ｊ｝へ遷移した回数）
【０１０３】
ｃ）ａ）で取得された実行開始状態と実行終了状態の各組み合わせについて、その間に遷移する状態群の組み合わせ毎に、ｂ）で算出された単独状態遷移確率を遷移前後の状態の各組み合わせに対して用いて、実行開始状態から実行終了状態まで全体の状態を遷移する確率（以降、全体状態遷移確率）が算出される。
【０１０４】
ｄ）ｃ）で算出された各全体状態遷移確率が最も高い実行開始状態、実行終了状態ならびにその間に遷移する状態群に対し、各状態遷移に要する時間長さを状態遷移情報記憶部１２５に記憶される同状態遷移に要した時間の平均として算出し、当該算出された各状態遷移に要する時間長さを加算した時間長を、「要求デバイス占有サービスコンテキスト」「要求デバイス先約サービスコンテキスト」の実行所要時間とする。
【０１０５】
３）２）の処理により算出された各「要求デバイス占有サービスコンテキスト」「要求デバイス先約サービスコンテキスト」の全てが終了する時刻が、当該サービスコンテキストの占有開始時刻として算出される。
【０１０６】
＜動作シーケンス＞
（１）サービスプログラム登録シーケンス
図１５は、図４に示した制御ユニット１１によって実行されるサービスプログラム登録処理の一例を示すシーケンス図である。
【０１０７】
ステップＳ１０１において、オペレータが入力部２にサービスプログラムを入力し、制御ユニット１１は、サービスプログラム管理部１１１の登録管理部１１１１の制御の下、入力部２からサービスプログラムを取得し、当該取得されたサービスプログラムを登録する。
【０１０８】
ステップＳ１０２において、制御ユニット１１は、登録管理部１１１１の制御の下、上記取得されたサービスプログラムをサービスプログラム記憶部１２１に記憶させる。
【０１０９】
ステップＳ１０３において、制御ユニット１１は、登録管理部１１１１の制御の下、上記サービスプログラムのサービスコンテキストを抽出するための要求を、サービスコンテキスト解析部１１２に送信する。
【０１１０】
ステップＳ１０４において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、サービスプログラム記憶部１２１に記憶される上記サービスプログラムを読み出して取得する。
【０１１１】
ステップＳ１０５において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、コンテキスト係数記憶部１２２に記憶される、各デバイス送信データの受信および各デバイス制御命令の送信のイベントのコンテキスト係数を読み出して取得する。
【０１１２】
ステップＳ１０６において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、ステップＳ１０５において取得されたコンテキスト係数に基づいて、上記サービスプログラムに係るサービスコンテキストを決定および抽出する。ステップＳ１０６では、例えば、上記で詳細に説明したサービスコンテキスト決定処理と同様の処理が実行される。
【０１１３】
ステップＳ１０７において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、上記決定されたサービスコンテキストの情報を、サービスコンテキスト記憶部１２３に記憶させる。
【０１１４】
ステップＳ１０８において、制御ユニット１１は、サービスコンテキスト解析部１１２の制御の下、サービスプログラム管理部１１１の登録管理部１１１１に、上記サービスプログラムが登録完了したとの通知を送信する。
【０１１５】
（２）サービス開始シーケンス
サービスプログラムの登録が完了した後に、当該サービスプログラムによるサービスを開始することが可能となる。
【０１１６】
図１６は、図４に示した制御ユニット１１によって実行されるサービス開始処理の一例を示すシーケンス図である。
【０１１７】
ステップＳ２０１において、登録済みのサービスプログラムの開始要求をオペレータが入力部２を介して入力し、制御ユニット１１は、サービスプログラム管理部１１１の実行管理部１１１２の制御の下、上記開始要求を取得する。
【０１１８】
ステップＳ２０２において、制御ユニット１１は、実行管理部１１１２の制御の下、サービスプログラム記憶部１２１に記憶される、上記開始要求に係るサービスプログラムを読み出して取得する。
【０１１９】
ステップＳ２０３において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービスプログラムのサービスコンテキストを抽出するための要求を、サービスコンテキスト判定部１１３に送信する。
【０１２０】
ステップＳ２０４において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、サービスコンテキスト記憶部１２３に記憶される、上記サービスプログラムのサービスコンテキストの情報を読み出して取得する。
【０１２１】
ステップＳ２０５において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、上記サービスプログラムのサービスコンテキストを実行するために必要なデバイス群を上記サービスプログラムが占有するためのデバイス占有要求を、デバイス管理部１１４に送信する。
【０１２２】
ステップＳ２０６において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、上記デバイス占有要求に基づくデバイス占有の可否を判定する。
【０１２３】
（３）デバイス占有シーケンス
ステップＳ２０６においてデバイス占有が可能と判定された場合は、デバイス占有処理が実行される。
【０１２４】
図１７は、図４に示した制御ユニット１１によって実行されるデバイス占有処理の一例を示すシーケンス図である。
【０１２５】
ステップＳ３０１において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、上記デバイス占有要求に基づくデバイス占有処理を実行する。
【０１２６】
ステップＳ３０２において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、上記デバイス占有処理に基づくデバイス占有状況の情報をデバイス占有情報記憶部１２４に書き込み、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報が更新される。
【０１２７】
ステップＳ３０３において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、サービスプログラム管理部１１１の実行管理部１１１２に、デバイス占有応答を送信する。
【０１２８】
ステップＳ３０４において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービスプログラムを実行する。
【０１２９】
一方、ステップＳ２０６においてデバイス占有が不可と判定された場合は、先ずデバイス占有予約処理が実行され、その後にデバイス占有処理が実行される。
【０１３０】
図１８は、図４に示した制御ユニット１１によって実行されるデバイス占有予約処理およびデバイス占有処理の一例を示すシーケンス図である。  
ステップＳ４０１からステップＳ４０８においてデバイス占有予約処理が実行され、その後、ステップＳ４０９からステップＳ４１２においてデバイス占有処理が実行される。
【０１３１】
ステップＳ４０１において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、予約待ちリストの更新をする。
【０１３２】
ステップＳ４０２において、制御ユニット１１は、デバイス管理部１１４のデバイス占有開始時刻算出部１１４２の制御の下、サービスコンテキスト記憶部１２３に記憶されるサービスコンテキスト情報を読み出して取得する。
【０１３３】
ステップＳ４０３において、制御ユニット１１は、デバイス占有開始時刻算出部１１４２の制御の下、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報を読み出して取得する。
【０１３４】
ステップＳ４０４において、制御ユニット１１は、デバイス占有開始時刻算出部１１４２の制御の下、状態遷移情報記憶部１２５に記憶される、デバイスとのデータ送受信履歴を読み出して取得する。
【０１３５】
なお、ステップＳ４０２、ステップＳ４０３およびステップＳ４０４の処理は、上述したのとは異なる順序で実行してもよいし、あるいは、これらのうちの任意の処理を並列して実行してもよい。
【０１３６】
ステップＳ４０５において、制御ユニット１１は、デバイス占有開始時刻算出部１１４２の制御の下、ステップＳ４０２、ステップＳ４０３およびステップＳ４０４において取得した情報に基づいてデバイス占有開始時刻を算出する。ステップＳ４０５では、例えば、上記で詳細に説明したデバイス占有開始時刻算出処理と同様の処理が実行される。
【０１３７】
ステップＳ４０６において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、デバイス占有予約状況の情報をデバイス占有情報記憶部１２４に書き込み、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報が更新される。
【０１３８】
ステップＳ４０７において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、サービスプログラム管理部１１１の実行管理部１１１２に、デバイス占有予約応答を送信する。
【０１３９】
ステップＳ４０８において、制御ユニット１１は、実行管理部１１１２の制御の下、デバイスの占有の予約待ちを行う。
【０１４０】
ステップＳ４０８において予約待ちしていたデバイスの占有が解放されると、ステップＳ４０９において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、デバイス占有処理を実行する。
【０１４１】
ステップＳ４１０において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、デバイス占有処理に基づくデバイス占有状況の情報をデバイス占有情報記憶部１２４に書き込み、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報が更新される。
【０１４２】
ステップＳ４１１において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、サービスプログラム管理部１１１の実行管理部１１１２に、デバイス占有応答を送信する。
【０１４３】
ステップＳ４１２において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービスプログラムを実行する。
【０１４４】
（４）デバイス通信シーケンス
サービスプログラムが開始されると、当該サービスプログラムの内容に応じたデバイスとのデータ通信が実行される。
【０１４５】
図１９は、図４に示した制御ユニット１１によって実行されるデバイス通信処理の一例を示すシーケンス図である。
【０１４６】
ステップＳ５０１において、制御ユニット１１は、サービスプログラム管理部１１１の実行管理部１１１２の制御の下、サービスプログラムを実行する。
【０１４７】
ステップＳ５０２において、制御ユニット１１は、実行管理部１１１２の制御の下、デバイス制御命令をサービスコンテキスト判定部１１３に送信する。
【０１４８】
ステップＳ５０３において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、デバイス制御命令をデバイス管理部１１４に送信する。
【０１４９】
ステップＳ５０４において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス制御命令をデバイス３Ａ〜３Ｎのうちの宛先のデバイスに送信する。
【０１５０】
ステップＳ５０５において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス制御命令の送信イベントの情報を状態遷移情報記憶部１２５に記憶させる。
【０１５１】
ステップＳ５０６において、デバイス３Ａから３Ｎのうち、上記サービスプログラムが占有しているデバイスがデータを送信し、制御ユニット１１は、デバイス管理部１１４の制御の下、当該デバイス送信データを取得する。
【０１５２】
ステップＳ５０７において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス送信データの受信イベントの情報を状態遷移情報記憶部１２５に記憶させる。
【０１５３】
ステップＳ５０８において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス送信データをサービスコンテキスト判定部１１３に送信する。
【０１５４】
ステップＳ５０９において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、デバイス送信データをサービスプログラム管理部１１１の実行管理部１１１２に送信する。
【０１５５】
ステップＳ５０２からステップＳ５０５のデバイス制御命令送信処理と、ステップＳ５０６からステップＳ５０９のデバイス送信データ受信処理が繰り返される。
【０１５６】
ここで、ステップＳ５０５において状態遷移情報記憶部１２５に記憶されたデバイス制御命令の送信イベントの情報と、ステップＳ５０７において状態遷移情報記憶部１２５に記憶されたデバイス送信データの受信イベントの情報とを利用して、コンテキスト係数の補正処理を実行することができる。
【０１５７】
ステップＳ５１０において、制御ユニット１１は、デバイス管理部１１４のコンテキスト係数補正部１１４３の制御の下、状態遷移情報記憶部１２５に記憶されるデバイス制御命令の送信イベントおよびデバイス送信データの受信イベントの履歴情報を読み出して取得する。
【０１５８】
ステップＳ５１１において、制御ユニット１１は、コンテキスト係数補正部１１４３の制御の下、ステップＳ５１０において取得されたデバイス制御命令の送信イベントおよびデバイス送信データの受信イベントの履歴情報に基づいてコンテキスト係数補正処理を実行する。ステップＳ５１１では、例えば、上記で詳細に説明したコンテキスト係数補正処理と同様の処理が実行される。
【０１５９】
ステップＳ５１２において、制御ユニット１１は、コンテキスト係数補正部１１４３の制御の下、補正後のコンテキスト係数の値をコンテキスト係数記憶部１２２に書き込み、コンテキスト係数記憶部１２２に記憶されるコンテキスト係数が更新される。
【０１６０】
なお、ステップＳ５１０からステップＳ５１２の処理は、上述したタイミングで実行されるものに限定されず、任意のタイミングで実行するようにしてもよい。
【０１６１】
（５）サービスコンテキスト切替シーケンス
サービスプログラムが開始され、当該サービスプログラムの内容に応じたデバイスとのデータ通信の実行中に、当該サービスプログラムに係るサービスコンテキストの切替が行われる。
【０１６２】
図２０は、図４に示した制御ユニット１１によって実行されるサービスコンテキスト切替処理の一例を示すシーケンス図である。
【０１６３】
ステップＳ６０１において、デバイス３Ａから３Ｎのうち、上記サービスプログラムが占有しているデバイスがデータを送信し、制御ユニット１１は、デバイス管理部１１４の制御の下、当該デバイス送信データを取得する。
【０１６４】
ステップＳ６０２において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス送信データの受信イベントの情報を状態遷移情報記憶部１２５に記憶させる。
【０１６５】
ステップＳ６０３において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイス送信データをサービスコンテキスト判定部１１３に送信する。
【０１６６】
ステップＳ６０４において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、デバイス送信データをサービスプログラム管理部１１１の実行管理部１１１２に送信する。
【０１６７】
ここで、ステップＳ６０５において、制御ユニット１１は、実行管理部１１１２の制御の下、上記デバイス送信データが所定の状態遷移の遷移条件を満たすデバイス送信データである場合、上記サービスプログラムのサービス状態を更新する。
【０１６８】
ステップＳ６０６において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービス状態の更新の通知をサービスコンテキスト判定部１１３に送信する。
【０１６９】
ステップＳ６０７において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、サービスコンテキスト記憶部１２３に記憶される上記サービスプログラムに係るサービスコンテキスト情報を読み出して取得する。
【０１７０】
ステップＳ６０８において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、ステップＳ６０７において取得されたサービスコンテキスト情報に基づいて、上記サービスプログラムで実行するサービスコンテキストの変更の有無を確認する処理を実行する。
【０１７１】
ステップＳ６０８において上記サービスコンテキストの変更が有ることが確認されると、ステップＳ６０９において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、デバイス占有要求またはデバイス占有解放要求をデバイス管理部１１４に送信する。
【０１７２】
ステップＳ６１０において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、デバイス占有解放処理を実行する。
【０１７３】
ステップＳ６１１において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、上記デバイス占有解放処理に基づくデバイス占有状況の情報をデバイス占有情報記憶部１２４に書き込み、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報が更新される。
【０１７４】
ステップＳ６１２において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、上記デバイス占有要求に基づくデバイス占有の可否を判定する。
【０１７５】
ステップＳ６１２においてデバイス占有が可能と判定された場合は、ステップＳ３０１からステップＳ３０４の処理が実行される。一方、ステップＳ６１２においてデバイス占有が不可と判定された場合は、ステップＳ４０１からステップＳ４１２の処理が実行される。
【０１７６】
（６）サービス停止シーケンス
サービスプログラムが開始され、当該サービスプログラムの内容に応じたデバイスとのデータ通信の実行中に、サービス停止の処理を実行することができる。
【０１７７】
図２１は、図４に示した制御ユニット１１によって実行されるサービス停止処理の一例を示すシーケンス図である。
【０１７８】
ステップＳ７０１において、実行中のサービスプログラムの停止要求をオペレータが入力部２を介して入力し、制御ユニット１１は、サービスプログラム管理部１１１の実行管理部１１１２の制御の下、上記停止要求を取得する。
【０１７９】
ステップＳ７０２において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービスプログラムの停止処理を実行する。
【０１８０】
ステップＳ７０３において、制御ユニット１１は、実行管理部１１１２の制御の下、上記サービスプログラムによるデバイスの占有を解放するためのデバイス占有解放要求を、サービスコンテキスト判定部１１３に送信する。
【０１８１】
ステップＳ７０４において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、上記デバイス占有解放要求をデバイス管理部１１４に送信する。
【０１８２】
ステップＳ７０５において、制御ユニット１１は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、上記デバイス占有解放要求に基づくデバイス占有解放処理を実行する。
【０１８３】
ステップＳ７０６において、制御ユニット１１は、デバイス占有制御部１１４１の制御の下、上記デバイス占有解放処理に基づくデバイス占有状況の情報をデバイス占有情報記憶部１２４に書き込み、デバイス占有情報記憶部１２４に記憶されるデバイス占有情報が更新される。
【０１８４】
ステップＳ７０７において、制御ユニット１１は、デバイス管理部１１４の制御の下、デバイスの占有を解放したとの通知をサービスコンテキスト判定部１１３に送信する。
【０１８５】
ステップＳ７０８において、制御ユニット１１は、サービスコンテキスト判定部１１３の制御の下、上記デバイスの占有を解放したとの通知を、サービスプログラム管理部１１１の実行管理部１１１２に送信する。
【０１８６】
（効果）
（１）サービスプログラム管理部１１１の登録管理部１１１１の制御の下、サービスプログラムのサービスコンテキストを抽出するための要求が、サービスコンテキスト解析部１１２に送信される。サービスコンテキスト解析部１１２の制御の下、各デバイス送信データの受信および各デバイス制御命令の送信のイベントのコンテキスト係数が取得される。サービスコンテキスト解析部１１２の制御の下、上記取得されたコンテキスト係数に基づいて、上記サービスプログラムに係るサービスコンテキストが決定および抽出される。
【０１８７】
これにより、コンテキスト係数に基づいて決定されたサービスコンテキストの最適な粒度で、次のようにサービスプログラムへのデバイスの割り当て制御を実行することができる。
【０１８８】
（２）サービスコンテキスト判定部１１３の制御の下、デバイス送信データがサービスプログラム管理部１１１の実行管理部１１１２に送信される。実行管理部１１１２の制御の下、上記デバイス送信データが所定の状態遷移の遷移条件を満たすデバイス送信データである場合、上記サービスプログラムのサービス状態が更新される。その後、実行管理部１１１２の制御の下、上記サービス状態の更新の通知がサービスコンテキスト判定部１１３に送信される。サービスコンテキスト判定部１１３の制御の下、上記サービスプログラムに係るサービスコンテキスト情報が取得され、当該取得されたサービスコンテキスト情報に基づいて、上記サービスプログラムで実行するサービスコンテキストの変更の有無が確認される。上記サービスコンテキストの変更が有ることが確認されると、サービスコンテキスト判定部１１３の制御の下、デバイス占有要求またはデバイス占有解放要求がデバイス管理部１１４に送信される。
【０１８９】
このような制御が行われるため、サービスプログラムの実行中に、当該サービスプログラムを実行するのに必要とされるデバイスであっても当該サービスプログラムに割り当てられていないデバイスが存在することとなる。したがって、他のサービスプログラムによる割り込みの際にも、実行中のサービスプログラムを中断することなくこのようなデバイスをそのサービスプログラムに割り当てることが可能となり、複数サービスによるデバイス共用が可能となる。一方、サービスコンテキストの単位でサービスプログラムにその都度必要とされるデバイスが割り当てられるように制御するので、当該サービスプログラムがデバイスを必要とする期間に他のサービスによりそのデバイスが利用されることを防止することも可能となる。
【０１９０】
（３）デバイス管理部１１４のコンテキスト係数補正部１１４３の制御の下、デバイス制御命令の送信イベントおよびデバイス送信データの受信イベントの履歴情報が取得される。コンテキスト係数補正部１１４３の制御の下、当該取得されたデバイス制御命令の送信イベントおよびデバイス送信データの受信イベントの履歴情報に基づいて、コンテキスト係数補正処理が実行される。
【０１９１】
このように、例えば、上記サービスプログラムの実行に伴うその都度の通信状況等をコンテキスト係数に反映させることができるので、当該コンテキスト係数に基づいて決定されるサービスコンテキストをより現実に即した粒度とすることが可能となる。
【０１９２】
（４）デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、デバイス占有要求に基づくデバイス占有の可否が判定される。デバイス占有が不可と判定された場合は、デバイス管理部１１４のデバイス占有制御部１１４１の制御の下、予約待ちリストの更新がされる。その後、デバイス管理部１１４のデバイス占有開始時刻算出部１１４２の制御の下、サービスコンテキスト情報と、デバイス占有情報と、デバイスとのデータ送受信履歴が取得され、当該サービスコンテキスト情報と、デバイス占有情報と、デバイスとのデータ送受信履歴とに基づいて、デバイス占有開始時刻が算出される。
【０１９３】
このように過去の実データに基づいて算出されるデバイス占有開始の予測時刻は信頼性が高いものとなり、このように算出されたデバイス占有開始時刻を利用することにより、複数のサービスの間で共用されるデバイスの時間管理が容易となる。
【０１９４】
［他の実施形態］
なお、この発明は上記第１の実施形態に限定されるものではない。
【０１９５】
例えば、デバイス管理システムの構成や、コンテキスト係数記憶部、サービスコンテキスト記憶部、デバイス占有情報記憶部、状態遷移情報記憶部にそれぞれ記憶されるデータの構造等について、この発明の要旨を逸脱しない範囲で種々変形して実施可能である。
【０１９６】
要するにこの発明は、上記第１の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記第１の実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、上記第１の実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【０１９７】
ＡＣ１，ＡＣ２，ＡＣ３，ＢＣ１，ＢＣ２，ＢＣ３，ＢＣ４…サービスコンテキスト、Ａ１，Ａ２，Ａ３，Ａ４，Ａ５，Ａ６，Ａ７，Ａ８，Ａ９，Ａ１０，Ｂ１，Ｂ２，Ｂ３，Ｂ４，Ｂ５，Ｂ６，Ｂ７，Ｂ８，Ｂ９，Ｂ１０，Ｂ１１…状態、１…デバイス管理システム、１１…制御ユニット、１１１…サービスプログラム管理部、１１１１…登録管理部、１１１２…実行管理部、１１２…サービスコンテキスト解析部、１１３…サービスコンテキスト判定部、１１４…デバイス管理部、１１４１…デバイス占有制御部、１１４２…デバイス占有開始時刻算出部、１１４３…コンテキスト係数補正部、１２…記憶ユニット、１２１…サービスプログラム記憶部、１２２…コンテキスト係数記憶部、１２３…サービスコンテキスト記憶部、１２４…デバイス占有情報記憶部、１２５…状態遷移情報記憶部、１３…通信インタフェースユニット、２…入力部、３Ａ，３Ｂ，３Ｃ，３Ｎ…デバイス、ＮＷ…通信ネットワーク
【図１】
2019160024.tif 000007
【図２】
2019160024.tif 000008
【図３】
2019160024.tif 000009
【図４】
2019160024.tif 000010
【図５】
2019160024.tif 000011
【図６】
2019160024.tif 000012
【図７】
2019160024.tif 000013
【図８Ａ】
2019160024.tif 000014
【図８Ｂ】
2019160024.tif 000015
【図９】
2019160024.tif 000016
【図１０】
2019160024.tif 000017
【図１１】
2019160024.tif 000018
【図１２】
2019160024.tif 000019
【図１３】
2019160024.tif 000020
【図１４】
2019160024.tif 000021
【図１５】
2019160024.tif 000022
【図１６】
2019160024.tif 000023
【図１７】
2019160024.tif 000024
【図１８】
2019160024.tif 000025
【図１９】
2019160024.tif 000026
【図２０】
2019160024.tif 000027
【図２１】
2019160024.tif 000028