12.3. 従業員勤務表スターターアプリケーションのソースコードに関する概要

従業員勤務表スターターアプリケーションは、以下の主要コンポーネントで設定されています。

  • Red Hat ビルドの OptaPlanner を使用して勤務表のロジックを実装し、REST API を提供する backend
  • React を使用してユーザーインターフェイスを実装し、REST API で backend モジュールと対話する frontend モジュール

上記のコンポーネントを個別にビルドして使用することができます。特に、異なるユーザーインターフェイスを実装して、REST API でサーバーを呼び出すことができます。

主なコンポーネント 2 つに加え、従業員勤務表テンプレートには、ランダムなソースデータのジェネレーター (デモやテスト目的で便利) やベンチマークアプリケーションが含まれます。

モジュールおよび主要なクラス

従業員勤務表テンプレートの Java ソースコードには複数の Maven モジュールが含まれます。これらのモジュールごとに、個別の Maven プロジェクトファイル (pom.xml) が含まれていますが、これは共通のプロジェクトで構築するために設計されています。

モジュールには、Java クラスなど複数のファイルが含まれます。このドキュメントでは、全モジュールと、従業員勤務表計算の主な情報を含むその他のファイルとクラスをリストします。

  • optawebpemployee-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 モジュール: スタンドアロンアプリケーションのアセンブリーの設定が含まれます。