Package-level declarations

Types

Link copied to clipboard

Where an aggregate's id comes from, as @AggregateRoot(idSource) declares it.

Link copied to clipboard
data class AggregateRef(val type: AggregateType, val tenantId: String, val id: String)

The identity of one aggregate instance: its type, its tenant and its id. Decided once, at admission; every unique key in the log includes the tenant (axiom A6), so two tenants may use the same id without meeting.

Link copied to clipboard
data class AggregateType(val context: String, val name: String)

The kind of an aggregate: the bounded context it belongs to and its name within it. It is a name, not a JVM class.

Link copied to clipboard
enum class Creation : Enum<Creation>

How a command relates to its aggregate's existence, as @CreateAggregate and @AllowCreate declare it. The Manifest states it in its own vocabulary (Creation of wow-manifest), which a test of that module keeps in step.

Link copied to clipboard
enum class Ownership : Enum<Ownership>

Who an aggregate belongs to besides its tenant, as @AggregateRoot(ownership) declares it.

Link copied to clipboard
data class Scope(val ownerId: String? = null, val spaceId: String? = null)

An owner and a space, together: who an aggregate belongs to. One value type serves commands, event streams, snapshots and query authorization, and where it sits says what it means: on a command it is the caller's scope that admission decided; on an event stream or a snapshot it is the aggregate's own, after that commit.