第3章 従業員勤務表スターターアプリケーションのソースコードに関する概要
従業員勤務表スターターアプリケーションは、以下の主要コンポーネントで設定されています。
- Red Hat Business Optimizer を使用して勤務表のロジックを実装して、REST API を提供する サーバー
-
gwt
ライブラリーを使用してユーザーインターフェイスを実装し、REST API でサーバーを呼び出す クライアント
クライアントとサーバーの間でコードを共有し、これらのコンポーネントを個別にビルドし使用することができます。特に、異なるユーザーインターフェイスを実装して、REST API でサーバーを呼び出すことができます。
主なコンポーネント 2 つに加え、従業員勤務表テンプレートには、ランダムなソースデータのジェネレーター (デモやテスト目的で便利) やベンチマークアプリケーションが含まれます。
モジュールおよび主要なクラス
従業員勤務表テンプレートの Java ソースコードには複数の Maven モジュールが含まれます。これらのモジュールごとに、個別の Maven プロジェクトファイル (pom.xml
) が含まれていますが、これは共通のプロジェクトで構築するために設計されています。
モジュールには、Java クラスなど複数のファイルが含まれます。このドキュメントでは、全モジュールと、従業員勤務表計算の主な情報を含むその他のファイルとクラスをリストします。
-
employee-rostering-benchmark
モジュール: 乱数データを生成し、ソリューションをベンチマーク化する追加のアプリケーションが含まれます。 -
employee-rostering-distribution
モジュール: readme ファイルが含まれます。 -
employee-rostering-docs
モジュール: ドキュメントファイルが含まれます。 -
employee-rostering-gwtui
モジュール:gwt
ツールキットを使用して開発したユーザーインターフェイスを使用するクライアントアプリケーションが含まれます。 employee-rostering-server
モジュール: Red Hat Business Optimizer を使用して勤務表の計算を行うサーバーをアプリケーションが含まれます。-
src/main/resources/org/optaweb/employeerostering/server/solver/employeeRosteringScoreRules.drl
ファイル: Red Hat Business Optimizer の計算用のルールが含まれます。これらのルールは、Drools ルール言語で記述されています。ルールを修正して、従業員勤務表のロジックを変更できます。 -
src/main/java/org.optaweb.employeerostering.server.roster/rosterGenerator.java
クラス: デモおよびテスト目的でランダムな入力データを生成します。必要な入力データを変更する場合には、生成器も合わせて変更してください。
-
employee-rostering-shared
モジュール: サーバーとクライアントアプリケーション間で共有されるデータ構造が含まれます。特に、src/main/java/org/optaweb/employeerostering/shared/*
では、このモジュールには以下のクラスを含む勤務表計算の入力データを定義する Java クラスが含まれます。-
employee/EmployeeAvailability.java
は、従業員の空き情報を定義します。時間枠ごとに、従業員の空き状況と、従業員の希望する時間枠を指定できます。 -
employee/Employee.java
は従業員を定義します。従業員には名前とスキル一覧があり、契約に従って仕事に従事します。スキルは、EmployeeSkillProficiency
オブジェクトで表現します。 -
roster/Roster.java
は計算した勤務表情報を定義します。 -
shift/Shift.java
は、従業員を割り当て可能なシフトを定義します。シフトは、時間枠とスポットで定義します。たとえば、レストランでは、Kitchen
のスポットで、February 20 8AM-4PM
の時間枠のシフトなどがあります。複数のシフトを、特定のスポットと時間枠に定義できます。今回の例では、このスポットと時間枠には複数の従業員が必要です。 -
skill/Skill.java
は、従業員が持つスキルを定義します。 -
spot/Spot.java
は、従業員を配置可能なスポットを定義します。たとえば、レストランではKitchen
をスポットとして指定できます。 -
contract/Contract.java
は、さまざまな期間の従業員の労働時間を制限する契約を定義します。 tenant/Tenant.java
はテナントを定義します。テナントごとに、独立したデータセットを表します。あるテナントのデータが変更されても、他のテナントには影響がありません。employee-rostering-shared
モジュールにも、他の共有アーティファクトが含まれます。-
*View.java
クラスは、他の情報から計算する値のセットを定義します。クライアントアプリケーションは、REST API 経由でこれらの値を読み取りますが、書き込みはできません。 -
*RestService.java
インターフェイスは REST API を定義します。サーバーとクライアントアプリケーションのいずれも、これらのインターフェイスの実装を個別に定義します。
-
-
employee-rostering-shared-gwt
モジュール: GWT クライアントアプリケーションに必要なクラスが含まれます。 -
employee-rostering-webapp
モジュール: アプリケーション全体 (クライアントとサーバー) のビルドに必要な HTML と他のファイルが含まれます。