Free Employee Scheduling Application with OptaPlanner and Apache Isis

Here, I want to briefly talk about two open source projects I love playing with.

OptaPlanner is a constraint solver. It optimises business resource planning use cases, such as Vehicle Routing, Employee Rostering, Cloud Optimization, Task Assignment, Job Scheduling, Bin Packing and many more that every companies face daily. It can help squeeze the last bit of optimisation in your planning challenges and improve service quality and reduce costs. It is a lightweight, embeddable planning engine, consisting from a single .jar file.

Apache Isis on the other hand is a framework for rapidly developing domain-driven apps in Java. Write your business logic in entities, domain services or view models, and the framework dynamically generates a representation of that domain model as a webapp or a rich hypermedia REST API. It is a full-stack application where once you write your domain layer, you get the persistence and presentation layer for free. It let's you very quickly to developer and iterate over the domain model.

Both of these projects allow developers create user focused applications and solve read world problems. And both of them are centred around domain-driven design approach and fit nicely into Java development model using annotations. Last year, around this time, I decide to combine them and created a pet project called RotaBuilder. I migrated the existing Java Swing based Employee Rostering application from OptaPlanner examples to Apache Isis and turn it into a containerized web application. Below is a screenshot of an employee view.

An employee view created in Apache Isis and OptaPlanner
The application is on github and offers the following features:
  • Manage employees
  • Manage skills
  • Manage days on/off requests
  • Manage shift on/off requests
  • Manage contracts
  • Manage shifts
  • Create automatic employee-shift assignments
It is far from complete, but I probably will not have time to work on it in a near future. I decide to push on public github in case anybody wants to learn these projects by developing an employee rostering application. For me, the best way for learning something has been doing it.

Local Build and Run with Maven

It is straightforward to locally build and run with maven.
mvn clean install -DskipTests=true
cd webapp
mvn jetty:run
then go to http://localhost:8080/

Run with Docker

It is also available as Docker image
docker run -p 8080:8080 bibryam/rotabuilder

Live Demo on Red Hat OpenShift

See live demo (if it is) running at


Post a Comment

About Me