# 将来のイベントをシミュレートしてスケジュールを調整

関連付ける(つまりスケジュールをタスクに適用する)前に、このスケジュールが将来トリガーする可能性があるイベントをシミュレートし、それに応じてスケジュールを調整します。

## 始める前に

* TMCトークンを生成:

  * ユーザーの場合は、[パーソナルアクセストークンを生成](https://help.qlik.com/talend/r/ja-JP/Cloud/management-console-user-guide/cloud-access-token)に従ってパーソナルアクセストークンを生成します。
  * サービスアカウントの場合は、[サービスアカウントトークンを生成](https://help.qlik.com/talend/r/ja-JP/Cloud/api-user-guide/generate-service-account-token)に従ってサービスアクセストークンを生成します。

  生成されたサービスアカウントトークンは30分後に期限切れになります。期限切れになった場合は、エンドポイントhttps://api.&lt;env&gt;.cloud.talend.com/security/oauth/tokenでPOSTメソッドを使って新しいトークンを生成します。トークンの生成に関する詳細は、[サービスアカウントトークンを生成](https://help.qlik.com/talend/r/ja-JP/Cloud/api-user-guide/generate-service-account-token)をご覧ください。

* イベントをシミュレートする必要があるスケジュールのIDを知っていること。

* 将来のイベントをシミュレートする場合は、スケジュールのシミュレートや調整を行う環境の少なくとも1つのスペースについて、APIコールの発行に使うユーザーアカウントかサービスアカウントにVIEW権限をあること。

  調整するスケジュールがタスクやプランに関連付けられている場合は、そのタスクやプランが属するスペースのVIEW権限が必要です。

* スケジュールを調整する(つまりそのスケジュールで定義されているトリガーをアップデートする)場合は、スケジュールを作成する環境の少なくとも1つのスペースで、使用するユーザーアカウントかサービスアカウントにTMC\_OPERATORロールとEXECUTOR権限があること。

  調整するスケジュールがタスクやプランに関連付けられている場合は、そのタスクやプランが属するスペースのEXECUTOR権限が必要です。

## 手順

1. 次のリクエストを発行し、スケジュールによってトリガーされる将来のイベントをシミュレートします。
   ### 例
   ```
   method: GET
   endpoint: https://api.<env>.cloud.talend.com/orchestration/schedules/<scheduleId>/events
   headers: {
         "Content-Type": "application/json",
         "Authorization": "Bearer <your_personal_access_token_or_service_account_token>"
             }
   payload: {
          "to": "1742567692000"
             }
   ```

   toフィールドは、将来のイベントをシミュレートする期間の終了日時をミリ秒単位で指定するために使われます。

   レスポンスには、将来の各イベントがトリガーと共に返されます。このトリガーは対応するイベントをオフに設定できるため、このスケジュールでアップデートが必要なトリガーの識別が容易になります。
   ```
   [
     {
       “date”: “2022-06-22T10:04:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-22T10:09:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-23T10:04:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-23T10:09:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-24T10:04:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-24T10:09:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-25T10:04:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
     {
       “date”: “2022-06-25T10:09:00.000Z”,
       “sourceTriggerName”: “my_trigger_1"
     },
   ...
   ]
   ```

   たとえばシステムのメンテナンス中にあるイベントがトリガーされることがわかった場合は、そのイベントの開始時刻を早めたり遅らせたりするためにこのトリガーをアップデートしなければならないこともあります。
2. 次のAPIコールを発行し、スケジュールのトリガーをアップデートします。
   ### 例
   ```
   method: PUT
   endpoint: https://api.<env>.cloud.talend.com/orchestration/schedules/<scheduleId>/triggers
   headers: {
         "Content-Type": "application/json",
         "Authorization": "Bearer <your_personal_access_token_or_service_account_token>"
             }
   payload: {
          "Trigger": {
              "name": "My unique trigger name",
              "startDate": "2022-06-17",
              "timeZone": "Europe/Kiev",
              "type": "ONCE",
              atTimes: {
                  "type": "AT_TIME",
                  "time": "11:00"
                       }
                      }
             }
   ```

   このリクエストは、イベント開始日を2022-06-17 (つまり2022年6月17日)に変更することで、My unique trigger nameという名前のトリガーをアップデートします。このスケジュールのために定義されている他のトリガーは変更されないままとなります。

   トリガーのこのアップデートには、新しいトリガーの定義に関するものと同じ要件が適用されます。リクエストを送信すると、自動チェックが進行します。

## タスクの結果

これでスケジュールが微調整され、最適なタイミングでイベントが開始されます。

## 次のタスク

タスクに関連付ける準備も整ったので、そのタスクのイベントはスケジュール通りにトリガーされるようになります。