Skip to content

Commit 75930a9

Browse files
TomCoolsoemebamo
andauthored
docs: Introduce initial docs for service module (Preview) (TimefoldAI#2350)
We have introduced the "Service" module, but this did not contain any documentation yet. This PR does: - Label some existing pages to be reworked (frontmatter data, no further impact) - Introduce a new navigation item: _Building a service (Preview)_ - Introduce a couple of pages which describe basic service capabilities - Introduce a new quickstart explicitly built using the service module, and reworked some of the shared files to avoid too much duplication across quickstarts. - Rework the quickstart page to mention the distinction between using the solver as a _library_ vs a _service_ --------- Co-authored-by: Jurriaan Persyn <oemebamo@gmail.com>
1 parent 4b24bb0 commit 75930a9

31 files changed

Lines changed: 1580 additions & 155 deletions
226 KB
Loading

docs/src/modules/ROOT/nav.adoc

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,39 @@
22
* xref:planning-ai-concepts.adoc[leveloffset=+1]
33
* Getting started
44
** xref:quickstart/overview.adoc[leveloffset=+1]
5-
** xref:quickstart/hello-world/hello-world-quickstart.adoc[leveloffset=+1]
6-
** xref:quickstart/quarkus/quarkus-quickstart.adoc[leveloffset=+1]
7-
** xref:quickstart/spring-boot/spring-boot-quickstart.adoc[leveloffset=+1]
8-
** xref:quickstart/quarkus-vehicle-routing/quarkus-vehicle-routing-quickstart.adoc[leveloffset=+1]
5+
** Embed as a library
6+
*** xref:quickstart/hello-world/hello-world-quickstart.adoc[Hello World Guide]
7+
*** xref:quickstart/quarkus/quarkus-quickstart.adoc[Quarkus Guide]
8+
*** xref:quickstart/spring-boot/spring-boot-quickstart.adoc[Spring Boot Guide]
9+
** xref:quickstart/service/getting-started.adoc[Run as a service (Preview)]
10+
* Example use cases
11+
** xref:quickstart/quarkus-vehicle-routing/quarkus-vehicle-routing-quickstart.adoc[Vehicle Routing (Guide)]
12+
** https://github.com/TimefoldAI/timefold-quickstarts#-employee-scheduling[Employee Scheduling^]
13+
** https://github.com/TimefoldAI/timefold-quickstarts#-maintenance-scheduling[Maintenance Scheduling^]
14+
** https://github.com/TimefoldAI/timefold-quickstarts#-food-packaging[Food Packaging^]
15+
** https://github.com/TimefoldAI/timefold-quickstarts#-order-picking[Order Picking^]
16+
** https://github.com/TimefoldAI/timefold-quickstarts#-school-timetabling[School Timetabling^]
17+
** https://github.com/TimefoldAI/timefold-quickstarts#-facility-location-problem[Facility Location^]
18+
** https://github.com/TimefoldAI/timefold-quickstarts#-conference-scheduling[Conference Scheduling^]
19+
** https://github.com/TimefoldAI/timefold-quickstarts#-bed-allocation-scheduling[Bed Allocation^]
20+
** https://github.com/TimefoldAI/timefold-quickstarts#-flight-crew-scheduling[Flight Crew Scheduling^]
21+
** https://github.com/TimefoldAI/timefold-quickstarts#-meeting-scheduling[Meeting Scheduling^]
22+
** https://github.com/TimefoldAI/timefold-quickstarts#-task-assigning[Task Assigning^]
23+
** https://github.com/TimefoldAI/timefold-quickstarts#-project-job-scheduling[Project Job Scheduling^]
24+
** https://github.com/TimefoldAI/timefold-quickstarts#-sports-league-scheduling[Sports League Scheduling^]
25+
** https://github.com/TimefoldAI/timefold-quickstarts#-tournament-scheduling[Tournament Scheduling^]
926
* Using Timefold Solver
1027
** xref:using-timefold-solver/overview.adoc[leveloffset=+1]
1128
** xref:using-timefold-solver/configuration.adoc[leveloffset=+1]
1229
** xref:using-timefold-solver/modeling-planning-problems.adoc[leveloffset=+1]
1330
** xref:using-timefold-solver/running-the-solver.adoc[leveloffset=+1]
1431
** xref:using-timefold-solver/benchmarking-and-tweaking.adoc[leveloffset=+1]
32+
** xref:service/overview.adoc[Building a service (Preview)]
33+
*** xref:service/rest-api.adoc[leveloffset=+1]
34+
*** xref:service/modeling-changes.adoc[leveloffset=+1]
35+
*** xref:service/constraint-weights.adoc[leveloffset=+1]
36+
*** xref:service/demo-data.adoc[leveloffset=+1]
37+
*** xref:service/exposing-metrics.adoc[leveloffset=+1]
1538
* Constraints and score
1639
** xref:constraints-and-score/overview.adoc[leveloffset=+1]
1740
** xref:constraints-and-score/score-calculation.adoc[leveloffset=+1]

docs/src/modules/ROOT/pages/constraints-and-score/constraint-configuration.adoc

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@
44
:sectnums:
55
:icons: font
66

7+
:relevance: library-and-service
8+
:notes: service module has some different patterns to deal with this.
9+
10+
11+
712
Deciding the correct xref:constraints-and-score/overview.adoc#scoreConstraintWeight[weight] and
813
xref:constraints-and-score/overview.adoc#scoreLevel[level] for each constraint is not easy.
914
It often involves negotiating with different stakeholders and their priorities.

docs/src/modules/ROOT/pages/constraints-and-score/overview.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
:doctype: book
66
:sectnums:
77
:icons: font
8-
8+
:relevance: library-and-service
99

1010
[#scoreTerminology]
1111
== Score terminology

docs/src/modules/ROOT/pages/design-patterns/design-patterns.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44
:sectnums:
55
:icons: font
66

7+
:relevance: library-and-service
8+
:notes: Most of this should be in the "how to model" reference. Design patterns is too weak a term.
9+
10+
711

812
[#designPatternsIntroduction]
913
== Design patterns introduction

docs/src/modules/ROOT/pages/frequently-asked-questions.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
= FAQ
22
:doctype: book
33
:icons: font
4+
:relevance: library-and-service
45

56
== How is Timefold Solver Licensed?
67

docs/src/modules/ROOT/pages/integration/integration.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
:doctype: book
44
:sectnums:
55
:icons: font
6+
:relevance: library-and-service
7+
:notes: Relevant, needs some rewrites. Also should include the "Getting Started" for Quarkus (raw) and Spring
8+
9+
610

711

812
[#integrationOverview]

docs/src/modules/ROOT/pages/introduction.adoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ It xref:integration/integration.adoc#integration[integrates very easily] with ot
2929
Timefold Solver works on any Java Virtual Machine and is compatible with the major JVM languages and all major platforms.
3030
It also supports Kotlin.
3131

32+
You can use Timefold Solver to build an xref:quickstart/overview.adoc#runAsAService[optimization service],
33+
or embed it into your software as a xref:quickstart/overview.adoc#embedAsALibrary[library].
34+
3235
:!sectnums:
3336
== Next
3437

docs/src/modules/ROOT/pages/optimization-algorithms/overview.adoc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
:doctype: book
88
:sectnums:
99
:icons: font
10+
:relevance: library-and-service
11+
:notes: Relevant, but some of this can move to a "shared" section instead.
12+
1013

1114
== The basics
1215

docs/src/modules/ROOT/pages/quickstart/hello-world/hello-world-quickstart.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,7 @@ public class TimetableApp {
353353
.filter(lesson -> lesson.getTimeslot() != null && lesson.getRoom() != null)
354354
.collect(Collectors.groupingBy(Lesson::getTimeslot, Collectors.groupingBy(Lesson::getRoom)));
355355
LOGGER.info("| | " + rooms.stream()
356-
.map(room -> String.format("%-10s", room.getName())).collect(Collectors.joining(" | ")) + " |");
356+
.map(room -> String.format("%-10s", room.name())).collect(Collectors.joining(" | ")) + " |");
357357
LOGGER.info("|" + "------------|".repeat(rooms.size() + 1));
358358
for (Timeslot timeslot : timetable.getTimeslots()) {
359359
List<List<Lesson>> cells = rooms.stream()

0 commit comments

Comments
 (0)