optaweb-employee-rostering
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
-
To install CRC, follow the https://code-ready.github.io/crc/[Getting Started Guide].
-
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".
- Create a new project
[source,subs="quotes"]
oc new-project project_name
- 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.