| | = Flight Crew Scheduling (Java, Quarkus, Maven) |
| |
|
| | Assign crew to flights to produce a better schedule for flight assignments. |
| |
|
| | image::./flight-crew-scheduling-screenshot.png[] |
| |
|
| | * <<run,Run the application>> |
| | * <<enterprise,Run the application with Timefold Solver Enterprise Edition>> |
| | * <<package,Run the packaged application>> |
| | * <<container,Run the application in a container>> |
| | * <<native,Run it native>> |
| |
|
| | == Prerequisites |
| |
|
| | . Install Java and Maven, for example with https://sdkman.io[Sdkman]: |
| | + |
| | ---- |
| | $ sdk install java |
| | $ sdk install maven |
| | ---- |
| |
|
| | [[run]] |
| | == Run the application |
| |
|
| | . Git clone the timefold-quickstarts repo and navigate to this directory: |
| | + |
| | [source, shell] |
| | ---- |
| | $ git clone https://github.com/TimefoldAI/timefold-quickstarts.git |
| | ... |
| | $ cd timefold-quickstarts/java/flight-crew-scheduling |
| | ---- |
| |
|
| | . Start the application with Maven: |
| | + |
| | [source, shell] |
| | ---- |
| | $ mvn quarkus:dev |
| | ---- |
| |
|
| |
|
| | . Visit http://localhost:8080 in your browser. |
| |
|
| | . 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. |
| |
|
| | [[enterprise]] |
| | == Run the application with Timefold Solver Enterprise Edition |
| |
|
| | For high-scalability use cases, switch to https://docs.timefold.ai/timefold-solver/latest/enterprise-edition/enterprise-edition[Timefold Solver Enterprise Edition], |
| | our commercial offering. |
| | https://timefold.ai/contact[Contact Timefold] to obtain the credentials required to access our private Enterprise Maven repository. |
| |
|
| | . Create `.m2/settings.xml` in your home directory with the following content: |
| | + |
| | -- |
| | [source,xml,options="nowrap"] |
| | ---- |
| | <settings> |
| | ... |
| | <servers> |
| | <server> |
| | <!-- Replace "my_username" and "my_password" with credentials obtained from a Timefold representative. --> |
| | <id>timefold-solver-enterprise</id> |
| | <username>my_username</username> |
| | <password>my_password</password> |
| | </server> |
| | </servers> |
| | ... |
| | </settings> |
| | ---- |
| |
|
| | See https://maven.apache.org/settings.html[Settings Reference] for more information on Maven settings. |
| | -- |
| | |
| | . Start the application with Maven: |
| | + |
| | [source,shell] |
| | ---- |
| | $ mvn clean quarkus:dev -Denterprise |
| | ---- |
| |
|
| | . Visit http://localhost:8080 in your browser. |
| |
|
| | . 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. |
| |
|
| | [[package]] |
| | == Run the packaged application |
| |
|
| | When you're done iterating in `quarkus:dev` mode, |
| | package the application to run as a conventional jar file. |
| |
|
| | . Build it with Maven: |
| | + |
| | [source, shell] |
| | ---- |
| | $ mvn package |
| | ---- |
| | . Run the Maven output: |
| | + |
| | [source, shell] |
| | ---- |
| | $ java -jar ./target/quarkus-app/quarkus-run.jar |
| | ---- |
| | + |
| | [NOTE] |
| | ==== |
| | To run it on port 8081 instead, add `-Dquarkus.http.port=8081`. |
| | ==== |
| |
|
| | . Visit http://localhost:8080 in your browser. |
| |
|
| | . Click on the *Solve* button. |
| |
|
| | [[container]] |
| | == Run the application in a container |
| |
|
| | . Build a container image: |
| | + |
| | [source, shell] |
| | ---- |
| | $ mvn package -Dcontainer |
| | ---- |
| | The container image name |
| | . Run a container: |
| | + |
| | [source, shell] |
| | ---- |
| | $ docker run -p 8080:8080 --rm $USER/flight-crew-scheduling:1.0-SNAPSHOT |
| | ---- |
| |
|
| | [[native]] |
| | == Run it native |
| |
|
| | To increase startup performance for serverless deployments, |
| | build the application as a native executable: |
| |
|
| | . https://quarkus.io/guides/building-native-image#configuring-graalvm[Install GraalVM and gu install the native-image tool] |
| |
|
| | . Compile it natively. This takes a few minutes: |
| | + |
| | [source, shell] |
| | ---- |
| | $ mvn package -Dnative |
| | ---- |
| |
|
| | . Run the native executable: |
| | + |
| | [source, shell] |
| | ---- |
| | $ ./target/*-runner |
| | ---- |
| |
|
| | . Visit http://localhost:8080 in your browser. |
| |
|
| | . Click on the *Solve* button. |
| |
|
| | == More information |
| |
|
| | Visit https://timefold.ai[timefold.ai]. |
| |
|