BizRobo!BasicでN営業日に実行させる処理


BizRobo! Basicをお勉強中のものです。どうぞよろしくお願いいたします。

はじめに

人事部や経理部などでは、業務上よくN営業日に処理を行うことが多々あると思います。以前投稿した「Bizrobo!Basicで祝日時は処理をしないようにする処理」から派生して、今回は「N営業日に処理を実行させる」ロボットを作成してみました。

前提

前提として、「Bizrobo!Basicで祝日時は処理をしないようにする処理」のロボットをベースとしています。そのため、以下項目についても、今回も同様となりますので、ここでの記載は割愛いたします。
祝日または企業指定休日判定
使用したDesign Studioのバージョン
ロボット構成

ロボットで使用するタイプ

ロボットで使用するタイプは以下になります。
HolidayInfo.type
スニペット「祝日判定」で使用します。

WorkDateInfo.type
属性[ in_WorkRunDate ]は、N営業日のNの数字を入力しておきます。(例:12月の第14営業日)

ロボット処理

  1. ロボット構成を元に、「N営業日判定」処理グループと、「実行判定」による処理有無を追加します。

2.「N営業日判定」処理グループを展開します。

 2-1. 無限ループであるRepeatを開始する
 2-2. N営業日判定ではタイプWorkDateInfoの属性[ in_WorkRunDate ]と[ DateCounter ]が同じ
  かどうか判定する
  同じ場合: Repeatを終了し、2-7.へ進む
  同じでない場合: 後続処理へ進む
 2-3. タイプWorkDateInfoの属性[ Counter ]にRepeatのiterationを格納する
 2-4. AssignM月1日設定ではタイプWorkDateInfoの属性[ out_WorkDate ]へシステム日時から
  「yyyy-MM-dd 00:00:00.000」形式で設定する。[dd]の部分は属性[ Counter ]を設定する。
  (例:属性[ Counter=1 ]の場合、属性[ out_WorkDate=2021-12-01 00:00:00.000 ]となる)
   ※詳細は、下記「Tips」をご覧ください。
 2-5. 属性[ out_Workdate ]が土日であるかどうか判定する
   土日である場合: Repeatへ戻り繰り返す
   土日ではない場合: 後続処理へ進む
 2-6. 属性[ out_Workdate ]が祝日であるか判定する
   祝日である場合: Repeatへ戻り繰り返す
   祝日でない場合: 後続処理で属性[ DateCounter ]を1インクリメントする
 2-7. 本日がN営業日であるかどうか判定する
   本日がN営業日である場合: 属性[ WorkDateFlg ]をONしN営業日をログ出力
   本日がN営業日でない場合: 対象外終了ログ出力

3.次のブランチの「実行判定」では、N営業日フラグがONまたはOFFであるか判定します。
 実行有無フラグがONの場合: 後続の処理を進める
 実行有無フラグがOFFの場合: 後続の処理はスキップする

ロボット実行結果

  1. 現在日時2021-12-20が第5営業日であるかテストします。
     ※タイプ[ WorkDateInfo ]の属性[ in_WorkRunDate ]を「5」としています。

  2. 現在日時2021-12-20が第14営業日であるかテストします。
     ※タイプ[ WorkDateInfo ]の属性[ in_WorkRunDate ]を「14」としています。

Tips

Repeat - Next

RepeatとNextの間は無限に繰り返されるため、その間である条件でRepeatを終了する値判定を組み込むことが必要です。(例:赤枠のRepeatとNextは無限ループとなり青枠の条件判定でRepeatを終了となります)

次のように青枠の条件判定をしています。

Assign M月1日設定

このステップでは、システム日時から「yyyy-MM-dd 00:00:00.000」形式でDate型の属性[ out_WorkDate ]に日付を作成します。次のように、変数の割当では、「コンバータ」で値に2つ設定を行っています。

  1. タイプ[ WorkDayInfo ]の属性[ Counter ]を取得する

  2. 属性[ Counter ]:INPUTの桁数による分岐
     桁数が2以下の場合: 前に0を追加し「2021-12-0d 00:00:00.000」とする
     桁数が2以下でない場合: [dd]に挿入して「2021-12-dd 00:00:00.000」とする
     構文: 条件式 ? 真の場合 : 偽の場合 

補足

  1. 値の設定方法は、「値」、「変数」、「エクスプレッション」、「コンバータ」の4つがあります。
  2. 「コンバータ」で変数を取得すると、その後の「エクスプレッション」では「INPUT」と記述すると取得した値として扱うことができます。

おわりに

ループのアクションには以下複数用意されていますが、使い方がよくわかっていなかったとき、ループの終わりがよく理解できず、ループを抜けた後の処理に四苦八苦しました。ループを抜けた後の処理は、ループの前でブランチを切っておけば良いことがわかってからは、ループの扱いが怖くなくなりました。一歩一歩前進ができていることに、自分に万歳です!!

つたない文章を最後まで読みいただきまして、ありがとうございました。