Este contenido no está disponible en el idioma seleccionado.

Chapter 16. Overview of the source code of the employee rostering starter application


The employee rostering starter application consists of the following principal components:

  • A backend that implements the rostering logic using Red Hat Business Optimizer and provides a REST API
  • A frontend module that implements a user interface using React and interacts with the backend module through the REST API

You can build and use these components independently. In particular, you can implement a different user interface and use the REST API to call the server.

In addition to the two main components, the employee rostering template contains a generator of random source data (useful for demonstration and testing purposes) and a benchmarking application.

Modules and key classes

The Java source code of the employee rostering template contains several Maven modules. Each of these modules includes a separate Maven project file (pom.xml), but they are intended for building in a common project.

The modules contain a number of files, including Java classes. This document lists all the modules, as well as the classes and other files that contain the key information for the employee rostering calculations.

  • optaweb-employee-rostering-benchmark module: Contains an additional application that generates random data and benchmarks the solution.
  • optaweb-employee-rostering-distribution module: Contains README files.
  • optaweb-employee-rostering-docs module: Contains documentation files.
  • optaweb-employee-rostering-frontend module: Contains the client application with the user interface, developed in React.
  • optaweb-employee-rostering-backend module: Contains the server application that uses Red Hat Business Optimizer to perform the rostering calculation.

    • src/main/java/org.optaweb.employeerostering.service.roster/rosterGenerator.java: Generates random input data for demonstration and testing purposes. If you change the required input data, change the generator accordingly.
    • src/main/java/org.optaweb.employeerostering.domain.employee/EmployeeAvailability.java: Defines availability information for an employee. For every time slot an employee can be unavailable, available, or it can be designated a preferred time slot for the employee.
    • src/main/java/org.optaweb.employeerostering.domain.employee/Employee.java: Defines an employee. An employee has a name, a list of skills, and works under a contract. Skills are represented by skill objects.
    • src/main/java/org.optaweb.employeerostering.domain.roster/Roster.java: Defines the calculated rostering information.
    • src/main/java/org.optaweb.employeerostering.domain.shift/Shift.java: Defines a shift to which an employee can be assigned. A shift is defined by a time slot and a spot. For example, in a diner there could be a shift in the Kitchen spot for the February 20 8AM-4PM time slot. Multiple shifts can be defined for a given spot and time slot. In this case, multiple employees are required for this spot and time slot.
    • src/main/java/org.optaweb.employeerostering.domain.skill/Skill.java: Defines a skill that an employee can have.
    • src/main/java/org.optaweb.employeerostering.domain.spot/Spot.java: Defines a spot where employees can be placed. For example, a Kitchen can be a spot.
    • src/main/java/org.optaweb.employeerostering.domain.contract/Contract.java: Defines a contract that sets limits on work time for an employee in various time periods.
    • src/main/java/org.optaweb.employeerostering.domain.tenant/Tenant.java: Defines a tenant. Each tenant represents an independent set of data. Changes in the data for one tenant do not affect any other tenants.
    • *View.java: Classes related to domain objects that define value sets that are calculated from other information; the client application can read these values through the REST API, but not write them.
    • *Service.java: Interfaces located in the service package that define the REST API. Both the server and the client application separately define implementations of these interfaces.
Volver arriba
Red Hat logoGithubredditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

Theme

© 2025 Red Hat