20.2. OptaWeb 配送経路のバックエンドモジュール
バックエンドモジュールには、OptaPlanner を使用して配送経路を最適化するサーバー側アプリケーションが含まれています。最適化は CPU を集中的に使用する計算であり、最大限に能力を発揮するには I/O 操作を回避する必要があります。移動コスト (時間または距離) を最小限に抑えることが主な目的の 1 つであるため、OptaWeb 配送経路では RAM メモリーに移動コストの情報を保持します。OptaPlanner は、解を出す時に、ユーザーが入力した全場所間の移動コストを把握しておく必要があります。この情報は、距離行列 と呼ばれる構造に保存されます。
新しい場所を入力すると、OptaWeb 配送経路は新しい場所と、それ以外でこれまでに入力されたすべての場所との間の移動コストを計算して、距離行列にその移動コストを保存します。移動コストの計算は、GraphHopper の経路エンジンで実行されます。
バックエンドモジュールは、以下のような機能を追加で実装します。
- 永続性
- フロントエンドの WebSocket 接続
- データセットの読み込み、エクスポート、およびインポート
バックエンドコードのアーキテクチャーの詳細は、21章OptaWeb 配送経路のバックエンドアーキテクチャー を参照してください。
次のセクションでは、開発モードでバックエンドを設定して実行する方法を説明します。
20.2.1. OptaWeb 配送経路のバックエンドモジュールの実行
バックエンドモジュールは、Quarkus 開発モードで実行できます。
前提条件
- OptaWeb 配送経路が 17章OptaWeb 配送経路の手動での設定および実行 の説明どおりに設定されている。
手順
-
rhbop-8.29.0-kogito-and-optaplanner-quickstarts/optaweb-8.29.0.Final-redhat-00009/optaweb-vehicle-routing/optaweb-vehicle-routing-backend
ディレクトリーに移動します。 開発モードでバックエンドを実行するには、次のコマンドを入力します。
mvn compile quarkus:dev
20.2.2. IntelliJ IDEA Ultimate からの OptaWeb 配送経路バックエンドモジュールの実行
IntelliJ IDEA Ultimate を使用して OptaWeb 配送経路バックエンドモジュールを実行し、プロジェクトの開発を簡素化できます。IntelliJ IDEA Ultimate には、Quarkus プラグインが同梱されており、Quarkus フレームワークを使用するモジュールの実行設定を自動的に作成します。
手順
optaweb-vehicle-routing-backend の設定を使用して、バックエンドを実行します。
関連情報
詳細は、Quarkus アプリケーションのビルド を参照してください。
20.2.3. Quarkus 開発モード
開発モードでは、バックエンドのソースコードまたは設定が変更された場合に、フロントエンドが実行されるブラウザータブを更新すると、バックエンドが自動的に再起動します。
Quarkus 開発モード の詳細を確認してください。
20.2.4. OptaWeb 配送経路バックエンドモジュールのシステムプロパティーの値の変更
OptaWeb 配送経路バックエンドモジュールのデフォルトのシステムプロパティー値を一時的または永続的に上書きできます。
OptaWeb 配送経路バックエンドモジュールのプロパティーは /src/main/resources/application.properties
ファイルに保存されます。このファイルはバージョン管理されます。このファイルを使用してデフォルトの設定プロパティーの値を永続的に保存し、Quarkus プロファイルを定義します。
前提条件
- OptaWeb 配送経路のスターターアプリケーションをダウンロードして展開している。詳細は、15章OptaWeb 配送経路デプロイメントファイルのダウンロードおよびビルド を参照してください。
手順
デフォルトのシステムプロパティー値を一時的に上書きするには、
mvn
またはjava
コマンドの実行時に、-D<PROPERTY>=<VALUE>
引数を追加します。<PROPERTY>
は変更するプロパティーの名前、<VALUE>
はそのプロパティーに一時的に割り当てる値に置き換えます。以下の例は、Maven を使用してdev
モードで Quarkus プロジェクトをコンパイルした場合に、quarkus.http.port
システムプロパティーの値を8181
に一時的に変更する方法を示しています。mvn compile quarkus:dev -Dquarkus.http.port=8181
これを実行すると、
/src/main/resources/application.properties
ファイルに保存されているプロパティーの値が一時的に変更されます。開発環境に固有の設定を保存する場合など設定値を永続的に変更するには、
env-example
ファイルの内容をoptaweb-vehicle-routing-backend/.env
ファイルにコピーします。このファイルはバージョン管理には含まれないので、リポジトリーのクローン時には存在しません。Git の作業ツリーに影響を与えずに、
.env
ファイルで変更を加えることができます。
関連情報
OptaWeb 配送経路の設定プロパティーに関する完全一覧は、22章OptaWeb 配送経路のバックエンド設定プロパティー を参照してください。
20.2.5. OptaWeb 配送経路のバックエンドログ
OptaWeb 配送経路は、SLF4J API と Logback をロギングフレームワークとして使用します。詳細は、Quarkus のロギングの設定 を参照してください。