Red Hat Business Optimizer 向け従業員勤務表スターターアプリケーションの Red Hat OpenShift Container Platform へのデプロイメント
概要
前書き
ビジネスルールの作成者は、Red Hat Decision Manager ディストリビューションに含まれる employee-rostering スタータープロジェクトを OpenShift に簡単にデプロイして、Red Hat Business Optimizer 機能をテストして操作できます。
前提条件
-
employee-rosteringスターターアプリケーションが含まれる Red Hat Decision Manager アドオンディストリビューションをダウンロードしている。 - デプロイした OpenShift 環境にアクセスできる。詳細は、使用する OpenShift 製品のドキュメンテーションを参照してください。
第1章 OpenShift への従業員勤務表デモのインストールおよび実行
Red Hat Business Optimizer Employee Rostering スターターアプリケーションを OpenShift インスタンスにデプロイできます。
デプロイメントファイルの準備
-
アドオンディストリビューション (
rhdm-7.0.0-add-ons.zip) を展開します。 アドオンアーカイブから展開した employee-rostering zip ファイルを展開します。
注記employee-rostering zip ファイルを展開すると、
optashift-employee-rostering-7.5.0.Final-redhat-4ディレクトリーが作成されます。このディレクトリーは、後続の手順でベースフォルダーになります。ファイルおよびディレクトリーの名前で使用されるバージョン番号は、本書で使用するバージョンよりも新しい場合があります。
このアプリケーションは、以下のいずれかの方法で OpenShift に簡単にデプロイできます。
- S2I (Source to Image) テンプレートを使用。このテンプレートは、Git リポジトリーからアプリケーションのソースをプルし、デプロイメント時にビルドします。
- ディストリビューションに提供されるビルド前バイナリーアプリケーションアーカイブを使用。この場合、テンプレートは環境を準備しますが、アプリケーションは再ビルドしません。
S2I アプローチには、バイナリーデプロイメントよりもはるかに多くのリソースが必要です。OpenShift 環境で使用可能なメモリーが 2GB よりも少ない場合 (たとえば OpenShift Online Starter 階層を使用する場合) は、バイナリーデプロイメントアプローチを選択する必要があります。
1.1. S2I (Source to Image) テンプレートを使用したデプロイメント
手順
- OpenShift web コンソールにログインし、右上の Import YAML/JSON をクリックします。
- Add to Project ドロップダウンメニューで追加するプロジェクトを選択するか、Create Project を選択して新たに作成します。プロジェクトを新たに作成する場合は、プロジェクト名、表示名、および説明を入力します。
-
Browse ボタンをクリックして、
optashift-employee-rostering-template.yamlファイルに移動します。optashift-employee-rostering-7.5.0.Final-redhat-4ディレクトリーから、sources > openshift > templates の順にクリックすると、このファイルが見つかります。 Create をクリックします。
図1.1 テンプレートのアップロードウィンドウ

Add Template ダイアログボックスで Continue をクリックして、デフォルト設定を許可します。
図1.2 テンプレートの追加ウィンドウ

Import YAML/JSON ダイアログボックスで、Create をクリックして、デフォルト設定を使用します。
図1.3 テンプレートの設定ウィンドウ

- Success ダイアログボックスで、Close をクリックします。
ビルドとデプロイメントが完了するのを待ちます。これには数分かかる場合があります。デプロイメントが完了したら、右上の、陰影付きバーの上にあるリンクをクリックしてアプリケーションを開きます。
図1.4 デプロイメントの完了と、作成されたリンク
注記リンクをクリックしても web アプリが開かない場合は、ブラウザーページをハードリフレッシュします。
1.2. ビルド前バイナリーを使用したデプロイメント
手順
バイナリーデプロイメントの準備をします。
注記バイナリーデプロイメントには、oc コマンドラインツールを使用する必要があります。インストール手順については OpenShift ドキュメンテーションを参照してください。
-
optashift-employee-rostering-7.5.0.Final-redhat-4ディストリビューションディレクトリーから、binariesディレクトリーを開きます。 -
optashift-employee-rostering-webapp-7.5.0.Final-redhat-4.warをsourcesディレクトリーにコピーします。 -
ファイルの名前を
ROOT.warに変更します。この名前は、アプリケーションサーバーが、サーバーのルートコンテキストにファイルをデプロイするのに使用します。
-
-
コマンドラインで、
sourcesディレクトリーに移動します。 以下のコマンドを使用してプロジェクトを作成します。
oc new-project optashift-demo --display-name="Employee Rostering Demo"
注記または、既存プロジェクトを使用できます。この手順の
optashift-demoの部分を、使用するプロジェクト名に変更します。ビルドおよびデプロイメント設定を作成します。
optashift-employee-rostering-template-binary.yamlテンプレートファイルを使用して、OpenShift 設定 (ブラウザーにアクセスできるように、アプリケーションを公開するためのルートなど) を指定します。oc process -f openshift/templates/optashift-employee-rostering-template-binary.yaml -n optashift-demo | oc create -f - -n optashift-demo
バイナリーファイルをアップロードして、デプロイメントを開始します。
oc start-build employee-rostering --from-file=ROOT.war
OpenShift web UI を使用して、デプロイしたアプリケーションの詳細を表示します。Routes セクションのリンクをクリックして、スターターアプリケーションを開きます。
図1.5 デプロイした Employee Rostering スターターアプリケーションを使用する OpenShift web コンソール

第2章 従業員勤務表スターターアプリケーションの概要
従業員勤務表スターターアプリケーションは、組織内のさまざまな場所に従業員を割り当てます。たとえば、アプリケーションを使用して、病院での看護師のシフト、レストランでの従業員のシフト、作業者の組み立てラインのシフトを割り当てます。
従業員勤務表を最適なものにするには、多くの変数を考慮する必要があります。たとえば、作業場所が異なれば、求められるスキルが異なります。また、従業員の中には、特定の時間帯に勤務できない場合や、特定の時間帯への勤務を希望する場合があります。アプリケーションウィンドウの上部にあるタブを使用して、これらの変数に指定できます。
現行リリースの従業員勤務表スターターアプリケーションでは、事前に定義した日数で決められた分のシフトを入力します。日数またはシフト数を変更することはできません。したがって、プロダクションタスクにこのアプリケーションを使用することはできません。ただし、システムにスキル、スポット、または従業員の値を入力したあとも、その値を更新することはできます。
図2.1 従業員勤務表のツールバー

2.1. 従業員勤務表に関するソース情報の入力
テナント
アプリケーションウィンドウの右上にある TENANT フィールドで、事前に定義したテナントから 1 つ選択できます。各テナントは、独立したデータセットを表します。テナントのデータを変更しても、その他のテナントには影響しません。
テナントを切り替えて、独立したデータセットを複数使用できます。たとえば、複数の勤務地用に従業員の勤務表を複数作成できます。
スキル
スキルセクションでは、勤務表内の作業場所に必要となるスキルをすべて設定できます。たとえば、レストランの 24 時間シフトには、勤務人数やレストラン営業などの一般的なスキルに加え、調理、給仕、送迎、ホスティングサービスのスキルが必要になります。
このようなスキルを入力するには、Skills タブをクリックします。
各スキルに対して以下を行います。
- Skill Name フィールドにスキルの名前を入力します。
- Add をクリックします。

スポット
スポットは、その企業での様々な場所を参照します。たとえば、レストランには、バー、バス停、受付、様々なキッチンエリア、給仕エリア、オフィスなどがあります。Skills タブで入力した一覧から、必要なスキルを選択できます。以下の表は、スポットと、各スポットで必要なスキルの例を示しています。
表2.1 スポットの例
|
名前 |
必要なスキル |
|
Bar |
Serving |
|
Bussing Station 1 |
Bussing |
|
Bussing Station 2 |
Bussing |
|
Front Counter |
Hosting, Cash register |
|
Grill |
Cooking |
|
Prep |
Food prep |
|
Soups |
Cooking |
|
Serving area 1 |
Serving |
|
Serving area 2 |
Serving |
|
Office |
HR |
各スポットで、以下を行います。
- 画面下部の Spot Name フィールドにスポット名を入力します。
-
Required Skill ドロップダウンメニューから、必要なスキルを選択します。
- Add をクリックします。
図2.2 スポット名の例

従業員
Employees タブには、その企業で働いている従業員一覧と、各自のスキルが含まれています。この一覧から、必要に応じて従業員のスキルを複数設定できます。
各従業員に対して、以下を行います。
- 画面下部の Employee Name フィールドに名前を入力します。
- Skills フィールドを入力し、表示される提案一覧からアイテムを選択して、関連スキルを選択します。スキルを複数指定する場合は、先に進む前にこのプロセスを繰り返します。
- Add をクリックします。
図2.3 従業員の名前フィールド

スポットの勤務表 (Spot Roster)
スポットの勤務表は、営業時間内の全シフト (時間枠) を示すテーブルで、各シフトのスポットはすべて従業員に割り当てる必要があります。必要なスポットは、赤い長方形で示されます。
シフトごとに、各スポットに従業員を複数指定できます。シフトにスポットが必要ない場合は、そのスポットを勤務表から完全に削除できます。
特定のシフトに新しいスポットを追加するには、セルの青い + アイコンをクリックします。必要なスポットをシフトから完全に削除するには、グリッドのセルにある青い X アイコンをクリックします。
図2.4 スポットの勤務表の例

図2.5 スポットアイコンの詳細 (ロック、編集、削除、追加)
2.2. 最適な従業員勤務表の作成
手順
必要に応じて、シフトとスポットに、必要な従業員を入力します。
- スポットの 編集 アイコンをクリックすると、「Select employee」モーダルウィンドウが開きます。
- 一覧から従業員を選択し、Assign ボタンをクリックします。
- その従業員は、指定したスポットにロックされ、Sover では変更できません。
- スポットで ロック をクリックして、Solver で割り当てを変更できるようにします。
- 削除 アイコンをクリックして、スポットへの従業員の割り当てを元に戻します。
- Solve ボタンをクリックして、最適なソリューションを作成します。
エンジンが完全に最適な結果を作成するには 30 秒かかります。
最適な結果が利用できる場合は、Spot Roster ウィンドウで、各スポットおよびシフトに割り当てた従業員の名前が表示されます。
従業員の勤務表 (Employee Roster)
従業員の勤務表は、スポットの勤務表と同じ列を表示しますが、行には、従業員の名前と、指定したシフトで各従業員が割り当てられているスポットを表示します。
図2.6 従業員の勤務表の例

2.3. 従業員のアベイラビリティーの設定
従業員の勤務表画面で、従業員のシフト希望を設定します。このエンジンは、最適なソリューションを作成する際にその希望に対応しようとします。シフトにある 3 つのボタンの中から 1 つクリックして、従業員の希望を指定します。
図2.7 従業員のシフト希望

上の図の左側から順に、以下の希望を示しています。
- 勤務できない
- 希望しないが勤務可能
- 勤務を希望
何も選択しない場合は、そのシフトに対する希望がないことを示しています。
従業員のアベイラビリティーを変更するには、Solve ボタンをクリックして、新しいスケジュールを作成します。
「勤務できない」オプションは、病欠または休暇の従業員にも適用されます。シフトの直前に従業員が病欠の電話をしてきた場合は、マネージャーがその従業員の予定を「勤務できない」にして、新しいスケジュールを作成します。
2.4. 制約
このスターターアプリケーションの Red Hat Business Optimizer ルールは、ハード制約およびソフト制約を使用します。最適化時に、エンジンがハード制約を違反しない可能性があります。たとえば、従業員が勤務できない (または病欠) 場合 、もしくは 1 つのシフトの 2 つのスポットで働くことができないなどです。エンジンは、ソフト制約 (特定のシフトで勤務しないという従業員の希望など) に順守しようとしますが、最適なソリューションには違反が必要だと判断した場合は違反できます。
付録A バージョン情報
本ドキュメントの最終更新日: 2018 年 7 月 3 日
