スケジュール設定をする上でカレンダーの設定はほぼ必須です。
でも、プロセスを稼働する曜日はともかく、非稼働日を1つ1つ設定していくのはなかなか面倒です。
というわけで、カレンダー登録をサポートするプロセスを自作してみました。
実装したプロセス
Blue Prismの画面を操作して登録していく方法は取らず、DBに直接カレンダーに関連するデータを投入する手法を取ります。
処理の流れとしては、
- SQL Serverに接続してコネクションを確立
- カレンダー登録用のQueryにパラメータを代入
- カレンダー登録用Queryを実行
- 非稼働日リストの日付分、非稼働日を登録
となります。
例として、「テストカレンダー」というカレンダーを以下内容で登録していきます。
稼働週 | 月~金 |
祝日 | 日本の祝日を適用 |
非稼働日 | 2020/05/30, 2020/05/31 |
事前準備
まず、SQL Serverの接続情報を設定します。
接続情報は、BluePrismのログイン画面→構成から確認できます。
カレンダーを登録する環境のDB接続情報を控えておきましょう。
今回はWindows認証なので「データベースサーバー」「データベース名」のみ控えておけば良いですが、SQL Server認証の場合は「ユーザー名」「パスワード」も控えておきましょう。
控えた接続先情報をプロセスの各変数にパラメータをセットします。
変数名 | パラメータ |
Server | 接続先のホスト名 |
Database | 接続先のデータベースの名前 |
User | 接続先のユーザー名 |
Password | 接続先のパスワード |
次に、カレンダーの各種情報を変数にセットします。
変数名 | パラメータ |
carendarname | カレンダーの名前 |
description | カレンダーの説明 |
publicholidaygroupid | 日本の祝日を適用する場合は 6 を設定。 祝日を設定しない場合はNULL |
workingweek | 稼働週(稼働する曜日)を設定 ※後ほど説明 |
workingweekの設定方法がちょっと複雑です。
DBのBPACalendarテーブルのworkingweekが稼働週に該当するのですが、ここには数値が入っています。
各曜日には数値が割り当てられています。(2進数)
複数の曜日を設定したい場合は合算値が入ります。
例えば、月曜日と木曜日に稼働させたければ、
2 + 16 = 18 が入るというわけです。
今回は試しに日、水、金(1 + 8 + 32 = 41)に稼働させるものとします。
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 4 | 8 | 16 | 32 | 64 |
今回のカレンダー登録情報は以下の図の通りとします。
コレクション:非稼働日リストには、非稼働日をMM/dd形式で入れておきます。
対象年は変数:対象年にセットしておきます。
実行してみる
実行します。結果は以下の通り。
稼働週は日、水、金となっており、日本の祝日も適用されており、非稼働日も正しく反映されています。
まとめ
後のバージョンでカレンダーの非稼働日一括投入が機能拡張されるかもしれませんが、それまでは各自工夫して手間を省いていくしかありません。
今回使ったプロセスはGitHubにアップしていますので、自由に使って下さい。
BPA プロセス – カレンダー投入
https://github.com/falcslab/blueprism