ジョブ

Ooyala Flexがメディア管理プラットフォームであること、そして、メディア管理プラットフォームである以上、大容量ファイルや長期間操作への対応が必要となることは、すでにご理解いただけたかと思います。トランスコードや公開といった特定のアクションは長期にわたり実行される場合があります。また、作業の遂行のためにリソースへのアクセスが必要なアクションもあるでしょう。たとえば、トランスコードアクションはトランスコードリソースへのアクセスが必要となります。Ooyala Flexはユーザーのリクエストに応じて即時アクションを実行できるものの、こうしたことがリソースのコンテンションや、ユーザーインターフェースまたはAPIインターフェースの反応時間増加という点で問題を引き起こす可能性があります。また、将来の特定の時刻に特定のアクションを実行したいという場合にも、アクションの使用がある程度制限されます。たとえば、翌日曜日の09:00時にアセットをYouTubeに公開したい、というケースもあるでしょう。

こうしたさまざまな理由から、アクションはジョブの内部で実行されます。これらのジョブはOoyala Flex内部のジョブスケジューラーで管理されます。ジョブスケジューラーはジョブの保管、取得、優先順位付け、実行を処理する役目を担っています。

ジョブは、作業を定義する1つのアクションと、開始時間、優先度、ステータス、所有者といった追加プロパティから成る作業単位です。ジョブはトランザクションとして実行されます。すなわち、完了するか、失敗して元の状態にロールバックされるかのどちらかとなります。ジョブは独自のコンテキスト内で実行されます。すなわち、他のあらゆるジョブから完全に分離され、このジョブタイプをサポートするOoyala Flexクラスター内の任意のOoyala Flexノードで実行できます。ジョブには、構成情報を含め、独立して実行するためのあらゆる情報が含まれます。この情報は、ジョブの「コンテキスト」内に格納されます。これは、ジョブが失敗した場合に再試行ができるという点でとても重要です。

各ジョブに属するプロパティは以下のとおりです。

開始時間:ジョブの実行を開始するようスケジュールされた時間。

終了時間:ジョブの実行が完了する時間(完了したことが前提)。

期間:ジョブの実行にかかる時間。

優先度:ジョブの優先度。たとえば、最低、低、標準、高、最高など。

所有者:ジョブを所有するユーザー。

ステータス:ジョブの現在のステータス。たとえば、スケジュール済み、実行中、失敗、完了済みなど。

再試行:ジョブが再試行された回数。これは、ジョブが失敗した場合に再試行できることを意味します。

アクション:ジョブがユーザーに代わって実行するアクション(定義された作業)。

構成:構成は、ジョブ作成時にアクションからジョブにコピーされます。これは、ジョブが失敗した場合に特定のジョブの構成を修正して、再試行できることを意味します。

ごくまれに、ジョブの実際の開始時間が遅れる場合があります。これが起こりうるのは、次のような場合です。

• より優先度の高い他のジョブを実行する必要がある場合。

• ジョブに必要なリソースで競合が生じた場合。

ジョブの起動

ジョブは、作業を定義する1つのアクションと、開始時間、優先度、ステータス、所有者といった追加プロパティから成る作業単位です。ジョブはトランザクションとして実行されます。すなわち、完了するか、失敗して元の状態にロールバックされるかのどちらかとなります。ジョブは独自のコンテキスト内で実行されます。すなわち、他のあらゆるジョブから完全に分離され、このジョブタイプをサポートするOoyala Flexクラスター内の任意のOoyala Flexノードで実行できます。ジョブには、構成情報を含め、独立して実行するためのあらゆる情報が含まれます。この情報は、ジョブの「コンテキスト」内に格納されます。これは、ジョブが失敗した場合に再試行ができるという点でとても重要です。

ジョブを起動するには、次のようないくつかの方法があります。

アセットツールバーから起動:アセットツールバーを用いて1つ以上のアセットを選択する場合、アクションはジョブとして実行されます。これらのジョブは、ジョブセクションで確認できます。この実行方法では、開発者には、ジョブの優先度、開始時間、および元となるアクションに関連付けられた構成を選択するためのオプションが提示されます。

ワークフローノードから起動:アクションノードがワークフローインスタンス内で実行される場合、ジョブは自動的に作成され実行されます。この場合、ジョブが失敗しない限り、ユーザーはジョブを制御できません。

APIから起動:開発者はOoyala FlexのAPIを用いてジョブを作成し実行できます。この場合、開発者には、ジョブの優先度、開始時間、および元となるアクションに関連付けられた構成を選択するためのオプションが提示されます。

注記:APIの使用については、このマニュアルでは取り扱いません。詳しくはAPIガイドを参照することをお勧めします。

注記:ジョブの所有者となるのは、そのジョブを作成したユーザーです。ジョブがワークフローインスタンスのアクションノードを介して作成される場合、ジョブの所有者となるのは、ワークフローインスタンスの所有者です。この場合、ジョブの所有者は、関連するワークフローインスタンスを最初に開始したユーザーとなります。

アセットツールバーから起動

アセットツールバーからジョブを起動するには、次のステップに従います。

1) ジョブを起動するアセットに移動します。

2) ページ上部のツールバーから、アクション(たとえば、公開)を選択します。

3) 公開ジョブの作成ボックスから、公開アクションタイプ(たとえば、YouTube公開)を選択します。

4) スケジュール設定および構成の各オプションを確認します。

ワークフローノードから起動

ワークフローノード内のジョブの起動状況をワークフローインスタンス画面で確認できます。

ジョブの状態

ジョブは以下のステータスのうち1つを保持できます。

作成済み:作成され、かつスケジュールされていないジョブに適用されるステータスです。ジョブは3通りの形で作成されます。実行するワークフローノードの一部として作成される形、ユーザーアクションの結果として作成される形、そしてAPIコールの結果として作成される形です。ジョブは最初に作成される際にOoyala Flexの内部データベースに保存されます。この時点で、ジョブは作成済みとみなされます。Ooyala Flexのジョブスケジューラーは、開始時間がスケジュールされていないジョブを無視します。

スケジュール済み:開始時間を割り当てられたジョブは、スケジュール済みとみなされます。開始時間が設定されると、ジョブスケジューラーが実行期限がきたかどうかを定期的にチェックします。

保留中:開始時間が現在の時刻と同じか、それより後の場合、そのジョブは保留中とされます。この段階では、キューがフル状態のため、ジョブはOoyala Flexジョブスケジューラーの内部キューには追加されません。

キュー済み:キュー済みとは、ジョブがOoyala Flexジョブスケジューラーの内部キューに追加され、必要なリソースが利用可能になり次第実行される状態であることを意味します。

ロック待機中:一部のジョブは、アセットなどのOoyala Flexオブジェクトへの排他的アクセスを必要とします。ロック待機中とは、実行されるべきジョブがロックを待って待機している状態を指します。アセットに対してジョブを安全に実行するには、まず排他的ロックへのアクセスを取得しなければなりません。ジョブの実行開始後にロックを取得できない場合、そのジョブはロック待機中状態に変更され、ロックキューに追加されます。ロックを所有するジョブが(ジョブ完了により)これを放棄すると、キュー内の次のジョブにロックが提供されます。

実行中:ジョブがOoyala Flexジョブスケジューラーによって実行され、現在実行中であることを示します。これは、関連付けられたアクション内部のコードが実行されていることを意味します。

タイムアウト:ジョブに関連付けられたアクションにタイムアウト値が設定されており、ジョブの実行時間がこのタイムアウト期間を超えた場合、そのジョブはタイムアウトに設定されます。

失敗:失敗したジョブは再試行またはキャンセルできます。

キャンセル済み:ジョブがキャンセル済みになると、その後の変更はできなくなります。したがって、再試行やスケジュール設定などはできません。

完了済み:ジョブの実行が正常に完了しています。ジョブが完了済みになると、再試行やスケジュール設定などはできなくなります。

グループジョブ

グループジョブとは、1つ以上のメンバーまたはジョブで構成されるジョブのことです。グループジョブの構造により、論理的に関連するジョブをグループ化することができます。グループジョブは、グループメンバー実行を提供するアクションがアセットグループに対して実行される場合に作成されます。このような場合、Ooyala Flexのジョブスケジューラーはグループジョブを作成し、アセットグループに含まれる各メンバーまたは子ごとにサブジョブを作成します。各サブジョブは同時間にスケジュールされますが、別個のジョブとして実行されます。

グループジョブの状態はOoyala Flexのジョブスケジューラーにより次のように管理されます。

• 1つ以上の子ジョブが実行中のとき:グループジョブが実行中に設定されます。

•1つ以上の子ジョブが失敗したとき:グループジョブが失敗に設定されます。グループジョブを再試行すると、失敗したジョブのみが再試行されます。

• 1つ以上の子ジョブがタイムアウトしたとき:グループジョブがタイムアウトに設定されます。グループジョブを再試行すると、タイムアウトしたジョブのみが再試行されます。

• すべての子ジョブが完了したとき:グループジョブが完了済みに設定されます。

時間指定アクションジョブ

時間指定アクションは、ジョブとグループジョブが実行されるのと同じ形で、時間指定アクションジョブとして実行されます。時間指定アクションは、通常のジョブでは1回のみではなく定期的に実行されるものの、常に単一のジョブインスタンスに関連付けられています。このジョブインスタンスは、時間指定アクションで構成された間隔に従って実行されます。時間指定アクションジョブはジョブダッシュボードおよびOoyala Flex Consoleのジョブの詳細セクションで確認できます。

注記:時間指定アクションは、定期間隔で実行することができる特別なタイプのアクションです。アクションがジョブとして実行されることは、すでにおわかりかと思います。時間指定アクションの場合、存在するのは1つのジョブのみで、時間指定アクション間隔を超過するごとに、これが毎回実行されます。したがって、時間指定アクション画面から、ジョブセクションの関連する時間指定アクションジョブの詳細画面にリンクできます。

失敗したジョブ

場合によっては、ジョブが失敗することもあります。ジョブが失敗する原因の多くは、関連付けられたアクションと、アクションが実行する作業に関係しています。たとえば、YouTubeにアセットを公開するジョブの場合、ネットワークが一時的にダウンしていたら、そのジョブは確実に失敗するでしょう。

以前にも説明したように、アクションが実行されると、ジョブが作成されます。このジョブが失敗した場合、ジョブには失敗のマークが付けられます。(さらに、ワークフローインスタンスに関連付けられたジョブの場合、ワークフローインスタンスにも失敗のマークが付きます)

失敗したジョブセクションには、Ooyala Flexで失敗したすべてのジョブのリストが表示されます。

ジョブタブでは、失敗したジョブのリンクが2か所に表示されます。ジョブサマリーセクションの上部と、ツールバーです。これらのリンクをクリックすると、検索フィールドが事前入力されたジョブ検索結果画面に移動し、失敗したすべてのジョブが表示されます。このビューでは、一括アクションを有効にして、失敗した1つ以上のジョブをキャンセルまたは再試行できます。

注記:一度ジョブをキャンセルすると、それ以降の実行はできなくなります。

ジョブが失敗した場合、次の2つの選択肢があります。

1) ジョブを再試行する:状態がキュー済みに設定され、ジョブスケジューラーによる再試行が可能になります。この場合、再試行カウントが1増加します。

2) ジョブをキャンセルする:ジョブはキャンセル済みに設定され、これ以降の再試行はできなくなります。

ワークフローインスタンスとジョブの関係は非常に強力です。これはつまり、ワークフローインスタンスはジョブが失敗した場合は必ず失敗し、失敗はジョブに分離されるということです。ジョブのトランザクション的性質により、ジョブが正常に再試行され完了され次第、ワークフローの状態は保持され、ワークフローインスタンスは中断箇所から引き続き実行されることになります。

ジョブが失敗した場合、ジョブの詳細ビューの履歴タブを参照することで、失敗の原因に関する情報を確認できます。赤字で示された履歴は、ジョブの失敗に関連するイベントです。

ジョブの失敗を無視

ジョブの失敗が想定済みの場合、スクリプトコマンドを使用できます。もしジョブが失敗しても無視できる場合は、スクリプトのジョブコンテキスト変数を次のように設定します。

context.setJobStringVariable("ignoreJobFailure", "true")

ジョブのタイムアウト

先述のとおり、ジョブはアクションに基づいて動作しており、アクションにはタイムアウト期間を割り当てることが可能です。アクションにタイムアウト期間を割り当てると、ジョブがアクションに基づいて動作を開始した際、タイムアウト期間のタイマーがセットされます。ジョブの完了前にタイムアウト期間が満了すると、ジョブスケジューラーはジョブのステータスをタイムアウトに設定します。これにより(当然ながら)ジョブの実行が停止することはありません。ジョブの実行に予想よりも時間がかかっているという指標が設定されるだけです。このコンセプトは、タイムアウトジョブのイベントフィルターが設定されている場合に効果的です。これはつまり、何らかの問題がある可能性をユーザーが認識できるということです。タイムアウトは、ジョブがサードパーティーのシステム(たとえば、トランスコードサーバーなど)と接続する場合、特に効果的です。トランスコーダーが期待どおりに動作しておらず、内部エラーの可能性があることを、初期の段階で警告することができます。なお、Ooyala Flexは、ジョブが違法状態となりデータやその他の外部システムを破損する可能性があるという理由のみで、実行中のジョブをキャンセルすることはないため、ご注意ください。

ジョブのライフサイクル

ここでは、ジョブが作成され実行される過程を説明します。プロセスを1ステップずつ詳しく見ていきましょう。ジョブは、以下に説明するいくつかの状態を有し、その間を遷移します。

1) 作成済み - ジョブは3通りの形で作成されます。

実行するワークフローノードの一部として作成。

ユーザーアクションの結果として作成。

APIコールの結果として作成。

ジョブは最初に作成される際にOoyala Flexの内部データベースに保存されます。この時点で、ジョブは作成済みとみなされます。Ooyala Flexのジョブスケジューラーは、開始時間がスケジュールされていないジョブを無視します。アクション構成は、アクションからジョブにコピーされます。これは基本的に、ジョブが失敗した場合に特定のジョブの構成を修正して、再試行できることを意味します。作成済みジョブは、必ずステップ2に移行します。

2) スケジュール済み - 開始時間を割り当てられたジョブは、スケジュール済みとみなされます。開始時間が設定されると、ジョブスケジューラーがジョブの実行期限がきたかどうかを定期的にチェックします。ここから、ジョブはステップ3またはステップ4のどちらかに移行します。

3) 保留中 - 開始時間が現在の時刻と同じか、それより後の場合、そのジョブは保留中とされます。この段階では、キューがフル状態か、ジョブの実行に必要なリソースが現在利用不可能のため、ジョブはOoyala Flexジョブスケジューラーの内部キューには追加されません。次のステップは、ステップ4です。

4) キュー済み - キュー済みとは、ジョブがOoyala Flexジョブスケジューラーの内部キューに追加され、必要なリソースが利用可能になり次第実行すべき状態であることを意味します。ここから、このジョブはステップ5またはステップ6のどちらかに移行できます。

5) ロック待機中 - 一部のジョブは、アセットなどのOoyala Flexオブジェクトへの排他的アクセスを必要とします。ロック待機中とは、実行されるべきジョブがロックを待って待機している状態を指します。アセットに対してジョブを安全に実行するには、まず排他的ロックへのアクセスを取得しなければなりません。ジョブの実行開始後にロックを取得できない場合、そのジョブはロック待機中状態に変更され、ロックキューに追加されます。ロックを所有するジョブが(ジョブ完了またはキャンセルにより)これを放棄すると、キュー内の次のジョブにロックが提供されます。ここから、ジョブはステップ6に移行します。

6) 実行中 - ジョブがOoyala Flexジョブスケジューラーによって実行され、現在実行中であることを示します。ジョブに関連付けられたアクションが実行されています。ここから、ジョブはステップ7ステップ8ステップ9ステップ10のいずれかに移行できます。

7) タイムアウト - ジョブに関連付けられたアクションにタイムアウト値が設定されており、ジョブの実行時間がこのタイムアウト期間を超えた場合、そのジョブはタイムアウトに設定されます。ここから、ジョブはステップ9に進むか、ステップ4に戻ります。

8) 失敗 - 失敗したジョブは再試行またはキャンセルできます。再試行する場合、ジョブはステップ4に戻ります。キャンセルする場合、ステップ9に進みます。

9)キャンセル済み - キャンセル済みのジョブは、再試行やスケジュール設定などができず、変更不能となります。一度キャンセル済みとなったジョブは、すべてのロックを解放します。

10)完了済み - ジョブの実行が正常に完了しています。この状態のジョブは、再試行やスケジュール設定などができず、変更不能となります。

注記:一部のジョブは実行中にキャンセルできます。ジョブと関連付けられたアクションがキャンセルをサポートしている場合、選択肢が提示されます。

ジョブダッシュボード

ジョブダッシュボードには、ジョブのステータスの概要が表示されます。このセクションでは、利用可能な情報の概要を説明します。

A) 最近のアクティビティ:最近のジョブアクティビティでは、ジョブに関連して発生したすべてのイベントがリアルタイムで更新されます。エントリーにカーソルを合わせると、イベントに関する詳細情報を掲載したツールヒントポップアップが、元のジョブオブジェクトへのリンクとともに表示されます。

ステータス概要の表示例を以下に示します。0より大きい数値をクリックすると、検索結果ビューで結果を見ることができます。

B) 失敗したジョブ:失敗したジョブがあれば、ここに通知が表示されます。通知をクリックすると、失敗したジョブのリストが表示されます。

ダッシュボードの失敗したジョブセクションのリンクをクリックすると、失敗したジョブのリストを確認できます。

C) ジョブサマリー:ここでは、Ooyala Flexで作成したすべてのジョブについて、待機中、実行中、完了済み、失敗、キャンセル済みのジョブ数などを含めた概要を確認できます。

D) 実行したい処理:ここでは、作成したウィザードを表示できます。

E) ショートカット:ここでは、ショートカットを作成したジョブを表示できます。ジョブのショートカットは、ジョブの詳細セクションで作成できます。

F) 保存した検索: 保存したジョブ検索はここに表示されるため、すばやく簡単にアクセスできます。

ジョブの詳細

ジョブの詳細画面には、個別のジョブおよびグループジョブについての情報が表示されます。タブや関連するフィールドを以下で説明します。

ジョブにリンクしているアセットおよびワークフローインスタンスには、画面の右上隅のリンクを使用してアクセスすることができます。

注記:実行中のジョブの進捗状況をリアルタイムで確認したい場合は、履歴サブタブをクリックします。これにより、ビューが自動的に更新され、ジョブの実行情報が更新されます。

ジョブの詳細画面では、サブタブを使用して画面を移動します。ジョブ固有のタブについて、以下に説明します。

ジョブツールバー

ジョブの詳細ビューでは、通常のフォローおよびショートカットオプション以外にも、再試行およびキャンセルオプションが表示される場合があります。これらのボタンは、ジョブが失敗またはタイムアウト状態のときにのみ表示されます。アクションの説明は次のとおりです。

再試行:ジョブが失敗またはタイムアウトした場合、再試行をクリックすると、失敗したジョブを再試行するようジョブスケジューラーにリクエストします。

キャンセル:ジョブが失敗またはタイムアウトした場合、キャンセルをクリックすると、ジョブがキャンセル済みに設定されます。

注記:ジョブは、使用されていないことを前提として削除することもできます。

サマリータブ

ジョブの詳細のサマリービューに含まれる特に重要な情報を以下に説明します。

アクション

このジョブに関連付けられたアクションへのリンクを提供します。

プラグイン

このアクションを実施するOoyala Flexプラグインの名前を示します。

タイムアウト

アクションに対して設定でき、実行中のジョブがタイムアウトとみなされるまでの待機期間を定義します。

進捗バー

ジョブの進捗状況を表示します。

 

その他のフィールド

ジョブの詳細タブ内のその他の重要なフィールドについて簡単に説明します。

アクションタイプ:このジョブに関連付けられたアクションのタイプを示します。

リソース:このジョブがリソースに依存するアクションを有する場合、そのリソースが表示されます。

優先度:このジョブの優先度を示します。

ステータス:このジョブのステータスを示します。

期日:ジョブが実行されるべき/べきであった日時を示します。

期間:ジョブの実行にかかっている時間(完了済みの場合は、実行にかかった時間)を示します。

開始:ジョブが開始された時間を示します。

終了:ジョブが終了した時間を示します(終了していることが前提)。

再試行:ジョブが再試行された回数を示します。

構成タブ

この画面には、特定のジョブのアクションに関連する構成が表示されます。

注記:ジョブのステータスが失敗もしくはタイムアウトになった場合にのみ、構成情報を編集することができます。

ワークフロービュー

ジョブがワークフローインスタンスに関連付けられている場合、画面の右上から、リンクを使用してワークフローインスタンスにアクセスできます。

アセットビュー

ジョブに関連付けられたアセットがある場合、画面の右上から、リンクを使用してアセットにアクセスできます。

ジョブ検索

ここでは、ジョブに関連する検索エリアについて説明します。

注記:このエリアについて完全に理解するには、オンラインヘルプの一般検索セクションもあわせて参照する必要があります。

ジョブオプションを使用して検索

1) ジョブオプションを使用するには、グローバルナビゲーションのジョブタブをクリックします。

2) 次に、ツールバーでジョブ検索フィールドの下にある高度リンクをクリックします。

3) ジョブ検索セクションで、ジョブオプションドロップダウンをクリックします。

4) ジョブオプションセクションで、ジョブタイプ、アクション、ステータス、グループ/単一、優先度など、ジョブ検索の検索条件を選択します。

ジョブオプションフィールド

 

ジョブタイプとアクション

この機能を使うと、Ooyala Flex内の特定タイプのジョブを検索できます。ジョブを選択すると、それに割り当てられたアクションが選択可能になります。

ステータス

このフィールドでは、完了済み、失敗、キャンセル済み、保留中など、ジョブのステータスを選択できます。一度に複数のステータスを選択して、検索の幅を広げることも可能です。ジョブのステータスの詳細については、ジョブサマリーのセクションを参照してください。

グループ/単一

ジョブは、単一のジョブまたはグループジョブの一部として実行できます。グループ/単一ドロップダウンでは、どちらのタイプを検索するかを明示的に選択できます。

優先度

優先度で検索できます。たとえば、優先度が最高のジョブのみに検索を絞り込むことも可能です。

スケジュール、開始、終了

これらのフィールドは、スケジュールされた日時、開始日時、および終了日時で検索するのに役立ちます。

検索結果

ジョブ検索セクションで検索を実行すると、0件以上の結果が戻されます。ジョブの詳細はリストビューで確認できます。また、一括アクションをオンに切り替えると、ツールバーが表示され、1つ以上のジョブに対してアクションを実行できるようになります。ジョブ検索結果のアイテムをクリックすると、ジョブの詳細画面が表示されます。

この記事はお役にたちましたか?