All Downloads are FREE. Search and download functionalities are using the official Maven repository.

no.ks.kes.lib.SagaRepository.kt Maven / Gradle / Ivy

package no.ks.kes.lib

import java.util.*
import kotlin.reflect.KClass


interface SagaRepository : TransactionalRepository, HighWaterMarkedRepository {
    fun  getSagaState(correlationId: UUID, serializationId: String, sagaStateClass: KClass): T?
    fun update(states: Set)
    fun getReadyTimeouts(): Timeout?
    fun deleteTimeout(timeout: Timeout)

    data class Timeout(val sagaCorrelationId: UUID, val sagaSerializationId: String, val timeoutId: String)
    sealed class Operation {

        abstract val newState: Any?
        abstract val commands: List>

        data class SagaUpdate(
                val correlationId: UUID,
                val serializationId: String,
                override val newState: Any?,
                val timeouts: Set,
                override val commands: List>
        ) : Operation()

        data class Insert(
                val correlationId: UUID,
                val serializationId: String,
                override val newState: Any,
                override val commands: List>
        ) : Operation()
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy