12.3. 员工入门应用程序的源代码概述

员工的入门程序应用程序由以下主要组件组成:

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

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

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

模块和密钥类

员工模板的 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 执行 rostering 计算的服务器应用程序。

    • src/main/java/org.optaweb.employeerostering.service.roster/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: 定义可以为其分配员工的过渡。转换由一个时间插槽和点定义。例如,在 diner 中,在 2 月 20 8AM-4PM 时间插槽的 Kitchen spot 中可能会进行转换。可以为特定的 spot 和 time 插槽定义多个转换。在这种情况下,这个 spot 和 time 插槽需要多个员工。
    • src/main/java/org.optaweb.employeerostering.domain.skill/Skill.java: 定义员工可以拥有的承诺。
    • src/main/java/org.optaweb.employeerostering.domain.spot/Spot.java: 定义可以放置员工的 spot。例如,Kitchen 可以是 spot。
    • src/main/java/org.optaweb.employeerostering.domain.contract/Contract.java: 定义在不同时间段内为员工设置限制的合同。
    • src/main/java/org.optaweb.employeerostering.domain.tenant/Tenant.java: 定义租户。每个租户代表一组独立的数据。一个租户的数据更改不会影响任何其他租户。
    • bedoview.java :与域对象相关的类,用于定义从其他信息计算的值集;客户端应用可以通过 REST API 读取这些值,但不能写这些值。
    • evinceservice.java: 接口位于定义 REST API 的服务软件包中。服务器和客户端应用都单独定义这些接口的实施。
  • optaweb-employee-rostering-standalone 模块:包含独立应用程序的 assembly 配置。