14.3. 员工启动程序应用程序的源代码概述

员工的初学者应用程序由以下主要组件组成:

  • 使用红帽构建的 OptaPlanner 并提供 REST API 实现 rostering 逻辑 的后端
  • 使用 React 实现用户界面的 frontend 模块,并通过 REST API 与 backend 模块交互

您可以独立构建并使用这些组件。特别是,您可以实施不同的用户界面,并使用 REST API 来调用服务器。

除了两个主要组件外,员工名列模板还包含随机源数据的生成器(用于演示和测试目的)和基准测试应用。

模块和密钥类

employee rostering 模板的 Java 源代码包含多个 Maven 模块。这些模块各自包含一个单独的 Maven 项目文件(pom.xml),但它们设计为在共同项目中构建。

模块包含多个文件,包括 Java 类。本文档列出所有模块,以及包含员工电动计算密钥信息的类和其他文件。

  • optaweb-employee-rostering-benchmark 模块:包含生成随机数据和基准测试解决方案的附加应用程序。
  • optaweb-employee-rostering-distribution 模块:包含 README 文件。
  • optaweb-employee-rostering-docs 模块:包含文档文件。
  • optaweb-employee-rostering-frontend 模块:包含带有用户界面的客户端应用,在 React 中开发。
  • optaweb-employee-rostering-backend 模块:包含使用 OptaPlanner 执行漫长计算的服务器应用程序。

    • src/main/java/org.optaweb.employeerostering.service.rosterGenerator.java: 生成随机输入数据,用于演示和测试目的。如果您更改了所需的输入数据,请相应地更改生成器。
    • src/main/java/org.optaweb.employeerostering.domain.employee/EmployeeAvailability.java: 定义员工的可用性信息。每次插槽中,员工都可以不可用、可用或时间插槽指定给员工的首选时间插槽。
    • src/main/java/org.optaweb.employeerostering.domain.employee/Employee.java: 定义员工。员工具有名称、技能列表,并在合同下工作。技能由技能对象表示。
    • src/main/java/org.optaweb.employeerostering.domain.roster/Roster.java: 定义计算的漫长信息。
    • src/main/java/org.optaweb.employeerostering.domain.shift/Shift.java: 定义可分配给员工的转换。一个变化是由一个时间插槽和位置定义的。例如,在大约 2 月 20 日 8AM-4PM 时间插槽的 Kitchen spot 中可能会有变化。可以为特定位置和时间插槽定义多个变化。在这种情况下,这个地点和时间插槽需要多个员工。
    • src/main/java/org.optaweb.employeerostering.domain.skill/Skill.java: 定义员工具有的专业技能。
    • src/main/java/org.optaweb.employeerostering.domain.spot/Spot.java: 定义可以放置员工的亮点。例如,S Kitchen 可以是 spot。
    • src/main/java/org.optaweb.employeerostering.domain.contract/Contract.java :定义一个合同,为员工在不同时间段内设置限制。
    • src/main/java/org.optaweb.employeerostering.domain.tenant/Tenant.java: 定义租户。每个租户代表一组独立的数据。一个租户的数据更改不会影响任何其他租户。
    • *view.java: 与域对象相关的类定义从其他信息计算的值集;客户端应用程序可以通过 REST API 读取这些值,但不写入它们。
    • *service.java: Interfaces 位于定义 REST API 的服务软件包中。服务器和客户端应用都单独定义这些接口的实施。
  • optaweb-employee-rostering-standalone 模块:包含独立应用的 assembly 配置。