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 后端模块。
先决条件
- 配置了 optaweb Vehicle Routing,如 第 8 章 手动配置和运行 OptaWeb Vehicle Routing 所述。
流程
-
将目录更改为
optaweb-vehicle-routing-distribution-7.44.0.Final-redhat-00006/sources/optaweb-vehicle-routing-backend。 要在开发模式下运行后端,请输入以下命令:
mvn spring-boot:run
11.2.2. 从 IntelliJ IDEA 运行 OptaWeb Vehicle Routing 后端模块 复制链接链接已复制到粘贴板!
您可以使用 IntelliJ IDEA 运行 OptaWeb Vehicle Routing 后端模块,以便更轻松地开发您的项目。
流程
在 IntelliJ IDEA 中,输入
org.optaweb.vehiclerouting.OptaWebVehicleRoutingApplication。这将创建一个您要在下一步中编辑的运行配置。-
在 Editor 窗口中打开
OptaWebVehicleRoutingApplication类。 单击编辑器窗口 gutter 中的绿色勾号,然后选择 Run OptaWebVehicleRoutingApplication。运行会失败,因为工作目录被设置为预期后端模块目录的项目的根目录。
注意请参阅 IntelliJ IDEA 网站上的 Run Applications 页面,以了解有关在 IntelliJ IDEA 中运行应用程序的更多信息。
-
在 Editor 窗口中打开
- 选择 Run→Edit Configuration,然后选择 Spring Boot→OptaWebVehicleRoutingApplication。
-
将 Program 参数设置为
--spring.profiles.active=local以激活名为local的 Spring 配置集。这会指示应用程序使用application-local.properties文件中的配置。 -
将 Working 目录改为 后端模块(Opta
web-vehicle-routing-backend)。 将 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 编译和构建应用程序。
11.2.4. 设置 OptaWeb Vehicle Routing 后端模块配置属性 复制链接链接已复制到粘贴板!
您可以通过几种方法设置 OptaWeb Vehicle Routing 后端模块配置属性。如果您在本地运行 OptaWeb Vehicle Routing 时,本节中的方法很有用。
先决条件
- OptaWeb Vehicle Routing 引用实现已下载并提取。有关详情请参考 第 6 章 下载并构建 OptaWeb Vehicle Routing 部署文件。
流程
-
在
application.properties文件中设置配置属性: -
将目录更改为
rhpam-7.44.0.Final-redhat-00006-optaweb-vehicle-routing/sources/optaweb-vehicle-routing-backend/src/main/resources。 -
在文本编辑器中打开
application.properties文件。 编辑或添加属性,然后保存文件。
在运行打包应用程序时,请使用命令行参数。在以下示例中,<
;PROPERTY> 是属性的名称,<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 )。插件要设置的任何系统属性到运行应用程序的 fork Java 进程,必须使用 -D <PROPERTYsystemPropertiesVariables 属性在 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 连接时访问更多详情