File size: 3,748 Bytes
f568829 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
= 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].
|