コンテンツにスキップ

スケジュールジョブ(Scheduled Jobs)

service-scheduleはスケジュールに従って自動実行されるすべてのジョブ(cronジョブ)を管理します。バッチ処理・リマインダー送信・データ同期など、ユーザーが手動でトリガーしなくても自動的に処理されます。


ジョブ実行頻度説明
支払リマインダー送信毎日期日N日前にサプライヤーへメール通知(payment_confirm_day_advance設定値)
月次支払締め月1回月次支払データを集計してレポートを生成
定期支払実行スケジュール通り期日到来した支払を実行(is_regular_fixed_paymentがONの場合)
ジョブ実行頻度説明
契約期限アラート毎日残30日・7日の契約について担当者へ通知
定期的な反社確認週次/月次取引中のサプライヤーを反社DBで再確認
期限切れアカウントの無効化毎日end_dateを過ぎたユーザーを自動的にロック
ジョブ実行頻度説明
Subscription注文の自動生成設定スケジュール通り定期購入商品の注文を自動作成
カタログ価格の同期トリガー時MallSupplierが価格変更したときに反映
ジョブ実行頻度説明
OpenSearch同期リアルタイム/定期PostgreSQLからOpenSearchへデータ同期
一時ファイルのクリーンアップ週次S3上の参照されていない一時ファイルを削除
マスタデータ期限アラート毎日組織・サプライヤー・契約等のend_dateが近い場合に通知

スケジュールのアーキテクチャ

Section titled “スケジュールのアーキテクチャ”
flowchart TD
    CRON["Cronトリガー\n(service-schedule)"] --> JOB

    subgraph JOB["実行対象ジョブの特定"]
        LOOKUP["現在時刻に該当する\nジョブリストを照会"]
    end

    JOB --> EXEC["ジョブを実行\n対象サービスのAPIを呼び出し"]
    EXEC --> MAIL["service-mail\nリマインダーメール送信"]
    EXEC --> NOTIF["service-notification\nアプリ内通知送信"]
    EXEC --> BUYER_ORDER["service-buyer-order\n自動発注作成"]
    EXEC --> LOG["実行結果を記録\n監査ログへ"]

ProviderおよびBuyer Adminはスケジュールの状況をScheduleモジュールで確認・管理できます。

Providerポータル → Schedule → ジョブ一覧
操作説明
ジョブ一覧の表示設定済みの全ジョブを確認
実行履歴の確認過去の実行結果(成功/失敗)を確認
手動実行スケジュールを待たずに即時実行
一時停止ジョブを一時的に無効化

Buyerポータル(Scheduleモジュール)

Section titled “Buyerポータル(Scheduleモジュール)”
Buyerポータル → Schedule

Buyerは自社に関連するスケジュールを確認できます。

  • 支払締め日のスケジュール
  • 支払リマインダーのスケジュール
  • Subscriptionの自動発注スケジュール

実行スケジュールはcron式(Unix cron準拠)で設定されます。

cron式の例意味
0 9 * * 1-5平日(月〜金)9:00
0 0 1 * *毎月1日 00:00
0 8 * * *毎日 8:00
*/30 * * * *30分ごと

エラーハンドリングとリトライ

Section titled “エラーハンドリングとリトライ”
flowchart TD
    JOB_RUN["ジョブ実行"] --> SUCCESS{"成功?"}
    SUCCESS -->|"はい"| LOG_OK["成功ログを記録\nlast_run_timeを更新"]
    SUCCESS -->|"いいえ"| RETRY{"リトライ\n(最大3回)"}
    RETRY -->|"残りあり"| WAIT["N分後に再試行"]
    WAIT --> JOB_RUN
    RETRY -->|"上限到達"| ALERT["Provider Adminへアラート送信\nエラーログを記録"]

本番環境ではservice-scheduleはKubernetes CronJobとして動作します。

環境設定
productionKubernetes CronJob(東京リージョン)
production-osakaKubernetes CronJob(大阪リージョン、DR)
localhostSpring Scheduler(サービス内部)

  • 冪等性(Idempotent): 各ジョブは冪等に設計 — 再実行しても重複データは生成されません。
  • ジョブの分離: 会社グループごとに独立して処理 — あるグループのエラーが他のグループに影響しません。
  • タイムゾーン: すべてのスケジュールは**JST(日本標準時、UTC+9)**で動作します。
  • 実行結果の記録: 成功・失敗にかかわらず、実行のたびにタイムスタンプとエラー詳細が記録されます。
  • Subscription注文のスキップ: Subscriptionジョブ実行時に対象商品が一時停止中の場合、その商品はスキップされ警告が記録されます。

画面PortalURL (Staging)
スケジュール管理Provider/eProcurement/Schedule
実行履歴Provider/eProcurement/Schedule/History
Buyer向けスケジュールBuyer/eProcurement/Schedule