自動処理(バッチ処理)の実行対象から土日祝日や会社指定の休日を除外する方法・設定手順
自動処理で土日祝日や会社独自の休日をスキップ・除外させる設定方法
現在の「楽楽販売」の仕様では、自動処理の「タイマー起動スケジュール(一括実行バッチ)」の設定において、「祝日をスキップする」や「特定の休日を除外する」といった日付連動のスキップ機能を直接選択することはできません。
タイマー予約は指定した時刻(毎日・毎週など)に、カレンダーの曜日や祝日に関係なく機械的に実行される仕組みのためです。
そのため、土日祝日や会社独自の休日を避けてバッチ処理を動かしたい場合は、日付データを格納した「営業日(または休業日)マスタ」と、自動処理の基本機能である「レコード検索パーツ」を組み合わせることで、休日には本来の業務処理をスキップさせる制御が可能になります。
本記事では、運用方法やシステム負荷に応じて選べる「2つのアプローチ(構築パターン)」を分かりやすく解説します。
システム要件に合わせて選べる「2つの構築パターン」
レコード検索パーツの「検索結果がヒットしたか(YES:下)」「ヒットしなかったか(NO:右)」のルート分岐だけで、完璧に休日をスキップすることができます。
パターンA:【推奨・シンプル】 業務データベースの自動処理内に直接判定を差し込む
現在すでに稼働している業務データベース(売上データベース、見積もりデータベース、請求データベースなど)のバッチ用自動処理の先頭に、営業日を確認するパーツを追加するだけの一番簡単な方法です。
(※対象となるレコード数が少なく、休日に無駄な起動負荷がそれほど懸念されない場合に適しています)
パターンB:【大量データ向け】 営業日マスタ側でタイマーを起動して負荷を抑える
業務データベース側の対象レコード件数が数百〜数千件と多い場合、パターンAでは休業日であっても件数分(数千回)自動処理が無駄に同時起動してしまいます。マスタ側から1日1回だけ起動させることで、休日のシステム負荷を完全にゼロ(起動0件)に抑える、インフラに最も優しい設計です。
パターンA:業務データベースの自動処理内で直接判定する手順
ステップ①:日付だけを登録する「マスタデータベース」を準備する
判定の基準となる日付データのみを格納するシンプルなデータベースを作成します。
- データベース名:営業日マスタ(または休業日マスタ)
- 作成する項目:
- 「日付」項目:(項目タイプ:日時、入力タイプ:年月日)※この項目を「キー項目(重複禁止)」に設定します。
【マスタへの登録ルール】
・「営業日マスタ」として運用する場合: 土日祝日や会社独自の休日を除いた、システムを稼働させたい「営業日の日付レコードのみ」を1年分登録します。
・「休業日マスタ」として運用する場合: 逆に、土日祝日や会社指定の「休日の日付レコードのみ」をマスタに登録します。
【登録の手間を減らすワンポイント】
全日程(365日分)をマスタに登録・管理するのが大変な場合は、土日祝日や会社指定の「休業日の日付レコードのみ」をマスタデータベースに登録する運用方法(休業日マスタ方式)がおすすめです。この場合は、後続の手順におけるルート分岐にて、「現在の日付がマスタに存在しない(NO:右方向)場合に、本来の業務処理を実行する」という逆の繋ぎ方をすることで、全く同様の休日スキップ運用を最小限のデータ量で実現できます。
ステップ②:既存の自動処理の先頭(No.1パーツ)に「レコード検索パーツ」を追加する
既存の自動処理の先頭に、本日がマスタに存在するかを調べる検索パーツを挿入します。
【レコード検索パーツの詳細設定】
- 検索対象:手順①で作成した「マスタデータベース」
- 検索条件:マスタデータベースの「日付」 が (現在日時※本日0時など) 「と等しい」
ステップ③:検索結果のルート分岐(YES/NO)のみで業務処理へ繋げる
検索によってレコードが「見つかったか(YES:下方向)」「見つからなかったか(NO:右方向)」だけで判断するため、条件分岐パーツは不要です。
- 「営業日マスタ」で作成した場合:
- 【YES(下方向ルート)】: 本日が「営業日」としてヒットした状態です。この下方向ルートの先に、もともと作っていた「本来の業務処理(メール送信やレコード更新パーツなど)」を繋げてください。
- 【NO(右方向ルート)】: 本日が「休日(マスタに未登録の日)」の状態です。右方向ルートには、後続パーツを何も配置しない(または「処理キャンセルパーツ」を置く)ことで、処理を完全にスキップさせます。
- 「休業日マスタ」で作成した場合:
- 【NO(右方向ルート)】: 本日が「営業日(休日マスタにヒットしなかった日)」の状態です。右方向ルートの先に、「本来の業務処理パーツ」を繋げます。
- 【YES(下方向ルート)】: 本日が「休日」としてヒットした状態です。下方向ルートには後続パーツを配置しません。
パターンB:マスタデータベース側で起動し、システム負荷を極小化する手順(補足)
業務データベース側に対象データが数千件ある場合、休日であっても数千回起動してマスタを検索する処理が走ってしまいます。休日に一切の無駄なバッチ実行をさせたくない場合は、以下の設定を行ってください。
ステップ①:マスタデータベース側に「1件のみを抽出する絞り込み設定」を作成する
自動処理(タイマー起動)は、対象の絞り込み条件に合致したレコードの「件数分」ループ起動します。マスタ側を「1日1回だけ」安全に起動させる引き金(トリガー)とするため、あらかじめマスタデータベース側に「常に特定の1件のレコードだけをピンポイントで抽出する絞り込み設定」を作成します。
- 「営業日マスタ」のデータベース設定画面から「絞り込み設定」を開き、新規作成します。
- 絞り込み名に「タイマー起動用(1件抽出)」などと設定します。
- 条件設定にて、「ID」 が (直接指定) 「1」 「と等しい」 などのように、マスタデータベースに確実に存在する特定のレコード1件のみを抽出する条件を指定して確定します。
ステップ②:マスタデータベース側でタイマー一括自動処理を動かし、その中に本来の業務処理を組み込む
タイマー起動スケジュールは、この「営業日マスタ」に作成した自動処理に対して、手順①の「1件抽出用絞り込み」を対象にセットします。
【自動処理のパーツ構成イメージ】
- パーツNo.1 【本日の判定(レコード検索パーツ)】:
パターンAと同様に、本日が営業日マスタに登録されているかを検索・確認します。 - YES(下方向:本日が営業日のルート)の先の処理:
このYESルートの配下に、本来業務データベースの対象レコード(売上データベース等)に対して実行したかった処理パーツ(他データベースのレコード更新パーツやメール送信パーツなど)を直接配置します。
※本日が「休日」であった場合、最初のパーツNo.1の時点で右方向(処理終了)に流れるため、後続の本来やりたかった業務処理は1回も起動せず、システム負荷を極限まで削減することができます。
関連マニュアル
詳細な仕様の違いやスケジュール設定については、下記記事をご確認ください。
自動処理のタイマー起動(一括実行)に関するマニュアル
指定した日時に処理を自動実行させるためのスケジュール設定や、実行順序、制限ルールについて詳しく記載されています。
自動処理設定:一括実行(タイマー起動)
条件分岐パーツとレコード検索パーツの違い
自動処理を設計する際、条件分岐パーツとレコード検索パーツをどのように使い分けるべきか、その処理特性と設計基準について紹介しています。
条件分岐パーツとレコード検索パーツの違い
お問い合わせフォームよりご要望をお寄せください。
「楽楽販売」はお客様から頂戴したご意見・ご要望をもとに、
よりよく、寄り添う 販売管理クラウドを目指してまいります。
現在の仕様ではご希望の機能に対応しておりませんが、
お客様からの貴重なご意見として真摯に受け止め、今後の改善に役立ててまいります。
(記事ID:2949)
「自動処理設定」の関連記事一覧
こちらの記事もあわせてご確認ください。
- 一括自動処理などの実行結果画面の表示項目をカスタマイズし、取引先名などを表示させることは可能か
- 自動処理のメール送信パーツで「FROM」に指定したアドレスが反映されない場合の対処方法
- 自動処理のレコード検索でヒットした複数レコードを一括で更新・削除する方法
- 複数の明細項目をヘッダーの1項目内に「、」などの区切り文字でまとめて格納・結合する方法・設定手順
- 自動処理で送信したメールの返信をメールボックスオプションで受信したい
- マスタDBの変更を連携先DBの全レコードへ一括反映・上書きする方法
- メール送信パーツの「From」にDB項目のEメールアドレスを指定することは可能か
- DB内のレコード件数が0件になった場合にアラートメールを送信することは可能か
- レコード検索パーツで複数ヒットした中から特定の1レコードに絞り込む方法