第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をスポットとして指定できます。 tenant/Tenant.javaはテナントを定義します。テナントごとに、独立したデータセットを表します。あるテナントのデータが変更されても、他のテナントには影響がありません。employee-rostering-sharedモジュールにも、他の共有アーティファクトが含まれます。-
*View.javaクラスは、他の情報から計算する値のセットを定義します。クライアントアプリケーションは、REST API 経由でこれらの値を読み取りますが、書き込みはできません。 -
*RestService.javaインターフェイスは REST API を定義します。サーバーとクライアントアプリケーションのいずれも、これらのインターフェイスの実装を個別に定義します。
-
-
employee-rostering-shared-gwtモジュール: GWT クライアントアプリケーションに必要なクラスが含まれます。 -
employee-rostering-webappモジュール: アプリケーション全体 (クライアントとサーバー) のビルドに必要な HTML と他のファイルが含まれます。