(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-05-21
(54)【発明の名称】LINUXクロンを使用してクラウドプラットフォーム上のワークフローをスケジューリングするための方法、システム及びプログラム
(51)【国際特許分類】
G06F 9/48 20060101AFI20240514BHJP
【FI】
G06F9/48 370
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023550675
(86)(22)【出願日】2022-03-28
(85)【翻訳文提出日】2023-08-22
(86)【国際出願番号】 US2022022119
(87)【国際公開番号】W WO2023059367
(87)【国際公開日】2023-04-13
(32)【優先日】2021-10-05
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2022-03-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】イーラジ・ソダガー
(57)【要約】
ワークフローをスケジューリングするためのシステム及び方法を提供する。方法は、ネットワークベースのメディア処理(NBMP)ワークフローマネージャを実装する少なくとも1つのプロセッサによって実施され得る。方法は、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得するステップと、少なくとも1つのテーブルに基づいて、タスクを実行させるステップと、を含み得る。少なくとも1つのテーブルは、スケジュールテーブル及び/又はタスク実行依存関係テーブルを含み得る。
【特許請求の範囲】
【請求項1】
ネットワークベースのメディア処理(NBMP)ワークフローマネージャを実装する少なくとも1つのプロセッサによって実施される方法であって、前記方法が、
前記NBMPワークフローマネージャによって、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)前記タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得するステップであって、前記少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、ステップと、
前記少なくとも1つのテーブルに基づいて前記タスクを実行させるステップと
を含む、方法。
【請求項2】
前記少なくとも1つのテーブルが、前記タスク又は前記タスクグループの前記実行順序で、前記タスク又は前記タスクグループの識別子を示すスケジュールテーブルを含む、請求項1に記載の方法。
【請求項3】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの開始時間を更に示す、請求項2に記載の方法。
【請求項4】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの持続時間を更に示す、請求項2に記載の方法。
【請求項5】
前記少なくとも1つのテーブルが、前記タスク間の前記依存関係を示すテーブルを更に含む、請求項2に記載の方法。
【請求項6】
前記スケジュールテーブルの前記実行順序がループされることを示す情報を受信するステップを更に含み、
前記タスクを実行させる前記ステップが、前記情報の受信に基づいて、前記スケジュールテーブルに基づく前記実行順序で前記タスクをループさせるステップを含む、
請求項2に記載の方法。
【請求項7】
前記少なくとも1つのテーブルを取得する前記ステップが、前記スケジュールテーブルを受信するステップを含む、請求項2に記載の方法。
【請求項8】
前記クロンの文字列フォーマットが、
コンマで区切られた許容値による前記許容値のリストを示すものと、
「*」を使用することによって制限されない範囲を示すものと、
「-」を使用することによって範囲を示すものと、
「?」を使用することによって値がいずれであってもよいことを示すものと、
「L」を使用することによって1週間又は1ヶ月の最終日を示すものと、
「W」を使用することによって特定の平日を示すものと、
「#」を使用することによって月の特定の日を示すものと、
ステップ値を示すものと
のうちの少なくとも1つをサポートする、請求項1に記載の方法。
【請求項9】
前記タスクを実行させる前記ステップが、前記タスク間の前記依存関係を示す前記少なくとも1つのテーブルに基づいて、前記タスクの前記実行順序を導出するステップと、導出された前記実行順序で前記タスクを実行させるステップと、を含む、請求項1に記載の方法。
【請求項10】
前記少なくとも1つのテーブルが、前記タスク又は前記タスクグループの前記実行順序で、前記タスク又は前記タスクグループの識別子を示すスケジュールテーブルを含む、請求項1に記載の方法。
【請求項11】
コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと、
前記コンピュータ・プログラム・コードにアクセスし、更に前記コンピュータ・プログラム・コードによって命令されて動作するように構成された少なくとも1つのプロセッサと
を備えるシステムであって、前記コンピュータ・プログラム・コードが、
前記少なくとも1つのプロセッサによって実装されたネットワークベースのメディア処理(NBMP)ワークフローマネージャに、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)前記タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得させるように構成された取得コードであって、前記少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、取得コードと、
前記NBMPワークフローマネージャに、前記少なくとも1つのテーブルに基づいて、前記タスクを実行させるように構成された実行コードと
を備える、システム。
【請求項12】
前記少なくとも1つのテーブルが、前記タスク又は前記タスクグループの前記実行順序で、前記タスク又は前記タスクグループの識別子を示すスケジュールテーブルを含む、請求項11に記載のシステム。
【請求項13】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの開始時間を更に示す、請求項12に記載のシステム。
【請求項14】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの持続時間を更に示す、請求項12に記載のシステム。
【請求項15】
前記少なくとも1つのテーブルが、前記タスク間の前記依存関係を示すテーブルを更に含む、請求項12に記載のシステム。
【請求項16】
前記実行コードが、前記スケジュールテーブルの前記実行順序がループされることを示す情報を受信したことに基づいて、前記NBMPワークフローマネージャに、前記スケジュールテーブルに基づく前記実行順序の前記タスクをループさせるように更に構成される、請求項12に記載のシステム。
【請求項17】
前記少なくとも1つのテーブルが、前記タスク間の前記依存関係を示すテーブルを含む、請求項11に記載のシステム。
【請求項18】
前記実行コードが、前記NBMPワークフローマネージャに、前記タスク間の前記依存関係を示す前記テーブルに基づいて、前記タスクの前記実行順序を導出させ、導出した前記実行順序で前記タスクを実行させるように更に構成される、請求項17に記載のシステム。
【請求項19】
前記クロンの文字列フォーマットが、
コンマで区切られた許容値による前記許容値のリストを示すものと、
「*」を使用することによって制限されない範囲を示すものと、
「-」を使用することによって範囲を示すものと、
「?」を使用することによって値がいずれであってもよいことを示すものと、
「L」を使用することによって1週間又は1ヶ月の最終日を示すものと、
「W」を使用することによって特定の平日を示すものと、
「#」を使用することによって月の特定の日を示すものと、
ステップ値を示すものと
のうちの少なくとも1つをサポートする、請求項11に記載のシステム。
【請求項20】
コンピュータコードを記憶する非一時的コンピュータ可読媒体であって、前記コンピュータコードが、少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
(i)ネットワークベースのメディア処理(NBMP)ワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)前記タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得することであって、前記少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、取得することと、
前記少なくとも1つのテーブルに基づいて前記タスクを実行させることと
を実施するNBMPワークフローマネージャを実装させるように構成される、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2021年10月5日に出願された米国仮特許出願第63/252,328号の優先権を主張し、本開示は、その全体が参照により本明細書に組み込まれる。
【0002】
本開示の実施形態は、例えば、Linuxクロンユーティリティを使用して、クラウドプラットフォーム上で、ワークフロー、又はワークフローの一部をスケジューリングするための一連の様々な方式に関する。
【背景技術】
【0003】
ネットワークプラットフォーム及びクラウドプラットフォームは、様々なアプリケーションを実行するために使用される。ネットワークベースのメディア処理(NBMP)規格は、クラウドプラットフォーム上でワークフローを定義、インスタンス化、及び実行するための仕様を定義する。しかしながら、既存の規格は、ワークフロー、又はその一部をスケジューリングするための方法を定義していない。
【発明の概要】
【課題を解決するための手段】
【0004】
いくつかのユースケースでは、ワークフローは、各時間におけるパート、タスクごと、又はタスクのグループで実行し得る。そのようなアプリケーションでは、リアルタイム処理は要件ではない場合があり、ワークフローに割り当てられた計算リソースが限られているなどの理由で、又はクラウド上のピークトラフィック時間を回避するために、ワークフローをスケジューリングすることが必要な場合がある。
【0005】
本開示の実施形態は、上記の問題、及び/又はその他の問題を解決し得る。
【0006】
実施形態による、NBMPワークフローマネージャを実装する少なくとも1つのプロセッサによって実施される方法を、提供する。本方法は、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得するステップであって、少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、ステップと、少なくとも1つのテーブルに基づいてタスクを実行させるステップと、を含む。
【0007】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク又はタスクグループの実行順序で、タスク又はタスクグループの識別子を示すスケジュールテーブルを含む。
【0008】
1つ又は複数の実施形態による、スケジュールテーブルは、タスク又はタスクグループの開始時間を更に示す。
【0009】
1つ又は複数の実施形態による、スケジュールテーブルは、タスク又はタスクグループの持続時間を更に示す。
【0010】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク間の依存関係を示すテーブルを更に含む。
【0011】
1つ又は複数の実施形態による、本方法は、スケジュールテーブルの実行順序がループされることを示す情報を受信するステップを更に含み、タスクを実行させるステップは、情報の受信に基づいて、スケジュールテーブルに基づく実行順序でタスクをループさせるステップを含む。
【0012】
1つ又は複数の実施形態による、少なくとも1つのテーブルを取得するステップは、スケジュールテーブルを受信するステップを含む。
【0013】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク間の依存関係を示すテーブルを含む。
【0014】
1つ又は複数の実施形態による、タスクを実行させるステップは、タスク間の依存関係を示す少なくとも1つのテーブルに基づいて、タスクの実行順序を導出するステップと、導出された実行順序でタスクを実行させるステップと、を含む。
【0015】
1つ又は複数の実施形態による、クロンの文字列フォーマットは、コンマで区切られた許容値による許容値のリストを示すものと、「*」を使用することによって制限されない範囲を示すものと、「-」を使用することによって範囲を示すものと、「?」を使用することによって値がいずれであってもよいことを示すものと、「L」を使用することによって1週間又は1ヶ月の最終日を示すものと、「W」を使用することによって特定の平日を示すものと、「#」を使用することによって月の特定の日を示すものと、ステップ値を示すものと、のうちの少なくとも1つをサポートする。
【0016】
いくつかの実施形態による、システムが提供される。システムは、コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと、コンピュータ・プログラム・コードにアクセスし、更にコンピュータ・プログラム・コードによって命令されて動作するように構成された少なくとも1つのプロセッサと、を含み、コンピュータ・プログラム・コードは、少なくとも1つのプロセッサによって実装されたNBMPワークフローマネージャに、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得させるように構成された取得コードであって、少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、取得コードと、NBMPワークフローマネージャに、少なくとも1つのテーブルに基づいて、タスクを実行させるように構成された実行コードと、を含む。
【0017】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク又はタスクグループの実行順序で、タスク又はタスクグループの識別子を示すスケジュールテーブルを含む。
【0018】
1つ又は複数の実施形態による、スケジュールテーブルは、タスク又はタスクグループの開始時間を更に示す。
【0019】
1つ又は複数の実施形態による、スケジュールテーブルは、タスク又はタスクグループの持続時間を更に示す。
【0020】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク間の依存関係を示すテーブルを更に含む。
【0021】
1つ又は複数の実施形態による、実行コードは、スケジュールテーブルの実行順序がループされることを示す情報を受信したことに基づいて、NBMPワークフローマネージャに、スケジュールテーブルに基づく実行順序のタスクをループさせるように更に構成される。
【0022】
1つ又は複数の実施形態による、少なくとも1つのテーブルは、タスク間の依存関係を示すテーブルを含む。
【0023】
1つ又は複数の実施形態による、実行コードは、NBMPワークフローマネージャに、タスク間の依存関係を示すテーブルに基づいて、タスクの実行順序を導出させ、導出した実行順序でタスクを実行させるように更に構成される。
【0024】
1つ又は複数の実施形態による、クロンの文字列フォーマットは、コンマで区切られた許容値による許容値のリストを示すものと、「*」を使用することによって制限されない範囲を示すものと、「-」を使用することによって範囲を示すものと、「?」を使用することによって値がいずれであってもよいことを示すものと、「L」を使用することによって1週間又は1ヶ月の最終日を示すものと、「W」を使用することによって特定の平日を示すものと、「#」を使用することによって月の特定の日を示すものと、ステップ値を示すものと、のうちの少なくとも1つをサポートする。
【0025】
実施形態による、コンピュータコードを記憶する非一時的コンピュータ可読媒体を提供する。コンピュータコードは、少なくとも1つのプロセッサによって実行されると、少なくとも1つのプロセッサに、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得することであって、少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、取得することと、少なくとも1つのテーブルに基づいてタスクを実行させることと、を実施するNBMPワークフローマネージャを実装させるように構成される。
【0026】
開示した主題の更なる特徴、性質、及び様々な利点は、以下の詳細な説明及び添付の図面から明らかになるであろう。
【図面の簡単な説明】
【0027】
【
図1】実施形態による、本明細書に記載した方法、装置、及びシステムが実装され得る環境の図である。
【
図2】
図1の1つ又は複数のデバイスの例示的な構成要素のブロック図である。
【
図3】実施形態による、NBMPシステムのブロック図である。
【
図4】実施形態による、Unix/Linuxクロンの文字列フォーマットにおけるスケジュールフィールドの一例を示す図である。
【
図5】実施形態による、例示的なNBMPワークフローの図である。
【
図6】実施形態によるコンピュータコードのブロック図である。
【発明を実施するための形態】
【0028】
図1は、いくつかの実施形態による、本明細書に記載した方法、装置、及びシステムが実装され得る環境100の図である。
図1に示すように、環境100は、ユーザデバイス110と、プラットフォーム120と、ネットワーク130と、を含み得る。環境100のデバイスは、有線接続、無線接続、又は有線接続と無線接続との組合せを介して相互接続され得る。
【0029】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、及び/又は提供し得る1つ又は複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラス又はスマートウォッチ)、又は同様のデバイスを含んでもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、かつ/又は情報をプラットフォーム120に送信してもよい。
【0030】
プラットフォーム120は、本明細書の他の箇所に記載するような1つ又は複数のデバイスを含む。いくつかの実装形態では、プラットフォーム120は、クラウドサーバ又はクラウドサーバのグループを含んでもよい。いくつかの実装形態では、プラットフォーム120は、モジュール式に設計されてもよく、これにより、ソフトウェア構成要素は、特定の必要に応じて、スワップイン又はスワップアウトされてもよい。そのため、プラットフォーム120は、異なる用途向けに、容易に、及び/又は迅速に再構成され得る。
【0031】
いくつかの実装形態では、図示のように、プラットフォーム120は、クラウドコンピューティング環境122内でホストされてもよい。特に、本明細書に記載した実装形態は、クラウドコンピューティング環境122内でホストされるものとしてプラットフォーム120を記載するが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部に実装されてもよい)、又は部分的にクラウドベースであってもよい。
【0032】
クラウドコンピューティング環境122は、プラットフォーム120をホストする環境を含む。クラウドコンピューティング環境122は、プラットフォーム120をホストするシステム及び/又はデバイスの物理的な位置と構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない、計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供し得る。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称され、なおかつ個別に「コンピューティングリソース124」と呼ばれる)を含んでもよい。
【0033】
コンピューティングリソース124は、1つ若しくは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、又は他のタイプの計算デバイス及び/若しくは通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120をホストしてもよい。クラウドリソースは、コンピューティングリソース124内で実行される計算インスタンス、コンピューティングリソース124内で提供されるストレージデバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、又は有線接続と無線接続との組合せを介して他のコンピューティングリソース124と通信してもよい。
【0034】
図1に更に示すように、コンピューティングリソース124は、1つ又は複数のアプリケーション(「APP」)124-1、1つ又は複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つ又は複数のハイパーバイザ(「HYP」)124-4などのクラウドリソースのグループを含む。
【0035】
アプリケーション124-1は、ユーザデバイス110及び/若しくはプラットフォーム120に提供され得る、又はユーザデバイス110及び/若しくはプラットフォーム120によってアクセスされ得る、1つ又は複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールし、及び実行する必要性を排除し得る。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェアを、及び/又はクラウドコンピューティング環境122を介して提供され得る他の任意のソフトウェアを、含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つ又は複数の他のアプリケーション124-1との間で情報を送受信してもよい。
【0036】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装形態を含む。仮想マシン124-2は、仮想マシン124-2による用途及び任意の実マシンとの対応関係の程度に応じて、システム仮想マシン又は処理仮想マシンのいずれかであり得る。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供し得る。処理仮想マシンは、単一のプログラムを実行し、単一の処理をサポートし得る。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)の代わりに実行し、更にデータ管理、同期、又は長期データ転送などのクラウドコンピューティング環境122の基盤を管理してもよい。
【0037】
仮想化ストレージ124-3は、コンピューティングリソース124のストレージシステム又はデバイス内で、仮想化技法を使用する1つ若しくは複数のストレージシステム及び/又は1つ若しくは複数のデバイスを含む。いくつかの実装形態では、ストレージシステムを背景に、仮想化のタイプは、ブロックの仮想化及びファイルの仮想化を含んでもよい。ブロックの仮想化は、当該ストレージシステムが物理ストレージであるか、又は異種構造であるかに関係なくアクセスされ得るように、物理ストレージから論理ストレージを抽出する(又は分離する)ことを指し得る。これらを分離することにより、ストレージシステムの管理者がエンドユーザのストレージを管理する方法に柔軟性がもたらされ得る。ファイルの仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に記憶されている場所との間の依存関係を排除し得る。これにより、ストレージ使用の最適化、サーバ統合、及び/又はスムーズなファイル移行の実行が可能になり得る。
【0038】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲスト・オペレーティング・システム」)をコンピューティングリソース124などのホストコンピュータ上で同時に実行し得るハードウェア仮想化技法を提供し得る。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲスト・オペレーティング・システムに提示し、更にゲスト・オペレーティング・システムの実行を管理し得る。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共有し得る。
【0039】
ネットワーク130は、1つ又は複数の有線及び/又は無線のネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(5G)ネットワークロングターム・エボリューション(LTE)・ネットワーク、第3世代(3G)ネットワーク、符号分割多元接続(CDMA)ネットワークなど)、公的地域モバイルネットワーク(PLMN)、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、電話ネットワーク(例えば、公衆交換電話網(PSTN))、プライベートネットワーク、アド・ホック・ネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、及び/又はそれら若しくは他のタイプのネットワークの組合せを含んでもよい。
【0040】
図1に示すデバイス及びネットワークの数及び配置を、一例として提供する。実際には、
図1に示すものに比べて、更なるデバイス及び/若しくはネットワーク、少ないデバイス及び/若しくはネットワーク、異なるデバイス及び/若しくはネットワーク、又は異なる配置のデバイス及び/若しくはネットワークがあってもよい。更に、
図1に示した2つ以上のデバイスは、単一のデバイス内に実装されてもよく、又は
図1に示した単一のデバイスは、複数の分散型デバイスとして実装されてもよい。追加的に、又は代替的に、環境100のデバイスのセット(例えば、1つ又は複数のデバイス)は、環境100のデバイスの別のセットによって実施されるものとして記載した1つ又は複数の機能を実施してもよい。
【0041】
図2は、
図1の1つ又は複数のデバイスの例示的な構成要素のブロック図である。デバイス200は、ユーザデバイス110及び/又はプラットフォーム120に対応し得る。
図2に示したように、デバイス200は、バス210と、プロセッサ220と、メモリ230と、記憶構成要素240と、入力構成要素250と、出力構成要素260と、通信インターフェース270と、を含み得る。
【0042】
バス210は、デバイス200の構成要素間の通信を可能にする構成要素を含む。プロセッサ220は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアとの組合せで実装される。プロセッサ220は、中央処理装置(CPU)、グラフィック処理装置(GPU)、加速処理装置(accelerated processing unit:APU)、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ(DSP)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、又は別のタイプの処理構成要素である。いくつかの実装形態では、プロセッサ220は、機能を実施するようにプログラムされ得る1つ又は複数のプロセッサを含む。メモリ230は、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、並びに/あるいはプロセッサ220が使用するための情報及び/又は命令を記憶する別のタイプの動的若しくは静的なストレージデバイス(例えば、フラッシュメモリ、磁気メモリ、及び/又は光メモリ)を含む。
【0043】
記憶構成要素240は、デバイス200の動作及び使用に関連する情報及び/又はソフトウェアを記憶する。例えば、記憶構成要素240は、対応するドライブとともに、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、及び/又はソリッド・ステート・ディスク)、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、フロッピーディスク、カートリッジ、磁気テープ、及び/又は別のタイプの非一時的コンピュータ可読媒体を含んでもよい。
【0044】
入力構成要素250は、デバイス200がユーザ入力(例えば、タッチ・スクリーン・ディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、及び/又はマイクロフォン)などを介して情報を受信し得る構成要素を含む。追加的に、又は代替的に、入力構成要素250は、情報を検知するためのセンサ(例えば、全地球測位システム(GPS)構成要素、加速度計、ジャイロスコープ、及び/又はアクチュエータ)を含んでもよい。出力構成要素260は、デバイス200(例えば、ディスプレイ、スピーカ、及び/又は1つ若しくは複数の発光ダイオード(LED))からの出力情報を提供する構成要素を含む。
【0045】
通信インターフェース270は、デバイス200が有線接続、無線接続、又は有線接続と無線接続の組合せなどを介して他のデバイスと通信し得るトランシーバのような構成要素(例えば、トランシーバ並びに/又は別個の受信機及び送信機)を含む。通信インターフェース270は、デバイス200が別のデバイスから情報を受信し、かつ/又は別のデバイスに情報を提供し得るようにしてもよい。例えば、通信インターフェース270は、イーサネットインターフェース、光インターフェース、同軸インターフェース、赤外線インターフェース、無線周波数(RF)インターフェース、ユニバーサル・シリアル・バス(USB)・インターフェース、Wi-Fiインターフェース、セルラー・ネットワーク・インターフェースなどを含んでもよい。
【0046】
デバイス200は、本明細書に記載した1つ又は複数のプロセスを実施し得る。プロセッサ220がメモリ230及び/又は記憶構成要素240などの非一時的コンピュータ可読媒体によって記憶されたソフトウェア命令を実行したことに応答して、デバイス200は、これらのプロセスを実施し得る。コンピュータ可読媒体は、本明細書では非一時的メモリデバイスとして定義される。メモリデバイスは、単一の物理ストレージデバイス内のメモリ空間を、又は複数の物理ストレージデバイスにわたって広がるメモリ空間を含む。
【0047】
ソフトウェア命令は、別のコンピュータ可読媒体から、又は通信インターフェース270を介して別のデバイスから、メモリ230及び/又は記憶構成要素240に読み出されてもよい。メモリ230及び/又は記憶構成要素240に記憶されたソフトウェア命令は、実行されると、本明細書に記載した1つ又は複数のプロセスをプロセッサ220に実施させ得る。追加的に、又は代替的に、本明細書に記載した1つ又は複数のプロセスを実施するために、ソフトウェア命令の代わりに、又はソフトウェア命令と組み合わせて、ハードワイヤード回路が使用されてもよい。よって、本明細書に記載した実装形態は、ハードウェア回路とソフトウェアのいかなる特定の組合せにも限定されない。
【0048】
図2に示した構成要素の数及び配置は、一例として提供される。実際には、デバイス200は、
図2に示した構成要素に対して、追加の構成要素、少ない構成要素、異なる構成要素、又は異なる配置の構成要素を含んでもよい。追加的に、又は代替的に、デバイス200の構成要素のセット(例えば、1つ又は複数の構成要素)は、デバイス200の構成要素の別のセットによって実施されるものとして記載した1つ又は複数の機能を実施してもよい。
【0049】
本開示の一実施形態では、NBMPシステム300を提供する。
図3を参照すると、NBMPシステム300は、NBMPソース310と、NBMPワークフローマネージャ320と、機能リポジトリ330と、1つ又は複数のメディア処理エンティティ350と、メディアソース360と、メディアシンク370と、を備える。
【0050】
NBMPソース310は、サード・パーティ・エンティティ380から命令を受信し、NBMPワークフローAPI392を介してNBMPワークフローマネージャ320と通信し、更に機能探索API391を介して機能リポジトリ330と通信し得る。例えば、NBMPソース310は、ワークフロー記述文書(WDD)をNBMPワークフローマネージャ320に送信し、更に機能リポジトリ330に記憶された機能の機能説明を読み出してもよく、機能は、例えば、メディアコーディング、特徴点抽出、カメラパラメータ抽出、投影方法、シーム情報抽出、ブレンディング、後処理、及びエンコーディングの機能など、機能リポジトリ330のメモリに記憶されたメディア処理機能である。NBMPソース310は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPソース310の機能を実行させるように構成されたコードを記憶するメモリと、を備え得るか、又はそれらによって実装され得る。
【0051】
NBMPソース310は、それぞれがいくつかのパラメータを有し得る、いくつかの記述子を含み得る、ワークフロー記述文書を送信することによって、1つ又は複数のメディア処理エンティティ350によって実施されるタスク352を含むワークフローを作成するように、NBMPワークフローマネージャ320に要求し得る。
【0052】
例えば、NBMPソース310は、機能リポジトリ330に記憶された機能を選択し、更に入力及び出力データ、必要な機能、及びワークフローの要件などの記述詳細のための様々な記述子を含むワークフロー記述文書をNBMPワークフローマネージャ320に送信してもよい。ワークフロー記述文書は、タスク記述のセットと、メディア処理エンティティ350のうちの1つ又は複数によって実施されるタスク352の入力及び出力の接続マップと、を含み得る。NBMPワークフローマネージャ320がNBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、機能名に基づいてタスクをインスタンス化し、接続マップに従ってタスクを接続することによって、ワークフローを作成し得る。
【0053】
代替的に、又は追加的に、NBMPソース310は、キーワードのセットを使用することによってワークフローを作成するように、NBMPワークフローマネージャ320に要求してもよい。例えば、機能リポジトリ330に記憶された適切な機能を見つけるために、NBMPワークフローマネージャ320が使用し得るキーワードのセットを含み得るワークフロー記述文書を、NBMPソース310は、NBMPワークフローマネージャ320に送信してもよい。NBMPワークフローマネージャ320が、NBMPソース310からそのような情報を受信したとき、NBMPワークフローマネージャ320は、ワークフロー記述文書の処理記述子内に指定され得るキーワードを使用して適切な機能を検索することによって、ワークフローを作成し、更にワークフロー記述文書内の他の記述子を使用してタスクを提供し、それらを接続してワークフローを作成し得る。
【0054】
NBMPワークフローマネージャ320は、機能探索API391と同じか又は異なるAPIであり得る機能探索API393を介して機能リポジトリ330と通信し、更にNBMPタスクAPI394を介してメディア処理エンティティ350のうちの1つ又は複数と通信し得る。NBMPワークフローマネージャ320はまた、メディア処理エンティティ(MPE)API396を介してメディア処理エンティティ350のうちの1つ又は複数と通信してもよい。NBMPワークフローマネージャ320は、少なくとも1つのプロセッサと、少なくともプロセッサにNBMPワークフローマネージャ320の機能を実行させるように構成されたコードを記憶するメモリと、を備え得るか、又はそれらによって実装され得る。
【0055】
NBMPワークフローマネージャ320は、NBMPタスクAPI394を使用して、1つ又は複数のメディア処理エンティティ350によって実施可能なワークフローの1つ又は複数のタスク352をセットアップし、構成し、管理し、及び監視し得る。一実施形態では、NBMPワークフローマネージャ320は、NBMPタスクAPI394を使用してタスク352を更新し、及び破棄し得る。ワークフローのタスク352を構成し、管理し、及び監視するために、NBMPワークフローマネージャ320は、要求などのメッセージをメディア処理エンティティ350のうちの1つ又は複数に送信し、各メッセージは、それぞれがいくつかのパラメータを有する、いくつかの記述子を有し得る。タスク352はそれぞれ、メディア処理機能354と、メディア処理機能354のための構成353と、を含み得る。
【0056】
一実施形態では、タスクのリストを含まない(例えば、タスクのリストの代わりにキーワードのリストを含む)ワークフロー記述文書をNBMPソース310から受信した後、NBMPワークフローマネージャ320は、現在のワークフローのタスク352として実行する適切な機能を見つけるために、機能探索API393を介して、機能リポジトリ330を検索するため、ワークフロー記述文書内のタスクの記述に基づいてタスクを選択し得る。例えば、NBMPワークフローマネージャ320は、ワークフロー記述文書内で提供されたキーワードに基づいてタスクを選択してもよい。NBMPソース310によって提供されるキーワード又はタスク記述のセットを使用することによって、適切な機能が識別された後、NBMPワークフローマネージャ320は、NBMPタスクAPI394を使用することによって、ワークフロー内で選択されたタスクを構成し得る。例えば、NBMPワークフローマネージャ320は、NBMPソースから受信した情報から構成データを抽出し、構成データに基づいてタスク352を構成してもよい。
【0057】
1つ又は複数のメディア処理エンティティ350は、メディアソース360からメディアコンテンツを受信し、NBMPワークフローマネージャ320によって作成された、タスク352を含むワークフローに従ってメディアコンテンツを処理し、更に処理されたメディアコンテンツをメディアシンク370に出力する、ように構成され得る。1つ又は複数のメディア処理エンティティ350はそれぞれ、少なくとも1つのプロセッサと、少なくともプロセッサにメディア処理エンティティ350の機能を実施させるように構成されたコードを記憶するメモリと、を備え得るか、又はそれらによって実装され得る。
【0058】
メディアソース360は、メディアを記憶するメモリを含み、更にNBMPソース310と統合されてもよいし、別個であってもよい。一実施形態では、NBMPワークフローマネージャ320は、ワークフローが準備されたときにNBMPソース310に通知し、メディアソース360は、ワークフローが準備されたという通知に基づいて、メディアコンテンツをメディア処理エンティティ350のうちの1つ又は複数に送信してもよい。
【0059】
メディアシンク370は、少なくとも1つのプロセッサと、1つ又は複数のメディア処理エンティティ350によって処理されるメディアを表示するように構成された少なくとも1つのディスプレイと、を備え得るか、又はそれらによって実装され得る。
【0060】
サード・パーティ・エンティティ380は、少なくとも1つのプロセッサと、少なくともプロセッサにサード・パーティ・エンティティ380の機能を実施させるように構成されたコードを記憶するメモリと、を備え得るか、又はそれらによって実装され得る。
【0061】
上述のように、NBMPソース310からNBMPワークフローマネージャ320へのメッセージ(例えば、ワークフローの作成を要求するためのワークフロー記述文書)、及びNBMPワークフローマネージャ320から1つ又は複数のメディア処理エンティティ350への(例えば、ワークフローを実施させるための)メッセージは、それぞれがいくつかのパラメータを有し得る、いくつかの記述子を含み得る。場合によっては、APIを使用するNBMPシステム300の構成要素のいずれかの間の通信は、各々がいくつかのパラメータを有し得る、いくつかの記述子を含み得る。
【0062】
[Unix/Linuxクロンフォーマット]
Unix/Linuxクロンフォーマットは、「この日のこの時点でこのコマンドを実行する」の行のうちの1つ又は複数を有する単純なスケジューラテーブルである。
【0063】
各行は、コマンドが続く5つの日時フィールドを有する。「分」、「時」、及び「年の月」フィールドが現在時刻と一致し、2つの「日」フィールド(「月日」又は「曜日」)のうちの少なくとも1つが現在時刻と一致するとき、コマンドは、クロンによって実行される。
【0064】
スケジュールは、ジョブがいつ実行されるべきかを示す、行内の5つの値の集合であるUnix/Linuxクロンの文字列フォーマット(*****)を使用して記述され得る。Unix/Linuxクロンの文字列フォーマットにおけるスケジュールフィールド900の一例を
図4に示す。例えば、スケジュールフィールド900は、「分」、「時」、「月日」、「月」、及び「曜日」を含んでもよい。
【0065】
時間帯をクロンに設定することができる。デフォルトの時間帯は、協定世界時(UTC)であってもよい。
【0066】
実施形態による、以下の特徴がサポートされ、すなわち、
1.許容値のリスト、コンマ区切り。
2.「*」を使用した制限されない範囲
3.「-」を使用した範囲
4.「?」を使用したいずれであってもよいもの
5.「L」を使用した週/月の最終の日
6.「W」を使用した特定の平日である月日
7.「#」を使用した月の特定の発生日
8.first-last/stepを使用したステップ値
【0067】
[スケジューリングとタスク依存]
以下の表1は、実施形態による例示的なスケジュールを示す。
【0068】
【0069】
クロンの一態様は、クロンがプロセスを起動するためのスケジューラであることである。クロンは、持続時間の概念(すなわち、プロセスが実行されるべき時間の長さ)を持たない。クロンはまた、イベント又は順序の概念(すなわち、プロセスの優先順位付け)を持たない。
【0070】
上記の理由から、特定のレート(例えば、5分ごと、2日ごとなど)でプロセスを実行することを定義する別のツール、レート表現がある。レート表現のシンタックスは以下の通りであり、すなわち、rate(値 単位)であり、有効値は、minute、minutes、hour、hours、day、daysである。
【0071】
要約すると、クロンは、持続時間のない時間ベースのスケジューラである。
【0072】
本開示の実施形態は、上記の問題及び他の問題を解決し得る。
【0073】
本開示の実施形態による、タスク実行依存関係テーブルを提供する。タスク実行依存関係テーブルは、ワークフロー内の様々なタスクの実行依存関係を維持する。様々なスケジューリング方式を説明するために、ワークフローの例を以下に説明する。
【0074】
図5を参照して、NBMPワークフローの非限定的な例を説明する。
図5は、NBMPワークフローを有向非巡回グラフ(DAG)として表している。実施形態による、NBMPワークフローマネージャ320は、1つ又は複数のタスク(例えば、タスクT1~T8)を含むNBMPワークフロー400を作成し、及び管理し得る。例えば、
図5に示すように、タスクT1~T8は、様々な入力410に関連付けられてもよく、更に様々な出力420を提供するように構成されてもよい。
図5の左端の入力410(例えば、タスクT1~T2の入力)は、NBMPワークフロー400の入力である。
図5の右端の出力420(例えば、タスクT6~T8の出力)は、NBMPワークフロー400の出力である。
【0075】
実施形態による、ワークフローのタスクは、1つ又は複数のメディア処理エンティティ350、メディアソース360及び/又はメディアシンク370において実装されてもよい。実施形態では、メディアソース360は、ソースデバイス/プラットフォームであってもよく、1つ又は複数のメディア処理エンティティ350は、クラウドノード/エッジネットワークであってもよく、メディアシンク370は、シンクデバイス/プラットフォームであってもよい。
【0076】
図5のワークフローDAGは、以下の表2に示す特性を定義する。
【0077】
【0078】
要約すると、ワークフロー内の任意のタスクは、それが依存するタスクを実行した後に実行する必要があり得る(すなわち、タスクの入力は、別のタスクの出力を必要とする場合がある)。
【0079】
実施形態による、例として、
図5のワークフロー400のタスクは、以下の表3に示す順序のうちの1つで実行され得る。
【0080】
【0081】
[スケジューリング方式]
本開示の実施形態は、各タスクについて以下の方式を実施し得る。
1.順序ごと:ワークフローの各タスクは、順序内のその入力全体に対して1回実行され、ワークフロー内の任意のタスクは、それが依存するワークフロー内の1つ又は複数のタスクを実行した後に実行される。
2.持続時間が制限された順序ごと(持続時間ごと):ワークフロー内の各タスクは、入力/出力の1つの持続時間(例えば、1分間の入力、又は5分間の出力)が消費/生成されるように実行され、順序は、観察されたDAGによって決定される。
3.タイムスロットごと:各タスクは、特定のスケジュールに従って開始し、特定の持続時間の間に実行する。
【0082】
実施形態による、上記の方式は、タスクのグループ(又はタスクグループ)に対して実行し得る。方式については、以下で詳細に説明する。
【0083】
A.順序ごと
順序ごと方式モードでは、NBMPワークフローマネージャ320は、各タスクを一度に実行する必要があり得る。したがって、NBMPワークフローマネージャ320は、ワークフローの入力を有するタスクから開始し、そのようなタスクの出力を生成し、それらをバッファリングし、次いで、次のタスクをワークフローの出力に向かって進行波方式で開始し得る。DAGは、タスクの順序を定義し得る。
【0084】
例えば、
図5に示すワークフロー400を参照すると、タスクの実行の例示的な順序は以下の通りであってもよい、すなわち、
1.入力全体の間T1(又はT2)
2.入力全体の間T2(又はT1)
3.T3
4.T4(又はT5)
5.T5(又はT4)
6.T6(又はT7)
7.T7(又はT6)
8.T8
【0085】
B.持続時間ごと
持続時間ごと方式モードでは、NBMPワークフローマネージャ320は、入力又は出力の特定の持続時間の間、各タスクを実行する必要があり得る。したがって、NBMPワークフローマネージャ320は、ワークフローの入力を有するタスクから開始し、その持続時間の間に、そのようなタスクの出力を生成し、それらをバッファリングし、次いで、次のタスクをワークフローの出力に向かって進行波方式で開始する必要があり得る。DAGは、タスクの順序を定義し得る。
【0086】
例えば、
図5に示すワークフロー400を参照すると、タスクの実行の例示的な順序は以下の通りであってもよい、すなわち、
1.5分間でT1(又はT2)
2.5分間でT2(又はT1)
3.5分間でT3
4.5分間でT4(又はT5)
5.5分間でT5(又はT4)
6.5分間でT6(又はT7)
7.5分間でT7(又はT6)
8.5分間でT8
9.ステップ(1)に戻る
【0087】
C.タイムスロットごと
タイムスロットごと方式モードでは、NBMPクライアントは、各タスクのスケジュールをNBMPワークフローマネージャ320に提供し、NBMPワークフローマネージャ320は、スケジュールに従って(例えば、スケジュール内の所与のタイムスロットに従って)、各タスクを実行し得る。実施形態による、NBMPクライアントは、NBMPソース310であってもよい。
【0088】
例えば、
図5に示すワークフロー400を参照すると、タスクの実行の例示的な順序は以下の通りであってもよい、すなわち、
1.T1(又はT2)は、時刻t0で開始し、時刻t1で停止する
2.T2(又はT1)は、時刻t0で開始し、時刻t1で停止する
3.T3は、時刻t1で開始し、時刻t2で停止する
4.T4(又はT5)は、時刻t2で開始し、時刻t3で停止する
5.T5(又はT4)は、時刻t2で開始し、時刻t3で停止する
6.T6(又はT7)は、時刻t3で開始し、時刻t4で停止する
7.T7(又はT6)は、時刻t4で開始し、時刻t5で停止する
8.T8は、時刻t5で開始し、時刻t6で停止する
9.ステップ(1)に戻る
【0089】
[スケジュールテーブル]
実施形態による、スケジュールテーブルは、本開示に記載した方式に適合し得る。以下の表4は、方式に適合する例示的なスケジュールテーブルを示す。例示的なスケジュールテーブルは、クロンテーブルと同様であってもよいが、セグメントの持続時間/数で拡張される。
【0090】
【0091】
実施形態による、第1の列のIDの順序は、ワークフローDAGと一致する必要があり得る。
【0092】
実施形態による、順序方式の場合、第1の列のみが使用されてもよい。
【0093】
実施形態による、持続時間ごと方式に関して、第1の列、第2の列の第1の値(開始時間)、及び第3の列を使用してもよい。
【0094】
実施形態による、タイムスロットごと方式によるスケジューリングのために、すべての列を使用してもよい。
【0095】
実施形態による、テーブルはループされ得る。すなわち、最後の行を完了した後、スケジュールは、最初の行に戻る必要があり得る。例えば、実施形態による、NBMPワークフローマネージャ320は、スケジュールテーブルに基づいた順序で、タスクを実行させ、スケジュールテーブルに基づいてタスクの実行をループさせてもよい(例えば、タスクid nが実行された後、タスクid 1、次にタスクid 2などが再び実行される)。
【0096】
実施形態による、NBMPクライアントは、スケジュールテーブル及び/又はタスク実行依存関係テーブルを作成し、更にテーブルをNBMPワークフローマネージャ320に送信し得る。実施形態による、NBMPワークフローマネージャ320は、受信したスケジュールテーブル及び/又はタスク実行依存関係テーブルに基づいて、ワークフローをスケジューリングし、及び実行し得る。実施形態による、NBMPワークフローマネージャ320は、スケジュールテーブル及び/又はタスク実行依存関係テーブルを導出し、更に導出されたスケジュールテーブル及び/又はタスク実行依存関係テーブルに基づいて、ワークフローを実行し得る。
【0097】
[NBMPにおける実装]
実施形態による、ワークフローのスケジューリングに対処するために、スケール記述子がNBMPに実装され得る。
【0098】
スケール記述子は、以下の表5に示すパラメータを含み得る。
【0099】
【0100】
「スケジュールテーブル」オブジェクトは、以下の表6に示すパラメータを含み得る。
【0101】
【0102】
実施形態による、タスク/タスクグループ実行が入力データを使い切った場合、タスクは、「アイドル」になるように制御され(例えば、NBMPワークフローマネージャ320によって)、NBMPワークフローマネージャ320は、スケジュールテーブル内の次のタスク/タスクグループの実行を開始し得る。
【0103】
実施形態による、スケール記述子は、以下の表7に示すスケールパラメータを含み得る。
【0104】
【0105】
実施形態による、NBMPクライアントは、(a)ワークフロー記述文書(WDD)にスケール記述子を含めることによってNBMPワークフローマネージャ320の能力を取得することであって、「ステータス」パラメータが「能力」に等しい値を有する、取得することと、(b)WDDにスケール記述子を含めることによってワークフローをスケジューリングすることと、(c)スケール記述子を含む要求を(例えば、NBMPワークフローマネージャ320に)送信することによって上記のいずれかのスケジューリングを検討することであって、NBMPワークフローマネージャ320がスケジュールを管理するように要求された場合に、ワークフローがスケジュールを管理し得るか否かを確認するために、「ステータス」パラメータが、「検討」に等しい値を有する、検討することと、の機能のためのワークフロー記述文書(WDD)更新呼び出しに、スケール記述子を含め得る。
【0106】
実施形態による、上記の機能(及び/又は他の機能)を実施するために、NBMPクライアントは、スケール記述子を含めるために、WDDを取得(例えば、作成又は更新)し、次いで、WDDをNBMPワークフローマネージャ320に送信し得る。実施形態による、これに応答して、NBMPワークフローマネージャ320は、例えば、受信したWDDのスケール記述子に含まれるパラメータの値に基づいて、その能力をNBMPクライアントに送信する、ワークフローをスケジューリングする、及び/又はNBMPクライアントマネージャ320がスケジュールを管理し得るか否かをNBMPクライアントに示す、などの機能を実施してもよい。例えば、NBMPワークフローマネージャ320は、ワークフローの範囲内のスケジュール要求のID、スケジュール要求の説明、スケジュール要求のタイプ、スケジュール・テーブル・オブジェクト、タスク又はタスクグループの開始時間、処理される入力/出力セグメントの数、タスクの入力及び/若しくは出力の持続時間、タイムスケール、スケジュールテーブルがループされるか否か、並びに/又はスケジュール要求のステータスを取得してもよく、NBMPワークフローマネージャ320は、これらに基づいて、その機能(例えば、ワークフローのスケジューリング/管理)を実施してもよい。
【0107】
実施形態による、クラウドプラットフォーム上でワークフロー全体の一部を実行するための様々なスケジューリング方式を説明することを含む方法を提供し得る。スケジューリング方式は、タスクの特定の順序によって、又はタスクの持続時間制限順序によって、又は各タスクの明示的なスケジューリングによって、スケジューリングのモードを含み得る。様々なスケジューリング方式は、スケジュールタイプ、スケジュールの特定のタイプに関する情報、及び1つ又は複数のコマンド、を記述する記述子に記述されてもよい。タスクの実行順序は、ワークフローから導出された実行依存関係テーブルから(例えば、NBMPワークフローマネージャによって)導出されてもよく、データオブジェクト配列は、各タスク又はタスクグループの開始時間及び持続時間又はセグメント数のテーブルを定義し、クロン時間フォーマットは、開始時間を定義するために使用され、ループが望まれる場合、それは(例えば、NBMPワークフローマネージャに)シグナリングされ、様々なコマンドは、クラウドプラットフォームの能力を取得すること、スケジューリングが実施可能であるか否かをチェックすること、又はスケジューリングを実施するように要求すること、を含む要求であり得る。記述子はまた、要求に対する応答を含むように、(例えば、NBMPワークフローマネージャによって)更新されてもよい。
【0108】
[例示的なコンピュータコード]
本開示の実施形態による、コンピュータコードを記憶するメモリを有する少なくとも1つのプロセッサを提供し得る。コンピュータコードは、少なくとも1つのプロセッサによって実行されたとき、本開示の任意の数の態様を実施するように構成され得る。
【0109】
例えば、
図6を参照すると、コンピュータコード500は、NBMPシステム300で実施されてもよい。例えば、コンピュータコードは、NBMPワークフローマネージャ320のメモリに記憶され、更にNBMPワークフローマネージャ320の少なくとも1つのプロセッサによって実行されてもよい。計算コードは、例えば、取得コード510、スケジューリングコード520、実行コード530、及び応答コード540を備えてもよい。
【0110】
取得コード510は、NBMPワークフローマネージャ320に、例えばNBMPクライアントによって送信されたWDDから情報を取得させるように、構成されてもよい。例えば、NBMPワークフローマネージャ320はWDDを受信し、任意の数のスケールパラメータ(例えば、表7を参照されたい)及び/又はその中のテーブル(例えば、スケジュールテーブル及び/又はタスク実行依存関係テーブル)をNBMPワークフローマネージャ320にシグナリングしてもよく、これにより、NBMPワークフローマネージャ320は、対応する情報を取得する。例えば、NBMPワークフローマネージャ320は、ワークフローの範囲内のスケジュール要求のID、スケジュール要求の説明、スケジュール要求のタイプ、実行の順序におけるタスクIDのリスト、入力/出力の持続時間、タイムスケール、処理される入力/出力セグメントの数、io-フラグ、タスクの実行モード、スケジュール要求のステータス、タイムスロットモード、タスクのタイムスロットの状態時間、タスクのタイムスロットの終了時間、次の開始時間までの時間増分、及び/又は時間増分に関する時間の持続時間を取得してもよく、更にそれらに基づいてその機能(例えば、ワークフローのスケジューリング/実行/管理)を実施する。実施形態による、NBMPワークフローマネージャ320は、メディア処理ワークフローをスケジューリングするための方式モードを取得し得る。実施形態による、NBMPワークフローマネージャ320は、スケジュールテーブル及び/又はタスク実行依存関係テーブルを導出し得る。
【0111】
スケジューリングコード520は、NBMPワークフローマネージャ320に、NBMPワークフローマネージャ320によって取得された情報に基づいて、実行のためにワークフロー(その中のタスクを含む)をスケジューリングさせるように構成され得る。例えば、NBMPワークフローマネージャ320は、取得した方式モードに従って、更にスケール記述子及び/又はテーブルオブジェクトの他のパラメータを含む、NBMPクライアントマネージャ320がNBMPクライアントから受信した本開示に記載の任意の他の情報に基づいて、ワークフローをスケジューリングしてもよい。実施形態による、NBMPワークフローマネージャ320は、NBMPワークフローマネージャ320によって受信された情報に基づいて、ワークフローの態様、及びそのタスクを導出し、導出した態様に基づいてワークフローをスケジューリングし得る。例えば、タスクの実行順序は、同様に導出され得るタスク実行依存関係テーブルからNBMPワークフローマネージャ320によって導出されてもよい。
【0112】
実行コード530は、NBMPワークフローマネージャ320に、ワークフローのタスクをスケジューリングされたように、1つ又は複数のメディア処理エンティティ350、メディアソース360、及び/又はメディアシンク370に実装させるように、構成され得る。実施形態による、NBMPワークフローマネージャ320は、NBMPクライアントから取得される、又はNBMPワークフローマネージャ320によって導出される、スケジュールテーブル及び/又はタスク実行依存関係テーブルに基づいて、ワークフローを実行し得る。
【0113】
応答コード540は、NBMPワークフローマネージャ320に、NBMPクライアントから受信した要求に対する応答を、NBMPクライアントに送信させるように、構成され得る。実施形態による、要求は、WDDのスケール記述子に含まれ得る。実施形態による、要求は、(a)WDDにスケール記述子を含めることによってワークフローマネージャ320の能力を取得することであって、「ステータス」パラメータが、「能力」に等しい値を有する、取得することと、(b)WDDにスケール記述子を含めることによってワークフローをスケジューリングすることと、(c)タスク記述文書(TDD)にスケール記述子を含めることによってタスクをスケジューリングすることと、(d)タスク・グループ・オブジェクトにスケール記述子を含めることによってタスクのグループをスケジューリングすることと、(e)スケール記述を含む要求を送信することによって上記のいずれかのスケジューリングを検討することであって、NBMPワークフローマネージャ320がスケジュールを管理するように要求された場合に、NBMPワークフローマネージャ320がスケジュールを管理し得るか否かを確認するために、「ステータス」パラメータが、「検討」に等しい値を有する、検討することと、を実施することであり得る。要求を実施することに加えて、NBMPワークフローマネージャ320は、対応する応答をNBMPクライアントに提供し得る。例えば、応答は、その能力をNBMPクライアントに示しても、NBMPワークフローマネージャ320がスケジュールを管理し得るか否か、及び/又はNBMPワークフローマネージャ320が特定の要求を実施し得るか、若しくは実施したか否かをNBMPクライアントに示してもよい。
【0114】
1つ又は複数の実施形態による、本開示の実施形態は、NBMPとは異なる環境で実装されてもよい。
【0115】
前述の開示は、例示及び説明を提供するが、網羅的であること、又は実装形態を、開示された正確な形態に限定することを意図するものではない。修正形態及び変形形態は、上記の開示に照らして実現可能であり、又は実装形態の実践から取得されてもよい。
【0116】
本明細書で使用される構成要素という用語は、ハードウェア、ファームウェア、又はハードウェアとソフトウェアの組合せとして広く解釈されることを意図している。
【0117】
特徴の組合せが特許請求の範囲に記載され、及び/又は本明細書に開示されているが、これらの組合せは、可能な実装形態の開示を限定することを意図されていない。実際には、これらの特徴の多くは、特許請求の範囲に具体的に列挙されていない、及び/又は本明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は1つの請求項のみに直接従属し得るが、可能な実装形態の開示は、各従属請求項を請求項セット内のあらゆる他の請求項との組合せとして含む。
【0118】
本明細書で使用される要素、動作、又は命令は、そのようなものとして明示的に記載されていない限り、重要又は必須であると解釈されてはならない。また、本明細書で使用される場合、冠詞「a」及び「an」は、1つ又は複数の項目を含むことを意図されており、「1つ又は複数」と交換可能に使用され得る。更に、本明細書で使用される「セット」という用語は、1つ又は複数の項目(例えば、関連項目、非関連項目、関連項目と非関連項目の組合せなど)を含むものであり、「1つ又は複数」と同じ意味で使用されてもよい。1つの項目のみが対象とされる場合、「1つ」という用語又は同様の言葉が使用される。また、本明細書で使用される「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることが意図される。更に、「に基づいて」という語句は、特に明記されない限り、「に少なくとも部分的に基づいて」を意味することが意図されている。
【符号の説明】
【0119】
100 環境
110 ユーザデバイス
120 プラットフォーム
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション
124-2 仮想マシン
124-3 仮想化ストレージ
124-4 ハイパーバイザ
130 ネットワーク
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 記憶構成要素
250 入力構成要素
260 出力構成要素
270 通信インターフェース
300 NBMPシステム
310 NBMPソース
320 NBMPワークフローマネージャ
330 機能リポジトリ
350 メディア処理エンティティ
352 タスク
353 構成
354 メディア処理機能
360 メディアソース
370 メディアシンク
380 サード・パーティ・エンティティ
391 機能探索API
392 NBMPワークフローAPI
393 機能探索API
394 NBMPタスクAPI
396 メディア処理エンティティ(MPE)API
400 NBMPワークフロー
410 入力
420 出力
500 コンピュータコード
510 コード取得
520 スケジューリングコード
530 実行コード
540 応答コード
900 スケジュールフィールド
【手続補正書】
【提出日】2023-11-20
【手続補正2】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ネットワークベースのメディア処理(NBMP)ワークフローマネージャを実装する少なくとも1つのプロセッサによって実施される方法であって、前記方法が、
前記NBMPワークフローマネージャによって、(i)NBMPワークフローで実行されるタスク又はタスクグループの実行順序と、(ii)前記タスク間の依存関係と、のうちの少なくとも1つを示す少なくとも1つのテーブルを取得するステップであって、前記少なくとも1つのテーブルが、Unixクロン又はLinuxクロンの文字列フォーマットを使用する、ステップと、
前記少なくとも1つのテーブルに基づいて前記タスクを実行させるステップと
を含む、方法。
【請求項2】
前記少なくとも1つのテーブルが、前記タスク又は前記タスクグループの前記実行順序で、前記タスク又は前記タスクグループの識別子を示すスケジュールテーブルを含む、請求項1に記載の方法。
【請求項3】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの開始時間を更に示す、請求項2に記載の方法。
【請求項4】
前記スケジュールテーブルが、前記タスク又は前記タスクグループの持続時間を更に示す、請求項2に記載の方法。
【請求項5】
前記少なくとも1つのテーブルが、前記タスク間の前記依存関係を示すテーブルを更に含む、請求項2に記載の方法。
【請求項6】
前記スケジュールテーブルの前記実行順序がループされることを示す情報を受信するステップを更に含み、
前記タスクを実行させる前記ステップが、前記情報の受信に基づいて、前記スケジュールテーブルに基づく前記実行順序で前記タスクをループさせるステップを含む、
請求項2に記載の方法。
【請求項7】
前記少なくとも1つのテーブルを取得する前記ステップが、前記スケジュールテーブルを受信するステップを含む、請求項2に記載の方法。
【請求項8】
前記クロンの文字列フォーマットが、
コンマで区切られた許容値による前記許容値のリストを示すものと、
「*」を使用することによって制限されない範囲を示すものと、
「-」を使用することによって範囲を示すものと、
「?」を使用することによって値がいずれであってもよいことを示すものと、
「L」を使用することによって1週間又は1ヶ月の最終日を示すものと、
「W」を使用することによって特定の平日を示すものと、
「#」を使用することによって月の特定の日を示すものと、
ステップ値を示すものと
のうちの少なくとも1つをサポートする、請求項1に記載の方法。
【請求項9】
前記タスクを実行させる前記ステップが、前記タスク間の前記依存関係を示す前記少なくとも1つのテーブルに基づいて、前記タスクの前記実行順序を導出するステップと、導出された前記実行順序で前記タスクを実行させるステップと、を含む、請求項1に記載の方法。
【請求項10】
前記少なくとも1つのテーブルが、前記タスク又は前記タスクグループの前記実行順序で、前記タスク又は前記タスクグループの識別子を示すスケジュールテーブルを含む、請求項1に記載の方法。
【請求項11】
コンピュータ・プログラム・コードを記憶するように構成された少なくとも1つのメモリと、
前記コンピュータ・プログラム・コードにアクセスし、更に前記コンピュータ・プログラム・コードによって命令されて動作するように構成された少なくとも1つのプロセッサと
を備えるシステムであって、前記コンピュータ・プログラム・コードが、
前記少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに請求項1から10のいずれか一項に記載の方法を実行させる、システム。
【請求項12】
コンピュータコードを
含むプログラムであって、前記コンピュータコードが、少なくとも1つのプロセッサによって実行されると、前記少なくとも1つのプロセッサに、
請求項1から10のいずれか一項に記載の方法を実行させる、プログラム。
【国際調査報告】