HOME    BRMSブログ  No.19 「休み明けの出社日はいつだ?」

BRMS徹底活用ブログ

No.19 「休み明けの出社日はいつだ?」

2017.08.10 Progress Corticon

本エントリーは株式会社アシスト様が寄稿したエントリー(https://www.ashisuto.co.jp/product/category/brms/progress_corticon/column/detail/brmstech19.html)を転載したものとなります。

No.19 「休み明けの出社日はいつだ?」 (2017年8月10日)

残暑お見舞い、申し上げます。

皆さんは、もうCorticonの世界を体験されましたか?
このコラムでは、今までにいくつかのサンプルルールをご紹介してきました。
これらのサンプルを実際に試して、ルールを作っていただけると嬉しいです。
まだCorticonを触ったことがない方は、是非、 こちら から無償評価版をダウンロードしてください。
インストール手順はとても簡単です。ダウンロードしたファイルを解凍後、インストーラを実行するだけです。
チュートリアルも同梱していますので、まずは、そのチュートリアルに沿って実際に操作してみてください。

そして、このブログでこれまでに紹介したサンプル、これからも紹介していくサンプルを、是非皆さんのお手元でも作ってみてください。
一部のギークな著者のコラムではCorticonの奥深さを味わえるサンプルを提供していますし、もう少しノーマルな著者のコラムではCorticonの簡単さを楽しんでいただくサンプルを提供しています。
ぜひ、いろいろなサンプルを試して楽しんでくださいね。

さて、今回のお題は、「休み明けの出社日はいつだ?」です。

皆さんの夏季休暇や冬期休暇はいつでしょうか?一斉の全社休業でしょうか?
それとも各人が各人のタイミングで休暇を取得するのでしょうか?
アシストの夏季休暇は、後者のスタイルです。

じつは、本日のチームミーティングの際に、同僚のツラゴノフスキー氏が長めの夏休みをとることが分かりました。
そこで、次回のミーティングを設定するために、彼の次の出社日を知る必要があります。
せっかくなので、Corticonを使ってツラゴノフスキー氏の夏休み明け出社日を算出することにしました。

語彙はこんなかんじです。

語彙

画像1

ツラゴノフスキー氏は、8月の休みの予定をつぎのように立てました。
土日、祝日を除く業務日で休暇を取得する日を指定します。
休暇前出社日は2017-08-04です。

入力データ

画像2

2017年の国民の祝日のリストはCorticon内で生成することにします。
もちろん、外から祝日データとして受け取ることもできます。
出社日の次の日が、土日 / 国民の祝日 / その他の各種休暇 いずれかであるかどうかを判定します。
休みが続くこともあるため、次の日が休みの間はこの処理を繰り返す必要があります。
Corticonで、この繰り返しをどのように処理しましょうか。

ルールフロー

画像3

今回は、ルールフロー内のサブフローの単位でループ(繰り返し)処理を行うことにしました(図の青〇)。
ループ処理の中では次のことを行います。
・出社日の翌日が土曜日?
・出社日の翌日が日曜日?
・出社日の翌日が祝日?
・出社日の翌日が申請した休暇日?
つまり、出社日の翌日が休日でもなく祝日でもなく休暇日でもなければ、次回の出社日となるわけです。
出社日の翌日を求めるために"次の出社日に+1する"ルールシートがあります。

このループの指定は、ルールフロー上のルールシート、ルールフロー、サブフローに対して設定可能です。

それぞれのルールシートを見ていきましょう。

ルールシート:国民の祝日エンティティ作成

画像4

ここでは、2017年の祝日エンティティを作成しつつ、出社日を次の出社日に移送しています。

次に、ループの指定をしたサブルールフロー「土日・祝日・個人休暇チェック」内にある
3つのルールシートをみてみましょう。

ルールシート:土日チェック

画像5

ここでは、Corticonがもつ演算子 dayOfWeek を使用して土日判定をしています。

ルールシート:国民の祝日チェック

画像6

ここでは、ルールフロー内の最初で作成した国民の祝日データを使っています。

ルールシート:個人の休暇チェック

画像7

これら3つのルールシートを1つのサブフローとしてまとめ、この単位でループが実行されます。ルールフロー上で指定するループが終了する条件は、ルールシートのフィルタで設定します。無限ループを避けるための安全機構として、デフォルトでは最大100回までですが、プロパティの設定で変更可能です。

各ルールシートのフィルタ条件を満たさない場合、サブフロー「土日・祝日・個人休暇チェック」を終了して、
次のルールシートに処理が移ります。

ルールシート:次の出社日に+1する

画像8

ここで、知りたかった「次の出社日」が求められます。

最後に、今回は結果に国民の祝日リストを返す必要はないので、不要な国民の祝日エンティティを削除します。

ルールシート:国民の祝日エンティティ削除

画像9

上のルールフローをテスト実行します。

テストシート

画像10

ということで、
ツラゴノフスキー氏の次の出社日がわかりましたので、次回ミーティングは、8月21日と決定しました!!

なお、上記出力結果には、fire(データを判定) したルールシート名とルール列番号を
ルールメッセージに表示しています。
ルールメッセージに、この情報を付加することで実行したルールをトレースしやすくなります。
この設定方法については、弊社 サポートサイト から、以下のFAQにてご確認ください。
FAQ NO#23142
「ルール実行時に、ルールメッセージに実行したルールシート名とルール番号を表示する方法について」

弊社 サポートサイト には、このほかにも、有益なFAQや技術資料等々がございますので、是非活用してください。

著者紹介

毛井さん

株式会社アシスト 情報基盤技術統括部 プログレス推進部

株式会社アシスト入社以来、5インチFDを使うソフトウェアやメイン
フレームの簡易開発言語の時代から現在のProgress Corticonまで、
製品の日本語化や技術サポート、研修などを行う。