--- title: "Dynamic Cronを使用したJob Poolへのジョブの送信" url: https://docs.catalyst.zoho.com/ja/job-scheduling/help/implementation/submit-job-dynamic-cron/ description: "Job Functions、Webhook、Circuits、またはAppSailサービスをトリガーするジョブのスケジュールと実行を行うコンポーネントを提供するCatalyst Job Schedulingの操作方法について学びます。" last_updated: 2026-10-06T06:21:49Z service: Job Scheduling type: general related_links: - name: "Job Poolドキュメント" url: /ja/job-scheduling/help/jobpool/introduction/ - name: "Cronドキュメント" url: /ja/job-scheduling/help/cron/introduction/ - name: "ジョブの作成" url: /ja/job-scheduling/help/job/introduction/ - name: "Cron Expressionsヘルプ" url: /ja/job-scheduling/help/cron/key-concepts/#cron-expressions - name: "Java SDK" url: /ja/sdk/java/v1/job-scheduling/overview/ - name: "Node.js SDK" url: /ja/sdk/nodejs/v2/job-scheduling/overview/ - name: "Python SDK" url: /ja/sdk/python/v1/job-scheduling/overview/ - name: "Job Scheduling REST API" url: /ja/api/code-reference/job-scheduling/jobpool/get-all-jobpool/#GetAllJobPools --- # Dynamic Cronを使用したJob Poolへのジョブの送信 **Dynamic [Cron](https://docs.catalyst.zoho.com/ja/job-scheduling/help/cron/introduction/)**を使用すると、コードを通じてCronを設定し、ランタイム中にJob Poolへのジョブ送信を動的にスケジュールできます。このヘルプセクションでは、Dynamic Cronを使用してJob Poolへのジョブ送信をスケジュールするために必要な手順を説明します。 Dynamic Cronを作成する前に、[Job Pool](https://docs.catalyst.zoho.com/ja/job-scheduling/help/jobpool/introduction/)のタイプに応じて、以下のコンポーネントがCatalystコンソールに設定・存在していることを確認してください: * **Function Job Pool**: [Job Function](https://docs.catalyst.zoho.com/ja/serverless/help/functions/job-functions/)を[Catalyst CLIで初期化](https://docs.catalyst.zoho.com/ja/cli/v1/initialize-resources/initialize-functions/)した場合、Dynamic Cronの設定を含むコードファイルとともにCatalystコンソールにデプロイする必要があります。 * **Webhook Job Pool**: サードパーティURLのURLが有効であることを確認してください。 * **Circuit Job Pool**: [Circuit](https://docs.catalyst.zoho.com/ja/serverless/help/circuits/introduction/)とその関連する関数がCatalystコンソールに作成・存在していることを確認してください。 * **AppSail Job Pool**: [AppSailサービス](https://docs.catalyst.zoho.com/ja/serverless/help/appsail/introduction/)をCatalystコンソールにデプロイ済みであることを確認してください。 **Dynamic Cron**を作成する際に覚えておくべきポイント: * Dynamic Cronは、理想的にはランタイム中に有効化され実行されます。 * [開発環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/development-environment/)で作成されたDynamic Cronは、[本番環境](https://docs.catalyst.zoho.com/ja/deployment-and-billing/environments/production-environment/)に移行できません。 * Dynamic Cronは、[Pre-Defined Cronとまったく同じ方法](https://docs.catalyst.zoho.com/ja/job-scheduling/help/implementation/submit-job-predefined-cron/)で*Builder*を使用して作成できます。ただし、このオプションは*本番環境*でDynamic Cronの**機能を作成しテストする**ために提供されています。 ### Dynamic Cronの設定 Dynamic Cronを作成して設定するには: 1. Catalystコンソールの*Job Scheduling*サービスセクションに移動し、**Start Exploring**をクリックします。 ![catalyst_job_scheduling_start_exploring_page](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_start_exploring_page.webp) 2. *JOB EXECUTOR*の下にある**Cron**をクリックしてCronコンポーネントにアクセスし、*Dynamic*タブにある**Create Cron**ボタンをクリックします。 ![catalyst_job_scheduling_dynamic_cron_start](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_dynamic_cron_start.webp) 3. **SDK**タブをクリックします。 ![catalyst_job_scheduling_dynamic_cron_sdk_code_select](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_dynamic_cron_sdk_code_select.webp) > **注意:** * このヘルプドキュメントでは、**Catalyst SDK**を使用してコードで**Dynamic Cron**を作成するために必要な手順のみを説明します。 * *Builder*を使用して*Pre-Defined Cron*を作成する手順が説明されている[こちらのヘルプドキュメント](https://docs.catalyst.zoho.com/ja/job-scheduling/help/implementation/submit-job-predefined-cron/)を参照してください。*Builder*は*Dynamic Cron*の作成にもまったく同じ方法で使用できます。 * *Builder*を使用してDynamic Cronを使用するオプションは、*本番環境*でDynamic Cronの**機能を作成しテストする**ために提供されています。 4. ドロップダウンから、Cronのコーディングに必要なコードスニペットのタイプを選択します。 ![catalyst_job_scheduling_dynamic_cron_sdk_snip_drop-down](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_dynamic_cron_sdk_snip_drop-down.webp) **ワンタイム動的Cron** ### ワンタイムDynamic Cronの設定 **Java** **One-Time Dynamic Cron** ```java // ONE TIME CRON => which will run after 60 minutes from the current time ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // ジョブスケジューリングインスタンスを取得する // Functionジョブのメタデータを生成する ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // Functionジョブビルダーを取得する .setJobConfig(2, 15 * 60 * 1000L) // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) .setJobpoolName("functions_job_pool") // 関数ジョブプールの名前を設定する(オプション)(jobpoolIdまたはjobpoolNameは必須) // .setJobpoolId(1234567890L) // 関数ジョブプールのIDを設定する(オプション)(jobpoolIdまたはjobpoolNameは必須) .setTargetName("target_function") // ターゲット関数の名前を設定する(オプション)(TargetNameまたはTargetIdは必須) // .setTargetId(1234567890L) // ターゲット関数のIDを設定する(オプション)(TargetNameまたはTargetIdは必須) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // ターゲット関数に渡すパラメータを設定する(オプション) .setJobName("job_name") // ジョブ名を設定する .build(); // ジョブメタデータをビルドする // Cron詳細を生成する ZCCronDetails oneTimeCronDetails = ZCCronBuilder.zcOneTimeCronBuilder() // ワンタイムCronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .cronConfig(System.currentTimeMillis() + (60 * 1000 * 1000)) // 実行時刻をUNIXタイムスタンプで設定する .setJobMeta(jobMeta) // ジョブメタデータを設定する(ジョブに応じて変更) .setCronName("one_time_cron") // Cron名を設定する(一意) .build(); // Cron詳細をビルドする // ワンタイムCronを作成する ZCCronDetails oneTimeCron = jobScheduling.cron.createCron(oneTimeCronDetails); ``` **Node.js** **One-Time Dynamic Cron** ```javascript // ONE TIME CRON => which will run after 60mins for the current time const jobScheduling = app.jobScheduling(); // ジョブスケジューリングインスタンスを作成する // Functionジョブを作成する meta const jobMeta = { job_name: 'test_job', // ジョブの名前を設定する target_type: 'Function', // Function用のターゲットタイプをFunctionに設定する target_name: 'target_function', // ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) // target_id: '123467890', // ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) jobpool_name: 'test', // 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) // jobpool_id: '1234567890' // 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) job_config: { number_of_retries: 2, // リトライ回数を設定する retry_interval: 15 * 60 * 1000 + '' // リトライ間隔を設定する }, // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) params: { arg1: 'test', arg2: 'job' }, // ターゲット関数に渡すパラメータを設定する(オプション) }; // ワンタイムCronを作成する details const oneTimeCron = { cron_name: 'one_time', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'OneTime', // CronタイプをOneTimeに設定する cron_detail: { time_of_execution: Date.now() + (60 * 1000 * 1000) + '' // 実行時刻をUNIXタイムスタンプで設定する }, job_meta: jobMeta // Functionジョブメタデータを設定する }; // ワンタイムCronを作成する const cronDetails = await jobScheduling.CRON.createCron(oneTimeCron); ``` **Python** **One-Time Dynamic Cron** ```python # ONE TIME CRON => which will run after 60mins for the current time job_scheduling = app.job_scheduling() # ジョブスケジューリングインスタンスを作成する # Functionジョブメタデータを作成する job_meta = { 'job_name': 'test_job', # ジョブの名前を設定する 'target_type': 'Function', # Function用のターゲットタイプをFunctionに設定する 'target_name': 'target_function', # ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) # 'target_id': '123467890', # ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) 'jobpool_name': 'test', # 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) # 'jobpool_id': '1234567890' # 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) 'job_config': { 'number_of_retries': 2, # リトライ回数を設定する 'retry_interval': 15 * 60 * 1000 # リトライ間隔を設定する }, # ジョブ設定 - リトライ => 15分で2回リトライ(オプション) 'params': { 'arg1': 'test', 'arg2': 'job' } # ターゲット関数に渡すパラメータを設定する(オプション) } # ワンタイムCronを作成する one_time_cron_details = job_scheduling.CRON.create({ 'cron_name': 'one_time', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'OneTime', # CronタイプをOneTimeに設定する 'cron_detail': { 'time_of_execution': int(time.time()) + (60 * 10 * 1000) # 実行時間をUNIXタイムスタンプとして設定する }, 'job_meta': job_meta # Functionジョブメタデータを設定する }) ``` **再帰的動的Cron** ### 再帰的Dynamic Cronの設定 **Java** **Recursive Dynamic Cron** ```java ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // ジョブスケジューリングインスタンスを取得する // Functionジョブのメタデータを生成する ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // Functionジョブビルダーを取得する .setJobConfig(2, 15 * 60 * 1000L) // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) .setJobpoolName("functions_job_pool") // 関数ジョブプールの名前を設定する(オプション)(jobpoolIdまたはjobpoolNameは必須) // .setJobpoolId(1234567890L) // 関数ジョブプールのIDを設定する(オプション)(jobpoolIdまたはjobpoolNameは必須) .setTargetName("target_function") // ターゲット関数の名前を設定する(オプション)(TargetNameまたはTargetIdは必須) // .setTargetId(1234567890L) // ターゲット関数のIDを設定する(オプション)(TargetNameまたはTargetIdは必須) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // ターゲット関数に渡すパラメータを設定する(オプション) .setJobName("job_name") // ジョブ名を設定する .build(); // ジョブメタデータをビルドする // 定期CRON => 2時間1分3秒ごとに実行される // Cron詳細を生成する ZCCronDetails everyCronDetails = ZCCronBuilder.zcEveryCronBuilder() // Every Cronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .setTime(2, 1, 3) // 繰り返し間隔を設定する .setJobMeta(jobMeta) // ジョブメタデータを設定する(ジョブに応じて変更) .setCronName("every_cron") // Cron名を設定する(一意) .build(); // Cron詳細をビルドする // Every Cronを作成する ZCCronDetails everyCron = jobScheduling.cron.createCron(everyCronDetails); // 日次CRON => 毎日0時0分0秒に実行される // Cron詳細を生成する ZCCronDetails dailyCronDetails = ZCCronBuilder.zcDailyCronBuilder() // Daily Cronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .setTime(0, 0, 0) // Cronを実行する時刻を設定する .setJobMeta(jobMeta) // ジョブメタデータを設定する(ジョブに応じて変更) .setCronName("daily_cron") // Cron名を設定する(一意) .build(); // Cron詳細をビルドする // Daily Cronを作成する ZCCronDetails dailyCron = jobScheduling.cron.createCron(dailyCronDetails); // 月次CRON => 毎月1日、3日、5日の0時0分0秒に実行される // Cron詳細を生成する ZCCronDetails monthlyCronDetails = ZCCronBuilder.zcMonthlyCronBuilder() // Monthly Cronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .setTime(0, 0, 0) // Cronを実行する時刻を設定する .setDays(1, 3, 5) // 月の日を設定する(日ベースの設定) // .setWeeksOfMonth(1, 3) // 月の週を設定する(週ベースまたは日ベースの設定が必要) // .setDayOfTheWeek(1, 2) // 曜日を設定する(週ベースまたは日ベースの設定が必要) .setJobMeta(jobMeta) // ジョブメタデータを設定する(ジョブに応じて変更) .setCronName("monthly_cron") // Cron名を設定する(一意) .build(); // Cron詳細をビルドする // Monthly Cronを作成する ZCCronDetails monthlyCron = jobScheduling.cron.createCron(monthlyCronDetails); // 年次CRON => 年の8月の1日、2日、3日の0時0分0秒に実行される // Cron詳細を生成する ZCCronDetails yearlyCronDetails = ZCCronBuilder.zcYearlyCronBuilder() // Yearly Cronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .setTime(0, 0, 0) // Cronを実行する時刻を設定する .setDays(1, 2, 3) // 月の日を設定する // .setWeeksOfMonth(1) // 月の週を設定する(週ベースまたは日ベースの設定が必要) // .setDayOfTheWeek(3) // 曜日を設定する(週ベースまたは日ベースの設定が必要) .setMonths(8) // 月を設定する .setJobMeta(jobMeta) // ジョブメタデータを設定する(ジョブに応じて変更) .setCronName("yearly_cron") // Cron名を設定する(一意) .build(); // Cron詳細をビルドする // Yearly Cronを作成する ZCCronDetails yearlyCron = jobScheduling.cron.createCron(yearlyCronDetails); ``` **Node.js** **Recursive Dynamic Cron** ```javascript const jobScheduling = app.jobScheduling(); // ジョブスケジューリングインスタンスを作成する // Functionジョブを作成する meta const jobMeta = { job_name: 'test_job', // ジョブの名前を設定する target_type: 'Function', // Function用のターゲットタイプをFunctionに設定する target_name: 'target_function', // ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) // target_id: '123467890', // ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) jobpool_name: 'test', // 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) // jobpool_id: '1234567890' // 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) job_config: { number_of_retries: 2, // リトライ回数を設定する retry_interval: 15 * 60 * 1000 + '' // リトライ間隔を設定する }, // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) params: { arg1: 'test', arg2: 'job' }, // ターゲット関数に渡すパラメータを設定する(オプション) }; // 定期CRON => 2時間1分3秒ごとに実行される // Every Cronを作成する details const everyCron = { cron_name: 'every_cron', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'Periodic', // Every Cron用のCronタイプをPeriodicに設定する cron_detail: { hour: 2, // 繰り返しの時間間隔を設定する minute: 1, // 繰り返しの分間隔を設定する second: 3, // 繰り返しの秒間隔を設定する repetition_type: "every" // Every Cron用の繰り返しタイプをeveryに設定する }, job_meta: jobMeta // Functionジョブメタデータを設定する }; // Every Cronを作成する const everyCronDetails = await jobScheduling.CRON.createCron(everyCron); // 日次CRON => 毎日0時0分0秒に実行される // Daily Cronを作成する details const dailyCron = { cron_name: 'daily_cron', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'Calendar', // Daily、Monthly、Yearly用のCronタイプをCalendarに設定する cron_detail: { hour: 0, // Cronを実行する時を設定する minute: 0, // Cronを実行する分を設定する second: 0, // Cronを実行する秒を設定する repetition_type: 'daily' // Daily Cron用の繰り返しタイプをdailyに設定する }, job_meta: jobMeta // Functionジョブメタデータを設定する }; // Daily Cronを作成する const dailyCronDetails = await jobScheduling.CRON.createCron(dailyCron); // 月次CRON => 毎月1日、3日、5日の0時0分0秒に実行される // Monthly Cronを作成する details const monthlyCron = { cron_name: 'monthly_cron', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'Calendar', // Daily、Monthly、Yearly用のCronタイプをCalendarに設定する cron_detail: { hour: 0, // Cronを実行する時を設定する minute: 0, // Cronを実行する分を設定する second: 0, // Cronを実行する秒を設定する days: [1, 3, 5], // 月の日を設定する in which the cron should be executed // week_day: [1, 3], // cronを実行する月の曜日を設定する // weeks_of_month: [2], // cronを実行する月の週を設定する repetition_type: 'monthly' // Monthly Cron用の繰り返しタイプをmonthlyに設定する }, job_meta: jobMeta // Functionジョブメタデータを設定する }; // Monthly Cronを作成する const monthlyCronDetails = await jobScheduling.CRON.createCron(monthlyCron); // 年次CRON => 年の8月の1日、2日、3日の0時0分0秒に実行される // Yearly Cronを作成する details const yearlyCron = { cron_name: 'yearly_cron', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'Calendar', // Daily、Monthly、Yearly用のCronタイプをCalendarに設定する cron_detail: { hour: 0, // Cronを実行する時を設定する minute: 0, // Cronを実行する分を設定する second: 0, // Cronを実行する秒を設定する days: [1, 2, 3], // 月の日を設定する in which the cron should be executed // week_day: [1, 3], // cronを実行する月の曜日を設定する // weeks_of_month: [2], // cronを実行する月の週を設定する months: [8], // 月を設定する of the year in which the cron should be executed repetition_type: 'yearly' // Yearly Cron用の繰り返しタイプをyearlyに設定する }, job_meta: jobMeta // Functionジョブメタデータを設定する }; // Yearly Cronを作成する const yearlyCronDetails = await jobScheduling.CRON.createCron(yearlyCron); ``` **Python** **Recursive Dynamic Cron** ```python job_scheduling = app.job_scheduling() # ジョブスケジューリングインスタンスを作成する # Functionジョブメタデータを作成する job_meta = { 'job_name': 'test_job', # ジョブの名前を設定する 'target_type': 'Function', # Function用のターゲットタイプをFunctionに設定する 'target_name': 'target_function', # ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) # 'target_id': '123467890', # ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) 'jobpool_name': 'test', # 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) # 'jobpool_id': '1234567890' # 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) 'job_config': { 'number_of_retries': 2, # リトライ回数を設定する 'retry_interval': 15 * 60 * 1000 # リトライ間隔を設定する }, # ジョブ設定 - リトライ => 15分で2回リトライ(オプション) 'params': { 'arg1': 'test', 'arg2': 'job' } # ターゲット関数に渡すパラメータを設定する(オプション) } # EVERY CRON => which will be run for every 2hrs 1min and 3sec # Every Cronを作成する every_cron = job_scheduling.CRON.create({ 'cron_name': 'every_cron', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'Periodic', # Every Cron用のCronタイプをPeriodicに設定する 'cron_detail': { 'hour': 2, # 繰り返しの時間間隔を設定する 'minute': 1, # 繰り返しの分間隔を設定する 'second': 3, # 繰り返しの秒間隔を設定する 'repetition_type': 'every' # Every Cron用の繰り返しタイプをeveryに設定する }, 'job_meta': job_meta # Functionジョブメタデータを設定する }) # DAILY CRON => which will be run on 0hrs 0mins and 0sec daily # Daily Cronを作成する daily_cron = job_scheduling.CRON.create({ 'cron_name': 'daily_cron', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'Calendar', # Daily、Monthly、Yearly用のCronタイプをCalendarに設定する 'cron_detail': { 'hour': 0, # Cronを実行する時を設定する 'minute': 0, # Cronを実行する分を設定する 'second': 0, # Cronを実行する秒を設定する 'repetition_type': 'daily' # Daily Cron用の繰り返しタイプをdailyに設定する }, 'job_meta': job_meta # Functionジョブメタデータを設定する }) # MONTHLY CRON => which will be run on 0hrs 0mins 0sec on 1st 3rd and 5th days of every month # Monthly Cronを作成する monthly_cron = job_scheduling.CRON.create({ 'cron_name': 'monthly_cron', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'Calendar', # Daily、Monthly、Yearly用のCronタイプをCalendarに設定する 'cron_detail': { 'hour': 0, # Cronを実行する時を設定する 'minute': 0, # Cronを実行する分を設定する 'second': 0, # Cronを実行する秒を設定する 'days': [1, 3, 5], # Cronを実行する月の日を設定する # 'week_day': [1, 3], # Cronを実行する週の曜日を設定する # 'weeks_of_month': [2], # Cronを実行する月の週を設定する 'repetition_type': 'monthly' # Monthly Cron用の繰り返しタイプをmonthlyに設定する }, 'job_meta': job_meta # Functionジョブメタデータを設定する }) # YEARLY CRON => which will be run on 0hrs 0min 0sec on 1st 2nd 3rd days of the 8th month of a year # Yearly Cronを作成する yearly_cron = job_scheduling.CRON.create({ 'cron_name': 'yearly_cron', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'Calendar', # Daily、Monthly、Yearly用のCronタイプをCalendarに設定する 'cron_detail': { 'hour': 0, # Cronを実行する時を設定する 'minute': 0, # Cronを実行する分を設定する 'second': 0, # Cronを実行する秒を設定する 'days': [1, 2, 3], # Cronを実行する月の日を設定する # 'week_day': [1, 3], # Cronを実行する週の曜日を設定する # 'weeks_of_month': [2], # Cronを実行する月の週を設定する 'months': [8], # Cronを実行する年の月を設定する 'repetition_type': 'yearly' # Yearly Cron用の繰り返しタイプをyearlyに設定する }, 'job_meta': job_meta # Functionジョブメタデータを設定する }) ``` **Cron式を使用して動的Cronを定義** ### Cron Expressionsを使用したDynamic Cronの定義 **Java** **Dynamic Cron Using Cron Expressions** ```java // EXPRESSION CRON => which will be run for on 0hrs 0min on every 1st day of the weeks in the first month of the year ZCJobScheduling jobScheduling = ZCJobScheduling.getInstance(); // ジョブスケジューリングインスタンスを取得する // Functionジョブのメタデータを生成する ZCJobMetaDetail jobMeta = ZCJobBuilder.functionJobBuilder() // Functionジョブビルダーを取得する .setJobConfig(2, 15 * 60 * 1000L) // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) .setJobpoolName("functions_job_pool") // 関数ジョブプールの名前を設定する(オプション)(JobpoolIdまたはJobpoolNameは必須) // .setJobpoolId(1234567890L) // 関数ジョブプールのIDを設定する(オプション)(JobpoolIdまたはJobpoolNameは必須) .setTargetName("target_function") // ターゲット関数の名前を設定する(オプション)(TargetNameまたはTargetIdは必須) // .setTargetId(1234567890L) // ターゲット関数のIDを設定する(オプション)(TargetNameまたはTargetIdは必須) .setParams(new JSONObject() { { put("arg1", "job"); put("arg2", "test"); } }) // ターゲット関数に渡すパラメータを設定する(オプション) .setJobName("job_name") // ジョブ名を設定する .build(); // ジョブメタデータをビルドする // Cron詳細を生成する ZCCronDetails expressionCronDetails = ZCCronBuilder.zcExpressionCronBuilder() // 式Cronビルダーを取得する .setCronStatus(true) // Cronを有効に設定する .setCronExpression("0 0 * 1 1") // UNIX Cron式を設定する .setCronName("expression_cron") // set cron name .setJobMeta(jobMeta) // ジョブメタデータを設定する .build(); // Cron詳細をビルドする // 式Cronを作成する ZCCronDetails expressionCron = jobScheduling.cron.createCron(expressionCronDetails); ``` **Node.js** **Dynamic Cron Using Cron Expressions** ```javascript // EXPRESSION CRON => which will be run for on 0hrs 0min on every 1st day of the weeks in the first month of the year const jobScheduling = app.jobScheduling(); // ジョブスケジューリングインスタンスを作成する // Functionジョブを作成する meta const jobMeta = { job_name: 'test_job', // ジョブの名前を設定する target_type: 'Function', // Function用のターゲットタイプをFunctionに設定する target_name: 'target_function', // ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) // target_id: '123467890', // ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) jobpool_name: 'test', // 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) // jobpool_id: '1234567890' // 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) job_config: { number_of_retries: 2, // リトライ回数を設定する retry_interval: 15 * 60 * 1000 + '' // リトライ間隔を設定する }, // ジョブ設定 - リトライ => 15分で2回リトライ(オプション) params: { arg1: 'test', arg2: 'job' }, // ターゲット関数に渡すパラメータを設定する(オプション) }; // 式Cronを作成する details const expressionCron = { cron_name: 'expression_cron', // Cronの名前を設定する(一意) cron_status: true, // Cronのステータスを有効に設定する cron_type: 'CronExpression', // Daily、Monthly、Yearly用のCronタイプをCalendarに設定する cron_expression: '0 0 * 1 1', // Cron式を設定する cron_detail: {}, // Cron詳細を設定する job_meta: jobMeta // Functionジョブメタデータを設定する }; // 式Cronを作成する const expressionCronDetails = await jobScheduling.CRON.createCron(expressionCron); ``` **Python** **Dynamic Cron Using Cron Expressions** ```python # CRON EXPRESSION => which will be run for on 0hrs 0min on every 1st day of the weeks in the first month of the year job_scheduling = app.job_scheduling() # ジョブスケジューリングインスタンスを作成する # Functionジョブメタデータを作成する job_meta = { 'job_name': 'test_job', # ジョブの名前を設定する 'target_type': 'Function', # Function用のターゲットタイプをFunctionに設定する 'target_name': 'target_function', # ターゲット関数の名前を設定する(オプション)(target_idまたはtarget_nameは必須) # 'target_id': '123467890', # ターゲット関数のIDを設定する(オプション)(target_idまたはtarget_nameは必須) 'jobpool_name': 'test', # 関数ジョブプールの名前を設定する(オプション)(jobpool_nameまたはjobpool_idは必須) # 'jobpool_id': '1234567890' # 関数ジョブプールのIDを設定する(オプション)(jobpool_nameまたはjobpool_idは必須) 'job_config': { 'number_of_retries': 2, # リトライ回数を設定する 'retry_interval': 15 * 60 * 1000 # リトライ間隔を設定する }, # ジョブ設定 - リトライ => 15分で2回リトライ(オプション) 'params': { 'arg1': 'test', 'arg2': 'job' } # ターゲット関数に渡すパラメータを設定する(オプション) } # 式Cronを作成する expression_cron = job_scheduling.CRON.create({ 'cron_name': 'expression_cron', # Cronの名前を設定する(一意) 'cron_status': True, # Cronのステータスを有効に設定する 'cron_type': 'CronExpression', # Daily、Monthly、Yearly用のCronタイプをCalendarに設定する 'cron_expression': '0 0 * 1 1', # Cron式を設定する 'cron_detail': {}, # Cron詳細を設定する 'job_meta': job_meta # Functionジョブメタデータを設定する }) ``` 5. 要件に応じて**コピーアイコン**を使用してコードをコピーし、ビジネスロジックに追加して要件に応じてコーディングします。 6. コードファイルに含まれるDynamic Cronの設定は、[プロジェクトをCatalystコンソールにデプロイ](https://docs.catalyst.zoho.com/ja/cli/v1/deploy-resources/deploy-options/)するとデプロイされ、コンソールで利用可能になります。 7. Dynamic Cronはランタイム中に作成され、コードで設定されたジョブは設定されたスケジュールに従ってランタイム中にJob Poolに送信されます。 ![catalyst_job_scheduling_dynamic_cron_prod_created_runtime](https://catalyst-docs-development.zohostratus.in/images/help/job-scheduling/catalyst_job_scheduling_dynamic_cron_prod_created_runtime.webp) > **注意:** 必要なDynamic Cronを作成するための各ランタイムのコードスニペットは、各ランタイムのSDKドキュメントでも確認できます: * [Java SDK](https://docs.catalyst.zoho.com/ja/sdk/java/v1/job-scheduling/overview/) * [Node.js SDK](https://docs.catalyst.zoho.com/ja/sdk/nodejs/v2/job-scheduling/overview/) * [Python SDK](https://docs.catalyst.zoho.com/ja/sdk/python/v1/job-scheduling/overview/)