kiegroup / Optaweb Employee Rostering
Programming Languages
Projects that are alternatives of or similar to Optaweb Employee Rostering
:projectKey: optaweb-employee-rostering :sonarBadge: image:https://sonarcloud.io/api/project_badges/measure?project={projectKey} :sonarLink: link="https://sonarcloud.io/dashboard?id={projectKey}"
= Employee Rostering Optimization as a Service
image:https://travis-ci.com/kiegroup/optaweb-employee-rostering.svg?branch=master[ "Build Status", link="https://travis-ci.com/kiegroup/optaweb-employee-rostering"] image:https://img.shields.io/badge/stackoverflow-ask_question-orange.svg?logo=stackoverflow[ "Ask question on Stack Overflow", link="https://stackoverflow.com/questions/tagged/optaweb-employee-rostering"] image:https://img.shields.io/badge/zulip-join_chat-brightgreen.svg?logo=zulip[ "Join Zulip Chat", link="https://kie.zulipchat.com/#narrow/stream/232679-optaplanner"]
{sonarBadge}&metric=alert_status["Quality Gate Status", {sonarLink}] {sonarBadge}&metric=reliability_rating["Reliability Rating", {sonarLink}] {sonarBadge}&metric=security_rating["Security Rating", {sonarLink}] {sonarBadge}&metric=sqale_rating["Maintainability Rating", {sonarLink}] {sonarBadge}&metric=ncloc["Lines of Code", {sonarLink}] {sonarBadge}&metric=coverage["Coverage", {sonarLink}]
An end-to-end https://www.optaplanner.org/[OptaPlanner] web application ready to deploy on https://www.openshift.com/[OpenShift 4].
See https://www.youtube.com/watch?v=sOWC4qrXxFk[the video demo].
== Building
Build the project with maven in the project's root directory:
[source,shell]
mvn clean install -DskipTests -DskipITs
== Running
After building the project, run the application with:
[source,shell]
java -jar optaweb-employee-rostering-standalone/target/optaweb-employee-rostering-standalone-*-exec.jar
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 spring-boot:run
in optaweb-employee-rostering-backend
to start the backend in another terminal.
=== Use a different port
To run on an another port use --server.port=...
:
[source,shell]
java -jar optaweb-employee-rostering-standalone/target/optaweb-employee-rostering-standalone-*-exec.jar --server.port=18080
== Benchmark Application
After building the project above, run the benchmark application with:
[source,shell]
java -jar optaweb-employee-rostering-benchmark/target/optaweb-employee-rostering-benchmark-*.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,
$PATH
:
+
[source,shell]
a. add oc command-line interface to your 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
Both IntelliJ and Eclipse formatters are available here: https://github.com/kiegroup/droolsjbpm-build-bootstrap/tree/master/ide-configuration
=== 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.