(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-15
(45)【発行日】2022-09-27
(54)【発明の名称】ネットワークサービス層における分散トランザクション管理
(51)【国際特許分類】
H04L 67/1004 20220101AFI20220916BHJP
G06F 9/46 20060101ALI20220916BHJP
G06F 9/48 20060101ALI20220916BHJP
【FI】
H04L67/1004
G06F9/46 430
G06F9/48 370
(21)【出願番号】P 2019550586
(86)(22)【出願日】2018-03-16
(86)【国際出願番号】 US2018022856
(87)【国際公開番号】W WO2018170391
(87)【国際公開日】2018-09-20
【審査請求日】2021-03-09
(32)【優先日】2017-03-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】515222713
【氏名又は名称】コンヴィーダ ワイヤレス, エルエルシー
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】シード,デイル,エヌ.
(72)【発明者】
【氏名】チェン,チュオ
(72)【発明者】
【氏名】ローブ,ショシャナ
(72)【発明者】
【氏名】リ,クァン
(72)【発明者】
【氏名】ムラディン,カタリナ,エム.
(72)【発明者】
【氏名】フリン 4世,ウィリアム,ロバート
(72)【発明者】
【氏名】ディジローラモ,ロッコ
【審査官】今川 悟
(56)【参考文献】
【文献】特表2017-504897(JP,A)
【文献】特開2012-018449(JP,A)
【文献】特開2013-077287(JP,A)
【文献】米国特許出願公開第2009/0013154(US,A1)
【文献】中国特許出願公開第105653374(CN,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 67/1004
G06F 9/46
G06F 9/48
(57)【特許請求の範囲】
【請求項1】
プロセッサおよびメモリを備える装置であって、
前記装置は、
前記装置の前記プロセッサによって実行されると、
前記装置に通信ネットワークの第1サービス層エンティティを実行させ、
前記第1サービス層エンティティに、
前記通信ネットワーク上で実行されるアプリケーションから、分散トランザクションのリクエストであって、前記通信ネットワークの複数の他のサービス層エンティティによってホストされているターゲットリソースのセットで原子的に実行されるコマンドを規定するリクエストを受信し、
前記複数の他のサービス層エンティティのそれぞれに、該他のサービス層エンティティによってホストされているターゲットリソースのいずれかをロックするようにリクエストを送信し、
前記複数の他のサービス層エンティティのそれぞれから、該サービス層エンティティが該サービス層エンティティによってホストされている前記ターゲットリソースをロックできたかどうかを示す応答を受信し、
前記複数の他のサービス層エンティティが前記ターゲットリソースのセットをロックできたことを示す応答の受信に基づいて、前記複数の他のサービス層エンティティに前記ターゲットリソースのセットで前記コマンドの原子的実行を実施するようにリクエストを送信し、
前記複数の他のサービス層エンティティから、前記コマンドが前記ターゲットリソースのセットで正常に実行されたことを示す応答を受信し、
前記コマンドが前記ターゲットリソースのセットで正常に実行されたことを示す応答の受信に基づいて、前記複数の他のサービス層エンティティに前記分散トランザクションをコミットするようにリクエストを送信し、
前記アプリケーションに前記分散トランザクションが正常に実施されたことを示す応答を送信する、
各手順を実行させる、前記装置の前記メモリに記憶されたコンピュータ実行可能命令をさらに備える装置。
【請求項2】
前記コンピュータ実行可能命令はさらに、前記アプリケーションから前記分散トランザクションの前記リクエストを受信すると、前記第1サービス層エンティティの前記メモリ内に、前記分散トランザクションを表し、かつ前記分散トランザクションの状態に関する情報を含むリソースを前記第1サービス層エンティティに生成させ、
前記リソースは、前記アプリケーションが前記通信ネットワークを介してアクセス可能なものである、請求項1に記載の装置。
【請求項3】
前記リソースは、前記トランザクションを一意に識別するトランザクション識別子属性と、前記分散トランザクションの前記状態に関する前記情報が保存されているトランザクション状態属性とを含む、請求項2に記載の装置。
【請求項4】
前記リソースは、前記第1サービス層エンティティが前記分散トランザクションの前記リクエストの処理をいつ開始するかを制御する実行時間属性を含む、請求項2に記載の装置。
【請求項5】
前記装置は、前記通信ネットワークのサーバまたはゲートウェイのうち1つを含む、請求項1に記載の装置。
【請求項6】
前記コンピュータ実行可能命令はさらに、前記第1サービス層エンティティに、前記リクエストの処理に関するルールを定義するポリシーに従って前記分散トランザクションの前記リクエストを処理させる、請求項1に記載の装置。
【請求項7】
前記コンピュータ実行可能命令はさらに、前記第1サービス層エンティティに、前記分散トランザクショ
ンの処理をスケジュールさせる、請求項1に記載の装置。
【請求項8】
前記分散トランザクションの前記リクエストは、リクエストのシーケンスの一部である、請求項1に記載の装置。
【請求項9】
前記コンピュータ実行可能命令はさらに、前記第1サービス層エンティティに、前記コマンドの前記実行に対する制約を示す基準を前記複数の他のサービス層エンティティへ送信させる、請求項1に記載の装置。
【請求項10】
前記コンピュータ実行可能命令はさらに、前記第1サービス層エンティティに、リクエストされた前記分散トランザクションの優先順位の割り当てをさせる、請求項1に記載の装置。
【請求項11】
通信ネットワークの第1サービス層エンティティが、前記通信ネットワークで実行されるアプリケーションから、分散トランザクションのリクエストであって、前記通信ネットワークの複数の他のサービス層エンティティによってホストされているターゲットリソースのセットで原子的に実行されるコマンドを規定するリクエストを受信することと、
前記複数の他のサービス層エンティティのそれぞれに、該他のサービス層エンティティによってホストされているターゲットリソースのいずれかをロックするようにリクエストを前記第1サービス層エンティティが送信することと、
前記複数のサービス層エンティティのそれぞれから、該サービス層エンティティが該サービス層エンティティによってホストされている前記ターゲットリソースをロックできたかどうかを示す応答を前記第1サービス層エンティティが受信することと、
前記複数の他のサービス層エンティティが前記ターゲットのセットをロックできたことを示す応答の受信に基づいて、前記複数の他のサービス層エンティティに前記ターゲットリソースのセットで前記コマンドの原子的実行を実施するようにリクエストを前記第1サービス層エンティティが送信することと、
前記複数の他のサービス層エンティティから、前記コマンドが前記ターゲットリソースのセットで正常に実行されたことを示す応答を前記第1サービス層エンティティが受信することと、
前記コマンドが前記ターゲットリソースのセットで正常に実行されたことを示す応答の受信に基づいて、前記複数の他のサービス層エンティティに前記分散トランザクションをコミットするようにリクエストを前記第1サービス層エンティティが送信することと、
前記アプリケーションに前記分散トランザクションが正常に実施されたことを示す応答を送信することと
を含む方法。
【請求項12】
前記アプリケーションから前記分散トランザクションの前記リクエストを受信すると、前記分散トランザクションを表し、かつ前記分散トランザクションの状態に関する情報を含むリソースを前記第1サービス層エンティティが生成することをさらに含み、前記リソースは、前記アプリケーションが前記通信ネットワークを介してアクセス可能なものである、請求項11に記載の方法。
【請求項13】
前記リソースは、前記トランザクションを一意に識別するトランザクション識別子属性と、前記分散トランザクションの前記状態に関する前記情報が保存されているトランザクション状態属性とを含む、請求項12に記載の方法。
【請求項14】
前記リソースは、前記第1サービス層エンティティが前記分散トランザクションの前記リクエストの処理をいつ開始するかを制御する実行時間属性を含む、請求項12に記載の方法。
【請求項15】
前記第1サービス層エンティティは、前記通信ネットワークのサーバまたはゲートウェイのうち1つに実装される、請求項11に記載の方法。
【請求項16】
前記リクエストの処理に関するルールを定義するポリシーに従って、前記分散トランザクションの前記リクエストを処理することをさらに含む、請求項11に記載の方法。
【請求項17】
前記分散トランザクション
の処理のスケジューリングをさらに含む、請求項11に記載の方法。
【請求項18】
前記分散トランザクションの前記リクエストは、リクエストのシーケンスの一部である、請求項11に記載の方法。
【請求項19】
前記複数の他のサービス層エンティティに、前記コマンドの前記実行に対する制約を示す基準を送信することをさらに含む、請求項11に記載の方法。
【請求項20】
リクエストされた前記分散トランザクションに優先順位を割り当てることをさらに含む、請求項11に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
(関連出願の相互参照)
本出願は、2017年3月17日に出願された「IoT(Internet of Things)サービス層における分散トランザクション管理を可能にする方法」と題する米国仮出願第62/472,851号の利益を主張するものであり、その内容はその全体が参照により本明細書に組み込まれる。
【0002】
(背景)
トランザクションは、ユニットとして実行される必要のある、操作のセット、または操作のシーケンスである場合がある。操作のセットは、(例えば、機能上の理由またはビジネス上の理由により)密接に関係する場合があり、またユニットとして各操作の全てが正常に実行されるか、または該各操作のいずれも実行されないかのどちらか一方である必要がある。トランザクションは、原子性、一貫性、独立性、および耐久性(Atomicity, Consistency, Isolation and Durability:ACID)の4つの特性を有する場合がある。原子性とは、トランザクションにリクエストまたはステップがいくつ含まれても、それらが単一のリクエストであるかのように実行される必要があることを意味する。それらは全てが正常に実行されるか、または全く実行されない必要がある。部分的な実行は許容されない。一貫性とは、トランザクションの実行前と実行後とで、トランザクションのターゲットの状態が一貫していなければならないことを意味する。一貫性は、原子性と密接に関係している。独立性とは、各トランザクションが互いに独立している必要があり、互いに干渉できないことを意味する。耐久性とは、一旦トランザクションがコミットされると、システムはトランザクションの結果が安全で耐久性のあるものであることを保証する必要があることを意味する。結果は、突然の誤動作に耐え得るものであり、回復後の結果に回復できるものである。近年、マシンツーマシン(Machine-To-Machine:M2M)ネットワークまたはIoT(Internet of Things)ネットワークのコンテキストにおけるトランザクション処理に取り組む努力がなされている。
【発明の概要】
【課題を解決するための手段】
【0003】
通信ネットワークのサービス層での分散トランザクション処理のサポートを提供するための方法、装置、およびシステムを本明細書にて開示する。方法、装置およびシステムは、DSLTの処理をそれら自体で管理しなければならないというアプリケーションの複雑さおよび負担を軽減するために、分散サービス層トランザクション(Distributed Service Layer Transaction:DSLT)処理性能をサポートするDSLTサービスで具現化することができる。DSLT処理性能は、アプリケーションに代わってDSLTの原子的処理を管理するDSLTサービス性能と、アプリケーションに代わってDSLTシーケンスの原子的処理を管理するDSLTサービス性能と、DSLTまたはDSLTシーケンスを構成する個々のリクエストのスケジューリングを調整するDSLTサービス性能と、DSLTまたはDSLTシーケンスの実行基準をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの再伝送ポリシーをアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの完了基準をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの優先順位をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスを開始するためのシンプルなRESTfulアプリケーションプログラミングインターフェース(Application Programming Interface:API)をアプリケーションに提供するDSLTサービス性能とを含んでよい。
【0004】
一態様では、DSLTサービスを実装する通信ネットワークの第1サービス層エンティティは、通信ネットワーク上で実行されるアプリケーションから分散トランザクションのリクエストを受信してよい。リクエストは、該通信ネットワークの複数の他のサービス層エンティティによってホストされているターゲットリソースのセットで原子的に実行されるコマンドを規定してよい。リクエストに応答して、第1サービス層エンティティは、複数の他のサービス層エンティティのそれぞれに、該他のサービス層エンティティによってホストされているターゲットリソースのいずれかをロックするようにリクエストを送信してよい。次いで、第1サービス層エンティティは、複数の他のサービス層エンティティのそれぞれから、該サービス層エンティティがそのサービス層エンティティによってホストされているターゲットリソースをロックできたかどうかを示す応答を受信してよい。第1サービス層エンティティが、ターゲットリソースの全てがロックされたことを示す応答を受信する場合、第1サービス層エンティティは、ターゲットリソースのセットでコマンドの原子的実行を実施するように、複数の他のサービス層エンティティにリクエストを送信してよい。第1サービス層エンティティが、コマンドがターゲットリソースのセットで正常に実行されたことを示す応答を受信する場合、第1サービス層エンティティは、分散トランザクションをコミットするように、複数の他のサービス層エンティティにリクエストを送信してよい。次に、第1サービス層エンティティは、アプリケーションに分散トランザクションが正常に実施されたことを示す応答を送信してよい。
【0005】
別の態様では、第1サービス層エンティティは、アプリケーションから分散トランザクションのリクエストを受信すると、第1サービス層エンティティのメモリ内に、分散トランザクションを表し、かつ分散トランザクションの状態に関する情報を含むリソースを生成してもよい。当該リソースは、アプリケーションがトランザクションのステータスを監視できるように、アプリケーションが通信ネットワークを介してアクセス可能なものであってよい。当該リソースは、トランザクションを一意に識別するトランザクション識別子属性と、分散トランザクションの状態に関する情報が保存されているトランザクション状態属性を含んでよい。当該リソースは、第1サービス層エンティティが分散トランザクションのリクエストの処理をいつ開始するかを制御する実行時間属性をさらに含んでもよい。
【0006】
本概要は、一部の概念を簡単に紹介するものであり、詳しくは以下の詳細な説明で説明する。本概要は、請求の範囲に記載される主題の主要な特徴または実質的な特徴を特定することも、請求の範囲に記載される主題の範囲を限定するために使用されることも意図していない。さらに、請求の範囲に記載される主題は、本開示のいずれかの部分に記載される、不利点の一部またはすべてを解決する限定事項にも限定されない。
【図面の簡単な説明】
【0007】
添付図面と併せて例として挙げられる以下の説明からより詳細な理解を得ることが可能である。
【0008】
【
図1】
図1は、サービス層をサポートする例示的プロトコルスタックを示す図である。
【
図2】
図2は、様々な種類のネットワークノードに展開されるM2M/IoTサービス層(Service Layer:SL)を示す図である。
【
図3】
図3は、oneM2Mアーキテクチャを示す図である。
【
図4】
図4は、oneM2M共通サービス機能を示す図である。
【
図5】
図5は、oneM2Mアーキテクチャによってサポートされる構成を示す図である。
【
図6】
図6は、oneM2M<transaction>リソースを示す図である。
【
図7】
図7は、oneM2Mトランザクション処理(成功例)を示す図である。
【
図8】
図8は、oneM2Mトランザクション処理(失敗例)を示す図である。
【
図9】
図9は、SLトランザクション管理の有用性を説明するスマートファクトリーユースケースを示す図である。
【
図10】
図10は、分散サービス層トランザクション(DSLT)の最小限のSLソリューションを示す図である。
【
図11】
図11は、DSLTの完全なSLソリューションを示す図である。
【
図13】
図13は、分散サービス層トランザクション管理機能(Distributed Service Layer Transaction Management Function:DSLT-MF)を示す図である。
【
図14】
図14は、分散サービス層トランザクションクライアント機能(Distributed Service Layer Transaction Client Function:DSLT-CF)を示す図である。
【
図15】
図15は、個々のDSLTに対する分散サービス層トランザクショントリガ機能(Distributed Service Layer Transaction Trigger Function:DSLT-TF)の処理を示す図である。
【
図16】
図16は、個々のDSLTに対するDSLT-MFの処理を示す図である。
【
図17】
図17は、個々のDSLT-CFに対するDSLT-CFの処理を示す図である。
【
図18】
図18は、DSLTシーケンスに対するDSLT-TFの処理を示す図である。
【
図19】
図19は、DSLTシーケンスに対するDSLT-MFの処理を示す図である。
【
図20】
図20は、DSLTシーケンスに対するDSLT-CFの処理を示す図である。
【
図21】
図21は、個々のDSLTプロシージャを示す図である。
【
図22】
図22は、DSLTシーケンスプロシージャを示す図である。
【
図23】
図23は、oneM2Mにおけるトランザクション管理共通サービス機能(Common Service Functions:CSF)のアーキテクチャの実施形態を示す図である。
【
図24】
図24は、oneM2MリソースのDSLT指向属性を示す図である。
【
図25】
図25は、oneM2M DSLTシーケンスリソースを示す図である。
【
図26】
図26は、oneM2M<group>リソースのDSLT拡張を示す図である。
【
図27-1】
図27-1は、oneM2M DSLTグループファンアウト(fanout)プロシージャを示す図である。
【
図27-2】
図27-2は、oneM2M DSLTグループファンアウト(fanout)プロシージャを示す図である。
【
図28-1】
図28-1は、oneM2M DSLTシーケンスプロシージャを示す図である。
【
図28-2】
図28-2は、oneM2M DSLTシーケンスプロシージャを示す図である。
【
図29】
図29は、サービス層トランザクションユーザーインターフェースを示す図である。
【
図30A】
図30Aは、通信ネットワークを含むM2M/IoT/WoT通信システムを示す図である。
【
図30B】
図30Bは、M2Mアプリケーション、M2Mゲートウェイデバイス、およびM2M端末デバイスならびに通信ネットワークにサービスを提供するフィールドドメインにおけるM2Mサービス層を示す図である。
【
図30C】
図30Cは、本明細書で記載される論理的エンティティのいずれかを実装するために使用することができる例示的装置を示す図である。
【
図30D】
図30Dは、本明細書で記載される論理的エンティティのいずれかを実装するために使用することができるコンピュータシステムまたはサーバのブロック図である。
【発明を実施するための形態】
【0009】
以下は、以下の説明に出現する可能性のある頭字語のリストである。特に指示がない限り、本明細書で使用される頭字語は、以下に記載された対応する用語を指す。
ADN:Application Dedicated Node(アプリケーション専用ノード)
AE:Application Entity(アプリケーションエンティティ)
API:Application Programming Interfaces(アプリケーションプログラミングインターフェース)
ASN:Application Service Node(アプリケーションサービスノード)
CSE:Common Service Entity(共通サービスエンティティ)
CSF:Common Service Function(共通サービス機能)
DSLT:Distributed Service Layer Transaction(分散サービス層トランザクション)
DSLT-CF:Distributed Service Layer Transaction Client Function(分散サービス層トランザクションクライアント機能)
DSLT-MF:Distributed Service Layer Transaction Management Function(分散サービス層トランザクション管理機能)
DSLT-TF:Distributed Service Layer Transaction Trigger Function(分散サービス層トランザクショントリガ機能)
DSLT-REQ:Distributed Service Layer Transaction Request(分散サービス層トランザクションリクエスト)
DSLT-TRIGGER:Distributed Service Layer Transaction Trigger Request(分散サービス層トランザクショントリガリクエスト)
IN:Infrastructure Network(インフラストラクチャネットワーク)
IoT:Internet of Things(モノのインターネット)
IP:Internet Protocol(インターネットプロトコル)
M2M:Machine to Machine(マシンツーマシン)
MN:Middle Node(ミドルノード)
NoDN:Non-oneM2M Node(非oneM2Mノード)
PoA:Point of Access(アクセスポイント)
ROA:Resource Oriented Architecture(リソース指向アーキテクチャ)
SL:Service Layer(サービス層)
URI:Uniform Resource Identifier(ユニフォームリソース識別子)
【0010】
また、以下の用語は、以下の説明で使用される場合があり、特に指示がない限り以下の意味を含んでよい。
【0011】
M2M/IoTサービス層は、アプリケーションプログラミングインターフェース(API)と下位ネットワークインターフェースとのセットを介してM2M/IoTアプリケーションおよびデバイス向けに付加価値サービスをサポートするソフトウェアミドルウェア層であってよい。
【0012】
M2M/IoTアプリケーションは、特定のM2M/IoTユースケース(例えば、eヘルス、スマートエネルギー、ホームオートメーション)を対象とするアプリケーションであってよい。
【0013】
サービス層エンティティは、M2M/IoTアプリケーション、またはM2M/IoTサービス層のインスタンスであってよい。
【0014】
サービス層リソースは、M2M/IoTサービス層によってホストされる一意にアドレス付け可能なオブジェクトであってよい。
【0015】
サービス層リクエストは、サービス層リソースを対象とするサービス層エンティティによって送出される操作であってよい。
【0016】
サービス層トランザクションは、全てが正常に実行されるか、またはいずれも実行されない、ユニットとして原子的に実施される必要があるサービス層リクエストのセットまたはシーケンスであってよい。
【0017】
分散サービス層トランザクションは、異なるネットワークノードでホストされる複数のサービス層エンティティによってホストされるリソースのセットを対象とするサービス層トランザクションであってよい。
【0018】
分散サービス層トランザクション管理機能は、分散サービス層トランザクションクライアント機能と相互作用でき、かつこれらの機能への分散サービス層トランザクションの原子的な処理を管理できるサービス層機能であってよい。
【0019】
分散サービス層トランザクションクライアント機能は、分散サービス層トランザクション管理機能と相互作用でき、かつ個々の分散サービス層トランザクションを受信して処理できるサービス層機能であってよい。
【0020】
分散サービス層トランザクショントリガ機能は、分散サービス層トランザクション管理機能と相互作用でき、かつ分散サービス層トランザクションを開始できるサービス層機能であってよい。
【0021】
分散サービス層トランザクショントリガリクエストは、分散サービス層トランザクショントリガ機能によって分散サービス層トランザクション管理機能に送信され、分散サービス層トランザクションを開始させるリクエストであってよい。
【0022】
分散サービス層トランザクションリクエストは、分散サービス層トランザクション管理機能によって分散サービス層トランザクションクライアント機能に配布され、分散サービス層トランザクションを実行させるリクエストであってよい。
【0023】
M2M(Machine-To-Machine)ネットワークまたはIoT(Internet of Things)ネットワークでは、サービス層(SL)は、特に、M2M/IoTデバイスおよびM2M/IoTアプリケーション向けに付加価値サービスを提供することを目的とする技術である。近年、いくつかの業界規格団体(例えば、oneM2M[oneM2M TS-0001 oneM2M Functional Architecture-V-3.0.0.]、ETSI[ETSI TS 102 690 Machine-to-Machine communications (M2M) Functional architecture V2.0.13.]、OCF[OCF - OIC Specifications, V1.1]、およびLWM2M[OMA LWM2M Specification,V1.0])が、インターネット/ウェブ、セルラー、企業内、および家庭内のネットワーク展開へのM2M/IoTデバイスおよびアプリケーションの統合に関連する課題に対処するためにM2M/IoT SLを開発している。
【0024】
M2M/IoTサービス層は、アプリケーションおよびデバイスがM2M/IoT指向性能群にアクセスできるようにする。いくつかの例としては、セキュリティ、課金、データ管理、デバイス管理、発見、プロビジョニングおよび接続管理が挙げられる。これらの性能は、M2M/IoT SLによってサポートされるメッセージフォーマット、リソース構成およびリソース表現を利用するアプリケーションプログラミングインターフェース(API)を介してアプリケーションが利用できるものである。
【0025】
プロトコルスタックの観点から、SLは典型的には、アプリケーションプロトコル層の上位に位置し、サポートしているアプリケーションに付加価値サービスを提供する。それゆえSLは、「ミドルウェア」サービスとして分類されることが多い。
図1は、アプリケーションプロトコル104とアプリケーション106との間の例示的なサービス層102を示す図である。
【0026】
展開の観点から、M2M/IoT SL102は、
図2に示すように、サーバ、ゲートウェイ、およびデバイスを含む様々な種類のネットワークノードで展開され得る。サービス層機能を実装またはサービス層のインスタンスを組み込む通信ネットワークのノード、サーバ、ゲートウェイ、デバイス、装置、または他の論理的エンティティはいずれも、本明細書においてはサービス層エンティティと称する場合がある。
【0027】
oneM2M規格[oneM2M TS-0001]では、のe-ヘルス、フリート管理、およびスマートホームなどの様々な「バーティカル」なM2Mシステムおよびアプリケーションによって利用することができる「ホリゾンタル」なサービスを提供することを目的とするM2M/IoT SLを定義している。oneM2M SLのアーキテクチャは、
図3に示すように、サービス層を採り入れて、4つの参照点をサポートする共通サービスエンティティ(Common Service Entity:CSE)302を画定する。Mca参照点は、アプリケーションエンティティ(Application Entity:AE)304とインターフェースする。Mcc参照点は、同一サービスプロバイダドメイン内の別のCSE306とインターフェースし、Mcc’参照点は、異なるサービスプロバイダドメインの別のCSEとインターフェースする。Mcn参照点は、下位ネットワークサービスエンティティ(Network Service Entity:NSE)とインターフェースする。NSE308は、デバイス管理、位置情報サービス、およびデバイストリガ等の下位ネットワークサービスをCSEに提供する。CSEは、「発見」、「データ管理およびリポジトリ」などの「共通サービス機能(CSF)」と呼ばれる複数の論理機能を含み、これらの機能を合わせてサービス層の機能が構成される。
図4はoneM2MによってサポートされるCSFを示す図である。通信ネットワークのノード、サーバ、ゲートウェイ、デバイス、装置、またはその他の論理的エンティティでホストされるCSEの各インスタンスは、本明細書においてはネットワークのサービス層エンティティと称する場合がある。
【0028】
oneM2Mアーキテクチャは、分散型アーキテクチャであり、M2M/IoTサービスを以下の種類のノードにわたって分散して展開することをサポートする。
・アプリケーションサービスノード(ASN)
ASNは、1つのCSEを含み、かつ少なくとも1つのアプリケーションエンティティ(AE)を含むノードである。例えば、ASNは、M2Mデバイス内に存在し得る。
・アプリケーション専用ノード(ADN)
ADNは、少なくとも1つのAEを含み、CSEを含まないノードである。例えば、アプリケーション専用ノードは、制約されたM2Mデバイス内に存在し得る。
・ミドルノード(MN)
MNは、1つのCSEを含み、かつゼロ以上のAEを含むノードである。例えば、MNは、M2Mゲートウェイに存在し得る。
・インフラストラクチャノード(IN)
INは、1つのCSEを含み、かつゼロ以上のAEを含むノードである。IN内のCSEは、他のノードタイプには適用されないCSE機能を含む場合がある。例えば、INは、M2Mサービスインフラストラクチャ内に存在し得る。
・非oneM2Mノード(NoDN)
非oneM2Mノードは、oneM2Mエンティティを(AEおよびCSEのいずれも)含まないノードである。このようなノードは、管理を含む相互動作目的のためにoneM2Mシステムに接続されたデバイスを意味する。
【0029】
oneM2Mシステム内でサポートされる種々のエンティティを相互接続する可能な構成を
図5に示す。
【0030】
近年、oneM2MはSLトランザクション向けのサポートを規定する取り組みを開始している。この取り組みは、oneM2M TR-0020, Study of service transactions and re-usable service layer context, V0.6.0に記載されている。現在までのところ、これまでに1つのソリューションが定義されている。以下はこのソリューションの概要である。
【0031】
<transaction>リソースは他のいずれかのリソースの子であり得る。これは、親リソースがトランザクションのターゲットであることを意味する。<transaction>リソースの状態に基づいて、oneM2Mプリミティブはターゲットリソースで実行される。<transaction>リソースの構成を
図6に示し、その属性を表1で説明する。
【表1】
【0032】
図7および
図8は、oneM2Mシステムにおいて、<transaction>リソースを使用して、どのようにトランザクションが処理されるかのフローを示す図である。
図7は、oneM2Mトランザクション処理の成功例を示す図である。
図8は、oneM2Mトランザクション処理の失敗例を示す図である。この処理は、1つのAEおよび複数のCSEによって行われる。AEは、複数のCSEにわたるトランザクションの調整を開始および管理する。各ステップの詳細な説明を以下に示す。
【0033】
図7および
図8のステップ1では、AE702は、複数のCSEに<transaction>リソースを生成する。<transaction>は、各ターゲットリソースの子リソースとして生成される。<transaction>リソースは、トランザクションの実行時間、および実行されるプリミティブを含む。トランザクションのコミットが調整されることを保証するために、それぞれのCSEの実行時間は同じである。プリミティブは、発信元の識別情報、操作、および実行されるプリミティブの内容をさらに含む。
【0034】
図7および
図8のステップ2では、<transaction>生成リクエストを受信した各CSE704、706および708において、CSE704、706および708は、<transaction>を正常に実行できるかどうかをチェックする。このチェックは、アクセス権チェックを含んでよく、プリミティブのフォーマットが適正であるかをチェックし、かつ所定の時間で実行が実施可能であるかをチェックする。
【0035】
図7のステップ3(成功)では、チェックが成功した場合、CSE704、706および708は、<transaction>リソースが生成されて、<transaction>リソースの親リソースが予約状態になっていることをAE702に応答する。予約状態では、リソースは、特定の実行時間でのプリミティブの正常実行に障害をもたらす可能性のある他のいずれのリクエストも拒否する。
【0036】
図7のステップ4(成功)では、各CSE704、706および708は、特定の実行時間に対応するプリミティブを実行する。
【0037】
図8のステップ3(失敗)では、CSEでのいずれか(この例では、CSE708)でチェックが失敗した場合は、CSE708は、失敗応答でAEに応答する。失敗応答を受信した場合、AE702は、全てのCSEにわたってトランザクションが原子的に実施できないと判断する。そのため、AE702は、<transaction>リソースを正常に生成した各CSE(この例では、CSE704および706)に削除リクエストを送信し、スケジュールされた実行時間前に<transaction>リソースを削除する。これによりトランザクションがキャンセルされる。
【0038】
図8のステップ4(失敗)では、<transaction>を正常に生成したCSE(この例では、CSE704および706)は、トランザクションを削除する。
【0039】
以下のユースケースは、M2M/IoTネットワークにおけるトランザクション処理性能の必要性を理解する上で有用である。複数のロボット904、906および908を備える
図9の製造組立ライン902などのスマートファクトリーユースケースを考察する。これらのロボット904、906および908は、組立ラインによって製造される製品を適切に組み立てるために互いに緊密な同期を維持する必要がある。ロボットの設定のうち1つを修正する場合、通常、ロボットが互いに同調した操作を続けるよう、同じ組立ラインで動作している他のロボットに対しても対応する修正を要する。工場内の全ての組立ラインは、工場のコントロール室に位置する対応する遠隔管理ステーションから、技術者によって監視および制御されている。それぞれの組立ラインのロボットは、これらのステーションから、技術者によって遠隔的に監視および制御することができる。ロボットのメンテナンスを実施するために組立ラインを停止すると著しく費用がかかるので、工場では、停止時間を最小限に抑え、さらに組立ライン稼働中にメンテナンスを実施する方法も模索している。このため、技術者は、ロボットの設定変更を厳密に調整して行う性能を望んでいる。また、技術者は、組立ラインのロボットの動作が特定の正常範囲を逸脱したという検出に基づいてこれらの更新をトリガする性能も望んでいる。これが発生した場合、ロボット904、906および908の設定の構成に対する更新をトリガし、状況が悪化する前に修復することを技術者は望んでいる。そのためには、トリガイベントに基づいてロボットの設定を変更する分散トランザクションを送信する性能が必要である。また、ロボットが同調する動作を維持したまま、組立ラインが停止することなく機能を続行するよう、このトランザクションで複数のロボット904、906および908の設定を原子的に更新させる必要がある。そうすることで、技術者は、全てのロボットが設定を正常に変更できる場合にのみ、ロボット904、906および908の設定が変更されることが保証される。1つまたは複数のロボットが、それらの設定を正常に変更できない場合は、いずれのロボットの設定も変更されない。これにより、組立ラインにおいてロボットが同調して動作しなくなった状態になることを回避できる。技術者は、ロボットに対するこれらの原子的なトランザクションの管理を調整するために複雑なアプリケーションを開発するのではなく、こうしたIoTサービスプラットフォームのトランザクション管理性能の複雑性が軽減されることを望んでいる。
【0040】
現在までのところ、分散リソースのセットを対象とする原子的なトランザクションを実施することの複雑性および負担は、これらのトランザクションを開始するアプリケーション、および、これらのアプリケーションを構築して導入する開発者の肩に直接的にかかっている。膨大な数の分散デバイスを含む最近のIoTネットワーク展開の大きさと複雑性の増大によって、これらのアプリケーションおよび開発者に与えるこの負担はさらに大きくなっている。このため、最近では、oneM2MなどのIoT/M2Mサービス層技術により、分散トランザクションの管理によってアプリケーションを支援する必要性が認識されている。
【0041】
これまでに、分散サービス層トランザクション(DSLT)の管理のために、極めて基本的かつ最小限のSL中心ソリューションのみが規定されている。例えば、oneM2M[oneM2M TR-0020]にて規定されている現行のソリューションは、DSLTを管理するために、依然としてアプリケーションに大きく依存している。アプリケーションの役割は、依然として、DSLTを構成する個々のリクエストのそれぞれを開始し、個々のターゲットリソースにこれらのリクエストを送信することである。アプリケーションの役割は、依然として、これらの個々のリクエストのそれぞれの進行状況を監視し、それらのいずれかが失敗になるかどうか、およびDSLT全体を中止する必要があるかどうかを判断することである。DSLTを中止する必要がある場合、アプリケーションは、キャンセルリクエストを送信する必要があるターゲットを追跡しなければならない。アプリケーションの役割は、さらに、DSLTの実行時間を追跡し、DSLTを構成する個々のリクエストが、実行時間が経過する前に全てキャンセルされるように、このタイマーが満了する前にこれらのキャンセルリクエストの送信が行われることを確実にすることである。したがって、
図10に示すように、DSLTを管理するアプリケーションには、大幅なオーバーヘッドおよび負担が依然として存在する。
【0042】
図10のステップ1では、アプリケーション1002は、複数のデバイス1004、1006および1008にトランザクションリクエストを送信する。
【0043】
図10のステップ2では、デバイス1004、1006および1008は、トランザクションを正常に実行できるかどうかチェックする。
【0044】
図10のステップ3では、デバイス1004、1006および1008は、アプリケーション1002に応答して、トランザクションを実行できるがどうかを示す。この例では、デバイス1008はトランザクションを実行することができない。
【0045】
図10のステップ4では、デバイスの1つ(デバイス1008)がトランザクションの実行ができないので、その他のデバイス(デバイス1004および1006)でのトランザクションが中止される。
【0046】
本明細書では、DSLTの処理をそれら自体で管理しなければならないというアプリケーションの複雑さおよび負担を軽減するために、DSLT処理性能をサポートする分散サービス層トランザクション(DSLT)サービスを説明する。DSLT処理性能は、アプリケーションに代わってDSLTの原子的処理を管理するDSLTサービス性能と、アプリケーションに代わってDSLTシーケンスの原子的処理を管理するDSLTサービス性能と、DSLTまたはDSLTシーケンスを構成する個々のリクエストのスケジューリングを調整するDSLTサービス性能と、DSLTまたはDSLTシーケンスの実行基準をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの再伝送ポリシーをアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの完了基準をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスの優先順位をアプリケーションが定義できるようにするDSLTサービス性能と、DSLTまたはDSLTシーケンスを開始するためのシンプルなRESTful APIをアプリケーションに提供するDSLTサービス性能とを含んでよい。
【0047】
アプリケーションに代わってDSLTの原子的処理を管理するDSLTサービス性能に関しては、サービスは、それ自体が分散可能であり、別々のネットワークノードでホストされる複数のサービス層エンティティにわたって展開可能であるDSLT管理機能およびDSLTクライアント機能で構成されてよい。DSLTを開始し、かつDSLTの処理完了時のサービスからの応答を受信するために、アプリケーションは単一のリクエストをサービスに送信するだけでよい。サービスは、アプリケーションが個々のDSLTターゲットのいずれかと通信すること、またはそのライフサイクルを通してDSLTを管理することを必要としなくてもよい。サービスは、処理ステータスを提供するために使用されるDSLTの処理中にDSLTの状態を保持し、障害が発生する場合にはDSLTのロールバックを可能にすることができる。サービスは、障害が発生した場合に、DSLTの原子性要件を満たすことができるよう個々のリクエストのロールバックおよび中止を実施できるように、DSLTに関連付けられた個々のリクエストの分散したセットの正常な配布および実行を管理してよい。
【0048】
アプリケーションに代わってDSLTシーケンスの原子的処理を管理するDSLTサービス性能に関しては、DSLTシーケンスは、アプリケーションに代わって、サービスによって原子的に順序付けられ、実施することができるDSLTのセットで構成されてよい。サービスは、障害が発生した場合に、シーケンスの原子性要件を満たすことができるようシーケンスのロールバックおよび中止を実施することができるように、DSLTシーケンスの正常な実行を管理してよい。
【0049】
設定可能なDSLTポリシーエンジンをサポートするDSLTサービス性能に関しては、ポリシーエンジンは、プログラム可能なDSLTポリシーのセットによって設定されてよい。ポリシーエンジンは、スケジューリングポリシー、再試行ポリシー、優先順位付けポリシー、実行基準ポリシー、完了基準ポリシー、およびシーケンスポリシーなどのDSLTポリシーをサポートしてもよい。DSLTポリシーは、サービスがDSLTをどう処理するかを制御するルールを定義してもよい。
【0050】
アプリケーションの要件を満たし、DSLTターゲット(例えば、間欠的なネットワークコネクティビティのみを有するIoTデバイス)の要件も満たすタイムウィンドウで実施されるよう、DSLTまたはDSLTのシーケンスを構成する個々のリクエストのスケジューリングを調整するDSLTサービス性能に関しては、サービスは、DSLTがそのターゲットデバイスの全てに対して正常に実施され、DSLTの原子的な実行要件を満たすことができるようにDSLTのターゲットであるIoTデバイスに到達可能なスケジュールを調整して、必要とされるデバイスの全てがオンラインおよび利用可能であることを保証するように支援してよい。サービスは、同じリソースを対象とする複数のDSLTまたはDSLTシーケンスが同時に実行しないことを保証してもよいが、それは、それらのターゲットリソースのロックを各々が取得し、それらの対応するトランザクションが独立的かつ互いに干渉しないように実施されることを保証しなければならないためである。
【0051】
DSLTまたはDSLTシーケンスの実行基準をアプリケーションが定義できるようにするDSLTサービス性能に関しては、実行基準は、DSLTの実行を行うに適している時を判断してトリガするために、サービスによって使用されてよい。実行基準は、1つまたは複数の規定されたSL属性またはメタデータの閾値/値、1つまたは複数のデバイスの状態または1つまたは複数のリソース状態などの過去および現在の状況の解析に基づくSL定義済みイベント、アプリケーションまたはサードパーティのサービスまたは下位ネットワークからSLが受信または検出する外部トリガ要件、もしくは別のSLトランザクションの正常な完了を含んでもよい。
【0052】
DSLTまたはDSLTシーケンスの再伝送ポリシーをアプリケーションが定義できるようにするDSLTサービス性能に関しては、再伝送ポリシーは、DSLTの実行の失敗により、サービスのDSLT再試行を行うに適している時を判断するために、サービスによって使用されてよい。
【0053】
DSLTまたはDSLTシーケンスの完了基準をアプリケーションが定義できるようにするDSLTサービス性能に関しては、完了基準は、DSLTを構成する個々のリクエスト結果をもとに、DSLTの実行が成功した時または成功しなかった時を判断するために、サービスによって使用されてよい。例えば、正常な完了は、一定のタイムウィンドウ内での完了を要件とし得る。または、一部のDSLTは、リクエストのサブセットが正常に完了することのみを要件とし得るが、その他のDSLTは、リクエストの全てが正常であることを要件とし得る。
【0054】
DSLTまたはDSLTシーケンスの優先順位をアプリケーションが定義できるようにするDSLTサービス性能に関しては、優先順位は、DSLTを相互に順位付けし、必要な場合(例えば、DSLTが同じターゲットを共有し、それらの実行をシリアル化する必要がある場合)は、この順位付けに基づいてそれらの実行を順序付けするために、サービスによって使用されてよい。
【0055】
DSLTまたはDSLTシーケンスを開始するためのシンプルなRESTful APIをアプリケーションに提供するDSLTサービス性能に関しては、APIはDSLTごとにSLトランザクション識別子を定義することができる。APIはDSLTシーケンスにSLシーケンス識別子を定義してもよい。また、APIは、アプリケーションからの非ブロッキングリクエスト性能をサポートして、DSLTまたはDSLTシーケンスを開始し、DSLTまたはDSLTシーケンスのステータスを参照し、もしくはDSLTまたはDSLTシーケンスを中止することができる。
【0056】
図11は、開示されるDSLTサービスによって達成され得る複雑性の低減をアプリケーションの観点から示す図である。
【0057】
図11のステップ1では、アプリケーション1002は、サーバ1102にトランザクションのリクエストを送信する。サーバ1102は、DSLTサービスを具備しているサービス層を備えるIoTサーバ1102であってもよい。サーバ1102は、トランザクションの管理を担う。(
図10で行われているように)アプリケーション1002からサーバ1102にトランザクションの管理を移行することによって、アプリケーション1002での操作を簡略化することができる。
【0058】
図11のステップ2では、サーバ1102は、複数のデバイス1004、1006および1008にDSLTリクエストを配布する。
【0059】
図11のステップ3では、デバイス1004、1006および1008は、トランザクションを正常に実行できるかどうかチェックする。
【0060】
図11のステップ4では、デバイス1004、1006および1008は、サーバに応答して、トランザクションを実行できるかどうかを示す。この例では、デバイスの1つ(デバイス1008)は、トランザクションを実行することができない。
【0061】
図11のステップ5では、デバイスの1つ(デバイス1008)がトランザクションを実行することができないので、その他のデバイス(デバイス1004および1006)でのトランザクションが中止される。
【0062】
図11のステップ6では、サーバ1102はアプリケーション1002に応答を送信する。
【0063】
図11を
図10と比較すると、DSLTを管理するIoTアプリケーション1002のオーバーヘッドおよび複雑性が大幅に低減されている。記載されるDSLTサービスを用いることで、IoTアプリケーション1002は単一のリクエストと応答でDSLTを実施できるが、既存のソリューションでは、各トランザクションの状態を管理するためにより多くのメッセージおよび内部ロジックが必要である。
【0064】
開示されるDSLTサービスの詳細については以下に記載する。
【0065】
(DSLTアーキテクチャ)
一実施形態では、DSLTサービスは、分散サービス層トランザクショントリガ機能(DSLT-TF)1202、分散サービス層トランザクション管理機能(DSLT-MF)1204および1206、ならびに分散サービス層トランザクションクライアント機能(DSLT-CF)1208、1210、1212および1214を含んでよい。
【0066】
DSLT-TF1202を使用して、DSLT-MF1204へのDSLTトリガリクエスト(DSLT-TRIGGER)1216を開始してよく、これにより、DSLT-MF1204はDSLT-REQ1218を配布および管理してよい。DSLT-TF1202は、軽量かつ薄型の機能であり、IoTサーバ、IoTゲートウェイ、IoTデバイス、およびIoTアプリケーションなどの様々な種類のネットワークノードでホストされてよい。
【0067】
DSLT-MF1204(および1206)は、サービスとして実装されてよい。サービスは独立したサービスであるか、あるいはIoTサービス層のサブサービスとして実装されるかのいずれかであってよい。DSLT-MFサービス1204は、IoTサーバ、IoTゲートウェイ、IoTデバイスなどの様々な種類のネットワークノードでホストされてよい。DSLT-MFサービス1204は、分散しているDSLT-CFのセットへのDSLTの配布および処理をトリガするリクエストを受信してよい。DSLT-MF1204によって受信される各DSLT-TRIGGERは、1つまたは複数のターゲットを対象とする1つまたは複数のSL操作で構成されてよい。DSLT-MF1204は、その関連するSLリクエストの全てを原子的に処理することによってDSLT-TRIGGER1216を処理する。必要であれば、DSLT-MF1204は、DSLT-TRIGGER1216によって規定されたSLリクエストが分散しているSLエンティティのセットに正確に配布され、ターゲットSLエンティティの全てによって正常に実行されるか、または失敗した場合には、それらのいずれによっても実行されないことを保証する。明確にするため、DSLT-MF1204からDSLT-CF1208および1210へと配布されるDSLTリクエストは、DSLT-REQ1218と呼ぶ。
【0068】
DSLT-CF1210は、ターゲットとして機能し、DSLT-MF1204から受信する配布されたDSLT-REQ1218を処理する。DSLT-CF1208は、IoTサーバ、IoTゲートウェイ、IoTデバイスおよびIoTアプリケーションなどの様々な種類のネットワークノードでホストされてよい。
【0069】
例えば、
図12に示すように、DSLT-TF1202をサポートするIoTアプリケーション1230は、IoTサーバ1232でホストされているDSLT-MF1204にDSLT-TRIGGER1216を送信して、DSLT-MF1204に原子的なDSLT-REQ1218および1219のセットを配布させ、分散しているIoTデバイス1234および1236のセット上のアクチュエータ(例えば、電子スイッチ)を更新してもよい。DSLT-MF1204は、各デバイスでホストされているDSLT-CF1208および1210にDSLT-REQ1218および1219を配布してよく、また、それら全てがDSLT-REQ1218および1219を正常に実施してそれらのアクチュエータを更新するか、またはそれらのいずれも更新を実施しないことを保証してもよい。そうすることで、全てのデバイスの設定の整合性を維持する。
【0070】
図12に示すような、例えば、IoTゲートウェイならびにIoTデバイス1238および1240が関与するようなマルチホップシナリオの場合には、IoTゲートウェイ1242のDSLT-MF1206を使用して、IoTサーバのDSLT-MF1204から配布されたDSLT-TRIGGER1222を受信してよい。そのDSLT-TRIGGERがIoTデバイス1238および1240によってホストされているリソースを対象とすることを検出した場合、IoTゲートウェイのDSLT-MF1206を使用して、IoTデバイスのDSLT-CF1212および1214の両方にDSLT-REQ1224および1226を配布してもよい。これは、DSLTサービスの分散特性、および複数のDSLT-MFをどのように使用してシステム全体にわたってDSLTを原子的に処理するかを示している。
【0071】
DSLT-TF1202は、DSLT-MF1204へのDSLTリクエストを開始し、DSLT-MF1204から返信されるDSLT応答を受信する性能をサポートしてよいが、他のいずれのDSLT処理性能もサポートする必要はない。
【0072】
DSLT-MF1204は、DSLTを処理するためのいくつかの性能をサポートしてもよい。DSLT-MFの性能のセットを
図13に示す。DSLT-MF1204は、DSLT-MF API1302、DSLT-MF処理1304、DSLT-MFシーケンス処理1306、DSLT-MFポリシーエンジン1308およびDSLT-MFスケジューラ1310を含んでよい。
【0073】
同様に、DSLT-CF1210は、
図14に示すように、DSLTを処理する対応する一連の性能をサポートしてもよい。DSLT-CF1210は、DSLT-CF API1402、DSLT-CF処理1404およびDSLT-CFシーケンス処理1406を含んでよい。
【0074】
以下のサブセクションでは、DSLT-MF1204およびDSLT-CF1210のそれぞれの性能のより詳しい定義を提供する。
【0075】
(DSLT API)
DSLT-MF1204へのDSL関連リクエストを開始するためにDSLT-TFによって使用され得るAPI1302を、DSLT-MF1204はサポートしてよい。サポートされるリクエストのタイプとしては、新規のDSLTを開始するタイプ(すなわちDSLT-TRIGGER)、既存のDSLTのステータスを参照するタイプ(すなわちDSLT-QUERY)、および未処理のDSLTを中止するタイプ(DSLT-ABORT)を含んでよい。API1302はまた、どのようにDSLT-MFがDSLTを処理し、スケジュールするかを制御するためのルールを定義するポリシーを設定するために使用されてもよい。このAPI1302は、DSLT-MF1204によってホストされているDSLT関連メッセージパラメータおよび/またはリソースで構成されるRESTfulインターフェースとしてサポートされてよい。
【0076】
DSLT-CF1210も同様に、API1402をサポートしてよい。このAPI1402は、DSLT-CF1210にDSLT関連リクエストを送信するために、DSLT-MF1204によって使用されてよい。サポートされるリクエストのタイプとしては、新規のDSLTをDSLT-CF1210に転送するタイプ(すなわちDSLT-REQ)、既存のDSLTのステータスを参照するタイプ(DSLT-QUERY)、およびDSLT-CF1210が処理している未処理のDSLTを中止するタイプ(DSLT-ABORT)を含んでよい。このAPI1402は、DSLT-CF1210によってホストされているDSLT関連メッセージパラメータおよび/またはリソースで構成されるRESTfulインターフェースとしてサポートされてよい。
【0077】
(DSLT APIリソース)
一実施例では、以下のリソースタイプがDSLT-MF1204によってサポートされてよい。
【表2】
【0078】
(DSLT APIメッセージパラメータ)
DSLTメッセージパラメータは、DSLT-TRIGGER、DSLT-SEQ-TRIGGER、DSLT-REQ、DSLT-QUERYおよびDSLT-ABORTなどの様々なタイプのDSLTメッセージに適用できるものであってよい。これらの種々のDSLTメッセージタイプは、CRUD操作およびいくつかのDSLTメッセージパラメータを使用して、各DSLTメッセージタイプが実装され得るRESTful APIにマップされてよい。
【表3】
【0079】
単一のDSLTリクエストに加えて、DSLTシーケンスを形成するために2つまたはそれ以上のDSLTが組み合わされてもよい。DSLTシーケンスは、DSLTの順序付けリストを規定する。複数のDSLTは、単一のSLリクエスト内で一緒にまとめて処理されるか、あるいはDSLTシーケンスは、同じ値を有するDSLTシーケンス識別子を使用して互いに関連付けられてもよい。DSLT-MF1204ならびにDSLT-CF1210および1208は協働して、DSLTシーケンスを原子的に処理および実行してよい。処理は、個々のDSLTの原子的な実行および全シーケンスの原子的な処理を含む。したがって、個々のDSLTのいずれかが正常に完了しない場合は、DSLTシーケンスによって対象とされるいずれのリソースも、DSLTシーケンスの実行開始前と同じ元の状態に戻されるように、DSLT-MF1204ならびにDSLT-CF1210および1208は、シーケンス内の全てのDSLTのロールバックをサポートしてよい。
【0080】
以下は、DSLTシーケンスに関連するメッセージパラメータのセットである。
【表4】
【0081】
(DSLT API識別子)
個々のDSLTのSL識別子を表7に示す。DSLTシーケンスの識別子を表6に示す。これらのDSLT識別子の構成は、表5に示すような複数のコンポーネントで構成されてよい。識別子は、サービスプロバイダコンポーネント(SP-ID)、DSLT-MFコンポーネント(DSLT-MF-ID)、DSLTシーケンスコンポーネント(DSLT-SEQ-ID)、DSLTコンポーネント(DSLT-ID)およびSLリクエストIDコンポーネント(SL-REQ-ID)で構成されてよい。
【0082】
DSLTがシステム内のどこで使用されるかによって、異なるフォーマットと一意性要件が存在してもよい。例えば、DSLTが、DSLT-MF1204がホストされているのと同じIoTサービスプロバイダドメイン内でホストされているDSLT-CFを対象とするためだけに使用される場合、DSLT識別子の一意性要件はSP-IDコンポーネントを必要としなくてもよい。一方で、DSLTが、DSLT-MF1204とは異なるIoTサービスプロバイダドメイン内でホストされているDSLT-CFを対象としている場合、DSLTは、SLインスタンス全体にわたっておよびサービスプロバイダドメイン全体にわたって一意であり、かつSP-IDを含む識別子を必要としてもよい。
【表5】
【表6】
【表7】
【0083】
(DSLT処理性能)
個々のDSLTの処理方法およびDSLTシーケンスの処理方法について以下で説明する。これらの方法のそれぞれは、DSLT-TF1202、DSLT-MF1204およびDSLT-CF1210によって実施される動作を有する。それぞれの動作は、以下の説明で明確にされる。
【0084】
(個々のDSLT処理)
個々のDSLTは、DSLT-MF1204にDSLT-TRIGGERリクエスト1216を送信することで、DSLT-TF1202によって開始される1つのDSLTで構成されてよい。次に、DSLT-MF1204は、DSLT-TRIGGERリクエスト1216を処理する。この処理では、DSLT-MF1204が、DSLTのターゲットである分散しているSLエンティティのセットに、複数のDSLT-REQ1218および1219を配布する。DSLT-REQを受信する各SLエンティティは、DSLT-REQを処理することができるDSLT-CF1208および1210をホストしている。DSLT-MF1204は、配布したDSLT-REQ1219および1218のセットを管理し、それらが原子的に処理されることを保証する。完了すると、DSLT-MF1204は、DSLT-TRIGGERリクエスト1216を発信したDSLT-TF1202に応答を返す。この応答は、DSLTの結果を含む。
【0085】
個々のDSLTを処理する方法全体は、DSLTを開始するDSLT-TF1202、DSLTの処理を管理するDSLT-MF1204、およびDSLTを規定した操作をターゲットリソースで実施するDSLT-CF1208および1210、で構成される3つの好適な方法に細分することが可能である。これらの各方法の説明を、以下のフロー図に記載する。
【0086】
図15は、個々のDSLTに対するDSLT-TFの処理を示す図である。
【0087】
図15のステップ1では、DSLT-TF1202をホストしているSLエンティティ(例えば、アプリケーション)1230においてDSLTのトリガ要件(例えば、アプリケーション固有イベント)が発生する。
【0088】
図15のステップ2では、DSLT-TF1202はDSLT-TRIGGERリクエストを生成し、DSLT-MF1204をホストしているSLエンティティに、該リクエストを送信する。これにより、DSLT-MF1204は、SLエンティティの代わりにDSLT処理を実施できる。DSLT-TF1202は、DSLT-MF1204がDSLT処理の完了を示す応答を返してくるのを待つ。
【0089】
図15のステップ3aでは、DSLT-MF1204はDSLT-TF1202に、DSLT処理が完了したことを応答し、この処理のステータスを含める。
【0090】
図15のステップ3bでは、DSLT-TF1202はDSLT-MF1204からの応答を待ってタイムアウトする。DSLT-TF1202は、DSLT-MF1204にDSLT-TRIGGERを再送信することによってDSLTを再試行する。
【0091】
図15のステップ3cでは、DSLT-TF1202はDSLTリクエストの中止を決定する。この決定は、DSLT-TF1202が再試行を望まないと決定した後のタイムアウトに起因するものであってもよい。または、この決定は、アプリケーション固有の理由などの他の要因に基づくものであってもよい。
【0092】
図15のステップ4では、DSLT-TF1202は、DSLT-MF1204によって返されたDSLTの結果をチェックする。
【0093】
図15のステップ5aでは、DSLTは、DSLT-MF1204によって正常に処理された。DSLT-TF1202は、DSLTが完了したとみなしてよい。
【0094】
図15のステップ5bでは、DSLTは正常に処理されなかった。DSLT-TF1202は、DSLT-MF1204にDSLTの処理を再試行させるために、DSLT-MF1204にDSLT-TRIGGERリクエストを再発行することによるDSLTの再試行を決定する。
【0095】
図15のステップ5cでは、DSLTは正常に処理されなかった。DSLT-TF1202は、再試行ではなく、DSLTリクエストの中止を決定する。
【0096】
図15のステップ6では、DSLTが正常に処理されて、DSLT-TF1202は、DSLTトリガリクエストを起動したエンティティ(例えば、アプリケーション)にその結果を返す。
【0097】
図15のステップ7では、DSLT-TFはDSLTの中止を決定した。DSLT-TF1202が、DSLT-MF1204から応答を受信したか否かによって、DSLT-TF1202は、DSLTの中止を決定したことを通知するために、DSLT-MF1204に中止リクエストを送信することを決定してよい。
【0098】
図16は、個々のDSLTに対するDSLT-MF1204の処理を示す図である。
【0099】
図16のステップ1では、DSLT-TF1202をホストしているSLエンティティは、DSLT-MF1204をホストしているSLエンティティに、DSLT-TRIGGERリクエストを送信して、DSLTを開始する。
【0100】
図16のステップ2では、DSLT-MF1204は、リクエストを処理し、DSLT-TRIGGERによって対象とされているDSLT-CF1208および1210のそれぞれに、DSLT-REQを配布する。DSLT-MF1204は、DSLT-CF1208および1210のそれぞれから、ターゲットリソースのロックを正常に取得したことを示す応答を待つ。
【0101】
図16のステップ3aでは、DSLT-MF1204は、DSLT-CF1208および1210の全て(または定義された完了基準に応じたサブセット)がターゲットリソースのロックを正常に取得できたことを検出する。
【0102】
図16のステップ3bでは、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210からの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CFに、DSLT-REQを再送信することによってDSLTを再試行する。
【0103】
図16のステップ3cでは、DSLT-MF1204はDSLTリクエストの中止を決定する。この決定は、DSLT-MF1204が(例えば、再試行の最大数に到達して)再試行を望まないと決定した後のタイムアウトに起因するものであってよい。1つまたは複数のDSLT-CFがターゲットリソースのロックを正常に取得できなかったことを、DSLT-MF1204が検知する場合、DSLT-MF1204は、全てのターゲットDSLT-CF1208および1210にわたってDSLTを原子的に実施することができないので、DSLTの(定義された完了基準に応じて)中止を選択してもよい。DSLT-MF1204は、各DSLT-CFに実行コマンドを送信しないことを選択して、DSLTをタイムアウトさせることによってDSLTを中止するか、または各DSLT-CFに中止コマンドを明確に送信してよい。中止の決定は、1つまたは複数のDSLT-CFが到達可能でないなどの他の要因にも基づいてよい。
【0104】
図16のステップ4では、DSLT-MF1204は、DSLT-CFに実行コマンドを送信することによってDSLTによって規定された操作を実行するようにDSLT-CF1208および1210に命令する。DSLT-MF1204は、DSLT-CFのそれぞれから、ターゲットリソースで操作を正常に実行したことを示す応答を待つ。
【0105】
図16のステップ5aでは、DSLT-MF1204は、DSLT-CFの全て(または定義された完了基準に応じたサブセット)がターゲットリソースでDSLTによって規定された操作を正常に実行できたことを検出する。
【0106】
図16のステップ5bでは、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210からの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CFへの実行コマンドの送信を再試行する。
【0107】
図16のステップ5cでは、DSLT-MF1204はDSLTリクエストの中止を決定する。この決定は、DSLT-MF1204が(例えば、再実行の最大数に到達して)再試行を望まないと決定した後のタイムアウトに起因するものであってよい。または、この決定は、1つまたは複数のDSLT-CFが到達可能でないなどの他の要因に基づくものであってよい。DSLT-MF1204が、1つまたは複数のDSLT-CFがターゲットリソースで操作を正常に実行できなかったことを検出した場合、DSLT-MF1204は、全てのターゲットDSLT-CF1208および1210にわたってDSLTを原子的に実施することができないので、DSLTの(定義された完了基準に応じて)中止を選択してもよい。DSLT-MF1204は、各DSLT-CF1208および1210に実行コマンドを送信しないことを選択して、DSLTをタイムアウトさせることによってDSLTを中止するか、または各DSLT-CF1208および1210に中止コマンドを明確に送信してよい。
【0108】
図16のステップ6では、DSLT-MF1204は、DSLTによって規定された操作をコミットするようにDSLT-CF1208および1210に命令する。DSLT-MF1204は、DSLT-CF1208および1210のそれぞれから、ターゲットリソースで操作を正常にコミットしたことを示す応答を待つ。
【0109】
図16のステップ7aでは、DSLT-MF1204は、DSLT-CF1208および1210の全て(または定義された完了基準に応じたサブセット)がターゲットリソースでDSLTによって規定された操作の結果を正常にコミットできたことを検出する。
【0110】
図16のステップ7bでは、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210からの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CF1208および1210へのコミットコマンドの送信を再試行する。
【0111】
図16のステップ7cでは、DSLT-MF1204はDSLTリクエストの中止を決定する。この決定は、DSLT-MF1204が(例えば、再実行の最大数に到達して)再実行を望まないと決定した後のタイムアウトに起因するものであってよい。または、この決定は、1つまたは複数のDSLT-CF1208および1210が到達可能ではないなどの他の要因に基づくものであってよい。
【0112】
図16のステップ8では、DSLTが正常に処理されて、DSLT-MF1204は、DSLTをトリガしたDSLT-TF1202に、その結果を返す。
【0113】
図16のステップ9では、DSLT-MFはDSLTの中止を決定した。DSLT-MF1204が、DSLT-CF1208および1210から応答を受信したか否かによって、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210に明確な中止リクエストを送信することを決定し、DSLTの中止を決定したことを1つまたは複数のDSLT-CF1208および1210に通知してもよい。これにより、1つまたは複数のDSLT-CF1208および1210は、DSLTの処理を停止するプロセス、ターゲットリソースの状態を元の状態にロールバックするプロセス、またはターゲットリソースをアンロックするプロセスなど、任意の必要なプロセスを実施してもよい。
【0114】
図17は、個々のDSLT-CFに対するDSLT-CFの処理を示す。
【0115】
図17のステップ1では、DSLT-CF1210をホストしているSLエンティティは、DSLT-MF1204からDSLT-REQを受信する。
【0116】
図17のステップ2では、DSLT-CF1210がリクエストリソースのロックを試みる初期化処理ステップである。
【0117】
図17のステップ3aでは、DSLT-CF1210は、DSLT-REQによって対象とされるリソースのロックを(必要に応じて)正常に取得することができる。ロックリソースの状態がコミットされてアンロックされるまでロックリソースの取得もブロックされなければならない場合があるので、このブロッキングは、他のDSLT-REQからの全ての操作に適用され得る。
【0118】
図17のステップ3bでは、DSLT-CF1210は、タイムアウト期間が経過する前にターゲットリソースのロックを取得することができず、その後、DSLT-CF1210はタイムアウトを選択し、DSLT-REQを中止する。DSLT-CF1210は、DSLT-MF1204にこのタイムアウトを通知してよい。タイムアウト後、DSLT-CF1210は、DSLT-MF1204から再試行されたDSLT-REQを受信してもよく、この場合、DSLT-CF1210は、ステップ1からフローを繰り返してよい。
【0119】
図17のステップ3cでは、DSLT-CF1210は、明確な中止コマンドをDSLT-MF1204から受信し、その後、DSLT-CF1210はDSLT-REQを中止する。DSLT-CF1210がいずれかのターゲットリソースのロックを取得できていた場合、DSLT-CF1210は、これらのロックを解放し、DSLTの処理を停止する。DSLT-CFは、DSLT-MF1204から再試行されたDSLT-REQを受信してもよく、この場合、DSLT-CFは、ステップ1からフローを繰り返してよい。
【0120】
図17のステップ4では、ターゲットリソースのロックが、(必要に応じて)各DSLT-CFによって取得される。各DSLT-CFは、ロックが取得されたか、またはロックが必要でないことをDSLT-MF1204に通知する。DSLT-CF1210は、ターゲットリソースでDSLT規定操作を実行するコマンドをDSLT-MF1204から受信するまでこの状態で待つ。
【0121】
図17のステップ5aでは、DSLT-CF1210は、DSLT-MF1204から実行コマンド受信して、ターゲットリソースでDSLT規定操作の実行を正常に完了することができた。
【0122】
図17のステップ5bでは、DSLT-CF1210は、タイムアウト期間が経過する前にDSLT-MF1204から実行コマンドを受信せず、その後、DSLT-CF1210はDSLT-REQをタイムアウトし、リソースをアンロックする。DSLT-CF1210は、DSLT-MF1204にこのタイムアウトを通知してよい。タイムアウト後、DSLT-CF1210はDSLT-MF1204からDSLT-REQコマンドを受信してよい。
【0123】
図17のステップ5cでは、DSLT-CF1210はDSLT-REQの実行を中止する。これは、DSLT-MF1204から実行コマンドを受信し、ターゲットリソースでDSLT規定操作を正常に実行できないことに起因するものであってよい。あるいは、これは、DSLT-CF1210がDSLT-MF1204から中止コマンドを受信することに起因するものであってもよい。
【0124】
図17のステップ6では、DSLT-CF1210は実行を正常に完了した。DSLTは、DSLT-MF1204にその実行ステータスを通知し、DSLT-MF1204からのコミットコマンドを待つ。
【0125】
図17のステップ7aでは、DSLT-CF1210は、DSLT-MF1204からコミットコマンドを受信して、ターゲットリソースの状態を正常にコミットできたため、結果が耐久的に維持される。
【0126】
図17のステップ7bでは、DSLT-CF1210は、タイムアウト期間が経過する前にDSLT-MF1204からコミットコマンドを受信せず、その後、DSLT-CF1210はDSLT-REQをタイムアウトする。DSLT-CF1210は、他のDSLT-CFと整合した状態を維持するために中止するのではなく、更新されたリソースの状態を引き続きコミットする。DSLT-CF1210は、リソースのアンロックも行う。
【0127】
図17のステップ7cでは、DSLT-CF1210はDSLT-REQのコミットを中止する。これは、DSLT-MF1204からコミットコマンドを受信し、結果を正常にコミットできないことに起因するものであってよい。あるいは、これは、DSLT-CF1210がDSLT-MF1204から中止コマンドを受信することに起因するものであってもよい。
【0128】
図17のステップ8では、コミット後、DSLT-CF1210はDSLTによって対象とされたリソースのロックを解放してよい。この場合、DSLT-CF1210は、DSLT-MF1204にコミットの通知を送信してもよい。
【0129】
図17のステップ9では、DSLT-CF1210は、DSLTの中止およびロールバックを行い、DSLT-MF1204に、対応するステータスを返す。中止後、DSLT-CFはリソースのロックを解放する必要がある。この場合、DSLT-CF1210は、DSLT-MF1204に中止の通知を送信してもよい。
【0130】
(DSLTシーケンス処理)
DSLTシーケンスは、原子的な順序付けられたセットとして処理される必要がある複数の分散サービス層トランザクションで構成される。DSLTシーケンスは、DSLT-MF1204にDSLT-SEQ-TRIGGERリクエストを送信するDSLT-TF1202によってトリガされる。次に、DSLT-MF1204は、DSLTシーケンスを処理する。この処理では、DSLT-MF1204が、DSLTシーケンスのターゲットである分散しているSLエンティティのセットにDSLT-REQを配布する。DSLT-REQを受信する各SLエンティティは、DSLT-REQを処理することができるDSLT-CF1208および1210をホストしている。DSLT-MF1204は、シーケンス内のDSLT-REQの全てが原子的に順序付けられて処理されることを保証する。完了すると、DSLT-MF1204は、DSLT-SEQ-TRIGGERリクエストを発信したDSLT-TF1202に応答を返す。この応答は、DSLTシーケンスの結果を含む。
【0131】
DSLTシーケンスを処理する方法全体は、DSLTシーケンスを開始するDSLT-TF1202、DSLTシーケンスの処理を管理するDSLT-MF1204、およびシーケンス内の個々のDSLTによって規定された操作をターゲットリソースで実施するDSLT-CF1208および1210、で構成される3つの好適な方法に細分することが可能である。これらの各方法の説明を、以下のフロー図に記載する。
【0132】
図18は、DSLTシーケンスに対するDSLT-TF1202の処理を示す図である。
【0133】
図18のステップ1では、DSLT-TF1202をホストしているSLエンティティ(例えば、アプリケーション)においてDSLTシーケンストリガ要件(例えば、アプリケーション固有イベント)が発生する。
【0134】
図18のステップ2では、DSLT-TF1202はDSLT-SEQ-TRIGGERリクエストを生成し、DSLT-MF1204をホストしているSLエンティティに、該リクエストを送信する。これにより、DSLT-MF1204は、SLエンティティの代わりにDSLTシーケンス処理を実施できる。DSLT-TF1202は、DSLT-MF1204がDSLTシーケンス処理の完了を示す応答を返してくるのを待つ。
【0135】
図18のステップ3aでは、DSLT-MF1204はDSLT-TF1202に、DSLTシーケンス処理が完了したことを応答し、この処理のステータスを含める。
【0136】
図18のステップ3bでは、DSLT-TF1202はDSLT-MF1204からの応答を待ってタイムアウトする。DSLT-TF1202は、DSLT-MF1204にDSLT-SEQ-TRIGGERリクエストを再送信することによってDSLTシーケンスを再試行する。
【0137】
図18のステップ3cでは、DSLT-TF1202はDSLT-SEQ-TRIGGERリクエストの中止を決定する。この決定は、DSLT-TF1202が再試行を望まないと決定した後のタイムアウトに起因するものであってもよい。または、この決定は、アプリケーション固有の理由などの他の要因に基づくものであってもよい。
【0138】
図18のステップ4では、DSLT-TF1202は、DSLT-MF1204によって返されたDSLTシーケンスの結果をチェックする。
【0139】
図18のステップ5aでは、DSLTシーケンスは、DSLT-MF1204によって正常に処理された。DSLT-TF1202は、DSLTシーケンスが完了したとみなしてよい。
【0140】
図18のステップ5bでは、DSLTシーケンスは正常に処理されなかった。DSLT-TF1202は、DSLT-MF1204にDSLTの処理を再試行させるために、DSLT-MF1204にDSLT-SEQ-TRIGGERリクエストを再発行することによるDSLTシーケンスの再試行を決定する。
【0141】
図18のステップ5cでは、DSLTシーケンスは正常に処理されなかった。DSLT-TF1202は、再試行ではなく、DSLTシーケンスリクエストの中止を決定する。
【0142】
図18のステップ6では、DSLTシーケンスが正常に処理されて、DSLT-TF1202は、DSLTシーケンストリガリクエストを起動したエンティティ(例えば、アプリケーション)にその結果を返す。
【0143】
図18のステップ7では、DSLT-TF1202はDSLTシーケンスの中止を決定した。DSLT-TF1202が、DSLT-MF1204から応答を受信したか否かによって、DSLT-TF1202は、DSLTシーケンスの中止を決定したことを通知するために、DSLT-MF1204に中止リクエストを送信することを決定してよい。
【0144】
図19は、DSLTシーケンスに対するDSLT-MF1204の処理を示す図である。
【0145】
図19のステップ1では、DSLT-TF1202をホストしているSLエンティティは、DSLT-MF1204をホストしているSLエンティティに、DSLT-SEQ-TRIGGERリクエストを送信して、DSLTシーケンスを開始する。
【0146】
図19のステップ2では、DSLT-MF1204は、リクエストを処理し、DSLT-TRIGGERによって対象とされているDSLT-CF1208および1210のそれぞれに、シーケンス内の最初のDSLTに対応するDSLT-REQを配布する。DSLT-MF1204は、DSLT-CF1208および1210のそれぞれから、ターゲットリソースのロックを正常に取得したことを示す応答を待つ。
【0147】
図19のステップ3aでは、DSLT-MF1204は、DSLT-CF1208および1210の全て(または定義された完了基準に応じたサブセット)がターゲットリソースのロックを正常に取得できたことを検出する。
【0148】
図19のステップ3bでは、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210からの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CFに、シーケンス内の最初のDSLTに対応するDSLT-REQを再送信することによってDSLTを再試行する。
【0149】
図19のステップ3cでは、DSLT-MF1204は、シーケンス完了基準に応じて、シーケンス内の最初のDSLTリクエスト、および場合によっては全てのDSLTシーケンスの中止を決定する。この決定は、DSLT-MF1204が(例えば、再実行の最大数に到達して)再試行を望まないと決定した後のタイムアウトに起因するものであってよい。1つまたは複数のDSLT-CFがターゲットリソースのロックを正常に取得できなかったことをDSLT-MF1204が検知した場合、DSLT-MF1204は、全てのターゲットDSLT-CF1208および1210にわたってDSLTを原子的に実施することができないので、(定義された完了基準に応じて)DSLTの中止を選択してもよい。DSLT-MF1204は、各DSLT-CF1208および1210に実行コマンドを送信しないことを選択して、DSLTをタイムアウトさせることによってDSLTを中止するか、または各DSLT-CF1208および1210に中止コマンドを明確に送信してもよい。中止の決定は、1つまたは複数のDSLT-CFが到達可能でないなどの他の要因にも基づいてよい。
【0150】
図19のステップ4では、DSLT-MF1204は、DSLT-CF1208および1210に実行コマンドを送信することによって、シーケンス内の最初のDSLTによって規定された操作を実行するようにDSLT-CF1208および1210に命令する。DSLT-MF1204は、DSLT-CF1208および1210のそれぞれから、ターゲットリソースで操作を正常に実行したことを示す応答を待つ。
【0151】
図19のステップ5aでは、DSLT-MF1204は、DSLT-CF1208および1210の全て(または定義された完了基準に応じたサブセット)がターゲットリソースでDSLTによって規定された操作を正常に実行できたことを検出する。
【0152】
図19のステップ5bでは、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210からの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CFへの実行コマンドの送信を再試行する。
【0153】
図19のステップ5cでは、DSLT-MF1204は、シーケンス完了基準に応じて、シーケンス内の最初のDSLTリクエスト、および場合によっては全てのDSLTシーケンスの中止を決定する。この決定は、DSLT-MF1204が(例えば、再実行の最大数に到達して)再実行を望まないと決定した後のタイムアウトに起因するものであってよい。または、この決定は、1つまたは複数のDSLT-CF1208および1210が到達可能ではないなどの他の要因に基づくものであってもよい。1つまたは複数のDSLT-CFがターゲットリソースで操作を正常に実行できなかったことをDSLT-MF1204が検出する場合、DSLT-MF1204は、全てのターゲットDSLT-CF1208および1210にわたってDSLTを原子的に実施することができないので、(定義された完了基準に応じて)DSLTの中止を選択してもよい。DSLT-MF1204は、各DSLT-CF1208および1210に実行コマンドを送信しないことを選択して、DSLTをタイムアウトさせることによってDSLTを中止するか、または各DSLT-CF1208および1210に中止コマンドを明確に送信してもよい。
【0154】
図19のステップ6では、ステップ2で記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0155】
図19のステップ7aでは、ステップ3aで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0156】
図19のステップ7bでは、ステップ3bで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0157】
図19のステップ7cでは、ステップ3cで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0158】
図19のステップ8では、ステップ4で記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0159】
図19のステップ9aでは、ステップ5aで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0160】
図19のステップ9bでは、ステップ5bで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0161】
図19のステップ9cでは、ステップ5cで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0162】
図19のステップ10では、ステップ2で記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0163】
図19のステップ11aでは、ステップ3aで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0164】
図19のステップ11bでは、ステップ3bで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0165】
図19のステップ11cでは、ステップ3cで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0166】
図19のステップ12では、ステップ4で記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0167】
図19のステップ13aでは、ステップ5aで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0168】
図19のステップ13bでは、ステップ5bで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0169】
図19のステップ13cでは、ステップ5cで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0170】
図19のステップ14では、DSLT-MF1204が、DSLT-CF1208および1210の全て(または定義されたシーケンス完了基準に応じたサブセット)が、DSLTの全シーケンスによって規定されているように、全ターゲットリソースで操作を全て正常に実行できたことを検知する場合、DSLT-MF1204は、DSLT-CF1208および1210のそれぞれに、結果の状態を耐久的に維持するように、シーケンス内の該当する全てのDSLTのコミットを命令する。
【0171】
図19のステップ15aでは、DSLT-MF1204は、DSLT-CF1208および1210の全て(または定義された完了基準に応じたサブセット)がターゲットリソースでDSLTによって規定された操作の結果を正常にコミットできたことを検出する。
【0172】
図19のステップ15bでは、DSLT-MF1204は、1つまたは複数のDSLT-CFからの応答を待ってタイムアウトする。DSLT-MF1204は、タイムアウトした1つまたは複数のDSLT-CFへのコミットコマンドの送信を再試行する。
【0173】
図19のステップ15cでは、DSLT-MF1204は、シーケンス完了基準に基づいてDSLTシーケンスの中止を決定する。この決定は、DSLT-MF1204が(例えば、再試行の最大数に到達して)再試行を望まないと決定するタイムアウトに起因するものであってよい。または、この決定は、1つまたは複数のDSLT-CFが到達可能でないなどの他の要因に基づくものであってもよい。DSLT-MF1204が、1つまたは複数のDSLT-CFがターゲットリソースで操作を正常にコミットできなかったことを検出した場合、DSLT-MF1204は、全てのターゲットDSLT-CF1208および1210にわたってDSLTシーケンスを原子的に実施することができないので、(定義された完了基準に応じて)DSLTシーケンスの中止を選択してもよい。DSLT-MF1204は、DSLTシーケンスをトリガしたDSLT-TF1202にエラーを返すことによってDSLTシーケンスを中止してよい。
【0174】
図19のステップ16では、DSLTシーケンスが正常に処理されて、DSLT-MF1204は、DSLTシーケンスをトリガしたDSLT-TF1202に、その結果を返す。
【0175】
図19のステップ17では、DSLT-MFはDSLTシーケンスの中止を決定した。DSLT-MF1204が、DSLT-CF1208および1210から応答を受信したか否かによって、DSLT-MF1204は、1つまたは複数のDSLT-CF1208および1210に明確な中止リクエストを送信することを決定し、シーケンス内の1つまたは複数のDSLTの中止を決定したことを1つまたは複数のDSLT-CF1208および1210に通知してもよい。これにより、1つまたは複数のDSLT-CF1208および1210は、DSLTシーケンスの処理を停止するプロセス、ターゲットリソースの状態を元の状態にロールバックするプロセス、またはターゲットリソースをアンロックするプロセスなど、任意の必要なプロセスを実施してもよい。
【0176】
図20は、DSLTシーケンスに対するDSLT-CFの処理を示す図である。
【0177】
図20のステップ1では、DSLT-CF1210をホストしているSLエンティティは、DSLT-MF1204からシーケンス内の最初のDSLTに対応するDSLT-REQを受信する。あるいは、各DSLT-CF1208および1210は、単一のリクエストで一緒にまとめて処理されるシーケンス内の全てのDSLTを受信してもよい。
【0178】
図20のステップ2では、DSLT-CF1210はDSLT-REQを処理し、トランザクションが他のいずれのDSLT-REQからも独立し、かつ干渉されずに実施されることを保障するために、DSLT-REQによって対象とされるリソースのロックを(必要に応じて)試みる。DSLT-CF1210は、(必要に応じて)ロックが取得されるまでこの状態で待つ。DSLT-CF1210は、このロックをDSLTシーケンスに関連付けて、同じシーケンス内の各DSLT(その他のいずれのDSLTでもない)がリソースで動作することを可能にしてよい。このロックは、操作の種類によって左右されるものであってよい。例えば、操作が更新または削除である場合のみ、ターゲットリソースをロックする。しかし、一部のユースケースでは、取得を実施するDSLT-REQが実行される前に、別のDSLT-REQがリソースを変更または削除しないことを確実にするために、取得のためのロックも保証されてもよい。一旦、リソースが1つのDSLT-REQによってロックされると、このロックを使用して、他のDSLT-REQが該リソースにアクセスすることをブロックしてよい。ロックリソースの状態がコミットされてアンロックされるまでロックリソースの取得もブロックされる必要があり得るため、このブロッキングは、他のDSLT-REQからの全ての操作に適用できるものであってよい。
【0179】
図20のステップ3aでは、DSLT-CF1210は、DSLT-REQによって対象とされるリソースのロックを(必要に応じて)正常に取得することができる。ロックリソースの状態がコミットされてアンロックされるまでロックリソースの取得もブロックされる必要があり得るため、このブロッキングは、他のDSLT-REQからの全ての操作に適用できるものであってよい。
【0180】
図20のステップ3bでは、DSLT-CF1210は、タイムアウト期間が経過する前にターゲットリソースのロックを取得することができず、その後、DSLT-CF1210はタイムアウトしてDSLT-REQを中止することを選択する。DSLT-CF1210は、DSLT-MF1204にこのタイムアウトを通知してよい。タイムアウト後、DSLT-CFは、DSLT-MF1204から再試行されたDSLT-REQを受信してもよく、この場合、DSLT-CFは、ステップ1からフローを繰り返してよい。
【0181】
図20のステップ3cでは、DSLT-CF1210は、明確な中止コマンドをDSLT-MF1204から受信し、その後、DSLT-CF1210はDSLT-REQを中止する。DSLT-CF1210がいずれかのターゲットリソースロックを取得することができていた場合、DSLT-CF1210は、これらのロックを解放し、DSLTの処理を停止する。DSLT-CF1210は、DSLT-MF1204から再試行されたDSLT-REQを受信してもよく、この場合、DSLT-CF1210は、ステップ1からフローを繰り返してよい。
【0182】
図20のステップ4では、ターゲットリソースのロックが、各DSLT-CF1208および1210によって(必要に応じて)取得される。各DSLT-CFは、DSLT-MF1204に、ロックが取得されたか、またはロックが必要でないことを通知する。DSLT-CFは、DSLT-MF1204からターゲットリソースでDSLT規定操作を実行するコマンドを受信するまでこの状態で待つ。
【0183】
図20のステップ5aでは、DSLT-CF1210は、DSLT-MF1204から実行コマンドを受信して、ターゲットリソースでDSLT規定操作の実行を正常に完了することができた。
【0184】
図20のステップ5bでは、DSLT-CF1210は、タイムアウト期間が経過する前にDSLT-MF1204から実行コマンドを受信せず、その後、DSLT-CF1210はDSLT-REQをタイムアウトし、リソースをアンロックする。DSLT-CF1210は、DSLT-MF1204にこのタイムアウトを通知してよい。タイムアウト後、DSLT-CF1210はDSLT-MF1204からDSLT-REQコマンドを受信してよい。
【0185】
図20のステップ5cでは、DSLT-CF1210はDSLT-REQの実行を中止する。これは、DSLT-MF1204から実行コマンドを受信し、ターゲットリソースでDSLT規定操作を正常に実行できないことに起因するものであってよい。あるいは、これは、DSLT-CF1210がDSLT-MF1204から中止コマンドを受信することに起因するものであってもよい。
【0186】
図20のステップ6では、DSLT-CF1210は実行を正常に完了した。DSLT-CF1210は、DSLT-MF1204にその実行ステータスを通知し、シーケンス内の次のDSLT、またはDSLT-MF1204からのコミットコマンドを待つ。次のDSLTがシーケンス中に受信される場合、ステップ2で記載したのと同じ動作が、該次のDSLTの処理に適用されてよい。
【0187】
図20のステップ7aでは、ステップ3aで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0188】
図20のステップ7bでは、ステップ3bで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0189】
図20のステップ7cでは、ステップ3cで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0190】
図20のステップ8では、ステップ4で記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0191】
図20のステップ9aでは、ステップ5aで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0192】
図20のステップ9bでは、ステップ5bで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0193】
図20のステップ9cでは、ステップ5cで記載したのと同じ動作が、2番目のDSLTの処理に適用されてよい。
【0194】
図20のステップ10では、ステップ6で記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0195】
図20のステップ11aでは、ステップ3aで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0196】
図20のステップ11bでは、ステップ3bで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0197】
図20のステップ11cでは、ステップ3cで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0198】
図20のステップ12では、ステップ4で記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0199】
図20のステップ13aでは、ステップ5aで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0200】
図20のステップ13bでは、ステップ5bで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0201】
図20のステップ13cでは、ステップ5cで記載したのと同じ動作が、N番目のDSLTの処理に適用されてよい。
【0202】
図20のステップ14では、DSLT-CF1210は、シーケンス内のN番目のDSLTの実行を正常に完了する。DSLT-CF1210は、DSLT-MF1204にその実行ステータスを通知し、シーケンス内の次のDSLT、またはDSLT-MF1204からのコミットコマンドを待つ。
【0203】
図20のステップ15aでは、DSLT-CF1210は、シーケンス内のDSLTを正常にコミットすることができた。
【0204】
図20のステップ15bでは、DSLT-CF1210は、タイムアウト期間が経過する前に、シーケンス内で次に続くDSLT、またはDSLT-MF1204からのコミットコマンドを受信せず、その後、DSLT-CF1210はDSLTシーケンスをタイムアウトする。これが起こった場合/起こったとき、DSLT-CFは、シーケンス内の更新されたリソースの状態をコミットせずに中止する。これにより、ターゲットリソースの状態は、シーケンス内のいずれのDSLT操作も実施される前の初期状態にロールバックされる。同様に、ターゲットリソースでDSLT規定操作を実施した後に、DSLT-CF1210がDSLT-MF1204から明確な中止コマンドを受信する場合、DSLT-CF1210は、更新されたリソースの状態をコミットせずにDSLTシーケンスを中止することによってDSLTシーケンスを中止してよい。これにより、ターゲットリソースの状態は、シーケンス内のいずれのDSLT操作も実施される前の初期状態にロールバックされる。DSLT-CF1210は、DSLT-MF1204にこの中止を通知してよい。
【0205】
図20のステップ15cでは、DSLT-CF1210は、シーケンスの一部として処理され、まだコミットされていない全てのDSLTのコミットを中止する。これは、DSLT-MF1204からコミットコマンドを受信し、結果を正常にコミットできないことに起因するものであってよい。あるいは、これは、DSLT-CF1210がDSLT-MF1204から中止コマンドを受信することに起因するものであってもよい。
【0206】
図20のステップ16では、コミット後、DSLT-CF1210は、シーケンス内のいずれかのDSLTによって対象とされたリソースのロックを解放してよい。この場合、DSLT-CFは、DSLT-MF1204にコミットの通知を送信してもよい。
【0207】
図20のステップ17では、タイムアウトまたは中止が発生した場合、DSLT-CFは、シーケンスの一部として処理された全てのDSLTを中止してロールバックし、DSLT-MF1204に対応するステータスを返してよい。中止後、DSLT-CF1210は、同様にリソースのロックを解放する必要がある。この場合、DSLT-CF1210は、DSLT-MF1204に中止の通知を送信してもよい。
【0208】
(DSLT-MFポリシーエンジン性能)
DSLT-MF1204は、DSLTポリシーエンジン性能1308をサポートしてよい。そのAPIによって、DSLT-MF1204は、DSLT処理ポリシーを、生成、取得、更新または削除するためのポリシー構成リクエストをサポートしてよい。これらのポリシーを使用して、DSLT-MF1204内部に、DSLTの処理の方法、ならびにターゲットDSLT-CF1208および1210との相互作用を制御するDSLT処理ルールを構成してよい。
【0209】
DSLT処理ポリシーには、以下の種類のものを使用してよい。
・DSLTスケジューリングポリシー
DSLT-MF1204が、DSLTまたはDSLTシーケンスの処理をどのようにスケジュールするか制御するルールを設定するために使用されるポリシー。
・DSLT再試行ポリシー
DSLT-MF1204が、処理が失敗したDSLTまたはDSLTシーケンスをいつ再試行するか制御するルールを設定するために使用されるポリシー。ルールには、DSLTが再試行することができる回数の最大限度または最小限度を含んでよい。
・DSLT優先順位付けポリシー
DSLT-MF1204が、どのようにDSLTまたはDSLTシーケンスの処理を互いに対して優先順位付けおよび順位付けするか制御するルールを設定するために使用されるポリシー。
・DSLT実行基準ポリシー
DSLT-MF1204が、どのようにDSLTまたはDSLTシーケンスに対して実行基準を割り当てて処理するか制御するルールを設定するために使用されるポリシー。
・DSLT完了基準ポリシー
DSLT-MF1204が、どのようにDSLTまたはDSLTシーケンスに対して完了基準を割り当てて処理するか制御するルールを設定するために使用されるポリシー。
【0210】
上記の種類のポリシーのそれぞれの適用性/範囲が設定されてよい。例えば、ポリシーの範囲は以下のものに限定されてよい。
特定の送信元(例えば、特定のDSLT-TF1202または複数のDSLT-TF1202のグループ)から発信されるDSLT
特定のターゲット(例えば、特定のDSLT-CFまたはDSLT-CFのグループ)を対象とするDSLT
特定のタイプのDSLT(例えば、生成と同等の操作でのDSLT)
【0211】
以下の種類のポリシーエンジン機能が使用されてよい。DSLT-MF1204は、受信する受信DSLTリクエストに、対応するポリシールール(例えば、スケジューリング、再試行、優先順位付け、および完了基準ルール)を適用してもよい。これらのルールは、これらのパラメータに対して、明確にその対応する値を定義していない(例えば、これらの値を明確に定めるDSLTメッセージパラメータを含まない)DSLTリクエストに適用することができるデフォルトとして使用されてよい。DSLTリクエストがこれらのパラメータのうちの1つまたは複数に対する明確な値を含まない場合、これらのポリシーは限度として使用されてよい。DSLT-MF1204は、DSLTリクエストにおいて明確に定義されたパラメータに対してこれらのポリシー限度を比較してもよく、必要に応じて、限度に従うように明確な値を変更することによってこれらの限度に実効性をもたせる。
【0212】
(リソース予約のためのDSLT-MFスケジューリング性能)
DSLT-MF1204は、集約化型DSLTスケジューリング機能1310として機能してもよい。DSLT-MF1204は、分散しているSLエンティティのセットへのアクセス、およびDSLTを実行するために必要とされる該分散している各SLエンティティによってホストされているリソースへのアクセスの、スケジューリング性能をサポートしてよい。あらかじめこのスケジューリングを先回りして行うことによって、所定のDSLTを実行するのに必要なリソースが必要に応じて利用可能になり、これらのリソースに対する競合が最小限に抑えられることを保証する支援をしてもよい。これにより、最初の試みでDSLT処理が成功する可能性が高くなる場合があり、性能が向上(例えば、再試行の試みの発生を低減)する場合がある。集約化型DSLT-MFスケジューリング性能は、ターゲットリソースおよびDSLTのそれぞれで規定された対応する操作を検査してもよい。全DSLTにわたる情報のこの集約セットに基づいて、DSLT-MF1204は、得られた情報からDSLTスケジューリングを決定し、未処理の全DSLTの上位集合にわたって対象とされるリソースへのアクセスを最適化する。
【0213】
以下のDSLTスケジューリング機能1310が使用されてよい。
(1)DSLT-MF1204は、DSLTがそのターゲットデバイスの全てに対して正常に実施され、DSLTの原子的な実行要件を満たすことができるようにDSLTのターゲットであるIoTデバイスの到達可能スケジュールを調整して、全ての必要とされるデバイスがオンラインおよび利用可能であることを保証するように支援してよい。デバイスのうち1つが利用できない場合、原子性欠如によってDSLTが失敗することになるので、これは重大である。DSLT-MF1204は、DSLTリクエストがターゲットデバイスに対して発行される前に、ターゲットデバイス同士が互いに連携するように、ターゲットデバイスのそれぞれを調整して、それらのコネクティビティスケジュールを構成してよい。この連携は、本質的に反復性であるタイプのDSLTに、ワンタイム/アドホックベースで行われるか、繰り返し/継続ベースで行われてよい。
(2)DSLT-MF1204は、同じリソースを対象とする複数のDSLTまたはDSLTシーケンスが同時に実行しないことを保証してもよいが、それは、それらのターゲットリソースのロックを各々が取得し、独立的に、かつ互いに干渉しないようにそれらの対応するトランザクションを実施することを保証する必要があるためである。同じリソースを対象とする複数のDSLTの同時実行を試みると、最適でないDSLT実行(例えば、遅延、タイムアウト、再試行など)またはDSLTの失敗をももたらす場合がある。DSLT-MF1204は、各DSLTおよびその構成ターゲットを検査してよい。次いで、ターゲットが重複しているそれらDSLTは同時に実行されず、ターゲットが重複していないDSLTは重複してもよいことを保証するために、各DSLTの実行を互いに対して適切にスケジュールして、順序付けしてよい。DSLT-MF1204は、各DSLT内で構成される優先順位を考慮にいれて、これをそのスケジューリングアルゴリズムに含んで、低優先順位DSLTの前に高優先順位DSLTを実行できるようにしてよい。
【0214】
(DSLTプロシージャ)
以下のプロシージャでは、正常なDSLT処理シナリオについて記載する。
【0215】
(個々のDSLT処理)
図21は、個々のDSLTプロシージャを示す図である。
【0216】
図21のステップ1は、任意のステップである。
図21のステップ1では、IoTアプリケーションのDSLT-TF1202がIoTサーバのDSLT-MF1204にDSLTポリシーリソースを生成するようにリクエストを送信する。各ポリシーリソースは、DSLT-MF1204がDSLTリクエストをどのように処理するかを制御するための1つまたは複数のルールを含んでよい。これらのルールは、DSLTスケジューリング、DSLTの再試行、DSLTの優先順位付け、DSLT向けの実行基準および完了基準に関連してよい。あるいは、IoTサーバのDSLT-MF1204は、DSLTポリシーによって事前にプロビジョンされてもよい。
【0217】
図21のステップ2は、任意のステップである。
図21のステップ2では、IoTサーバのDSLT-MF1204は、リクエストを受信して処理し、DSLTポリシーリソースを生成する。DSLT-MF1204はポリシーリソースを生成し、さらに、ポリシーで規定されたルールによってそのDSLTポリシーエンジン1308の設定も行う。
【0218】
図21のステップ3は、任意のステップである。
図21のステップ3では、IoTサーバのDSLT-MF1204は、IoTアプリケーションのDSLT-TF1202に応答を返して、ポリシーリソースで定義されたルールが受諾されたか否か通知する。受諾されなかった場合、DSLT-MF1204は、DSLT-MF1204によって受諾されたルールの修正バージョンを提供してよい。
【0219】
図21のステップ4では、IoTアプリケーションのDSLT-TF1202がIoTサーバのDSLT-MF1204にDSLT-TRIGGERリクエストを送信する。リクエストは、ターゲットノード(例えば、IoTデバイス1およびIoTデバイス2)のセット、これらのノードで実施する操作、この操作をいつ実施するかのスケジュール、実行基準のセット、優先順位、トランザクションの処理の試みが失敗した場合の再試行の回数、完了基準のセット、DSLT-MF1204がトランザクションを非ブロッキング式に処理するのに使用してもよいDSLT識別子およびコンタクト情報などのいくつかのパラメータを含んでよい。
【0220】
図21のステップ5では、IoTサーバのDSLT-MF1204は、DSLT-TRIGGERリクエストを受信して処理を開始する。DSLT-MF1204は、DSLTリクエストリソースを生成して、DSLTの処理の間、状態を追跡する。DSLT-MF1204は、ステップ4で示したDSLT-TRIGGERリクエストパラメータに含まれた情報を用いてリソースの属性を構成する。
【0221】
図21のステップ6では、IoTサーバのDSLT-MF1204は、リクエストを受信して処理を開始したことを示す応答をIoTアプリケーションのDSLT-TF1202に返すことによって、DSLT-TRIGGERリクエストを非ブロッキング式に処理する。あるいは、DSLT-MF1204は、このリクエストをブロッキング式に処理してもよい。
【0222】
図21のステップ7では、IoTサーバのDSLT-MF1204は、DSLT-TRIGGERリクエストを解析し、対象とされるリソースのリストを見つける。DSLT-MF1204は、ターゲットリソースが、IoTサーバでローカルにホストされておらず、IoTデバイス1および2によってホストされていることを検出する。その後、DSLT-MF1204は、これらのターゲットデバイスに配布する対応するDSLT-REQを準備する。リクエストの配布の前に、DSLT-CF1210はまず、スケジュール情報がDSLT-TRIGGERリクエストで、またはいずれかのDSLTスケジュール関連ポリシー内で明確に構成されたかどうかをチェックする。DSLT-MF1204はまた、DSLT-TRIGGERリクエストまたはいずれかのDSLTスケジュールポリシーにおいて、いずれかの優先順位が明確に設定されたかどうかをチェックする。明確に設定されていた場合、DSLT-MF1204は、既に受信して、かつ処理の必要があるその他のDSLT-TRIGGERリクエストがあるかどうかをチェックする。ある場合、DSLT-MF1204は、優先順位およびスケジュール情報を使用して、DSLT-TRIGGERリクエストの実行を互いに対して順位付けおよび順序付けする。一旦、スケジュールおよび優先順位によって順序付けが行われると、DSLT-MF1204は、それに応じてターゲットにDSLT-REQを配布する。DSLT-MF1204の優先順位付けポリシーに応じて、処理が進行されているDSLT-TRIGGERよりも優先順位が高い新しいDSLT-TRIGGERが受信される場合、DSLT-MF1204は、処理が進行されているDSLT-TRIGGERを完了するか、または新たに届いた優先順位の高いDSLT-TRIGGERを処理するために割り込みしてもよい。割り込みする場合は、DSLT-MF1204は、後で処理を再開するのに有利なように、トランザクションを中止してロールバックするか、またはDSLT-MF1204は、優先順位の高いトランザクションを処理している間処理を一時停止し、その後、処理を再開してよい。中止するか割り込みするかの判断は、優先順位の高いトランザクションが、処理が進行されている優先順位の低いものと同じリソースを対象としているかどうかなど、いくつかの要因に基づくものであってよい。この場合、DSLT-MF1204は優先順位の低いトランザクションの中止を決定してよいが、その一方で、2つのトランザクションが異なるリソースを対象としているケースでは、DSLT-MF1204は、優先順位の低いトランザクションへの割り込みを選択するか、またはサポートされている場合は、両方のトランザクションを並行して実行してよい。
【0223】
図21のステップ8では、IoTデバイス1234および1236のDSLT-CF1208および1210は、それぞれのDSLT-REQを受信する。どちらともリクエストを処理し、ローカルDSLTリソースを生成して、DSLT-REQを処理している間、トランザクションの状態を追跡する。DSLT-CF1208および1210は、DSLT-REQパラメータ内に含まれている情報を用いてそれらのリソースの属性を構成する。DSLT-CF1208および1210は、まず、ターゲットリソースの利用可能性をチェックすることからトランザクションの処理を開始する。リソースがIoTデバイスに対してローカルの場合、DSLT-CF1210は、規定操作を実施するためのリソースの利用可能性、ならびに現時点でリソースを予約およびロックしている他のトランザクションがないことをチェックする。リソースが利用可能な場合は、DSLT-CF1210は、現在のトランザクションの処理中に届く可能性のある他のトランザクションからの干渉を受けることなく、該リソースでトランザクションを実施してもよいようにリソースをロックしてよい。DSLT-CF1210がDSLT-REQを受信して、リクエストがローカルデバイスでホストされていないリソースを対象としていることを見つけた場合、DSLT-CF(場合によっては、デバイスでホストされているローカルDSLT-MF1204と提携している)は、その他のデバイスのDSLT-CF1210がそれを処理してもよいように、システム内の別のデバイスに向けてDSLT-REQリクエストを再度対象としてよい。
【0224】
図21のステップ9では、各IoTデバイスのDSLT-CF1210は、DSLT-REQが受信されて、トランザクションで処理が開始して、ターゲットリソースが利用可能であり、他のトランザクションから干渉を受けることなく現在のトランザクションが進行できるようにリソースがロックされたことを示すステータスをIoTサーバのDSLT-MF1204に返す。
【0225】
図21のステップ10では、全てのターゲットDSLT-CF1208および1210(すなわち、IoTデバイス1および2の両方)が、ターゲットリソースを正常にロックしたと応答したことを、IoTサーバのDSLT-MF1204が検出する。その結果、DSLT-MF1204は、トランザクションの実行をするように、ターゲットDSLT-CFに続いて命令してよいと判断する。DSLT-MF1204が全てのターゲットから正常なロックの応答を受信しなかった場合、いずれかの完了基準がトランザクションのために構成されているか、またはそのポリシーのいずれかで規定されているかをチェックすることができる。完了基準が規定されている場合、DSLT-MF1204は、DSLT-MF1204が手順を進めることが基準によって許容されているかどうかをチェックしてよい(例えば、基準は、全てのターゲットではなく、ターゲットのサブセットのみでトランザクションが完了することが必要とされると規定している場合がある)。あるいは、トランザクションのうちの1つまたは複数がターゲットリソースのロックに失敗した場合、DSLT-MF1204は、トランザクションがその設定パラメータまたはポリシー設定を介して再試行されるよう設定されているか否かチェックしてよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションを再試行してもよい。この場合、DSLT-MF1204は、失敗したDSLT-CFに再試行を送信してよい。完了基準を満たすことができず、トランザクションの再試行ができないとDSLT-MF1204が判断する場合は、DSLT-MF1204はトランザクションの中止を選択してよい。トランザクションを中止するために、DSLT-MF1204は、トランザクションターゲットのそれぞれ(この例では、IoTデバイス1234および1236のDSLT-CF1208および1210)に中止コマンドを送信する。中止を受信すると、DSLT-CFは、トランザクションによって対象とされたリソースに対して行われたいずれの変更もトランザクションの開始前と同じ状態に戻されるようにロールバックすることによってトランザクションを中止する。DSLT-CFは、ターゲットリソースのロックの解放もしてよい。
【0226】
あるいは、DSLT-CF1210は、ステップ8でリソースのロックができなかった場合、リソースが利用不可能である理由(リソースが存在しない、アクセス権が不適正である、リソースが既にロックされているなど)に関する表示を提供してよい。リソースがロックされている場合、DSLT-CF1210は、(ロックリソースに関連付けられたタイムアウトに基づいて)リソースがいつアンロックされる可能性があるかの時間の表示を提供してもよい。この場合、DSLT-MF1204は、(DSLT-CF1210によって提供された情報に基づいて)しばらくしてからトランザクションの再試行を試みてよい。
【0227】
図21のステップ11では、IoTサーバのDSLT-MF1204は、各ターゲットDSLT-CF1208および1210にリクエストを送信して、トランザクションを実行するようコマンドする。このコマンドは、DSLT-MF1204によって発行されてよく、各IoTデバイスでホストされているDSLTリソース内のコマンド属性を更新し、DSLT-CF1208および1210にトランザクションを実行するように命令する。
【0228】
図21のステップ12では、トランザクションの実行のコマンドを受信すると、各デバイスのDSLT-CF1210は、ターゲットリソースでトランザクションに規定された操作を実施する。ターゲットリソースでの操作の結果として、IoTデバイスの複数のリソースの状態が変化することもある。DSLT-REQが中止され、ロールバックされる必要がある場合に、必要があれば、DSLT-CF1210は(操作の実行前の)操作前の状態のコピーを保持する。
【0229】
図21のステップ13では、一旦、実行が完了すると、各DSLT-CF1210は、実行結果、およびそれが成功したのか否かについて、DSLT-MF1204に応答を返す。
【0230】
図21のステップ14では、全てのターゲットDSLT-CF(すなわち、IoTデバイス1234および1236の両方)がターゲットリソースでトランザクションを正常に実行したと応答したことを、IoTサーバのDSLT-MF1204が検出する。その結果、DSLT-MF1204は、結果(例えば、更新されたリソース表現)を耐久的なものにし、かつリソースおよびその更新済み状態に他のトランザクションがアクセスできるようにリソースのロックを解放することによって結果をコミットするように、ターゲットDSLT-CF1208および1210に続いて命令してよいと判断する。DSLT-MF1204は、全てのターゲットから正常な実行の応答を受信しなかった場合は、いずれかの完了基準がトランザクションに設定されているか、またはそのポリシーのいずれかで規定されているかをチェックすることができる。完了基準が規定されている場合、DSLT-MF1204は、DSLT-MF1204が手順を進めることが基準によって許容されているかどうかをチェックしてよい(例えば、基準は、トランザクションが全てのターゲットではなく、ターゲットのサブセットで完了することのみを要すると規定している場合がある)。あるいは、実行されたトランザクションのうちの1つまたは複数が失敗した場合、DSLT-MF1204は、トランザクションがその設定パラメータまたはポリシー設定を介して再試行されるように設定されているか否かチェックしてよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションを再試行してもよい。完了基準を満たすことができず、トランザクションの再試行ができないとDSLT-MF1204が判断した場合、DSLT-MF1204はトランザクションの中止を選択してよい。トランザクションを中止するために、DSLT-MF1204は、トランザクションターゲットのそれぞれ(この例では、IoTデバイス1234および1236のDSLT-CF)に中止コマンドを送信する。中止を受信すると、DSLT-CF1210は、トランザクションによって対象とされたリソースに対して行われたいずれの変更もトランザクションの開始前と同じ状態に戻されるようにロールバックすることによってトランザクションを中止する。DSLT-CF1210は、ターゲットリソースのロックの解放もしてよい。
【0231】
図21のステップ15では、IoTサーバ1230のDSLT-MF1204は、各ターゲットDSLT-CF1208および1210にリクエストを送信して、トランザクションをコミットするようコマンドする。このコマンドは、DSLT-MF1204によって発行されてよく、各IoTデバイスでホストされているDSLTリソース内のコマンド属性を更新し、DSLT-CF1208および1210にトランザクションをコミットするように命令する。
【0232】
図21のステップ16では、トランザクションをコミットするコマンドを受信すると、各デバイスのDSLT-CF1208および1210は、トランザクション実行時に行われた可能性のあるリソースへのいずれの更新もその状態が耐久的なものとなるように保存する。DSLT-CF1208および1210は、コミットされるリソースの状態のいずれかの更新に基づいて、ターゲットリソースにサブスクライブした可能性のあるシステム内のいずれの他のエンティティにも更新状態に関する通知を送信してもよい。次いで、DSLT-CF1208および1210は、ターゲットリソースのいずれのロックも解放し、保存した操作前状態のいずれも削除してよい。
【0233】
図21のステップ17では、一旦、コミットが完了すると、各DSLT-CF1208および1210は、コミット結果、およびそれが成功したか否かと共に、DSLT-MF1204に応答を返す。
【0234】
図21のステップ18では、全てのターゲットDSLT-CF1208および1210(すなわち、IoTデバイス1234および1236の両方)がターゲットリソースでトランザクションを正常にコミットしたと応答したことを、IoTサーバのDSLT-MF1204が検出する。コミットのうちの1つまたは複数が失敗した場合、DSLT-MF1204は、トランザクションがその設定パラメータまたはポリシー設定を介して再試行されるように設定されているか否かチェックしてもよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションを再試行してもよい。完了基準を満たすことができず、トランザクションの再試行ができないとDSLT-MF1204が判断する場合は、DSLT-MF1204はトランザクションのエラー状況を報告してよい。
【0235】
図21のステップ19では、DSLT-MF1204は、IoTアプリケーションのDSLT-TF1202から受信したDSLTに対応する、そのローカルにホストされているDSLTリソースを更新する。この更新には、IoTデバイスに配布して、トランザクションが成功したかどうか、および、成功しなかった場合はその失敗の原因または理由を示すDSLTのそれぞれのステータスが含まれる。
【0236】
図21のステップ20では、一旦、DSLT処理が完了すると、IoTサーバのDSLT-MF1204は、IoTアプリケーションのDSLT-TF1202に、DSLTの結果を含めて通知してよい。DSLT-MF1204は、DSLTの全体的なステータスおよび個々のターゲットで実施された各配布されたトランザクションの個々のステータスを含めてよい。これは、失敗の原因を説明するエラーまたはデバッグ情報を含んでよい。これにより、技術者およびオペレータは、問題を検出して、別のDSLTの発行を再試行する前に障害のあるデバイスを交換または修復できる。
【0237】
図21のステップ21では、完了したDSLTの通知を受信した後、IoTアプリケーションのDSLT-TF1202は、DSLT-MF1204に、通知受信の確認を応答してよい。
【0238】
図21のステップ22では、いずれかの時点で、IoTアプリケーションのDSLT-TF1202がDSLT処理のステータスのチェックを所望する場合、ステータスをチェックするようにDSLT-MF1204に問い合わせしてもよい。問い合わせリクエストを受信すると、DSLT-MF1204は、対応するDSLTリソース内で保持しているDSLTの状態をチェックしてよい。
【0239】
図21のステップ23では、DSLT-MF1204は、DSLTステータス問い合わせを開始したDSLT-TF1202にDSLT処理の状態を返す。
【0240】
(DSLTシーケンスプロシージャ)
図22は、DSLTシーケンスプロシージャを示す図である。
【0241】
図22のステップ1は、任意のステップである。
図22のステップ1では、IoTアプリケーションのDSLT-TF1202が、IoTサーバのDSLT-MF1204にDSLTシーケンスポリシーリソースを生成するようリクエストを送信する。各ポリシーリソースは、DSLT-MFがDSLTシーケンスリクエストをどのように処理するか制御する1つまたは複数のルールを含んでよい。これらのルールは、DSLTシーケンススケジューリング、DSLTシーケンスの再試行、DSLTシーケンスの優先順位付け、ならびに、DSLTシーケンス向けの実行基準および完了基準に関連してよい。あるいは、IoTサーバのDSLT-MF1204は、DSLTシーケンスポリシーを用いて事前にプロビジョンされてもよい。
【0242】
図22のステップ2は、任意のステップである。
図22のステップ2では、IoTサーバのDSLT-MF1204は、リクエストを受信し処理し、DSLTシーケンスポリシーリソースを生成する。DSLT-MF1204はポリシーリソースを生成し、さらに、ポリシーで規定されたルールによってそのDSLTポリシーエンジン1308の設定も行う。
【0243】
図22のステップ3は、任意のステップである。
図22のステップ3では、IoTサーバのDSLT-MF1204は、IoTアプリケーションのDSLT-TF1202に応答を返して、ポリシーリソースで定義されたルールが受諾されたか否か通知する。受諾されなかった場合、DSLT-MF1204は、DSLT-MF1204によって受諾されたルールの修正バージョンを提供してよい。
【0244】
図22のステップ4では、IoTアプリケーションのDSLT-TF1202がIoTサーバのDSLT-MF1204にDSLT-SEQ-TRIGGERリクエストを送信する。リクエストは、ターゲットノード(例えば、IoTデバイス1およびIoTデバイス2)のセット、これらのノードで実施するDSLTのリスト、シーケンスをいつ実施するかのスケジュール、シーケンス実行基準のセット、優先順位、トランザクションのシーケンスの処理の試みが失敗した場合の再試行の回数、シーケンス完了基準のセット、DSLT-MF1204がシーケンスを非ブロッキング式に処理するのに使用し得るDSLTシーケンス識別子およびコンタクト情報などのいくつかのパラメータを含んでよい。
【0245】
図22のステップ5では、IoTサーバのDSLT-MF1204は、DSLT-SEQ-TRIGGERリクエストを受信して処理を開始する。DSLT-MF1204は、DSLTシーケンスリソースを生成して、DSLTシーケンスの処理の間、トランザクションシーケンスの状態を追跡する。DSLT-MF1204は、ステップ4で示したDSLTシーケンスリクエストパラメータに含まれた情報を用いてリソースの属性を構成する。
【0246】
図22のステップ6では、IoTサーバのDSLT-MF1204は、リクエストを受信して処理を開始したことを示す応答をIoTアプリケーションのDSLT-TF1202に返すことによって、リクエストを非ブロッキング式に処理する。あるいは、DSLT-MF1204は、このリクエストをブロッキング式に処理してもよい。
【0247】
図22のステップ7では、IoTサーバのDSLT-MF1204は、リクエストを解析し、シーケンスによって対象とされるリソースのリストを見つける。DSLT-MF1204は、ターゲットリソースが、IoTサーバでローカルにホストされておらず、IoTデバイス1および2によってホストされていることを検出する。その後、DSLT-MF1204は、これらのターゲットデバイスに配布するシーケンス内の最初の/次の対応するDSLTを準備する。DSLTの配布の前に、DSLT-MF1204はまず、スケジュール情報が元々のDSLT-SEQ-TRIGGERリクエストで、またはいずれかのスケジュール関連ポリシー内で明確に設定されたかどうかをチェックする。DSLT-MF1204はまた、優先順位が元々のDSLT-SEQ-TRIGGERリクエストで、またはいずれかのポリシーで明確に設定されたかどうかをチェックする。明確に設定されている場合、DSLT-MF1204は、既に受信して処理の必要があるその他のDSLT-SEQ-TRIGGERリクエストがあるかどうかをチェックする。ある場合、DSLT-MF1204は、優先順位情報を使用して、DSLT-SEQ-TRIGGERリクエストの実行を互いに対して順位付けおよび順序付けする。一旦、スケジュールおよび優先順位によって順序付けが行われると、DSLT-MF1204は、それに応じてターゲットにDSLT-REQリクエストを配布する。
【0248】
一旦、スケジュールおよび優先順位によって順序付けが行われると、DSLT-MF1204は、それに応じてターゲットにDSLT-REQを配布する。DSLT-MF1204の優先順位付けポリシーに応じて、処理が進行されているDSLT-SEQ-TRIGGERよりも優先順位の高い新たなDSLT-SEQ-TRIGGERが受信される場合は、DSLT-MF1204は、処理が進行されているDSLT-SEQ-TRIGGERを完了するか、または新たに届いた優先順位の高いDSLT-SEQ-TRIGGERを処理するために割り込みしてもよい。シーケンスを割り込みする場合は、DSLT-MF1204は、後で処理を再開するのに有利なように、シーケンスを中止してロールバックするか、またはDSLT-MF1204は、優先順位の高いシーケンスを処理している間シーケンスの処理およびその関連するDSLTを一時停止し、その後処理を再開してよい。中止するか割り込みするかの判断は、優先順位の高いシーケンスが、処理が進行されている優先順位の低いシーケンスと同じリソースを対象としているかどうかなど、いくつかの要因に基づくものであってよい。この場合、DSLT-MF1204は優先順位の低いシーケンスの中止を決定してよいが、その一方で、2つのシーケンスが異なるリソースを対象としているケースでは、DSLT-MF1204は、優先順位の低いシーケンスへの割り込みを選択するか、またはサポートされている場合は、両方のシーケンスを並行して実行してもよい。
【0249】
図22のステップ8では、IoTデバイス1234および1236のDSLT-CF1208および1210は、それぞれのDSLT-REQを受信する。どちらともリクエストを処理し、ローカルDSLTリソースを生成して、DSLTを処理している間、トランザクションの状態を追跡する。DSLT-CF1208および1210は、DSLT-REQパラメータ内に含まれている情報を用いてそれらのリソースの属性を構成する。DSLT-CF1208および1210は、まず、ターゲットリソースの利用可能性をチェックすることによってトランザクションの処理を開始する。リソースがIoTデバイスに対してローカルの場合、DSLT-CF1210は、規定操作を実施するためのリソースの利用可能性、ならびに現時点でリソースを予約およびロックしている他のトランザクションがないことをチェックする。リソースが利用可能な場合は、DSLT-CF1210は、現在のトランザクションの処理中に届く可能性のある他のトランザクションからの干渉を受けることなく、該リソースでトランザクションを実施してもよいようにリソースをロックしてよい。DSLT-CF1210がDSLT-REQを受信して、リクエストがローカルデバイスでホストされていないリソースを対象としていることを見つける場合、DSLT-CF1210は、(場合によっては、デバイスでローカルにホストされているDSLT-MF1204の支援によって)その他のデバイスのDSLT-CFがそれを処理できるように、システム内の別のデバイスに向けてDSLT-REQを再対象としてよい。
【0250】
図22のステップ9では、各IoTデバイスのDSLT-CF1210は、リクエストが受信されて、トランザクションで処理が開始して、ターゲットリソースが利用可能であり、リソースがロックされて、他のトランザクションから干渉を受けることなく現在のトランザクションが処理できることを示すステータスをIoTサーバのDSLT-MF1204に返す。
【0251】
図22のステップ10では、全てのターゲットDSLT-CF1208および1210(すなわち、IoTデバイス1234および1236の両方)が、ターゲットリソースを正常にロックしたと応答したことを、IoTサーバのDSLT-MF1204が検出する。その結果、DSLT-MF1204は、トランザクションの実行をするように、ターゲットDSLT-CF1210に続いて命令してよいと判断する。DSLT-MF1204が全てのターゲットから正常なロックの応答を受信しなかった場合、いずれかの完了基準がトランザクションのために設定されているか、またはそのポリシーのいずれかで規定されているかをチェックすることができる。完了基準が規定されている場合、DSLT-MF1204は、DSLT-MF1204が手順を進めることを基準によって許容されているかどうかをチェックしてよい(例えば、基準は、トランザクションが全てのターゲットではなく、ターゲットのサブセットで完了することのみを要すると規定している場合がある)。あるいは、トランザクションのうちの1つまたは複数がターゲットリソースのロックに失敗した場合、DSLT-MF1204は、トランザクションがその設定パラメータまたはポリシー設定を介して再実行されるように構成されているのか否かチェックしてよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションを再試行してもよい。完了基準を満たすことができず、トランザクションの再試行ができないとDSLT-MF1204が判断する場合は、DSLT-MF1204はトランザクションの中止を選択してよい。トランザクションを中止するために、DSLT-MF1204は、トランザクションターゲットのそれぞれ(この例では、IoTデバイス1234および1236のDSLT-CF1208および1210)に中止コマンドを送信する。中止を受信すると、DSLT-CF1210は、トランザクションによって対象とされたリソースに対して行われたいずれの変更もトランザクションの開始前と同じ状態に戻されるようにロールバックすることによってトランザクションを中止する。DSLT-CF1210は、ターゲットリソースのロックの解放もしてよい。
【0252】
あるいは、DSLT-CF1210は、ステップ8でリソースのロックができなかった場合、リソースが利用不可能である理由(リソースが存在しない、アクセス権が不適正である、リソースが既にロックされているなど)に関する表示を提供してよい。リソースがロックされている場合、DSLT-CF1210は、(ロックリソースに関連付けられたタイムアウトに基づいて)リソースがいつアンロックされる可能性があるかの時間の表示を提供してもよい。この場合、DSLT-MF1204は、(DSLT-CF1210によって提供された情報に基づいて)しばらくしてからトランザクションの再試行行を試みてよい。
【0253】
図22のステップ11では、IoTサーバ1230のDSLT-MF1204は、各ターゲットDSLT-CF1208および1210にリクエストを送信して、トランザクションを実行するようにコマンドする。このコマンドは、DSLT-MF1204によって発行されてよく、各IoTデバイス1234および1236でホストされているDSLTリソース内のコマンド属性を更新し、DSLT-CF1208および1210にトランザクションを実行するように命令する。
【0254】
図22のステップ12では、トランザクションの実行のコマンドを受信すると、各デバイスのDSLT-CF1208および1210は、ターゲットリソースでトランザクションに規定された操作を実施する。ターゲットリソースでの操作の結果として、IoTデバイスの複数のリソースの状態が変化することもある。DSLT-REQが中止され、ロールバックされる必要がある場合に、必要があれば、DSLT-CF1208および1210は(操作の実行前の)操作前の状態のコピーを保持する。
【0255】
図22のステップ13では、一旦、実行が完了すると、各DSLT-CF1208および1210は、実行結果、およびそれが成功したのか否かについて、DSLT-MF1204に応答を返す。
【0256】
図22のステップ14では、全てのターゲットDSLT-CF1208および1210(すなわち、IoTデバイス1234および1236の両方)がターゲットリソースでトランザクションを正常に実行したと応答したことを、IoTサーバのDSLT-MF1204が検出する。次いで、DSLT-MF1204は、シーケンス内に残存するDSLTがあるかどうかをチェックする。残存するDSLTがある場合、DSLT-MF1204は、次のDSLTを準備して、ステップ7~14を繰り返す。シーケンス内に残存するDSLTがない場合、DSLT-MF1204は、シーケンスの一部として処理された全てのDSLTの結果をコミットするように、ターゲットDSLT-CF1208に続いて命令してよいと判断する。結果を耐久的にすること、かつリソースのロックを解放することによって、リソースおよびその更新状態に他のトランザクションがアクセスできるようにする。DSLT-MF1204は、全てのターゲットから正常な実行の応答を受信しなかった場合、いずれかの完了基準がトランザクションに設定されているか、またはそのポリシーのいずれかで規定されているかをチェックすることができる。完了基準が規定されている場合、DSLT-MF1204は、DSLT-MF1204が手順を進めることが基準によって許容されているかどうかをチェックしてよい(例えば、基準は、全てのターゲットではなく、ターゲットのサブセットのみでトランザクションが完了することが必要とされると規定している場合がある)。あるいは、実行されたトランザクションのうちの1つまたは複数が失敗した場合、DSLT-MF1204は、トランザクションがその設定パラメータまたはポリシー設定を介して再試行されるように設定されているか否かチェックしてよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションを再試行してもよい。完了基準を満たすことができず、トランザクションの再試行ができないとDSLT-MF1204が判断する場合、DSLT-MF1204はトランザクションの中止を選択してよい。トランザクションを中止するために、DSLT-MF1204は、トランザクションターゲットのそれぞれ(この例では、IoTデバイス1234および1236のDSLT-CF1208および1210)に中止コマンドを送信する。中止を受信すると、DSLT-CF1208および1210はシーケンス内の各トランザクションを中止することによってシーケンスを中止する。これにより、シーケンス内のトランザクションによって対象とされていたリソースに対して行われたいずれの変更もシーケンスの開始前と同じ状態に戻されるようにロールバックされる。DSLT-CF1208および1210は、ターゲットリソースのロックの解放もしてよい。
【0257】
図22のステップ15では、IoTサーバ1230のDSLT-MF1204は、各DSLTが実行された各ターゲットDSLT-CF1208および1210に一連のコミットリクエストを送信する。このコマンドは、DSLT-MF1204によって発行されてよく、各IoTデバイス1234および1236でホストされているDSLTリソース内のコマンド属性を更新し、DSLT-CF1208および1210にトランザクションをコミットするように命令する。
【0258】
図22のステップ16では、所定のDSLTをコミットする各コマンドを受信すると、各デバイスのDSLT-CF1208および1210は、トランザクション実行時に行われた可能性のあるリソースへのいずれの更新もその状態が耐久的なものとなるように保存する。DSLT-CF1208および1210は、コミットされるリソースの状態のいずれの更新にも基づいて、ターゲットリソースにサブスクライブした可能性のあるシステム内のいずれの他のエンティティにも更新状態に関する通知を送信してもよい。次いで、DSLT-CF1208および1210は、ターゲットリソースのいずれのロックも解放し、保存した操作前状態のいずれも削除してよい。
【0259】
図22のステップ17では、一旦、各コミットが完了すると、各DSLT-CF1208および1210は、コミット結果、およびそれが成功したか否かと共に、DSLT-MF1204に応答を返す。
【0260】
図22のステップ18では、全てのターゲットDSLT-CF1208および1210(すなわち、IoTデバイス1234および1236の両方)がそれぞれのターゲットリソースでシーケンス内の全てのトランザクションを正常にコミットしたと応答したことを、IoTサーバのDSLT-MF1204が検出する。コミットのうちの1つまたは複数が失敗した場合、DSLT-MF1204は、それぞれのトランザクションシーケンスがその設定パラメータまたはポリシー設定を介して再実行されるように構成されているか否かチェックしてよい。再試行が許可されている場合、DSLT-MF1204は失敗したトランザクションシーケンスを再試行してもよい。完了基準を満たすことができず、トランザクションシーケンスの再試行ができないとDSLT-MF1204が判断する場合は、DSLT-MF1204はトランザクションシーケンスのエラー状況を報告することを選択してもよい。
【0261】
図22のステップ19では、DSLT-MF1204は、IoTアプリケーションのDSLT-TF1202から受信したDSLT-SEQ-TRIGGERリクエストに対応する、そのローカルにホストされているDSLTシーケンスリソースを更新する。この更新には、IoTデバイスに配布されるシーケンス内のDSLTのそれぞれのステータスが含まれる。このステータスは、トランザクションシーケンスが成功したかどうかを示し、成功しなかった場合はその失敗の理由を示す。DSLT-MF1204は、シーケンス内の失敗したいずれのDSLTの個々のステータスおよび失敗の情報も含めてもよい。
【0262】
図22のステップ20では、一旦、DSLTシーケンス処理が完了すると、IoTサーバのDSLT-MF1204は、IoTアプリケーションのDSLT-TF1202にDSLTシーケンスの結果を含めて通知してよい。DSLT-MF1204は、DSLTシーケンスの全体的なステータスおよび個々のターゲットで実施されたシーケンス内の各配布されたトランザクションの個々のステータスを含めてよい。これは、失敗の原因を説明するエラーまたはデバッグ情報を含んでよい。これにより、技術者およびオペレータは、問題を検出して、別のDSLTの発行を再試行する前に障害のあるデバイスを交換または修復できる。
【0263】
図22のステップ21では、完了したDSLTシーケンスの通知の受信後、IoTアプリケーションのDSLT-TF1202は、DSLT-MF1204に、通知受信の確認を応答してよい。
【0264】
図22のステップ22では、いずれかの時点で、IoTアプリケーションのDSLT-TF1202がDSLTシーケンス処理のステータスのチェックを所望する場合、ステータスをチェックするようにDSLT-MF1204に問い合わせしてよい。問い合わせリクエストを受信すると、DSLT-MF1204は、対応するDSLTシーケンスリソース内で保持しているDSLTシーケンスの状態をチェックしてよい。
【0265】
図22のステップ23では、DSLT-MF1204は、DSLTステータス問い合わせを開始したDSLT-TF1202にDSLTシーケンス処理の状態を返す。
【0266】
(oneM2M分散サービス層トランザクション実施形態)
oneM2Mアーキテクチャ[oneM2M TS-0001]を対象とするDSLTメカニズムおよびプロシージャのいくつかの実施形態について以下に説明する。DSLTサポートをoneM2Mアーキテクチャに加えることで、全てのリクエストが正常に実施されるか、またはいずれのリクエストも実施されないかどちらかとなるような原子的に実施される複数のリソースをターゲットとするリクエストのセットを可能にする。
【0267】
DSLT-MF1204および/またはDSLT-CF1210は、oneM2Mアーキテクチャの内部で、
図23に示すように、共通サービスエンティティ(CSE)(すなわち、サービス層エンティティ)の新しいトランザクション管理共通サービス機能(CSF)として実現可能である。
【0268】
このトランザクション管理CSF2304は、oneM2MシステムにおいてDSLTサポートを可能にするために使用されてよい。あるいは、DSLT-MF1204は、1つまたは複数の既存のoneM2M CSF(
図1~6に示さず)の性能として実現されてもよい。
【0269】
DSLT-TF1202および/またはDSLT-CF1210の機能は、oneM2Mアプリケーションエンティティ(AE)2306によってサポートされてもよい。例えば、AE2306はそのDSLT-TF1202を介してDSLTリクエストを開始して、CSE2302によってホストされているDSLT-MF2304にこのリクエストを送信してもよい。あるいは、AE2306は、CSEによってホストされているDSLT-MF1204からそのDSLT-CF1210を介してDSLTリクエストを受信してもよい。
【0270】
CSE2302およびAE2306がDSLT機能をサポートすることを可能にするために、以下のサブセクションでは、いくつかのDSLToneM2M実施形態を定義する。
【0271】
(oneM2MリクエストパラメータへのDSLT拡張)
oneM2MアーキテクチャでDSLTをサポートするために、DSLTおよびDSLTシーケンスメッセージパラメータのそれぞれに対して新しいoneM2Mリクエストパラメータが表3および表4で定義されている。これらのパラメータをoneM2Mリクエスト内でサポートすることで、複数のoneM2Mリクエストを互いに関連付けてoneM2Mリクエストのセットとして一緒に原子的に処理することを可能にする。
【0272】
トランザクションベースの処理をサポートするために、既存のoneM2M応答タイプパラメータを拡張して、非ブロッキングトランザクションリクエスト同期(nonBlockingTransactionRequestSynch)および非ブロッキングトランザクションリクエスト非同期(nonBlockingTransactionRequestAsynch)の2つの追加の非ブロッキング応答タイプを追加サポートしてもよい。これらの2つの応答タイプは、非ブロッキングであり原子的なトランザクションとしてホスティングCSEによってリクエストが処理されることを規定するために、発信元によって使用されてよい。これらの新しい値の1つに設定された応答タイプを備えるリクエストを受信するときに、ホスティングCSEは、後のセクションに記載されているような、oneM2M<request>リソースへの追加の新しいトランザクション指向属性をサポートしてよい。これらの新しいトランザクション指向応答タイプおよび<request>属性により、後のセクションに詳述されているプロシージャにてさらに記載されているような原子的なトランザクション指向方式で、ホスティングCSEがプリミティブを処理することを可能にする。あるいは、ホスティングCSEは、他の方法で、例えば、いくつかの追加のDSLT属性または<sequence>リソースと共に、<transaction>リソースをサポートすることによっても、同様にDSLTをサポートしてもよい。
【0273】
(oneM2M DSLTリソース)
oneM2MアーキテクチャでDSLTをサポートするために、いくつかのDSLT関連属性が使用されてよい。これらの属性は、
図24に示すように、<request>リソースまたは<transaction>リソースなどの既存のoneM2Mリソースに加えられてよい。あるいは、新しいリソースタイプは、これらの属性をサポートするように定義されてもよい。新しいリソースタイプが定義されているケースでは、完全なソリューションを提供するために、<request>リソースおよび/または<transaction>リソースで既に定義されている属性のいくつかに類似する追加属性を組み込むことを必要としてもよい。これらの既存のoneM2M属性は、簡潔にするために組み込まれていなかった。1つの例は、oneM2Mリクエストプリミティブに含まれるプリミティブ属性である。この属性は、<request>リソースおよび<transaction>リソースにて既存のものである(図示せず)。
【0274】
これらの新しい属性により、発信元(例えば、AEまたはCSE)がターゲットCSEに対してDSLTリクエストを発行し、CSEにそのリクエストを非ブロッキング式かつ原子的に処理させることを可能にする。
【表8-1】
【表8-2】
【0275】
(oneM2M DSLTシーケンスリソース)
oneM2MアーキテクチャでDSLTシーケンスをサポートするために、いくつかのDSLTシーケンス属性を有する<sequence>リソースを
図25に示す。
【0276】
この新しいリソースおよび属性により、発信元(例えば、AEまたはCSE)がDSLTシーケンスリクエストを発行し、ホスティングCSEに非ブロッキング式にかつ原子的にDSLTのシーケンスを処理させることを可能にする。この処理は、シーケンス内の個別のDSLTが原子的に実行されること、およびDSLTのシーケンス全体も原子的に(すなわち、全てのDSLTが正常に実行されるか、またはいずれのDSLTも実行されないかどちらかとなるように)実行されることを保証するために、発信元に代わって、<sequence>ホスティングCSEによる個別のDSLTのシーケンスの処理を含んでよい。これにより、発信元からのDSLTシーケンスの処理のオーバーヘッドおよび負担を軽減することができる。この機能は、発信元が繰り返しリクエストを作成して、DSLTシーケンスを送信する場合に、特に有用となる可能性がある。発信元は、これらの繰り返しDSLTシーケンスをそれ自体で処理しなければならないのではなく、この動作をその代わりに実施する<sequence>ホスティングCSEに肩代わりさせることができる。
【0277】
シーケンス内のDSLTが<sequence>ホスティングCSEによってホストされているローカルリソースを対象とする場合、<sequence>ホスティングCSEは、これらのDSLTをそれ自体で原子的に処理してよい。この処理の間に、<sequence>ホスティングCSEは、これらのローカルリソースをロックして、処理が進行されているシーケンス内のDSLTによって規定された操作以外は、該ローカルリソースでいずれの操作も実施されないことを保証してよい。一旦、進行中のシーケンスの処理が正常に完了してコミットされると、このロックは解放されてよい。
【0278】
シーケンス内のDSLTが、遠隔のCSEでホストされているリソースを対象とする場合、<sequence>ホスティングCSEは、DSLT属性を有する遠隔CSEに<request>または<transaction>リソースを生成することによって、遠隔CSEにDSLTリクエストを送信してよい。<sequence>ホスティングCSEは、次いで、遠隔CSEのこれらの<request>または<transaction>リソースの状態を管理して、DSLTが原子的に処理されることを保証してよい。<sequence>ホスティングCSEは、ターゲットリソースのロックを取得できるという遠隔CSEからの通知を待ってよい。一旦、通知が受信されると、次に、<sequence>ホスティングCSEは、遠隔CSEに、対応する<request>または<transaction>リソースのコマンド属性を更新することによってDSLTを実行するように命令してよい。次に、遠隔CSEは、トランザクションが正常に実行されたという遠隔CSEからの通知を待ってよい。一旦、通知が受信されると、<sequence>ホスティングCSEは、遠隔CSEに、対応する<request>または<transaction>リソースのコマンド属性がさらにまた更新されるまでに、結果が耐久的なものとなるようにトランザクションの結果をコミットするように命令してよい。次に、<sequence>ホスティングCSEは、結果が正常にコミットされたという遠隔CSEからの通知を待ってよい。一旦、コミットが成功したという通知が受信されると、<sequence>ホスティングCSEは、シーケンスリクエストの処理を完了して、その発信元に応答を返してよい。この応答は、ブロッキング式にまたは非ブロッキング式に返されてよい。この処理中のいずれかのステップにおいて、遠隔CSEがシーケンス内のいずれかのDSLTを正常にロック、実行またはコミットできなかった場合、<sequence>ホスティングCSEはシーケンスを中止して、対応する<request>または<transaction>リソースのコマンド属性がさらにまた更新されるまでに、これらのホスティングCSEによって、ターゲットリソースがロールバックされることを保証してよい。このロールバックに続いて、リソースは、DSLTシーケンス処理が開始される前と同じ状態に戻されてよい。
【表9】
【0279】
(oneM2M DSLTポリシーリソース)
oneM2MアーキテクチャでDSLTポリシー構成をサポートするために、いくつかのDSLTポリシー属性を表10に定義する。これらの属性は、oneM2M CMDH機能について定義されたような既存のoneM2M<mgmtObj>特化などの既存のoneM2Mリソースに追加されてよい。あるいは、DSLT機能に固有の新しいoneM2M<mgmtObj>特化などのこれらの属性をサポートするように、新しいリソースタイプが定義されてもよい。例えば、新しい特化が、DSLTスケジューリングポリシー、DSLT再試行ポリシー、DSLT優先順位付けポリシー、DSLT完了基準ポリシーおよびDSLTシーケンスポリシーに定義されてもよい。
【0280】
これらの新しい属性により、発信元(例えば、AEまたはCSE)は、DSLTリクエストをCSEがどう処理するかを制御するDSLT関連ポリシーをCSE内に構成することができる。
【表10】
【0281】
(oneM2M<group>リソースへのDSLT拡張)
1つまたは複数のCSEでホストされている複数のターゲットリソースへの原子的な配布およびDSLTの処理をサポートするために、
図26に示すように、oneM2M<group>リソースへの新しい<transactionFanOutPoint>仮想リソースおよび新しいtransactionState属性が使用されてよい。この新しいリソースおよび属性は、DSLTリクエストの発信元によって任意に使用されてよい。このリソースが使用された場合、グループホスティングCSEが発信元に代わってDSLTリクエストの処理を取り扱ってよい。この処理には、グループによって規定されたメンバーリソースのそれぞれへのDSLTのファンアウトを含んでよい。メンバーリソースが遠隔CSEでホストされている場合、グループホスティングCSEは、メンバーリソースを対象とする<request>または<transaction>リソースを生成することによって遠隔CSEへDSLTをファンアウトしてよい。処理には、グループホスティングCSEが、対応する各メンバーリソースの各DSLTの状態を管理することを含んでもよい。これは、発信元の代わりに行われて、DSLTが互いに対して原子的に(すなわち、全てが正常に実行されるか、またはいずれも実行されないかのどちらか一方で)実行されることを保証してもよい。これにより、発信元からのDSLTの処理のオーバーヘッドおよび負担を軽減することができる。この機能は、発信元が、繰り返しリクエストを作成して、多数のターゲットにDSLTを送信する場合に、特に有用となる可能性がある。発信元は、多数のターゲットリソース向けにこれらの繰り返しDSLTをそれ自体で処理しなければならないのではなく、この動作をその代わりに実施するグループホスティングCSEに肩代わりさせることができる。あるいは、DSLTの発信元がDSLTをそれ自体で管理する場合は、発信元はこの新しいリソースを使用せずにその管理を行ってもよい。
【0282】
この仮想リソースは表現を持たないが、<group>リソースの子リソースである。oneM2Mリクエストプリミティブが、<transactionFanOutPoint>リソースに送信される場合は常に、グループホスティングCSEは、親<group>リソースのmemberID属性によって規定されたメンバーのそれぞれに、対応するDSLT CREATEリクエストをファンアウトすることによってリクエストを処理してよい。発信元またはグループホスティングCSEで構成されるローカルポリシーによって規定されている場合、メンバーにファンアウトする各DSLT CREATEリクエスト向けに、グループホスティングCSEは、発信元から受信した元のリクエストプリミティブを有する属性、「Initial」の値を有する状態属性、結果の満了時間パラメータよりも小さな値を有するexecutionTime属性を構成してよい。その後、グループホスティングCSEは、ファンアウトされたDSLTリクエストの取り扱いを、互いに対して原子的に(すなわち、ファンアウトされたトランザクションの全てが正常に完了するか、またはその全てが中止されるかのどちらか一方で)全て処理されるように調整してよい。メンバーホスティングCSEにファンアウトされたDSLT CREATEリクエストに対して、これらのCSEは、規定された実行時間においてメンバーリソースで規定されたプリミティブを実施できるかどうかをチェックしてよい。チェックが成功する場合、メンバーホスティングCSEは、DSLTを正常に生成したと、グループホスティングCSEに応答を返してよい。チェックが成功しない場合、メンバーホスティングCSEは、その失敗結果と共に応答を返してもよい。トランザクションの処理に対して、グループホスティングCSEによってタイマーが継続されてよい。タイマーの満了前に各メンバーホスティングCSEからDSLTの正常生成の応答が受信される場合、トランザクションを次に進めて実行することができる。グループホスティングCSEは、任意選択でコマンドを各メンバーホスティングCSEに送信して、トランザクションを実行し、コミットすることを命令してよい。トランザクションが進行できない場合、グループホスティングCSEは、DSLTを正常に生成したと示したいずれのメンバーホスティングCSEにも、DSLT DELETEリクエストを送信することによってトランザクションを中止してもよい。トランザクションが実行できる場合、メンバーで実行した各リクエストプリミティブからの個々の応答は、グループホスティングCSEに返されてよい。次に、グループホスティングCSEは、応答を集約して、発信元に結果を返してよい。応答の集約のためにグループホスティングCSEによってタイマーが継続されてもよい。全ての応答が受信されるか、タイマーが満了すると、応答は集約される。時間満了後に受信される応答は、破棄されてよい。この処理中のいずれかのステップにおいて、グループホスティングCSEが、グループメンバーのそれぞれから、DSLTをロック、実行またはコミットできるという成功の確認を受け取らない場合は、グループホスティングCSEは、DSLTを中止して、ターゲットメンバーリソースがそれぞれのメンバーホスティングCSEによってロールバックされることを保証してよい。このロールバックに続いて、リソースは、DSLT処理が開始される前と同じ状態に戻されてよい。グループホスティングCSEは、トランザクションの処理状態(例えば、開始(initial)、ロックされた(locked)、実行された(executed)、コミットされた(committed)、または中止された(aborted))を用いて更新されたtransactionState属性を保持してもよい。
【0283】
別の実施形態では、新しい属性(例えば、transactionFanOutEnable)が、代わりに<group>リソースに追加されてもよい。この属性を使用して、<group>の既存の<fanOutPoint>仮想リソースを対象とするリクエストが、DSLTまたは非DSLTリクエストとして次に進むべきかどうかを限定してよい。この選択肢については、
図26に示していない。
【0284】
さらに別の実施形態では、グループホスティングCSEは、代わりに、oneM2M<group>リソースの既存の<fanoutPoint>を対象とするリクエストが、DSLTとして処理されるべきか否か検出するために、リクエスト内の1つまたは複数のDSLT関連パラメータの存在に依存してよい。
【0285】
(oneM2Mロック属性)
全てのoneM2Mリソースに、追加のoneM2M「lock」共通属性が使用されてよい。この新しい属性は、リソースがロック状態かどうかを追跡し、かつ通知するために、ホスティングCSEによって使用されてよい。例えば、DSLTが処理されるときに、そのターゲットリソースはロックされてよい。ロックされると、ロック属性は、リソースがロックされたことを反映するために更新されてよい。この属性は、trueまたはfalseなどの値で構成されてよい。あるいは、この属性は、様々なタイプのロック(例えば、更新のためのみにロックされるなど)に反映する値をサポートしてもよい。
【0286】
(oneM2M DSLT識別子)
DSLT機能をサポートするために、oneM2M DSLT識別子が使用されてよい。個々のDSLTリクエストの処理には、それぞれが固有の異なるoneM2Mリクエスト識別子を有する複数のoneM2Mリクエストを必要とする場合があるので、DSLT識別子は、これらの別々のoneM2Mリクエストを単一のDSLTに関連付けるメカニズムを提供する。この関連付けのレベルにより、DSLTを構成する個々のoneM2Mリクエストの、分散され、かつ原子的処理を可能にする。表11は、oneM2M DSLT識別子フォーマットの説明である。表12は、oneM2M DSLTベースのリクエスト識別子の構成の説明である。
【表11】
【表12】
【0287】
DSLTシーケンス機能をサポートするために、DSLTシーケンス用のoneM2M識別子について記載する。DSLTシーケンスの処理には複数のDSLTの処理を必要とする場合があり、各DSLTの処理にはそれぞれが固有の異なるoneM2Mリクエスト識別子を有する複数のoneM2Mリクエストの処理を必要とする場合があるので、DSLTシーケンス識別子は、これらの複数のDSLTおよびoneM2Mリクエストを単一のDSLTシーケンスに関連付けるメカニズムを提供する。この関連付けのレベルにより、DSLTシーケンスを構成する個々のDSLTおよびoneM2Mリクエストの、分散され、かつ原子的処理を可能にする。表13は、oneM2M DSLTシーケンス識別子フォーマットの説明である。表14は、oneM2M DSLTシーケンスベースのDSLT識別子の構成の説明である。表15は、oneM2M DSLTシーケンスベースのリクエスト識別子の構成の説明である。
【表13】
【表14】
【表15】
【0288】
(oneM2M DSLTグループファンアウトプロシージャ)
図27-1および27-2は、oneM2M DSLTグループファンアウトプロシージャを示す図である。
【0289】
図27-1および27-2のステップ1では、oneM2M<group>リソースが生成される。グループのメンバーは、ASN-CSE1およびASN-CSE2でホストされるコンテナリソースとなるように構成される。このグループはDSLT-TF1202をホストしているAEまたはシステム内の別のAEによって生成されてよい。
【0290】
図27-1および27-2のステップ2では、DSLT-TF1202機能をホストしているAEは、ASN-CSE1およびASN-CSE2によってホストされているコンテナリソースに属するoneM2M<contentInstance>を原子的に生成するためにoneM2M DSLTリクエストを構築する。このDSLTリクエストは、
図27-1および27-2に示すように、oneM2M<contentInstance>CREATEプリミティブとして構成されてよい。あるいは、このDSLTリクエストは、<contentInstance>CREATEプリミティブをそのプリミティブ属性内にカプセル化するoneM2M<transaction>CREATEリクエストプリミティブとして構成されてもよい。
図27-1および27-2には示されていないが、リクエストは、同様に、いつ操作を実施するかのスケジュール、実行基準のセット、優先順位、トランザクションの処理の試みが失敗した場合の再試行の回数、および完了基準のセットなどの追加のパラメータを含んでよい。
【0291】
図27-1および27-2のステップ3では、DSLT-TF1202機能をホストしているAEは、DSLT-MF1204性能をサポートしているIN-CSE2702にDSLTリクエストを送信する。リクエストは、IN-CSE2702がメンバーにリクエストを原子的に配布することによってリクエストを処理できるようにステップ1で生成されたグループリソースの<transactionFanOutPoint>子リソースに送信される。このリクエストは、新しいタイプのoneM2M非ブロッキングリクエストである非ブロッキングトランザクションリクエストを使用して送信されてよい。このリクエストでは、非ブロッキングリクエストの処理が完了したときに通知する際にIN-CSE2702が使用することになる通知コールバックURIをAEが規定してよい。あるいは、AEは代わりにブロッキングリクエストを使用することもできる。
【0292】
図27-1および27-2のステップ4では、IN-CSE2702はDSLTリクエストを受信する。リクエストが非ブロッキングトランザクションとして送信される場合、IN-CSE2702は、トランザクション指向属性をサポートし、かつ状態属性を「Initial」と構成するoneM2M<request>リソースを生成する。この<request>リソースは、DSLTを処理している間に、DSLTリクエストリソースを追跡するために、IN-CSE2702によって使用されてよい。
【0293】
図27-1および27-2のステップ5では、IN-CSE2702は、リクエストを受信して処理を開始したことを示す応答をAEに返す。あるいは、リクエストはブロッキング式に処理されてもよい。
【0294】
図27-1および27-2のステップ6では、IN-CSE2702は、次にグループトランザクションファンアウト性能を使用してDSLTを処理する。
【0295】
図27-1および27-2のステップ7では、IN-CSE2702は、グループメンバーリソースがIN-CSE2702でローカルにホストされていないことを検出する。その後、IN-CSE2702は対応するDSLTリクエスト(すなわち、<contentInstance>CREATEプリミティブ)を準備し、これらのターゲットデバイスに配布(すなわち、ファンアウト)する。このDSLTは、
図27-1および27-2に示すように、非ブロッキングoneM2M<contentInstance>CREATEプリミティブとして構成されてよい。あるいは、このDSLTリクエストは、<contentInstance>CREATEプリミティブをそのプリミティブ属性内にカプセル化するoneM2M<transaction>CREATEリクエストプリミティブとして構成されてもよい。
【0296】
図27-1および27-2のステップ8では、ASN-CSE2704および1206のDSLT-CF1208および1210は、<contentInstance>を生成するDSLTをそれぞれ受信して、<request>(あるいは<transaction>)リソースを生成することによってリクエストを処理し、DSLTを処理している間、トランザクション状態を追跡する。ASN-CSE2704および2706は、DSLTに含まれるトランザクション情報を用いてこのリソースの状態を構成する。ASN-CSE2704および2706は、まず、ターゲットリソースの利用可能性をチェックすることによってトランザクションの処理を開始する。ASN-CSE2704および2706は、規定操作を実施するためのリソースの利用可能性、ならびに現時点でリソースを予約およびロックしている他のトランザクションがないことをチェックする。リソースが利用可能な場合、ASN-CSE2704および2706は、現在のトランザクションの処理中に届く可能性のある他のトランザクションからの干渉を受けることなく、該リソースでトランザクションを実施できるようにリソースをロックする。
【0297】
図27-1および27-2のステップ9では、ASN-CSE2704および2706は、DSLTが受信されて、トランザクションで処理が開始して、ターゲットリソースが利用可能であり、他のトランザクションから干渉を受けることなく現在のトランザクションが進行できるようにリソースがロックされたことを示すステータスをIN-CSE2702に返す。
【0298】
図27-1および27-2のステップ10では、IN-CSE2702は、全てのメンバーがターゲットリソースを正常にロックしたと応答したことを検出する。その結果、IN-CSE2702は、トランザクションを実行するように、ターゲットメンバーに続いて命令してよいと判断する。
【0299】
図27-1および27-2のステップ11では、IN-CSE2702は、トランザクションに関連付けられたその対応する<request>リソース内のコマンド属性を更新するように各ASN-CSE2704および2706にリクエストを送信する。コマンド属性は、値「Execute」に更新される。あるいは、このコマンド属性は、<transaction>リソースの属性であってもよい。
【0300】
図27-1および27-2のステップ12では、トランザクションの実行のコマンドを受信すると、各ASN-CSE2704および2706は、ターゲットリソースでトランザクションに規定された操作を実施する。
【0301】
図27-1および27-2のステップ13では、一旦、実行が完了すると、各ASN-CSE2704および2706は、実行結果、およびそれが成功したか否かと共に、IN-CSE2702に応答を返す。
【0302】
図27-1および27-2のステップ14では、IN-CSE2702は、全てのグループメンバーがターゲットリソースでトランザクションを正常に実行したと応答したことを検出する。その結果、IN-CSE2702は、結果(例えば、更新されたリソース表現)を耐久的なものにし、かつリソースおよびその更新済み状態に他のトランザクションがアクセスできるようにリソースのロックを解放することによって結果をコミットするように、メンバーに続いて命令してよいと判断する。
【0303】
図27-1および27-2のステップ15では、IN-CSE2702は、各グループメンバーにリクエストを送信して、トランザクションをコミットするようにコマンドする。このコマンドは、IN-CSE2702によって発行されてよく、各ASN-CSE2704および2706でホストされている<request>(あるいは<transaction>)リソース内のコマンド属性を更新し、トランザクションをコミットするように命令する。
【0304】
図27-1および27-2のステップ16では、トランザクションをコミットするコマンドを受信すると、各ASN-CSE2704および2706は、トランザクション実行時に行われた可能性のあるリソースへのいずれの更新もその状態が耐久的なものとなるように保存する。次に、ASN-CSE2704および2706はターゲットリソースのいずれのロックも解放する。
【0305】
図27-1および27-2のステップ17では、一旦、コミットが完了すると、各ASN-CSE2704および2706は、コミット結果、およびそれが成功したか否かと共に、IN-CSE2702に応答を返す。
【0306】
図27-1および27-2のステップ18では、IN-CSE2702は、全てのグループメンバー(すなわち、ASN-CSE2704および2706の両方)がターゲットリソースでトランザクションを正常にコミットしたと応答したことを検出する。
【0307】
図27-1および27-2のステップ19では、IN-CSE2702は、AEから受信したDSLTに対応する、そのローカルにホストされている<request>リソースを更新する。この更新には、グループメンバーに配布して、トランザクションが成功したかどうか、および成功しなかった場合はその失敗の原因または理由を示すDSLTのそれぞれのステータスが含まれる。
【0308】
図27-1および27-2のステップ20では、一旦、DSLT処理が完了すると、IN-CSE2702は、AEにDSLTの結果を含めて通知してよい。IN-CSE2702は、DSLTの全体的なステータスおよび個々のターゲットで実施された各配布されたトランザクションの個々のステータスを含めてよい。これには、失敗の原因を説明するエラーまたはデバッグ情報を含んでよい。これにより、技術者およびオペレータは、問題を検出して、別のDSLTの発行を再試行する前に障害のあるデバイスを交換または修復できる。
【0309】
図27-1および27-2のステップ21では、完了したDSLTの通知の受信後、AEは、IN-CSE2702に、通知受信の確認を応答してよい。
【0310】
図27-1および27-2のステップ22では、いずれかの時点で、AEがDSLT処理のステータスのチェックを所望する場合、IN-CSE2702がホストしている<request>リソースに、ステータスをチェックするように問い合わせしてよい。問い合わせリクエストを受信すると、IN-CSE2702は、このリソース内で保持されているDSLTの状態をチェックしてよい。
【0311】
図27-1および27-2のステップ23では、IN-CSE2702は、AEにDSLT処理の状態を返す。
【0312】
(oneM2M DSLTシーケンスプロシージャ)
図28-1および28-2は、oneM2M DSLTシーケンスプロシージャを示す図である。
【0313】
図28-1および28-2のステップ1は、任意のステップである。
図28-1および28-2のステップ1では、1つまたは複数のoneM2M DSLTまたはDSLTシーケンスポリシーリソースが生成される。これらリソースは、DSLT-TF1202をホストしているAEまたはシステム内の別のAEによって生成されてよい。各ポリシーリソースは、IN-CSE2702によってホストされているDSLT-MF1204がDSLTシーケンスリクエストをどのように処理するかを制御するための1つまたは複数のルールを含んでよい。これらのルールは、DSLTシーケンススケジューリング、DSLTシーケンスの再試行、DSLTシーケンスの優先順位付け、ならびに、DSLTシーケンス向けの実行基準および完了基準に関連してよい。あるいは、IN-CSE2702は、DSLTシーケンスポリシーを用いて事前にプロビジョンされてもよい。
【0314】
図28-1および28-2のステップ2では、DSLT-TF1202機能をホストしているAEは、ASN-CSE2704および2706によってホストされているコンテナリソースに属する一連のoneM2M<contentInstance>を原子的に生成するために、oneM2M DSLTシーケンスリクエストを構築する。このDSLTシーケンスリクエストは、oneM2M<sequence>CREATEプリミティブとして構成されてよい。<sequence>リソースは、一連の<contentInstance>CREATEプリミティブをそのトランザクション属性内にカプセル化する。各<contentInstance>CREATEプリミティブは、ASN-CSE2704および2706によってホストされるコンテナリソースとなるように構成されるそのメンバー属性を有するIN-CSE2702でホストされているグループリソースを対象としてよい。したがって、各<contentInstance>CREATEプリミティブは、シーケンス内の別々のトランザクションである。
図27-1および27-2には示されていないが、個々の<contentInstance>CREATEプリミティブは、代わりに、IN-CSE2702で別々の<transaction>リソースとして生成されてもよい。<sequence>リソースのトランザクション属性は、これらの個々の<transaction>リソースを参照する識別子のリストによって構成されてよい。<sequence>CREATEプリミティブは、同様に、いつシーケンスを実施するかのスケジュール、実行基準のセット、優先順位、シーケンスの処理が失敗した場合に試みる再試行の回数、および完了基準のセットなどの追加のパラメータを含んでよい。
【0315】
図28-1および28-2のステップ3では、DSLT-TF1202機能をホストしているAEは、DSLT-MF1204性能をサポートしているIN-CSE2702にDSLTシーケンスリクエストを送信する。このリクエストは、ブロッキングまたは非ブロッキングリクエストを使用してIN-CSE2702に送信されてよい。非ブロッキングリクエストが使用される場合、AEは、非ブロッキングリクエストの処理が完了したときに通知する際にIN-CSE2702が使用することになる通知コールバックURIを規定してよい。あるいは、AEは、ブロッキングリクエストまたは代わりに既存のoneM2M非ブロッキングリクエストのうち1つを使用できる。
【0316】
図28-1および28-2のステップ4では、IN-CSE2702はDSLTシーケンスリクエストを受信する。
【0317】
図28-1および28-2のステップ5では、IN-CSE2702は、リクエストを受信して処理を開始したことを示す応答をAEに返す。あるいは、リクエストはブロッキング式に処理されてもよい。図には示されていないが、<sequence>リソースに変更(例えば、シーケンスの状態の更新)が生じるときにIN-CSE2702から通知を受信するために、AEは<sequence>リソースにサブスクリプションを生成してもよい。
【0318】
図28-1および28-2のステップ6では、次に、IN-CSE2702は、DSLTシーケンスの処理を開始する。
【0319】
図28-1および28-2のステップ7では、IN-CSE2702は、リクエストを解析し、シーケンス内の最初のDSLTを入手する。IN-CSE2702は、このDSLTがASN-CSE2704および2706でホストされているコンテナであるメンバーリソースで構成されるグループリソースを対象としていることを検出する。その後、IN-CSE2702は対応するDSLTリクエスト(すなわち、<contentInstance>CREATEプリミティブ)を準備し、これらのターゲットデバイスに配布(すなわち、ファンアウト)する。このDSLTは、
図27-1および27-2に示すように、非ブロッキングoneM2M<contentInstance>CREATEプリミティブとして構成されてよい。あるいは、DSLTリクエストは、<contentInstance>CREATEプリミティブをそのプリミティブ属性内にカプセル化するoneM2M<transaction>CREATEリクエストプリミティブとして構成されてもよい。
【0320】
図28-1および28-2のステップ8では、IoTデバイス1234および1236のDSLT-CF1208および1210は、それぞれのDSLT-REQを受信する。どちらともリクエストを処理し、ローカルDSLTリソースを生成して、DSLTを処理している間、トランザクションの状態を追跡する。DSLT-CFは、DSLT-REQパラメータ内に含まれている情報を用いてそれらのリソースの属性を構成する。DSLT-CFは、まず、ターゲットリソースの利用可能性をチェックすることによってトランザクションの処理を開始する。リソースがIoTデバイスに対してローカルの場合、DSLT-CF1210は、規定操作を実施するためのリソースの利用可能性、ならびに現時点でリソースを予約およびロックしている他のトランザクションがないことをチェックする。リソースが利用可能な場合は、DSLT-CFは、現在のトランザクションの処理中に届く可能性のある他のトランザクションからの干渉を受けることなく、該リソースでトランザクションを実施してもよいようにリソースをロックしてよい。DSLT-CF1210がDSLT-REQを受信して、リクエストがローカルデバイスでホストされていないリソースを対象としていることを見つける場合、DSLT-CFは、(場合によっては、デバイスでローカルにホストされているDSLT-MF1204の支援を用いて)その他のデバイスのDSLT-CF1208がそれを処理してもよいように、システム内の別のデバイスに向けてDSLT-REQを再対象としてよい。
【0321】
ASN-CSE2704および2706のDSLT-CFは、<contentInstance>を生成するDSLTをそれぞれ受信し、<request>(あるいは<transaction>)リソースを生成することによってリクエストを処理して、DSLTを処理している間、トランザクション状態を追跡する。ASN-CSE2704および2706は、DSLTに含まれるトランザクション情報を用いてこのリソースの状態を構成する。ASN-CSE2704および2706は、まず、ターゲットリソースの利用可能性をチェックすることによってトランザクションの処理を開始する。ASN-CSE2704および2706は、規定操作を実施するためのリソースの利用可能性、ならびに現時点でリソースを予約およびロックしている他のトランザクションがないことをチェックする。リソースが利用可能な場合、ASN-CSE2704および2706は、現在のトランザクションの処理中に届く可能性のある他のトランザクションからの干渉を受けることなく、該リソースでトランザクションを実施できるようにリソースをロックする。
【0322】
図28-1および28-2のステップ9では、ASN-CSE2704および2706は、DSLTが受信されて、トランザクションで処理が開始して、ターゲットリソースが利用可能であり、他のトランザクションから干渉を受けることなく現在のトランザクションが進行できるようにリソースがロックされたことを示すステータスをIN-CSE2702に返す。
【0323】
図28-1および28-2のステップ10では、IN-CSE2702は、全てのメンバーがターゲットリソースを正常にロックしたと応答したことを検出する。その結果、IN-CSE2702は、トランザクションを実行するように、ターゲットメンバーに続いて命令してよいと判断する。
【0324】
図28-1および28-2のステップ11では、IN-CSE2702は、トランザクションに関連付けられたその対応する<request>リソース内のコマンド属性を更新するように各ASN-CSEにリクエストを送信する。コマンド属性は、値「Execute」に更新される。あるいは、このコマンド属性は、<transaction>リソースの属性であってもよい。
【0325】
図28-1および28-2のステップ12では、トランザクションの実行のコマンドを受信すると、各ASN-CSE2704および2706は、ターゲットリソースでトランザクションに規定された操作を実施する。
【0326】
図28-1および28-2のステップ13では、一旦、実行が完了すると、各ASN-CSE2704および2706は、実行結果、およびそれが成功したか否かと共に、IN-CSE2702に応答を返す。
【0327】
図28-1および28-2のステップ14では、IN-CSE2702は、全てのターゲットメンバー(すなわち、ASN-CSE2704および2706)がターゲットリソースでトランザクションを正常に実行したと応答したことを検出する。次いで、IN-CSE2702は、シーケンス内に残存するDSLTがあるかどうかをチェックする。残存するDSLTがある場合、IN-CSE2702は、次のDSLTを準備して、ステップ7~14を繰り返す。シーケンス内に残存するDSLTがない場合、IN-CSE2702は、結果を耐久的なものにし、かつリソースおよび更新済み状態に他のトランザクションがアクセスできるようにリソースのロックを解放することによって、シーケンスの一部として処理された全てのDSLTの結果をコミットするように、メンバーに続いて命令してよいと判断する。
【0328】
図28-1および28-2のステップ15では、IN-CSE2702は、各DSLTが実行されたASN-CSE2704および2706に一連のコミットリクエストを送信する。各コマンドは、IN-CSE2702によって発行されてよく、各ASN-CSE2704および2706でホストされている<request>(あるいは<transaction>)リソース内のコマンド属性を更新し、対応するトランザクションをコミットするように命令する。
【0329】
図28-1および28-2のステップ16では、所定のDSLTをコミットする各コマンドを受信すると、各ASN-CSE2704および2706は、トランザクション実行時に行われた可能性のあるリソースへのいずれの更新もその状態が耐久的なものとなるように保存する。コミットされるリソースの状態のいずれの更新にも基づいて、ターゲットリソースにサブスクライブした可能性のあるシステム内のいずれの他のエンティティにも更新状態に関する通知を送信してもよい。次いで、各ASN-CSE2704および2706は、ターゲットリソースのいずれのロックも解放し、保存した操作前状態のいずれも削除してよい。
【0330】
図28-1および28-2のステップ17では、一旦、各コミットが完了すると、各ASN-CSE2704および2706は、コミット結果、およびそれが成功したか否かと共に、IN-CSE2702に応答を返す。
【0331】
図28-1および28-2のステップ18では、IN-CSE2702は、それぞれのターゲットASN-CSE2704および2706が、それぞれのターゲットリソースでシーケンス内の全てのトランザクションを正常にコミットしたと応答したことを検出する。
【0332】
図28-1および28-2のステップ19では、IN-CSE2702は、自身のローカルにホストされているDSLTシーケンスリソースを更新する。この更新には、配布されたシーケンス内のDSLTのそれぞれのステータスが含まれる。このステータスは、トランザクションシーケンスが成功したかどうかを示し、成功しなかった場合はその失敗の理由を示す。IN-CSE2702は、シーケンス内の失敗したいずれのDSLTの個々のステータスおよび失敗の情報も含めてもよい。
【0333】
図28-1および28-2のステップ20では、一旦、DSLTシーケンス処理が完了すると、IN-CSE2702は、AEにDSLTシーケンスの結果を含めて通知してよい。IN-CSE2702は、DSLTシーケンスの全体的なステータスおよび個々のターゲットで実施されたシーケンス内の各配布されたトランザクションの個々のステータスを含めてよい。これは、失敗の原因を説明するエラーまたはデバッグ情報を含んでよい。これにより、技術者およびオペレータは、問題を検出して、別のDSLTの発行を再試行する前に障害のあるデバイスを交換または修復できる。
【0334】
図28-1および28-2のステップ21では、完了したDSLTシーケンスの通知の受信後、AEは、IN-CSE2702に、通知受信の確認を応答してよい。
【0335】
図28-1および28-2のステップ22では、いずれかの時点で、AEがDSLTシーケンス処理のステータスのチェックを所望する場合、IN-CSE2702にステータスをチェックするように問い合わせしてよい。問い合わせリクエストを受信すると、IN-CSE2702は、対応するDSLTシーケンスリソース内で保持しているDSLTシーケンスリソースの状態をチェックしてよい。
【0336】
図28-1および28-2のステップ23では、DSLT-MF1204は、DSLTステータス問い合わせを開始したDSLT-TF1202にDSLTシーケンス処理の状態を返す。
【0337】
(分散サービス層トランザクションユーザーインターフェース)
グラフィカルユーザーインターフェース(Graphical User Interface:GUI)などのインターフェースを使用して、ユーザーが分散トランザクション管理に関連した機能を制御および/または構成することを支援してよい。
図29に示すようなインターフェース2902、2904、2906および2908などのユーザーインターフェースを実装して、リクエストが原子的に実施されるような複数のIoTデバイスへのDSLTベースのリクエストをユーザーが開始できるようにしてもよい。例えば、組立ライン展開などの調整された方式で動作するデバイスのセット上の、制御設定の原子的な更新を実施することなどが挙げられる。受信するDSLTをどう処理するかを制御するために、デバイス、ゲートウェイ、サーバおよびアプリケーション内のDSLT関連ポリシーを構成するためにもユーザーインターフェースを実装してよい。インターフェース2902、2904、2906および2908は、
図30C~Dに示し、以下で述べるようなディスプレイを使用して作られてよいことを理解されたい。
【0338】
(M2M/IoT/WoT通信システムの例)
本明細書に記載されている種々の技術は、ハードウェア、ファームウェア、ソフトウェアまたは適切な場合にこれらの組み合わせと連携して実装されてもよい。かかるハードウェア、ファームウェア、およびソフトウェアは、通信ネットワークの種々のノードで配置される装置に含まれてもよい。本明細書記載の方法を行うために、装置は単独でまたは互いに連携して動作してもよい。本明細書において、用語「装置」、「ネットワーク装置」、「ノード」、「デバイス」、および「ネットワークノード」は同じ意味で用いられる場合がある。
【0339】
サービス層は、ネットワークサービスアーキテクチャ内の機能層であってよい。サービス層は、典型的には、HTTP、CoAPまたはMQTTなどのアプリケーションプロトコル層の上位に位置し、クライアントアプリケーションに付加価値サービスを提供する。サービス層は、例えば、コントロール層およびトランスポート層/アクセス層などの下位リソース層のコアネットワークにインターフェースも提供する。サービス層は、サービス定義、サービス実行時間有効化、ポリシー管理、アクセス制御、およびサービスクラスタ化を含む(サービス)性能または機能の複数のカテゴリーをサポートする。近年、いくつかの業界規格団体、例えば、oneM2Mが、インターネット/ウェブ、セルラー、企業ネットワーク、およびホームネットワークなどの展開へのM2Mタイプのデバイスおよびアプリケーションの統合に関連する課題に対処するためにM2Mサービス層を開発している。M2Mサービス層は、CSEまたはSCLと呼ばれることもあるサービス層によってサポートされる上述の性能または機能の集合またはセットへのアクセスをアプリケーションおよび/または種々のデバイスに提供することができる。いくつかの例としては、種々のアプリケーションによって一般に使用されることがある、セキュリティ、課金、データ管理、デバイス管理、発見、プロビジョニング、および接続性管理が挙げられるが、これらに限定されない。これらの性能または機能は、M2Mサービス層によって定義されるメッセージフォーマット、リソース構造、およびリソース表現を利用するAPIを介して、そのような種々のアプリケーションが利用できるものである。CSEまたはSCLは、ハードウェアおよび/またはソフトウェアによって実装可能であり、それらがそのような性能もしくは機能を使用するために、種々のアプリケーションおよび/またはデバイス(すなわち、そのような機能エンティティ間の機能インターフェース)で具現化される(サービス)性能もしくは機能を提供する機能エンティティである。
【0340】
図30Aは、1つまたは複数の開示する実施形態がその中で実装される可能性のある、M2M(machine-to-machiine)、IoT(Internet of Things)、またはWoT(Web of Things)通信システム10の例の図である。概して、M2M技術は、IoT/WoTのための構築ブロックを提供し、任意のM2Mデバイス、M2Mゲートウェイ、M2Mサーバ、またはM2Mサービスプラットフォームは、IoT/WoTのコンポーネントまたはノード、ならびにIoT/WoTサービス層などであってよい。通信システム10は、開示される実施形態の機能を実装するために使用されてよく、機能、ならびにDSLT-TF1202、DSLT-MF1204および1206、DSLT-CF1208、1210、1212および1214、DSLT-MF API1302、DSLT-MF処理1304、DSLT-MFシーケンス処理1306、DSLT-MFポリシーエンジン1308、DSLT-MFスケジューラ1310、DSLT-CF API1402、DSLT-CF処理1404、DSLT-CFシーケンス処理1406、DSLT-MF CSF2304、サービス層102、アプリケーションプロトコル104、アプリケーション106、CSE302、306および2302、AE304、704、706、708および2306、NSE308、IoTアプリケーション1002および1230、IoTデバイス1004、1006、1008、1234、1236、1238および1240、IoTサーバ1102および1232、IoTゲートウェイ1242、IN-CSE2702、ASN-CSE2704および2706、および、インターフェース2902、2904、2906および2908などのインターフェースを作る論理的エンティティなどの論理的エンティティを含んでもよい。
【0341】
図30Aに示すように、M2M/IoT/WoT通信システム10は、通信ネットワーク12を含む。通信ネットワーク12は、固定ネットワーク(例えば、Ethernet、Fiber、ISDN、PLCなど)または無線ネットワーク(例えば、WLAN、セルラーなど)、もしくは異種ネットワークのネットワークであってよい。例えば、通信ネットワーク12は、音声、データ、ビデオ、メッセージング、ブロードキャストなどのコンテンツを複数のユーザーに提供する複数のアクセスネットワークで構成されてよい。例えば、通信ネットワーク12は、符号分割多重アクセス(Code Division Multiple Access:CDMA)、時分割多重アクセス(Time Division Multiple Access:TDMA)、周波数分割多重アクセス(Frequency Division Multiple Access:FDMA)、直交FDMA(Orthogonal FDMA:OFDMA)、単一キャリアFDMA(Single-Carrier FDMA:SC-FDMA)などの1つまたは複数のチャネルアクセス方法を採用してもよい。さらに、通信ネットワーク12は、例えば、コアネットワーク、インターネット、センサネットワーク、工業制御ネットワーク、パーソナルエリアネットワーク、融合個人ネットワーク、衛星ネットワーク、ホームネットワーク、または企業ネットワークなどの他のネットワークを含んでよい。
【0342】
図30Aに示すように、M2M/IoT/WoT通信システム10は、インフラストラクチャドメインおよびフィールドドメインを含んでもよい。インフラストラクチャドメインとは、エンドツーエンドM2M展開のネットワーク側を指し、フィールドドメインとは、通常は、M2Mゲートウェイの背後にあるエリアネットワークを指す。フィールドドメインおよびインフラストラクチャドメインの両方は、種々の異なるネットワークノード(例えば、サーバ、ゲートウェイ、デバイスなど)を含んでよい。例えば、フィールドドメインは、M2Mゲートウェイ14および端末デバイス18を含む。任意の数のM2Mゲートウェイデバイス14およびM2M端末デバイス18が、所望に応じてM2M/IoT/WoT通信システム10に含まれてもよいことが理解されよう。M2Mゲートウェイデバイス14およびM2M端末デバイス18のそれぞれは、通信ネットワーク12または直接無線リンクを介して、通信回路を使用して、信号を伝送および受信するように構成される。M2Mゲートウェイデバイス14は、通信ネットワーク12などのオペレータネットワーク、または直接無線リンクのいずれかを通して、無線M2Mデバイス(例えば、セルラーおよび非セルラー)ならびに固定ネットワークM2Mデバイス(例えば、PLC)が通信できるようにする。例えば、M2M端末デバイス18は、データを収集し、通信ネットワーク12または直接無線リンクを介して、データをM2Mアプリケーション20または別のM2Mデバイス18に送信してもよい。M2M端末デバイス18はまた、M2Mアプリケーション20またはM2M端末デバイス18からデータを受信してもよい。さらに、データおよび信号は、以下で説明されるように、M2Mサービス層22を介して、M2Mアプリケーション20に送信され、そこから受信されてもよい。M2M端末デバイス18およびゲートウェイ14は、例えば、セルラー、WLAN、WPAN(例えば、Zigbee、6LoWPAN、Bluetooth(登録商標))、直接無線リンク、および有線を含む、種々のネットワークを介して通信してもよい。
【0343】
例示的M2M端末デバイス18としては、タブレット、スマートフォン、メディカルデバイス、気温・天候モニター、コネクテッドカー、スマートメーター、ゲームコンソール、携帯情報端末、健康・フィットネスモニター、照明、サーモスタット、機器、ガレージドアおよびアクチュエータ式のデバイス、セキュリティデバイスおよびスマートコンセントなどが挙げられるが、これらに限定されない。
【0344】
図30Bを参照すると、図示されているフィールドドメイン内のM2Mサービス層22は、M2Mアプリケーション20、M2Mゲートウェイデバイス14およびM2M端末デバイス18、ならびに通信ネットワーク12にサービスを提供する。M2Mサービス層22は、例えば、以下で説明され、
図30Cおよび30Dに図示されるデバイスなどを含む、1つまたは複数のサーバ、コンピュータ、デバイス、仮想マシン(例えば、クラウド/ストレージファームなど)などによって、実装されてよい。M2Mサービス層22は、所望により、任意数のM2Mアプリケーション、M2Mゲートウェイ14、M2M端末デバイス18、および通信ネットワーク12と通信してよい。M2Mサービス層22は、サーバ、コンピュータ、デバイスなどを含むことがある、ネットワークの1つまたは複数のノードによって実装されてよい。M2Mサービス層22は、M2M端末デバイス18、M2Mゲートウェイ14およびM2Mアプリケーション20に適用するサービス性能を提供する。M2Mサービス層22の機能は、例えば、ウェブサーバとして、セルラーコアネットワークで、クラウドで、など様々な方法で実装されてよい。
【0345】
図示されているM2Mサービス層22に類似したM2Mサービス層22’がインフラストラクチャドメイン内に存在する。M2Mサービス層22’は、インフラストラクチャドメイン内のM2Mアプリケーション20’および下位通信ネットワーク12にサービスを提供する。M2Mサービス層22’は、フィールドドメイン内のM2Mゲートウェイ14およびM2M端末デバイス18にもサービスを提供する。M2Mサービス層22’は、任意の数のM2Mアプリケーション、M2MゲートウェイおよびM2Mデバイスと通信してよい。M2Mサービス層22’は、異なるサービスプロバイダによるサービス層と相互作用してもよい。M2Mサービス層22’は、サーバ、コンピュータ、デバイス、仮想マシン(例えば、クラウドコンピューティング/ストレージファームなど)を含むネットワークの1つまたは複数のノードによるものである。
【0346】
さらに
図30Bを参照すると、M2Mサービス層22および22’は、多様なアプリケーションおよびバーティカルなシステムが活用することができるサービス配信性能のコアセットを提供する。これらのサービス性能は、M2Mアプリケーション20および20’がデバイスと相互作用し、データ収集、データ分析、デバイス管理、セキュリティ、請求、サービス/デバイス発見などの機能を果たすことを可能にする。本質的に、これらのサービス性能は、これらの機能を実装する負担をアプリケーションから取り除くので、アプリケーション開発を単純化し、市場に出す費用および時間を削減する。サービス層22および22’は、M2Mアプリケーション20および20’が、サービス層22および22’が提供するサービスと連携して、ネットワーク12を通して通信することも可能にする。
【0347】
本発明の方法は、サービス層22および22’の一部として実装されてもよい。サービス層22および22’は、アプリケーションプログラミングインターフェース(API)と下位ネットワークインターフェースとのセットを介して付加価値サービス能力をサポートするソフトウェアミドルウェア層である。ETSI M2MおよびoneM2Mの両方では、本出願の接続方法を含む可能性のあるサービス層を使用する。ETSI M2Mのサービス層は、サービス性能層(Service Capability Layer:SCL)と称される。SCLは、M2Mデバイス(この場合、デバイスSCL(Device SCL:DSCL)と称される)、ゲートウェイ(この場合、ゲートウェイSCL(Gateway SCL:GSCL)と称される)、および/またはネットワークノード(この場合、ネットワークSCL(Network SCL:NSCL)と称される)内に実装される可能性がある。oneM2Mサービス層は、共通サービス機能(CSF)(すなわち、サービス性能)のセットをサポートする。1つまたは複数の特定のタイプのCSFのセットのインスタンス化は、種々のタイプのネットワークノード(例えば、インフラストラクチャノード、ミドルノード、アプリケーション固有ノード)でホストされる可能性のある共通サービスエンティティ(CSE)と称される。さらに、本願の接続方法は、本願の接続方法などのサービスにアクセスするために、サービス指向アーキテクチャ(Service Oriented Architecture:SOA)および/またはリソース指向アーキテクチャ(Resource-Oriented Architecture:ROA)を使用するM2Mネットワークの一部として実装することができる。
【0348】
一部の実施形態では、M2Mアプリケーション20および20’は、開示したシステムおよび方法と共に使用されてよい。M2Mアプリケーション20および20’は、UEまたはゲートウェイと相互作用するアプリケーションを含んでよく、かつ他の開示したシステムおよび方法と共に使用されてもよい。
【0349】
一実施形態では、DSLT-TF1202、DSLT-MF1204および1206、DSLT-CF1208、1210、1212および1214、DSLT-MF API1302、DSLT-MF処理1304、DSLT-MFシーケンス処理1306、DSLT-MFポリシーエンジン1308、DSLT-MFスケジューラ1310、DSLT-CF API1402、DSLT-CF処理1404、DSLT-CFシーケンス処理1406、DSLT-MF CSF2304、サービス層102、CSE302、306および2302、NSE308、IoTサーバ1102および1232、IoTゲートウェイ1242、IN-CSE2702、ASN-CSE2704および2706などの論理的エンティティは、
図30Bに示すように、M2Mサーバ、M2MゲートウェイまたはM2MデバイスなどのM2MノードによってホストされるM2Mサービス層インスタンス内でホストされてよい。例えば、これらの論理的エンティティは、M2Mサービス層インスタンス内の個々のサービス性能を含むか、または既存のサービス性能内のサブ機能を同様に含んでよい。
【0350】
M2Mアプリケーション20および20’は、限定ではないが、輸送、健康およびウェルネス、コネクテッドホーム、エネルギー管理、アセット追跡、ならびにセキュリティおよび監視などの種々の業界でのアプリケーションを含むことができる。上記のように、システムのデバイス、ゲートウェイ、サーバおよび他のノードにわたって起動するM2Mサービス層は、例えば、データ収集、デバイス管理、セキュリティ、請求、位置追跡/ジオフェンシング、デバイス/サービス発見、およびレガシーシステム統合などの機能をサポートし、サービスとしてこれらの機能をM2Mアプリケーション20および20’に提供する。
【0351】
概して、サービス層22および22’は、アプリケーションプログラミングインターフェース(API)と下位ネットワークインターフェースとのセットを介して付加価値サービス能力をサポートするソフトウェアミドルウェア層を画定する。ETSI M2MおよびoneM2Mアーキテクチャの両方は、サービス層を規定している。ETSI M2Mのサービス層は、サービス性能層(SCL)と称される。SCLは、ETSI M2Mアーキテクチャの種々の異なるノードで実装される可能性がある。例えば、サービス層のインスタンスは、M2Mデバイス(この場合、デバイスSCL(DSCL)と称される)、ゲートウェイ(この場合、ゲートウェイSCL(GSCL)と称される)、および/またはネットワークノード(この場合、ネットワークSCL(NSCL)と称される)内に実装される可能性がある。oneM2Mサービス層は、共通サービス機能(CSF)(すなわち、サービス性能)のセットをサポートする。1つまたは複数の特定のタイプのCSFのセットのインスタンス化は、種々のタイプのネットワークノード(例えば、インフラストラクチャノード、ミドルノード、アプリケーション固有ノード)でホストされる可能性のある共通サービスエンティティ(CSE)と称される。第3世代パートナーシッププロジェクト(Third Generation Partnership Project:3GPP)は、マシンタイプコミュニケーション(Machine-Type Communications:MTC)向けのアーキテクチャも規定している。そのアーキテクチャでは、サービス層およびサービス層が提供するサービス性能は、サービス性能サーバ(Service Capability Server:SCS)の一部として実装される。ESTI M2MアーキテクチャのDSCL、GSCLまたはNSCLで、3GPP MTCアーキテクチャのサービス能力サーバ(SCS)で、oneM2MアーキテクチャのCSFまたはCSEで、またはネットワークの他のいくつかのノードで具現化される、サービス層のインスタンスは、サーバ、コンピュータおよび他のコンピューティングデバイスまたはノードを含むネットワーク内の1つまたは複数のスタンドアロンノードか、または1つまたは複数の既存のノードの一部としてのどちらかで実行する論理的エンティティ(例えば、ソフトウェア、コンピュータ実行可能命令など)として実装することができる。一例として、サービス層のインスタンスまたはそのコンポーネントは、以下で説明され、
図30Cおよび30Dに図示される基本的なアーキテクチャを有するネットワークノード(例えば、サーバ、コンピュータ、ゲートウェイ、デバイスなど)で動作するソフトウェアの形態で実装することができる。
【0352】
さらに、本明細書で記載し、図に示した論理的エンティティは、本出願のサービスにアクセスするためにサービス指向アーキテクチャ(SOA)および/またはリソース指向アーキテクチャ(ROA)を使用するM2Mネットワークの一部として実装することができる。
【0353】
図30Cは、M2Mデバイス18、M2Mゲートウェイ14、M2Mサーバ22などのネットワーク装置30の例示的ハードウェア/ソフトウェアアーキテクチャのブロック図である。装置30のアーキテクチャを使用して、本明細書に記載され、かつ図に示された上述の論理的エンティティのいずれかを実装してよい。装置30は、
図30A~Bに示すようなM2Mネットワークの一部、または非M2Mネットワークの一部であってもよい。
図30Cに示すように、装置30は、プロセッサ32と、非取り外し可能メモリ44と、取り外し可能メモリ46と、スピーカ/マイクロホン38と、キーパッド40と、ディスプレイ/タッチパッド/インジケータ42と、電源48と、全地球測位システム(Global Positioning System:GPS)チップセット50と、他の周辺機器52とを含んでもよい。装置30は、送受信機34および伝送/受信要素36などの通信回路も含んでもよい。装置30は、実施形態と一致したままで、上述の要素の任意の副次的組み合わせを含んでよいことを理解されたい。この装置は、本明細書に記載した機能を実装するノードであってもよい。
【0354】
プロセッサ32は、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(Digital Signal Processor:DSP)、複数のマイクロプロセッサ、DSPコアに関連付けられた1つまたは複数のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)回路、任意のその他のタイプの集積回路(Integrated Circuit:IC)、状態マシンなどであり得る。概して、プロセッサ32は、装置のメモリ(例えば、メモリ44および/またはメモリ46)に記憶されたコンピュータ実行可能命令を実行して、装置の種々の必要とされる機能を実施してもよい。例えば、プロセッサ32は、信号コーディング、データ処理、電力制御、入力/出力処理、および/または装置30が無線または有線環境で動作することを可能にする任意の他の機能を実施してもよい。プロセッサ32は、アプリケーション層プログラム(例えば、ブラウザ)および/または無線アクセス層(Radio Access-Layer:RAN)プログラムならびに/もしくは他の通信プログラムを実施してもよい。プロセッサ32は、例えば、アクセス層および/またはアプリケーション層などで、認証、セキュリティキー共有および/または暗号化操作などのセキュリティ操作も実施してよい。
【0355】
図30Cに示すように、プロセッサ32は、その通信回路(例えば、送受信機34および伝送/受信要素36)と連結している。プロセッサ32は、コンピュータ実行可能命令の実行により、通信回路を制御して、装置30に接続されているネットワークを介して他のネットワーク装置と通信させてもよい。特に、プロセッサ32は通信回路を制御して、本明細書および特許請求の範囲で記載される伝送および受信ステップを実施してもよい。
図30Cは、プロセッサ32と送受信機34とを別個のコンポーネントとして描写するが、プロセッサ32と送受信機34とは、電子パッケージまたはチップ内に一体化されてもよいことを理解されよう。
【0356】
伝送/受信要素36は、M2Mサーバ、ゲートウェイ、デバイスなどを含む他の装置に信号を伝送するまたはそこから信号を受信するように構成されてよい。例えば、一実施形態では、伝送/受信要素36は、RF信号を伝送および/または受信するように構成されるアンテナであってもよい。伝送/受信要素36は、WLAN、WPAN、セルラーなどの種々のネットワークおよびエアインターフェースをサポートしてよい。一実施形態では、伝送/受信要素36は、例えば、IR、UV、もしくは可視光信号を伝送および/または受信するように構成されるエミッタ/検出器であってもよい。更に別の一実施形態では、伝送/受信要素36は、RFおよび光信号の両方を伝送ならびに受信するように構成されてよい。伝送/受信要素36は、無線または有線信号の任意の組み合わせを伝送および/または受信するように構成されてもよいことを理解されよう。
【0357】
加えて、伝送/受信要素36は、単一の要素として
図30Cで描写されているが、装置30は、任意の数の伝送/受信要素36を含んでもよい。より具体的には、装置30は、MIMO技術を採用してもよい。したがって、一実施形態では、装置30は、無線信号を伝送および受信するために、2つまたはそれ以上の伝送/受信要素36(例えば、複数のアンテナ)を含んでもよい。
【0358】
送受信機34は、伝送/受信要素36によって伝送される信号を変調するように、かつ伝送/受信要素36によって受信される信号を復調するように構成されてよい。上記のように、装置30は、マルチモード性能を有し得る。したがって、例えば、UTRAおよびIEEE802.11などの複数のRATを介して装置30が通信することを可能にするために、送受信機34は複数の送受信機を含み得る。
【0359】
プロセッサ32は、非取り外し可能メモリ44および/または取り外し可能メモリ46などの任意のタイプの好適なメモリから情報にアクセスし、そこにデータを記憶してもよい。例えば、プロセッサ32は、前述したように、そのメモリ内にセッションコンテキストを記憶してもよい。非取り外し可能メモリ44は、ランダムアクセスメモリ(Random-Access Memory:RAM)、読み取り専用メモリ(Read-Only Memory:ROM)、ハードディスク、または任意の他のタイプのメモリ記憶デバイスを含んでもよい。取り外し可能メモリ46は、加入者識別モジュール(Subscriber Identity Module:SIM)カード、メモリスティック、セキュアデジタル(Secure Digital:SD)メモリカードなどを含んでもよい。別の実施形態では、プロセッサ32は、サーバまたは家庭用コンピュータなどの装置30上に物理的に位置しないメモリから情報にアクセスし、そこにデータを記憶してもよい。プロセッサ32は、システムのステータスを反映するためにディスプレイ上の可視的表示を制御するか、あるいは、ユーザーからの入力を取得するか、もしくは性能または設定に関する情報をユーザーに表示するように構成されてもよい。ディスプレイに表示することができるグラフィカルユーザーインターフェースは、ユーザーが本明細書に記載される機能をインタラクティブに実行できるようにするAPIの上に層化されてもよい。
【0360】
プロセッサ32は、電源48から電力を得てよく、装置30内のその他のコンポーネントへの電力を分配および/または制御するように構成されてよい。電源48は、装置30に給電するための任意の好適なデバイスであってよい。例えば、電源48としては、1つまたは複数の乾電池(例えば、ニッケルカドミウム(NiCd)、ニッケル亜鉛(NiZn)、ニッケル水素(NiMH)、リチウムイオン(Li-ion)など)、太陽電池、燃料電池などが挙げられる。
【0361】
プロセッサ32はまた、装置30の現在位置に関する位置情報(例えば、経度および緯度)を提供するように構成される、GPSチップセット50に連結されてよい。装置30は、実施形態と一致したままで任意の好適な位置決定方法を介して位置情報を取得してもよいことを理解されるであろう。
【0362】
プロセッサ32はさらに、追加の特徴、機能、および/または有線もしくは無線コネクティビティを提供する、1つまたは複数のソフトウェアならびに/もしくはハードウェアモジュールを含み得るその他の周辺機器52に連結されてよい。例えば、周辺機器52としては、加速度計、バイオメトリック(例えば、指紋)センサなどの種々のセンサ、e-コンパス、衛星送受信機、デジタルカメラ(写真またはビデオ用)、ユニバーサルシリアルバス(Universal Serial Bus:USB)ポートまたはその他の相互接続インターフェース、振動デバイス、テレビ送受信機、ハンズフリーヘッドセット、Bluetooth(登録商標)モジュール、周波数変調(Frequency Modulated:FM)無線ユニット、デジタル音楽プレーヤ、メディアプレーヤ、ビデオゲームプレーヤモジュール、インターネットブラウザなどが挙げられる。
【0363】
装置30は、センサ、大衆消費電子製品、スマートウォッチまたはスマート衣類などのウェアラブルデバイス、医療またはe健康デバイス、ロボット、産業機器、ドローン、車、トラック、電車または飛行機などの乗物などの他の装置もしくはデバイス内で具現化されてもよい。装置30は、周辺機器52のうちの1つを備えることがある相互接続インターフェース等の1つまたは複数の相互接続インターフェースを介して、上記の装置もしくはデバイスの他のコンポーネント、モジュール、またはシステムに接続してもよい。あるいは、装置30は、センサ、大衆消費電子製品、スマートウォッチまたはスマート衣類などのウェアラブルデバイス、医療またはe健康デバイス、ロボット、産業機器、ドローン、車、トラック、電車または飛行機などの乗物などの装置もしくはデバイスを含んでよい。
【0364】
図30Dは、M2Mサーバ、ゲートウェイ、デバイスあるいはその他のノードまたは装置などのM2Mネットワークの1つまたは複数の論理的エンティティまたはノードを実装するために使用することができる例示的コンピューティングシステム90のブロック図である。コンピューティングシステム90は、コンピュータまたはサーバを備えてもよく、ソフトウェアの形態(ソフトウェアが記憶されるまたはアクセスされる場所や手段は問わない)であってもよいコンピュータ可読命令によって主に制御されてよい。コンピューティングシステム90は、DSLT-TF1202、DSLT-MF1204および1206、DSLT-CF1208、1210、1212および1214、DSLT-MF API1302、DSLT-MF処理1304、DSLT-MFシーケンス処理1306、DSLT-MFポリシーエンジン1308、DSLT-MFスケジューラ1310、DSLT-CF API1402、DSLT-CF処理1404、DSLT-CFシーケンス処理1406、DSLT-MF CSF2304、サービス層102、アプリケーションプロトコル104、アプリケーション106、CSE302、306および2302、AE304、704、706、708および2306、NSE308、IoTアプリケーション1002および1230、IoTデバイス1004、1006、1008、1234、1236、1238および1240、IoTサーバ1102および1232、IoTゲートウェイ1242、IN-CSE2702、ASN-CSE2704および2706、ならびに、インターフェース2902、2904、2906および2908などのインターフェースを作る論理的エンティティなどの論理的エンティティを実行または含んでよい。コンピューティングシステム90は、例えば、M2Mデバイス、ユーザー端末、ゲートウェイ、UE/GW、または、モバイルコアネットワークのノード、サービス層ネットワークアプリケーションプロバイダのノード、端末デバイス18またはM2Mゲートウェイデバイス14を含む任意の他のノードであってよい。かかるコンピュータ可読命令は、コンピューティングシステム90を稼働させるように、中央演算処理装置(Central Processing Unit:CPU)91などのプロセッサ内で実行されてよい。多くの既知のワークステーション、サーバ、およびパーソナルコンピュータでは、中央演算処理装置91は、マイクロプロセッサと呼ばれる単一チップCPUによって実装される。他のマシンでは、中央演算処理装置91は、複数のプロセッサを備えることがある。コプロセッサ81は、追加の機能を実施またはCPU91を支援する、主要CPU91とは異なる、任意選択のプロセッサである。CPU91および/またはコプロセッサ81は、セッション証明書を受信またはセッション証明書に基づく認証など、E2E M2Mサービス層セッションのために、開示されるシステムおよび方法に関連するデータを受信、生成、ならびに処理してよい。
【0365】
動作時、CPU91は、命令をフェッチ、復号、および実行し、コンピュータの主要データ転送パスであるシステムバス80を介して、情報を他のリソースへ転送する、かつ他のリソースから転送する。当該システムバスは、コンピューティングシステム90内のコンポーネント同士を接続し、データ交換のための媒体を定義する。システムバス80は、典型的には、データを送信するためのデータライン、アドレスを送信するためのアドレスライン、ならびに割り込みを送信するため、およびシステムバスを操作するための制御ラインを含む。当該システムバス80の一例として、PCI(周辺コンポーネント相互接続)バスがある。
【0366】
システムバス80に連結されるメモリは、ランダムアクセスメモリ(RAM)82および読み取り専用メモリ(ROM)93を含む。当該メモリは、情報の記憶および取得を可能にする回路を含む。ROM93は、概して、容易に修正することができない記憶されたデータを含む。RAM82内に記憶されたデータは、CPU91またはその他のハードウェアデバイスによって読み取られてよく、または変更されてもよい。RAM82および/またはROM93へのアクセスは、メモリコントローラ92によって制御されてよい。メモリコントローラ92は、命令が実行されると、仮想アドレスを物理的アドレスに変換する、アドレス変換機能を提供してよい。メモリコントローラ92はまた、システム内のプロセスを隔離し、ユーザープロセスからシステムプロセスを隔離するメモリ保護機能を提供してよい。したがって、第1のモードで起動するプログラムは、それ自体のプロセス仮想アドレス空間によってマップされるメモリのみにアクセスすることができ、プロセス間のメモリ共有が設定されていない限り、別のプロセスの仮想アドレス空間内のメモリにアクセスすることができない。
【0367】
加えて、コンピューティングシステム90は、CPU91からプリンタ94、キーボード84、マウス95、およびディスクドライブ85などの周辺機器に命令を伝達する責任がある、周辺機器コントローラ83を含んでもよい。
【0368】
ディスプレイコントローラ96によって制御されるディスプレイ86は、コンピューティングシステム90によって生成される視覚出力を表示するために使用される。当該視覚出力は、テキスト、グラフィックス、動画グラフィックス、およびビデオを含んでよい。ディスプレイ86は、CRTベースのビデオディスプレイ、LCDベースのフラットパネルディスプレイ、ガスプラズマベースのフラットパネルディスプレイ、またはタッチパネルを用いて実装されてよい。ディスプレイコントローラ96は、ディスプレイ86に送信されるビデオ信号を生成するために必要とされる電子コンポーネントを含む。
【0369】
さらに、コンピューティングシステム90は、
図30Aおよび
図30Bのネットワーク12などの外部通信ネットワークに、コンピューティングシステム90を接続するために使用され得るネットワークアダプタ97などの通信回路を備えて、コンピューティングシステム90がネットワークの他のノードと通信できるようにしてもよい。
【0370】
ユーザー端末(User Equipment:UE)は、エンドユーザーが通信するために使用するいかなるデバイスであってよい。ユーザー端末(UE)は、ハンドヘルド電話機、モバイルブロードバンドアダプタを搭載したラップトップコンピュータまたは任意の他のデバイスであってもよい。例えば、UEは、
図30A~BのM2M端末デバイス18または
図30Cのデバイス30として実装されてよい。
【0371】
本明細書に記載されるシステム、方法、およびプロセスのうちのいずれかまたは全ては、コンピュータ読み取り可能な記憶媒体上に記憶されたコンピュータ実行可能命令(すなわち、プログラムコード)の形態で具現化されてよく、その命令は、例えば、M2Mサーバ、ゲートウェイ、デバイスなどを含むM2Mネットワークのノードまたは装置などのマシンによって実行されると、本明細書に説明されるシステム、方法、およびプロセスを実施ならびに/もしくは実装することを理解されたい。具体的には、DSLT-TF1202、DSLT-MF1204および1206、DSLT-CF1208、1210、1212および1214、DSLT-MF API1302、DSLT-MF処理1304、DSLT-MFシーケンス処理1306、DSLT-MFポリシーエンジン1308、DSLT-MFスケジューラ1310、DSLT-CF API1402、DSLT-CF処理1404、DSLT-CFシーケンス処理1406、DSLT-MF CSF2304、サービス層102、アプリケーションプロトコル104、アプリケーション106、CSE302、306および2302、AE304、704、706、708および2306、NSE308、IoTアプリケーション1002および1230、IoTデバイス1004、1006、1008、1234、1236、1238および1240、IoTサーバ1102および1232、IoTゲートウェイ1242、IN-CSE2702、ASN-CSE2704および2706、ならびに、インターフェース2902、2904、2906および2908などのインターフェースを作るデバイスまたはエンティティの操作を含む、上述のステップ、操作または機能のいずれかが、コンピュータ可読記憶媒体に記憶されるコンピュータ実行可能命令の形態で実装されてよい。コンピュータ可読記憶媒体は、情報を記憶するための任意の非一時的(すなわち、有形または物理的)方法もしくは技術に実装される揮発性および不揮発性媒体、取り外し可能および非取り外し可能媒体の両方を含むが、そのようなコンピュータ可読記憶媒体は信号を含まない。コンピュータ可読記憶媒体としては、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD-ROM、デジタル多用途ディスク(Digital Versatile Disks:DVD)または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、もしくは所望の情報を記憶するために使用されてよく、かつコンピュータによってアクセス可能である任意の他の有形もしくは物理的媒体が挙げられるが、それらに限定されない。
【0372】
さらに、
図11、12、15~22、27および28に示したステップを実施するエンティティは、
図30Cおよび
図30Dに示したような無線および/またはネットワーク通信またはコンピュータシステム向けに構成される装置のメモリ内に記憶され、そのプロセッサで実行されるソフトウェア(すなわち、コンピュータ実行可能命令)の形態で実装されてもよい論理的エンティティであってよいことが理解される。すなわち、
図11、12、15~22、27および28に示した方法は、
図30Cおよび
図30Dに示した装置またはコンピュータシステムなどの装置のメモリに記憶されるソフトウェア(すなわち、コンピュータ実行可能命令)の形態で実装されてよいが、この際、該コンピュータ実行可能命令は、装置のプロセッサによって実行されると、
図11、12、15~22、27および28に示したステップを実施するものである。
図11、12、15~22、27および28に示した1つまたは複数のエンティティおよび関連する機能は、1つまたは複数の仮想化ネットワーク機能の形態で実装されてもよいことも理解される。ネットワーク機能は、必ずしも直接通信する必要はなく、むしろ、転送またはルーティング機能を介して通信してもよい。また、
図11、12、15~22、27および28に示した任意の伝送および受信ステップは、装置の通信回路または装置のプロセッサの制御下にあるエンティティ、およびそれが実行するコンピュータ実行可能命令(すなわち、ソフトウェア)によって実施されてよいことも理解される。
【0373】
「リクエストの送信」、「応答の送信」、「リクエストの受信」、「応答の受信」などの表現は、通信ネットワークを介して、通信ネットワークのエンティティへ/エンティティからのメッセージを(例えば、パケットの形態でまたは他の定義されたビットのシーケンスで)送信または受信することを含む場合がある。ここで、メッセージの内容またはデータは、リクエストまたは応答されている内容を受信先に通知するものであることもさらに理解される。したがって、例えば、「リクエストの送信」という表現は、「メッセージリクエストの送信」、「リクエストを含むメッセージの送信」などの表現と、同等のものである場合がある。
【0374】
図に示す本開示の主題の好ましい実施形態を説明する際に、明確にするために、特定の用語を使用する。ただし、特許請求の範囲に記載する主題は、そこで選択した特定の用語に限定されることを意図するものではなく、各特定の要素は、同様の目的を達成するために同様の方式で動作する全ての技術的等価物を含むことを理解されたい。
【0375】
本明細書の実施例は、最良の態様を含む本発明を開示し、任意のデバイスまたはシステムの作製かつ使用および任意の組み込まれた方法の実行を含む本発明の実施を可能にするために使用される。本発明の特許性のある範囲は、特許請求の範囲によって定義され、当業者に想起される他の実施例を含み得る。そのような他の実施例は、特許請求の範囲の文言通りの構造要素を有する場合に、または特許請求の範囲の文言と大きく異ならない同等の構造要素を含む場合に、特許請求の範囲の範囲内であることを意図している。