Skip to content

Latest commit

 

History

History
130 lines (83 loc) · 3.66 KB

File metadata and controls

130 lines (83 loc) · 3.66 KB

Maintenance Scheduling (Java, Quarkus, Maven)

Schedule maintenance jobs to crews over time to reduce both premature and overdue maintenance.

Maintenance Scheduling Screenshot

Constraints

Name Level Description
Crew conflict Hard A maintenance crew cannot be assigned to two overlapping jobs.
Min start date Hard A job must not start before its minimum start date.
Max end date Hard A job must not finish after its maximum end date.
Before ideal end date Soft Avoid finishing a job too early before its ideal end date.
After ideal end date Soft Avoid finishing a job after its ideal end date.
Tag conflict Soft Jobs sharing the same tag should not overlap.

Prerequisites

  1. Install Java and Maven, for example with Sdkman:

    $ sdk install java
    $ sdk install maven

Run the application

  1. Git clone the timefold-quickstarts repo and navigate to this directory:

    $ git clone https://github.com/TimefoldAI/timefold-quickstarts.git
    ...
    $ cd timefold-quickstarts/java/maintenance-scheduling
  2. (Optional) If you want to run a licensed edition (Plus / Enterprise), set up your license key first. See the Timefold license tool for instructions.

  3. Start the application with Maven:

    1. Community Edition

      $ mvn quarkus:dev
    2. Plus / Enterprise Edition: The profile sets up the correct Maven artifacts to run the licensed version. See the pom.xml for the implementation details.

      $ mvn quarkus:dev -Denterprise
  4. Visit http://localhost:8080 in your browser.

  5. Click on the Solve button.

Then try live coding:

  • Make some changes in the source code.
  • Refresh your browser (F5).

Notice that those changes are immediately in effect.

Run the packaged application

When you're done iterating in quarkus:dev mode, package the application to run as a conventional jar file.

  1. Compile it with Maven:

    $ mvn package
  2. Run it:

    $ java -jar ./target/quarkus-app/quarkus-run.jar

    Note To run it on port 8081 instead, add -Dquarkus.http.port=8081.

  3. Visit http://localhost:8080 in your browser.

  4. Click on the Solve button.

Run the application in a container

  1. Build a container image:

    $ mvn package -Dcontainer
  2. Run a container:

    $ docker run -p 8080:8080 $USER/maintenance-scheduling:1.0-SNAPSHOT

Run it native

To increase startup performance for serverless deployments, build the application as a native executable:

  1. Install GraalVM and gu install the native-image tool.

  2. Compile it natively. This takes a few minutes:

    $ mvn package -Dnative -DskipTests
  3. Run the native executable:

    $ ./target/*-runner
  4. Visit http://localhost:8080 in your browser.

  5. Click on the Solve button.

More information

Visit timefold.ai.