CommandAggregate

Represents a command aggregate that processes commands and manages state transitions.

A command aggregate subscribes to command messages, validates business rules using the current state from the state aggregate, and publishes domain events. It coordinates between command processing and state management.

Key responsibilities:

  1. Subscribe to command messages

  2. Validate business rules using state aggregate's current state

  3. Publish domain events

Parameters

C

The type of the command aggregate root.

S

The type of the state aggregate.

Inheritors

Properties

Link copied to clipboard
open override val aggregateId: AggregateId
Link copied to clipboard
abstract val aggregateName: String
Link copied to clipboard
abstract val aggregateType: Class<C>
Link copied to clipboard
abstract val commandRoot: C

The command aggregate root instance.

Link copied to clipboard

The current state of command processing.

Link copied to clipboard
abstract val contextName: String
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract val processorName: String
Link copied to clipboard
abstract val state: StateAggregate<S>

The associated state aggregate containing the current state.

Link copied to clipboard
open override val version: Int

Functions

Link copied to clipboard
fun NamedAggregate.aggregateId(id: String = generateId(), tenantId: String = TenantId.DEFAULT_TENANT_ID): DefaultAggregateId

Creates an AggregateId for this NamedAggregate with the specified parameters.

Link copied to clipboard

Finds the aggregate type class associated with this named aggregate.

Link copied to clipboard

Converts this NamedAggregate to its corresponding AggregateMetadata.

Link copied to clipboard

Generates a unique ID string for this NamedAggregate.

Link copied to clipboard
fun NamedBoundedContext.getContextAlias(boundedContext: BoundedContext? = MetadataSearcher.metadata.contexts[contextName]): String
Link copied to clipboard

Gets the context alias prefix for this bounded context.

Link copied to clipboard

Checks if the named aggregate is available locally at runtime.

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
abstract override fun process(exchange: ServerCommandExchange<*>): Mono<DomainEventStream>

Processes a command exchange for this aggregate instance.

Link copied to clipboard

Finds the aggregate type class associated with this named aggregate, throwing an exception if not found.

Link copied to clipboard

Extension function to convert a NamedAggregate to an EventNamedAggregate.

Link copied to clipboard
fun AggregateIdCapable.toGroupKey(parallelism: Int = DEFAULT_PARALLELISM): Int

Computes a grouping key for parallel processing based on the aggregate ID.

Link copied to clipboard

Converts this NamedAggregate to its string representation.

Link copied to clipboard

Converts this NamedAggregate to a string representation using the context alias.