optaweb-employee-rostering icon indicating copy to clipboard operation
optaweb-employee-rostering copied to clipboard

Web application for solving Employee Rostering using OptaPlanner. This project is no longer maintained. Visit https://github.com/kiegroup/optaplanner-quickstarts to see how to integrate OptaPlanner in...

:projectKey: optaweb-employee-rostering

This project is no longer maintained. Visit https://github.com/kiegroup/optaplanner-quickstarts/tree/stable/use-cases/employee-scheduling[OptaPlanner Employee Rostering Quickstart] to see how to integrate https://www.optaplanner.org/[OptaPlanner] in your application.

= Employee Rostering Optimization as a Service

image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg?logo=zulip&style=for-the-badge[ "Join Zulip Chat", link="https://kie.zulipchat.com/#narrow/stream/232679-optaplanner"] image:https://img.shields.io/github/license/kiegroup/optaweb-employee-rostering?style=for-the-badge&logo=apache["License", link="https://www.apache.org/licenses/LICENSE-2.0"]

An end-to-end https://www.optaplanner.org/[OptaPlanner] web application ready to deploy on https://www.openshift.com/[OpenShift 4].

== Building

Build the project with maven in the project's root directory:

[source,shell]

mvn clean install -DskipTests -DskipITs

== Running

Run the application with the runLocally.sh script:

[source,shell]

./runLocally.sh

Then open http://localhost:8080/ to see the web application.

Alternatively, run npm start in optaweb-employee-rostering-frontend to start the frontend in one terminal, and run mvn quarkus:dev in optaweb-employee-rostering-backend to start the backend in another terminal.

=== Use a different port

To run on an another port use -Dquarkus.http.port=...:

[source,shell]

./runLocally.sh -Dquarkus.http.port=18080

== Benchmark Application

After building the project above, run the benchmark application with:

[source,shell]

java -jar optaweb-employee-rostering-benchmark/target/quarkus-app/quarkus-run.jar

Note: make sure to run the project application and benchmark application on different ports if they are run simultaneously.

After benchmarking is complete, a benchmark report will be generated in the local/benchmarkReport directory. Open the index.html file in your browser to view the benchmark results.

=== Configure the benchmarker

To configure the benchmarker, modify the employeeRosteringBenchmarkConfig.xml file found in the optaweb-employee-rostering-benchmark/src/main/resources directory. Make sure to rebuild the project after modifying the config file for the benchmarker changes to be applied.

Refer to the https://docs.optaplanner.org/latestFinal/optaplanner-docs/html_single/index.html#benchmarker[OptaPlanner Docs] for more information on benchmark tweaking.

== Running on a local OpenShift cluster

Use https://developers.redhat.com/products/codeready-containers[Red Hat CodeReady Containers] to easily set up a single-node OpenShift 4 cluster on your local computer.

.Prerequisites You have successfully built the project with Maven.

.Procedure

  1. To install CRC, follow the https://code-ready.github.io/crc/[Getting Started Guide].

  2. When the cluster has started,

a. add oc command-line interface to your $PATH: + [source,shell]

eval $(crc oc-env)

b. log in as "developer".

  1. Create a new project

[source,subs="quotes"]

oc new-project project_name

  1. Run the script:

[source,shell]

./runOnOpenShift.sh

=== Updating the deployed application with local changes

==== Backend

Change the source code and build the backend module with Maven. Then start OpenShift build:

[source,shell]

cd optaweb-employee-rostering-backend oc start-build backend --from-dir=. --follow

==== Frontend

Change the source code and build the frontend module with npm. Then start OpenShift build:

[source,shell]

cd optaweb-employee-rostering-frontend oc start-build frontend --from-dir=docker --follow

== Development

=== Code formatter

IntelliJ, Eclipse and VS Code formatters https://github.com/kiegroup/optaplanner/blob/main/build/optaplanner-ide-config/ide-configuration.adoc#ide-setup-instructions[IDE setup instructions].

=== Backend

Configure your IDE to run the main class, which is in org.optaweb.employeerostering.OptaWebEmployeeRosteringApplication in optaweb-employee-rostering-backend repository.

=== Frontend

Run npm install and then npm start in the optaweb-employee-rostering-frontend directory. You can run npm run lint locally to see all code style issues. You can run npm run lint:fix to reformat the code and fix issues without using an IDE.