11.2. OptaWeb Vehicle Routing 后端模块


后端模块包含一个服务器端应用程序,它使用红帽业务优化载体路由。优化是一个 CPU 密集型计算,必须避免任何 I/O 操作才能对其完整潜在的执行。由于其中一个目标是最大程度降低往返成本,无论是时间还是距离,OptaWeb Vehicle 路由会使传输成本信息保留在 RAM 内存中。虽然 Red Hat Business Optimizer 需要了解用户输入的各方位置之间的旋转成本。此信息存储在名为 距离列表的结构中

当您输入新位置时,OptaWeb Vehicle Routing 会计算新位置和目前输入的所有其他位置之间的旋转成本,并将传输成本存储在距离列表中。旋转成本计算由 GraphHopper 路由引擎执行。

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

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

要了解更多有关后端代码架构的信息,请参阅 第 12 章 optaweb Vehicle Routing 后端架构

下一节介绍了如何在开发模式下配置和运行后端。

您可以使用 Spring Boot 插件在开发模式下运行 OptaWeb Vehicle Routing 后端模块。

先决条件

流程

  1. 将目录更改为 optaweb-vehicle-routing-distribution-7.44.0.Final-redhat-00006/sources/optaweb-vehicle-routing-backend
  2. 要在开发模式下运行后端,请输入以下命令:

    mvn spring-boot:run

您可以使用 IntelliJ IDEA 运行 OptaWeb Vehicle Routing 后端模块,以便更轻松地开发您的项目。

流程

  1. 在 IntelliJ IDEA 中,输入 org.optaweb.vehiclerouting.OptaWebVehicleRoutingApplication。这将创建一个您要在下一步中编辑的运行配置。

    1. Editor 窗口中打开 OptaWebVehicleRoutingApplication 类。
    2. 单击编辑器窗口 gutter 中的绿色勾号,然后选择 Run OptaWebVehicleRoutingApplication。运行会失败,因为工作目录被设置为预期后端模块目录的项目的根目录。

      注意

      请参阅 IntelliJ IDEA 网站上的 Run Applications 页面,以了解有关在 IntelliJ IDEA 中运行应用程序的更多信息。

  2. 选择 Run→Edit Configuration,然后选择 Spring Boot→OptaWebVehicleRoutingApplication
  3. Program 参数设置为 --spring.profiles.active=local 以激活名为 local 的 Spring 配置集。这会指示应用程序使用 application-local.properties 文件中的配置。
  4. Working 目录改为 后端模块(Optaweb-vehicle-routing-backend)。
  5. On Update action 设置为 Hot swap class,并在失败时更新触发器文件。这可让您使用 Update 操作来快速重启应用程序。

    如需更多信息,请参阅 IntelliJ IDEA 2018.1 中的 Spring 和 Spring Boot

11.2.3. Spring Boot 自动重启

Spring Boot DevTools 提供了自动重启。https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using-boot-devtools-restart当您使用 Spring Boot Maven 插件运行 OptaWeb Vehicle Routing 后端时,应用程序会在 classpath 发生变化时自动重启。自动重启在 classpath 上扫描文件,因此您只需要重新编译更改来触发应用程序重启。不需要 IDE 配置。

如果您的 IDE 具有编译时保存的功能(如 Eclipse 或 NetBeans),您只需要保存自上次编译后更改的文件。

IntelliJ IDEA 会自动保存更改,您需要选择 Build[Recompile],这会重新编译活跃选项卡中的文件,或 Build[Build Project] 来重新编译所有更改。如需更多信息,请参阅使用 IntelliJ IDEA 编译和构建应用程序

您可以通过几种方法设置 OptaWeb Vehicle Routing 后端模块配置属性。如果您在本地运行 OptaWeb Vehicle Routing 时,本节中的方法很有用。

先决条件

流程

  1. application.properties 文件中设置配置属性:
  2. 将目录更改为 rhpam-7.44.0.Final-redhat-00006-optaweb-vehicle-routing/sources/optaweb-vehicle-routing-backend/src/main/resources
  3. 在文本编辑器中打开 application.properties 文件。
  4. 编辑或添加属性,然后保存文件。

    • 在运行打包应用程序时,请使用命令行参数。在以下示例中,&lt ;PROPERTY& gt; 是属性的名称,& lt;VALUE > 是该属性值:

      java -jar optaweb-vehicle-routing-backend.jar --app.<PROPERTY>=<VALUE>
    • 当使用 spring-boot:run 运行应用程序时使用环境变量:

      <PROPERTY>=<VALUE> ./mvnw spring-boot:run
      注意

      此方法需要 放松的绑定,只有在属性使用 @ConfigurationProperties 定义时才有效。

在使用 Spring Boot Maven 插件运行应用程序时,无法设置属性(/ mvnw spring-boot:run -D <PROPERTY)。插件要设置的任何系统属性到运行应用程序的 fork Java 进程,必须使用 systemPropertiesVariables 属性在 pom.xml 文件中指定应用程序。有关此属性的详情,请参考在 Spring 网站上 使用系统属性

您可以在 Spring Boot Externalized Configuration 页面中了解更多有关配置 Spring Boot 应用程序的信息。

提示

使用 src/main/resources/application-local.properties 来存储个人配置,而不影响 Git 工作树。

有关 OptaWeb Vehicle Routing 配置属性的完整列表,请参阅 第 13 章 optaweb Vehicle Routing 后端配置属性

有关 Spring Boot 中提供的应用程序属性的完整列表,请参阅 Spring 网站上的通用应用程序属性 页面。

11.2.5. optaweb Vehicle Routing 后端日志记录

optaweb Vehicle Routing 使用 SLF4J API 和 Logback 作为日志记录框架。Spring 环境允许您配置大多数日志方面,包括级别、模式和日志文件,方式与其他配置属性相同。设置日志记录属性的最常见方法是编辑 application.properties 文件,或使用 < PROPERTY>=<VALUE> 等参数,其中 <PROPERTY > 是属性的名称,<VALUE > 是该属性值。如需更多信息,请参阅 Spring Boot Logging 文档。

以下示例是可用于控制应用程序某些部分的日志级别的属性:

  • logging.level.org.optaweb.vehiclerouting=debug :启用后端代码的 debug 级别
  • logging.level.org.optaplanner.core=warn: 红帽商业优化器日志记录
  • logging.level.org.springframework.web.socket=trace :在调查 WebSocket 连接时访问更多详情
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部