第4章 従業員勤務表スターターアプリケーションの変更

従業員勤務表スターターアプリケーションをニーズに合わせて変更するには、最適化プロセスを統括するルールを変更する必要があります。また、データ構造に必要なデータを含み、ルールに必要な計算が提供されるようにする必要があります。必要なデータがユーザーインターフェースに存在しない場合には、ユーザーインターフェースも変更する必要があります。

以下の手順では、従業員勤務表スターターアプリケーションの変更に関する一般的なアプローチを説明しています。

前提条件

  • アプリケーションを正常にビルドするビルド環境がある。
  • Java コードの読み取りと変更ができる。

手順

  1. 必要な変更をプランニングします。以下の質問に答えてください。

    • 回避する 必要のある 追加のシナリオにはどのようなものがありますか? このようなシナリオは ハード制約 になります。
    • できるだけオプティマイザーが 回避を試す 必要のある 追加のシナリオにはどのようなものがありますか?このようなシナリオは ソフト制約 になります。
    • それぞれのシナリオがソリューションで実行されるかどうかを計算するのに必要なデータは何ですか?
    • 既存のバージョンで入力した情報から取得可能なデータはどれですか?
    • ハードコードが可能なデータはどれですか?
    • ユーザー入力が必要なデータと、現在のバージョンで入力されていないデータはどれですか?
  2. 必須データを現在のデータから計算するか、ハードコード化できる場合には、計算か、ハードコードを既存のビューまたはユーティリティークラスに追加します。データをサーバー側で計算する必要がある場合には、REST API エンドポイントを追加して読み込みます。
  3. ユーザーが必須データを入力する必要がある場合には、データのエントリーを表現するクラスにそのデータを追加 (例: Employee クラス) し、データの読み取り、書き込み用に REST API エンドポイントを追加して、データ入力用にユーザーインターフェースを変更してください。
  4. 全データが利用できる場合には、ルールを変更します。変更の大半は、新規ルールを追加する必要があります。これらのルールは、optaweb-employee-rostering-backend モジュールの src/main/resources/org/optaweb/employeerostering/service/solver/employeeRosteringScoreRules.drl ファイルに配置されます。

    ルールには Drools 言語を使用します。Drools ルール言語に関する参考情報は、「DRL ルールを使用したデシジョンサービスの設計」を参照してください。optaweb-employee-rostering-backend モジュールで定義したクラスは、デシジョンエンジンで利用できます。

  5. アプリケーションの変更後に、ビルドして実行します。