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