アプリケーションスケジュールの管理

Runtime Manager を使用して、実行中のアプリケーションを変更することなく、デプロイされたアプリケーションのフロー内の Scheduler コンポーネントの表示と制御を行うことができます。 たとえば、アプリケーションのうちの 1 つがメンテナンス中である間に、スケジュールされたジョブを無効にすることができます。

[Schedules (スケジュール)]​ タブでは以下を行うことができます。

  • 実行中のアプリケーションでスケジュールを表示する。

  • アプリケーションでスケジュールを変更する。

  • スケジュールを変更せずに、スケジュールされたジョブを直ちに実行する。

  • フローのスケジュールを無効または有効にする。

定期的な間隔でトリガーする​一定間隔​、または指定した Cron 式に基づいた日時にトリガーする ​Cron​ として、Scheduler コンポーネントの種類を設定します。

スケジュールタイプを (一定間隔から Cron、またはその逆に) 変更するには、アプリケーションを更新して再デプロイする必要があります。 デプロイされたアプリケーションのスケジュールタイプを変更することはできません。
アプリケーションスケジュールを表示するには、​「Read Applications (アプリケーションの読み取り)」​権限に加えて​「Exchange Viewer (Exchange 閲覧者)」​権限が必要です。

スケジュールの設計に関する考慮事項

スケジュールを設計するときには、次の点を考慮してください。

  • CloudHub 2.0 スケジューラーは、毎回の実行時にジョブ設定を読み取ります。

    スケジューラー設定を更新した場合、次回スケジューラーが実行されるときに変更が有効になります。

  • スケジュールを変更すると、アプリケーションが再デプロイされます。

  • アプリケーションが実行されていないためにスケジュールされたジョブがトリガーされない場合、 CloudHub 2.0 はアプリケーションが再起動すると直ちにジョブをトリガーします。

  • スケジュールは、スケジューラーの定義されたタイムゾーンに基づきます。

  • 複数のレプリカがあるアプリケーションの場合、CloudHub 2.0 はスケジュールされたジョブをすべてのレプリカで実行します。

    [Run (実行)]​ をクリックしてスケジュールされたジョブを直ちに実行する場合、スケジューラーは 1 つのレプリカで実行されます。

    CloudHub 2.0 は、レプリカ全体に複数の同時スケジューラーを分散します。

  • スクリプトを使用して CloudHub 2.0 のスケジュールを管理することはできません。

    CloudHub 2.0 のスケジュールを管理するには、​[Schedules (スケジュール)]​ タブまたは CloudHub 2.0 API を使用してください。

  • フロー名には、文字、数字、ハイフン (​-​)、アンダースコア (​_​)、ピリオド (​.​) のみを含めることができます。文字 ​/​、​[​、​]​、​{​、​}​、​#​ は無効です。

  • プレースホルダーのあるスケジューラーを使用してスケジュールを作成する場合、スケジュールの作成時に表示される値は、プレースホルダーがいつ検出されるかによって異なります。次に例を示します。

    • アプリケーションがデプロイされる前に値が使用可能な場合、その値が表示されます。

    • 値がデプロイメントの前に使用可能で、デプロイメントのプロパティに依存する場合、推定値が表示されます。

    • 値がデプロイメント時に提供されるプレースホルダー (​${cronExpression}​ など) である場合、プレースホルダーの正確な値はユーザーインターフェースに表示されません。

    • CloudHub 2.0 ではデフォルト値の ​60000​ が使用されます。

  • スケジューラーに変更を加えた場合は、アプリケーションを Exchange に再アップロードして、スケジューラーが期待どおりに動作するようにする必要があります。

始める前に

Runtime Manager のスケジュール機能を使用するには、Anypoint Studio 7.13 を使用して 1 つ以上の Scheduler 要素を含むアプリケーションをデプロイします。

Anypoint Studio キャンバスの Scheduler コンポーネント

アプリケーションをデプロイしたら、Runtime Manager でスケジュールを管理できます。 アプリケーションが実行されている必要はありません。

Runtime Manager でアプリケーションを表示して管理する

アプリケーションを CloudHub 2.0 にデプロイしたら、Runtime Manager で Scheduler 要素を表示して管理します。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    Runtime Manager では、Scheduler 要素がアプリケーションに表示される順序でリストされます。

    「Schedules (スケジュール)」 ページの (1) フロー名と (2) 頻度リンク。
    • [Name (名前)]​ 列には、Scheduler 要素を含むフローの名前 (1) が表示されます。

    • [Schedule (スケジュール)]​ 列の頻度リンク (2) には、要素のスケジュールが表示されます。

  4. ジョブが開始および終了した日時の詳細を確認する場合は、ナビゲーションメニューで ​[Logs (ログ)]​ をクリックします。

    ナビゲーションメニューの [Logs (ログ)] オプション。
  5. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

    表示されるスケジュールエディターは、スケジュールタイプによって異なります。

  6. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ チェックボックスをオフにしてスケジュールを無効にします。

  7. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

一定間隔スケジュールを変更する

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    [Schedule (スケジュール)]​ 列には、要素のスケジュールが表示されます。

    一定間隔スケジュールタイプ
  4. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

  5. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ チェックボックスをオフにしてスケジュールを無効にします。

    一定間隔スケジュール設定

    頻度には、ミリ秒、秒、分、時間、または日を指定できます。 コール間の最小の推奨頻度は 10 秒です。

  6. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

Cron スケジュールを変更する

Cron 式を使用すると、「毎週金曜日の午前 9 時 00 分から午前 10 時 00 分まで 5 分おき」といった複雑なスケジュール頻度を作成できます。

Cron スケジュールタイプの頻度を変更する手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

    [Schedule (スケジュール)]​ 列には、要素のスケジュールが表示されます。

    Cron スケジュールタイプ
  4. 要素の頻度リンクをクリックして、スケジュールエディターを開きます。

  5. スケジュールエディターで、スケジュールを変更するか、または ​[Enabled (有効)]​ (1) チェックボックスをオフにしてスケジュールを無効にします。

    (1) [Enabled (有効)] オプションと (2) [Quick reference (クイックリファレンス)] リンクを含む Cron スケジュール設定
  6. スケジュールエディターで ​[Quick reference (クイックリファレンス)]​ (2) をクリックして、必須項目と許可される値のテーブルを展開するか折りたたみます。

    この例の Cron 式は、10 秒間隔のスケジュールを設定しています。

    Cron トリガーの作成についての詳細は、次の方法で確認できます。

    1. Quartz ドキュメント​を参照します。

    2. バージョンを選択し、​[Documentation (ドキュメント)] > [User’s Guide (ユーザーガイド)] > [Tutorial (チュートリアル)]​ をクリックして、​[CronTrigger]​ レッスンをクリックします。

  7. [Update (更新)]​ をクリックして設定の変更内容を保存するか、または ​[Cancel (キャンセル)]​ をクリックして保存せずに終了します。

スケジュールされたジョブの即時実行

毎晩実行するジョブを今すぐデバッグする場合は、アプリケーションでスケジュールを更新しなくても、実行中のジョブをトリガーできます。実行中のスケジューラーのインスタンス間でジョブをトリガーすると、指定された期間のタイマーがリセットされます。

スケジュールされたジョブを直ちに実行する場合、複数のレプリカがあるアプリケーションの場合でも、スケジューラーは 1 つのレプリカで実行されます。

スケジュールを上書きしてジョブを直ちに実行する手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

  4. 管理する要素を選択してから、​[Run (実行)]​ をクリックします。

Scheduler 要素の無効化または有効化

接続しているアプリケーションがメンテナンス中である間に、スケジュールされたジョブを無効にし、メンテナンスの完了後に再度有効にすることができます。

スケジューラーを再度有効にするまで、CloudHub 2.0 はスケジュールされたジョブを実行しません。

既知の問題​: スケジューラーを無効にしても、スケジューラーはアプリケーションの起動時に実行されます。スケジューラーが実行されないようにする場合は、Anypoint Studio を使用してアプリケーションで ​startdelay​ プロパティを 5 秒に設定します。

Scheduler 要素を無効にする手順は、次のとおりです。

  1. Anypoint Platform から、​[Runtime Manager]​ > ​[Applications (アプリケーション)]​ を選択します。

  2. アプリケーション名をクリックします。

  3. ナビゲーションメニューで ​[Schedules (スケジュール)]​ をクリックします。

  4. 管理する要素を選択してから、​[Disable (無効化)]​ をクリックします。

    スケジュールエディターで ​[Enabled (有効)]​ を選択解除または選択して、スケジュールを無効または有効にすることもできます。

    スケジュールエディターので [Enabled (有効)] 切り替え