StatelessSagaFunction

A stateless saga function that processes domain events and generates command streams. This function wraps a delegate message function and extends its behavior to handle command execution and collection into a CommandStream for stateless saga processing.

Constructors

Link copied to clipboard
constructor(delegate: MessageFunction<Any, DomainEventExchange<*>, Mono<*>>, commandGateway: CommandGateway, commandMessageFactory: CommandMessageFactory)

Properties

Link copied to clipboard
open override val contextName: String
Link copied to clipboard
open override val delegate: MessageFunction<Any, DomainEventExchange<*>, Mono<*>>

The underlying message function that handles the domain event processing.

Link copied to clipboard
open override val functionKind: FunctionKind
Link copied to clipboard
open override val name: String
Link copied to clipboard
open override val processor: Any

The processor instance that contains the actual business logic for handling messages.

Link copied to clipboard
open override val processorName: String

The name of the processor class, derived from the simple name of the processor's class.

Link copied to clipboard
open override val qualifiedName: String

The fully qualified name of the function, formatted as "processorName.functionName(supportedTypeSimpleName)". This provides a unique identifier for the function.

Link copied to clipboard
open override val supportedTopics: Set<NamedAggregate>

The set of named aggregates (topics) that this function supports. The function will only process messages that match one of these aggregates.

Link copied to clipboard
open override val supportedType: Class<*>

The class type of message bodies that this function can process. Used to determine if a message is supported by checking if the message body is an instance of this type.

Functions

Link copied to clipboard
open override fun <A : Annotation> getAnnotation(annotationClass: Class<A>): A?

Retrieves an annotation of the specified type from the function's metadata.

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
open fun handle(exchange: DomainEventExchange<*>): Mono<CommandStream>

Handles the message exchange by invoking the function. This method provides an alternative way to process the exchange.

Link copied to clipboard
open operator override fun invoke(exchange: DomainEventExchange<*>): Mono<CommandStream>

Invokes the message function with the given exchange. This is the primary method to execute the function's logic.

Link copied to clipboard
open fun isEmpty(): Boolean
Link copied to clipboard
Link copied to clipboard
open fun isSameFunction(functionInfo: FunctionInfo): Boolean
Link copied to clipboard

Checks if the given message is supported by this function. A message is supported if its body is an instance of the supported type and its aggregate matches one of the supported topics.

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
fun FunctionInfo.toWaitSignal(id: String, waitCommandId: String, commandId: String, aggregateId: AggregateId, stage: CommandStage, isLastProjection: Boolean = false, aggregateVersion: Int? = null, errorCode: String = ErrorCodes.SUCCEEDED, errorMsg: String = ErrorCodes.SUCCEEDED_MESSAGE, bindingErrors: List<BindingError> = emptyList(), result: Map<String, Any> = emptyMap(), commands: List<String> = listOf(), signalTime: Long = System.currentTimeMillis()): WaitSignal