16.7. OptaWeb Vehicle Routing 开发指南


本节论述了如何在开发模式中配置和运行后端模块。

16.7.1. OptaWeb Vehicle Routing 项目结构

OptaWeb Vehicle Routing 项目是一个多模块 Maven 项目。

图 16.1. 模块依赖关系树图

后端和前端模块位于模块树的底部。这些模块包含应用源代码。

独立模块是组合后端和前端到单个可执行 JAR 文件的装配模块。

distribution 模块表示最终的 assembly 步骤。它使用独立应用程序和文档,并将它们打包成易于分发的存档中。

后端和前端是单独的项目,您可以单独构建和部署。实际上,它们使用完全不同的语言编写,并使用不同的工具进行构建。这两个项目都具有提供现代开发人员体验的工具,可在代码更改和正在运行的应用程序之间进行快速切换。

下面章节描述了如何在开发模式下运行后端和前端项目。

16.7.2. OptaWeb Vehicle Routing 后端模块

后端模块包含一个服务器端应用程序,它使用红帽构建的 OptaPlanner 优化载体路由。优化是一种 CPU 密集型计算,必须避免任何 I/O 操作才能将其完整性能。由于目标之一是尽量减少差差成本,因此 OptaWeb Vehicle Routing 在 RAM 内存中保留出差成本信息。在寻求时,OptaPlanner 需要了解用户输入的每个位置之间的差成本。此信息存储在名为 distance matrix 的结构中。

当您进入新位置时,OptaWeb Vehicle Routing 会计算新位置和所有其他位置之间的差额成本,并在距离列表中保存出差成本。travel 成本计算由 GraphHopper 路由引擎执行。

后端模块实现以下额外功能:

  • 持久性
  • 前端的 websocket 连接
  • 数据集加载、导出和导入

如需了解更多有关后端代码架构的信息,请参阅 第 16.8 节 “OptaWeb Vehicle 路由后端架构”

下面章节描述了如何在开发模式中配置和运行后端。

16.7.2.1. 运行 OptaWeb Vehicle Routing 后端模块

您可以在 Quarkus 开发模式下运行后端模块。

先决条件

流程

  1. 将目录更改为 rhpam-7.13.4-kogito-and-optaplanner-quickstarts/optaweb-8.13.0.Final-redhat-00013/optaweb-vehicle-routing/optaweb-vehicle-routing-backend
  2. 要在 development 模式下运行后端,请输入以下命令:

    mvn compile quarkus:dev

您可以使用 IntelliJ IDEA Ulitmate 运行 OptaWeb Vehicle 路由后端模块,以便更轻松地开发项目。Intellij IDEA Ultimate 包括 Quarkus 插件,它可自动为使用 Quarkus 框架的模块创建运行配置。

流程

使用 optaweb-vehicle-routing-backend 运行配置来运行后端。

其他资源

如需更多信息,请参阅 运行 Quarkus 应用程序

16.7.2.3. Quarkus 开发模式

在开发模式中,如果存在对后端源代码或配置的更改,并且刷新运行前端的浏览器选项卡,后端会自动重启。

了解有关 Quarkus 开发模式 的更多信息

您可以临时或永久覆盖 OptaWeb Vehicle Routing 后端模块的默认系统属性值。

OptaWeb Vehicle Routing 后端模块系统属性存储在 /src/main/resources/application.properties 文件中。此文件受版本控制。使用它来永久存储默认配置属性值并定义 Quarkus 配置集。

先决条件

流程

  • 要临时覆盖默认系统属性值,请在运行 mvnjava 命令时包括 -D<PROPERTY>=<VALUE & gt; 参数,其中 <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 文件。

    此文件不包括在版本控制中,因此克隆存储库时不存在此文件。您可以在 .env 文件中进行更改,而不影响 Git 工作树。

其他资源

有关 OptaWeb Vehicle Routing 配置属性的完整列表,请参阅 第 16.9 节 “OptaWeb Vehicle 路由后端配置属性”

16.7.2.5. OptaWeb Vehicle Routing backend logging

OptaWeb Vehicle Routing 使用 SLF4J API 和 Logback 作为日志框架。如需更多信息,请参阅 Quarkus - 配置日志

16.7.3. 使用 OptaWeb Vehicle Routing 前端模块

前端项目通过 Create React App 启动。创建 React App 提供了多个脚本和依赖项,可帮助开发并构建用于生产环境的应用程序。

先决条件

流程

  1. 在 Fedora 中,输入以下命令来设置开发环境:

    sudo dnf install npm

    有关安装 npm 的更多信息,请参阅下载并安装 Node.js 和 npm

  2. 将目录更改为 rhpam-7.13.4-kogito-and-optaplanner-quickstarts/optaweb-8.13.0.Final-redhat-00013/optaweb-vehicle-routing/optaweb-vehicle-routing-frontend
  3. 安装 npm 依赖项:

    npm install

    与 Maven 不同,npm 软件包管理器在项目目录下将依赖项安装到 node_modules 中,并且仅在您执行 npm install 时执行此操作。每当 package.json 更改后列出的依赖项时,例如,当您将更改拉取到 master 分支时,都必须在运行开发服务器前执行 npm install

  4. 输入以下命令来运行开发服务器:

    npm start
  5. 如果没有自动打开,在网页浏览器中打开 http://localhost:3000/

    默认情况下,npm start 命令会尝试在您的默认浏览器中打开这个 URL。

    注意

    如果您不希望 npm start 命令在每次运行时都打开一个新浏览器标签页,请导出 BROWSER=none 环境变量。您可以使用 .env.local 文件使这个首选项持久。要做到这一点,请输入以下命令:

    echo BROWSER=none >> .env.local

    每当您在前端源代码中进行更改时,浏览器都会刷新该页面。在终端中运行的开发服务器进程会提取更改,并将编译和 lint 错误输出到控制台。

  6. 输入以下命令来运行测试:

    npm test
  7. 在执行 npm startnpm run build 时,更改 REACT_APP_BACKEND_URL 环境变量的值,以指定 npm 要使用的后端项目的位置,例如:

    REACT_APP_BACKEND_URL=http://10.0.0.123:8081
    注意

    npm 构建过程中,环境变量在 JavaScript 捆绑包内被硬编码,因此您必须在构建和部署前端前指定后端位置。

    如需了解更多有关 React 环境变量的信息,请参阅添加 自定义环境变量

  8. 要构建前端,请输入以下命令之一:

    ./mvnw install
    mvn install
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部