No.19 「休み明けの出社日はいつだ?」
2017.08.10 Progress Corticon
本エントリーは株式会社アシスト様が寄稿したエントリー(https://www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech19.html)を転載したものとなります。
残暑お見舞い、申し上げます。
皆さんは、もうCorticonの世界を体験されましたか?
このコラムでは、今までにいくつかのサンプルルールをご紹介してきました。
これらのサンプルを実際に試して、ルールを作っていただけると嬉しいです。
まだCorticonを触ったことがない方は、是非、 こちら から無償評価版をダウンロードしてください。
インストール手順はとても簡単です。ダウンロードしたファイルを解凍後、インストーラを実行するだけです。
チュートリアルも同梱していますので、まずは、そのチュートリアルに沿って実際に操作してみてください。
そして、このブログでこれまでに紹介したサンプル、これからも紹介していくサンプルを、是非皆さんのお手元でも作ってみてください。
一部のギークな著者のコラムではCorticonの奥深さを味わえるサンプルを提供していますし、もう少しノーマルな著者のコラムではCorticonの簡単さを楽しんでいただくサンプルを提供しています。
ぜひ、いろいろなサンプルを試して楽しんでくださいね。
さて、今回のお題は、「休み明けの出社日はいつだ?」です。
皆さんの夏季休暇や冬期休暇はいつでしょうか?一斉の全社休業でしょうか?
それとも各人が各人のタイミングで休暇を取得するのでしょうか?
アシストの夏季休暇は、後者のスタイルです。
じつは、本日のチームミーティングの際に、同僚のツラゴノフスキー氏が長めの夏休みをとることが分かりました。
そこで、次回のミーティングを設定するために、彼の次の出社日を知る必要があります。
せっかくなので、Corticonを使ってツラゴノフスキー氏の夏休み明け出社日を算出することにしました。
語彙はこんなかんじです。
語彙
ツラゴノフスキー氏は、8月の休みの予定をつぎのように立てました。
土日、祝日を除く業務日で休暇を取得する日を指定します。
休暇前出社日は2017-08-04です。
入力データ
2017年の国民の祝日のリストはCorticon内で生成することにします。
もちろん、外から祝日データとして受け取ることもできます。
出社日の次の日が、土日 / 国民の祝日 / その他の各種休暇 いずれかであるかどうかを判定します。
休みが続くこともあるため、次の日が休みの間はこの処理を繰り返す必要があります。
Corticonで、この繰り返しをどのように処理しましょうか。
ルールフロー
今回は、ルールフロー内のサブフローの単位でループ(繰り返し)処理を行うことにしました(図の青〇)。
ループ処理の中では次のことを行います。
・出社日の翌日が土曜日?
・出社日の翌日が日曜日?
・出社日の翌日が祝日?
・出社日の翌日が申請した休暇日?
つまり、出社日の翌日が休日でもなく祝日でもなく休暇日でもなければ、次回の出社日となるわけです。
出社日の翌日を求めるために"次の出社日に+1する"ルールシートがあります。
このループの指定は、ルールフロー上のルールシート、ルールフロー、サブフローに対して設定可能です。
それぞれのルールシートを見ていきましょう。
ルールシート:国民の祝日エンティティ作成
ここでは、2017年の祝日エンティティを作成しつつ、出社日を次の出社日に移送しています。
次に、ループの指定をしたサブルールフロー「土日・祝日・個人休暇チェック」内にある
3つのルールシートをみてみましょう。
ルールシート:土日チェック
ここでは、Corticonがもつ演算子 dayOfWeek を使用して土日判定をしています。
ルールシート:国民の祝日チェック
ここでは、ルールフロー内の最初で作成した国民の祝日データを使っています。
ルールシート:個人の休暇チェック
これら3つのルールシートを1つのサブフローとしてまとめ、この単位でループが実行されます。ルールフロー上で指定するループが終了する条件は、ルールシートのフィルタで設定します。無限ループを避けるための安全機構として、デフォルトでは最大100回までですが、プロパティの設定で変更可能です。
各ルールシートのフィルタ条件を満たさない場合、サブフロー「土日・祝日・個人休暇チェック」を終了して、
次のルールシートに処理が移ります。
ルールシート:次の出社日に+1する
ここで、知りたかった「次の出社日」が求められます。
最後に、今回は結果に国民の祝日リストを返す必要はないので、不要な国民の祝日エンティティを削除します。
ルールシート:国民の祝日エンティティ削除
上のルールフローをテスト実行します。
テストシート
ということで、
ツラゴノフスキー氏の次の出社日がわかりましたので、次回ミーティングは、8月21日と決定しました!!
なお、上記出力結果には、fire(データを判定) したルールシート名とルール列番号を
ルールメッセージに表示しています。
ルールメッセージに、この情報を付加することで実行したルールをトレースしやすくなります。
この設定方法については、弊社 サポートサイト から、以下のFAQにてご確認ください。
FAQ NO#23142
「ルール実行時に、ルールメッセージに実行したルールシート名とルール番号を表示する方法について」
弊社 サポートサイト には、このほかにも、有益なFAQや技術資料等々がございますので、是非活用してください。
著者紹介
株式会社アシスト 情報基盤技術統括部 プログレス推進部 |