Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions SPINE_RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ use `{{% version %}}` shortcode:
```markdown
[CoreJvm]({{% version %}})

[CoreJvm {{% version %}}]({{% get-site-data "spine.core_jvm_repo" %}}/index.html)
[CoreJvm {{% version %}}]({{% get-site-data "repositories.core_jvm_repo" %}}/index.html)
```

Will be rendered as:
Expand All @@ -150,8 +150,8 @@ Will be rendered as:

Where:

* {{% get-site-data "spine.core_jvm_repo" %}} will apply the `core_jvm_repo`
from the `data/spine.yml` file.
* {{% get-site-data "repositories.core_jvm_repo" %}} will apply the `core_jvm_repo`
from the `site-commons` -> `data/repositories.yml` file.
* {{% version %}} adds the full version of the current page -> `1.9.0`, or `2.0.0`.

To provide a specific version for example in FAQ or Release Notes, use:
Expand Down
4 changes: 2 additions & 2 deletions docs/content/docs/1/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ the overview of the documentation sections.

## [Quick Start](docs/quick-start/)
In this section you can learn what it's like to develop with Spine by going
through the code of the [Hello World]({{% get-site-data "spine.examples" %}}/hello/)
through the code of the [Hello World]({{% get-site-data "repositories.examples" %}}/hello/)
example.

## [Introduction](docs/introduction/)
Expand All @@ -31,7 +31,7 @@ This sections provides links to the generated documentation.

## [Examples](docs/examples/)
This page is the entry point for learning from the code of
the [example applications]({{% get-site-data "spine.examples" %}}).
the [example applications]({{% get-site-data "repositories.examples" %}}).

## [DDD Resources](docs/resources/)
A brief selection of learning materials we recommend to the colleagues in DDD.
4 changes: 2 additions & 2 deletions docs/content/docs/1/client-libs/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ headline: Documentation

# Java Client Library

* [Reference documentation]({{% get-site-data "spine.core_api_doc" %}}/client/)
* [Source code]({{% get-site-data "spine.core_jvm_repo" %}}/tree/master/client/)
* [Reference documentation]({{% get-site-data "repositories.core_api_doc" %}}/client/)
* [Source code]({{% get-site-data "repositories.core_jvm_repo" %}}/tree/master/client/)
4 changes: 2 additions & 2 deletions docs/content/docs/1/client-libs/dart.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@ headline: Documentation
---

# Dart Client Library
* [Reference documentation]({{% get-site-data "spine.dart_api_doc" %}}/client/)
* [Source code]({{% get-site-data "spine.dart_repo" %}}/tree/master/client/)
* [Reference documentation]({{% get-site-data "repositories.dart_api_doc" %}}/client/)
* [Source code]({{% get-site-data "repositories.dart_repo" %}}/tree/master/client/)
4 changes: 2 additions & 2 deletions docs/content/docs/1/client-libs/js.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ headline: Documentation

# JavaScript Client Library

* [Reference documentation]({{% get-site-data "spine.js_api_doc" %}})
* [Source code]({{% get-site-data "spine.web_repo" %}}/tree/master/client-js/)
* [Reference documentation]({{% get-site-data "repositories.js_api_doc" %}})
* [Source code]({{% get-site-data "repositories.web_repo" %}}/tree/master/client-js/)
16 changes: 8 additions & 8 deletions docs/content/docs/1/examples/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,31 @@ headline: Spine Examples
---

{{% note-block class="lead" %}}
Examples are available through the [Spine Examples]({{% get-site-data "spine.examples" %}})
Examples are available through the [Spine Examples]({{% get-site-data "repositories.examples" %}})
GitHub organization.
{{% /note-block %}}

Please see the selected list of the examples with the descriptions below.

## Java

- [Hello World]({{% get-site-data "spine.examples" %}}/hello/) — a minimal
- [Hello World]({{% get-site-data "repositories.examples" %}}/hello/) — a minimal
client-server solution described in the [Quick Start](docs/quick-start/) guide.
- [Blog]({{% get-site-data "spine.examples" %}}/blog/) — shows server-side
- [Blog]({{% get-site-data "repositories.examples" %}}/blog/) — shows server-side
functionality of a simple blog.
- [Kanban]({{% get-site-data "spine.examples" %}}/kanban/) — shows orchestrating
- [Kanban]({{% get-site-data "repositories.examples" %}}/kanban/) — shows orchestrating
Aggregates using Process Managers.
- [Airport]({{% get-site-data "spine.examples" %}}/airport/) — integrating
- [Airport]({{% get-site-data "repositories.examples" %}}/airport/) — integrating
a third-party systems using a Bounded Context. This example accompanies
the [“Integration with a Third Party”](docs/guides/integration/) guide.
- [To-Do List]({{% get-site-data "spine.examples" %}}/todo-list/) — a simple
- [To-Do List]({{% get-site-data "repositories.examples" %}}/todo-list/) — a simple
task management system with multiple client applications.
If you want to see a bigger picture of a Spine-based solution,
have a look at this example.

## JavaScript

- [Simple HTML/JS To-Do List client]({{% get-site-data "spine.examples" %}}/todo-list/tree/master/client/html-js/)
- [Simple HTML/JS To-Do List client]({{% get-site-data "repositories.examples" %}}/todo-list/tree/master/client/html-js/)
— a client app with very basic features.
- [To-Do List client on Angular]({{% get-site-data "spine.examples" %}}/todo-list/tree/master/client/angular/)
- [To-Do List client on Angular]({{% get-site-data "repositories.examples" %}}/todo-list/tree/master/client/angular/)
— a more featured client built with Angular 10.
6 changes: 3 additions & 3 deletions docs/content/docs/1/guides/gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,8 +158,8 @@ Spine Model Compiler is a Gradle plugin which executes all the code generation r
Gradle tasks as well as the `modelCompiler { }` extension, which allows you to configure those
tasks.

See the API reference for the list of the [declared tasks]({{% get-site-data "spine.base_api_doc" %}}/plugin-base/plugin-base/io.spine.tools.gradle/-model-compiler-task-name/)
and the [codegen configuration options]({{% get-site-data "spine.base_api_doc" %}}/model-compiler/model-compiler/io.spine.tools.gradle.compiler/-extension/)
See the API reference for the list of the [declared tasks]({{% get-site-data "repositories.base_api_doc" %}}/plugin-base/plugin-base/io.spine.tools.gradle/-model-compiler-task-name/)
and the [codegen configuration options]({{% get-site-data "repositories.base_api_doc" %}}/model-compiler/model-compiler/io.spine.tools.gradle.compiler/-extension/)

### ProtoJS Plugin

Expand All @@ -168,5 +168,5 @@ The plugin adds the `generateJsonParsers` task, which appends generated JS files
Protobuf messages out of plain JS objects.

The plugin also provides the `protoJs { }` extension, which allows you to configure JS code
generation. See the [API reference]({{% get-site-data "spine.base_api_doc" %}}/proto-js-plugin/proto-js-plugin/io.spine.js.gradle/-extension/)
generation. See the [API reference]({{% get-site-data "repositories.base_api_doc" %}}/proto-js-plugin/proto-js-plugin/io.spine.js.gradle/-extension/)
for more info.
28 changes: 14 additions & 14 deletions docs/content/docs/1/guides/integration.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ parse and validate domain Events, which we then publish to a Bounded Context, im

The Event Consumer, as depicted above, implements the Event transformation logic. In order to
establish this communication channel, the **Airplane Supplies** system declares a [gRPC](https://grpc.io/)
service. In [`supplies_service.proto`]({{% get-site-data "spine.examples" %}}/airport/blob/master/airplane-supplies/src/main/proto/spine/example/airport/supplies/supplies_service.proto):
service. In [`supplies_service.proto`]({{% get-site-data "repositories.examples" %}}/airport/blob/master/airplane-supplies/src/main/proto/spine/example/airport/supplies/supplies_service.proto):

<embed-code file="examples/airport/airplane-supplies/src/main/proto/spine/example/airport/supplies/supplies_service.proto"
start="message Subscription*"
Expand All @@ -111,7 +111,7 @@ enum EventType {
PREFLIGHT_CHECK_COMPLETE = 3;
}
```
The **Airplane Supplies** system [implements]({{% get-site-data "spine.examples" %}}/airport/blob/master/airplane-supplies/src/main/java/io/spine/example/airport/supplies/SuppliesEventProducer.java)
The **Airplane Supplies** system [implements]({{% get-site-data "repositories.examples" %}}/airport/blob/master/airplane-supplies/src/main/java/io/spine/example/airport/supplies/SuppliesEventProducer.java)
the service and exposes it on an endpoint available to the **Takeoffs and Landings** system:

<embed-code file="examples/airport/airplane-supplies/src/main/java/io/spine/example/airport/supplies/SuppliesEventProducer.java"
Expand All @@ -138,9 +138,9 @@ public final class SuppliesEventProducer extends SuppliesEventProducerImplBase {
```
The event producer obtains cached historical events, matches them to the received subscription,
and sends them to the client. The **Takeoffs and Landings** system implements
an&nbsp;[event consumer]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/supplies/SuppliesEventConsumer.java)
an&nbsp;[event consumer]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/supplies/SuppliesEventConsumer.java)
which constructs a subscription and maintains it as long as the system needs to receive more events.
The consumer broadcasts the received Events via an instance of [`ThirdPartyContext`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.integration/-third-party-context/):
The consumer broadcasts the received Events via an instance of [`ThirdPartyContext`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.integration/-third-party-context/):

<embed-code file="examples/airport/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/supplies/SuppliesEventConsumer.java"
fragment="onNext"></embed-code>
Expand All @@ -161,7 +161,7 @@ public void onNext(SuppliesEvent event) {
context.emittedEvent(eventMessage, actorContext);
}
```
The [`AircraftAggregate`]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/AircraftAggregate.java)
The [`AircraftAggregate`]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/AircraftAggregate.java)
reacts on those events. Note that all the events published through `ThirdPartyContext` are always
`external`, so should be the subscriber and reactor methods.

Expand Down Expand Up @@ -194,8 +194,8 @@ the Customer/Supplier, **Takeoffs and Landings** Context is downstream from anot
case from **Weather**. Unlike the Customer/Supplier, **Weather** does not provide a specific
Event Producer, which would adapt **Weather** Events to the needs of **Takeoffs and Landings**.
Also, the Event Consumer on the **Takeoffs and Landings** side is rather thin and devoid of logic.
The Consumer consists of two parts: [`WeatherUpdateClient`]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/weather/WeatherUpdateClient.java)
and [`WeatherUpdateEndpoint`]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/weather/WeatherUpdateEndpoint.java).
The Consumer consists of two parts: [`WeatherUpdateClient`]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/weather/WeatherUpdateClient.java)
and [`WeatherUpdateEndpoint`]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/weather/WeatherUpdateEndpoint.java).
The client polls the pull-style API of the **Weather** system.

<embed-code file="examples/airport/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/weather/WeatherUpdateClient.java"
Expand Down Expand Up @@ -250,7 +250,7 @@ public void receiveNew(WeatherMeasurement measurement) {
previous = measurement;
}
```
The [`FlightAggregate`]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/FlightAggregate.java)
The [`FlightAggregate`]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/FlightAggregate.java)
reacts on those events and changes its state as the result:

<embed-code file="examples/airport/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/FlightAggregate.java"
Expand Down Expand Up @@ -294,12 +294,12 @@ a large monolithic legacy system (a.k.a. a Big Ball of Mud) into Bounded Context
an ACL prevents the new "clean" Contexts from merging back into the Mud. If you are looking for
a way to add functionality to a complex legacy system without increasing the technical debt, look
no further. The Anticorruption Layer between **Takeoffs and Landings** and **Security Checks**
is composed of a [polling client]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/PassengerClient.java),
is composed of a [polling client]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/PassengerClient.java),
which performs all the technical work of obtaining and validating data, and a [Process Manager](docs/introduction/concepts#process-manager)
for the [Boarding process]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/BoardingProcman.java).
for the [Boarding process]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/BoardingProcman.java).
The **Security Checks** API provides data for each passenger independently. The client polls
the data and publishes many intermediate `PassengerBoarded` or `PassengerDeniedBoarding` external
events via [`ThirdPartyContext`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.integration/-third-party-context/):
events via [`ThirdPartyContext`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.integration/-third-party-context/):

<embed-code file="examples/airport/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/PassengerClient.java"
fragment="Fetch passengers"></embed-code>
Expand Down Expand Up @@ -327,9 +327,9 @@ private void emitIfStatusKnown(TsaPassenger tsaPassenger) {
}
}
```
The [Process Manager]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/BoardingProcman.java)
The [Process Manager]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/BoardingProcman.java)
accumulates the Events and, once the whole *Flight* is boarded, emits a `BoardingComplete` event,
which is later consumed by the&nbsp;[*Flight* Aggregate]({{% get-site-data "spine.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/FlightAggregate.java).
which is later consumed by the&nbsp;[*Flight* Aggregate]({{% get-site-data "repositories.examples" %}}/airport/blob/master/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/FlightAggregate.java).

<embed-code file="examples/airport/takeoffs-and-landings/src/main/java/io/spine/example/airport/tl/passengers/BoardingProcman.java"
fragment="BoardingProcman"></embed-code>
Expand Down Expand Up @@ -357,4 +357,4 @@ your current system to work in an event-driven manner. A correct integration str
isolate and perfect your own domain language while on the work of many external systems. Read more
about Bounded Contexts and their interactions in the "Domain-Driven Design" book by Eric Evans.

The full version of the source code used in this article could be found in the&nbsp;[Airport Example repository]({{% get-site-data "spine.examples" %}}/airport).
The full version of the source code used in this article could be found in the&nbsp;[Airport Example repository]({{% get-site-data "repositories.examples" %}}/airport).
2 changes: 1 addition & 1 deletion docs/content/docs/1/introduction/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -216,7 +216,7 @@ assertEntity.hasStateThat()
### Configuring Server Environment

For information on configuring server environment of a Spine-based application, please
see the reference documentation of the [`ServerEnvironment`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server/-server-environment/)
see the reference documentation of the [`ServerEnvironment`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server/-server-environment/)
class.

### Assembling Application
Expand Down
8 changes: 4 additions & 4 deletions docs/content/docs/1/introduction/concepts.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ generates events in response to changes in the domain.
{{% note-block class="note" %}}
In some cases, Event Reactor may ignore the event, returning `Nothing`.
It usually happens when a method returns one of the
[`Either`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.tuple/-either/) types, with `Nothing` as
[`Either`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.tuple/-either/) types, with `Nothing` as
one of the possible options: `EitherOf2<TaskReAssigned, Nothing>`.
{{% /note-block %}}

Expand Down Expand Up @@ -186,9 +186,9 @@ Repository encapsulates storage, retrieval, and search of Entities as if it were
a collection of objects. It isolates domain objects from the details of the database access code.

The applications you develop using Spine usually have the following types of repositories:
* [`AggregateRepository`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.aggregate/-aggregate-repository/),
* [`ProcessManagerRepository`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.procman/-process-manager/),
* [`ProjectionRepository`]({{% get-site-data "spine.core_api_doc" %}}/server/server/io.spine.server.projection/-projection-repository/).
* [`AggregateRepository`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.aggregate/-aggregate-repository/),
* [`ProcessManagerRepository`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.procman/-process-manager/),
* [`ProjectionRepository`]({{% get-site-data "repositories.core_api_doc" %}}/server/server/io.spine.server.projection/-projection-repository/).

### Snapshot

Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/1/introduction/naming-conventions.md
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ which seem hierarchical for convenience. When it comes to placing source code fi
in a project, there is usually nesting formed by the directories in a file system.

Spine framework uses this notion of “nesting” for marking multiple packages of a server-side code
[belonging to a Bounded Context]({{% get-site-data "spine.core_api_doc" %}}/core/core/io.spine.core/-bounded-context/)
[belonging to a Bounded Context]({{% get-site-data "repositories.core_api_doc" %}}/core/core/io.spine.core/-bounded-context/)
easier. But this is a convenience feature, not a requirement.

Please see our recommendations for organizing generated and handcrafted code in sections below.
Expand Down
2 changes: 1 addition & 1 deletion docs/content/docs/1/quick-start/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ tests the Hello&nbsp;context.

1. JDK version 8 or higher.
2. Git.
3. The source code of the [Hello World]({{% get-site-data "spine.examples" %}}/hello) example.
3. The source code of the [Hello World]({{% get-site-data "repositories.examples" %}}/hello) example.

```bash
git clone git@github.com:spine-examples/hello.git
Expand Down
Loading