#1113 Add uml-reverse-mapper plugin
This commit is contained in:
222
saga/etc/saga.urm.puml
Normal file
222
saga/etc/saga.urm.puml
Normal file
@ -0,0 +1,222 @@
|
||||
@startuml
|
||||
package com.iluwatar.saga.orchestration {
|
||||
class ChapterResult<K> {
|
||||
- state : State
|
||||
- value : K
|
||||
~ ChapterResult<K>(value : K, state : State)
|
||||
+ failure(val : K) : ChapterResult<K> {static}
|
||||
+ getValue() : K
|
||||
+ isSuccess() : boolean
|
||||
+ success(val : K) : ChapterResult<K> {static}
|
||||
}
|
||||
enum State {
|
||||
+ FAILURE {static}
|
||||
+ SUCCESS {static}
|
||||
+ valueOf(name : String) : State {static}
|
||||
+ values() : State[] {static}
|
||||
}
|
||||
class FlyBookingService {
|
||||
+ FlyBookingService()
|
||||
+ getName() : String
|
||||
}
|
||||
class HotelBookingService {
|
||||
+ HotelBookingService()
|
||||
+ getName() : String
|
||||
+ rollback(value : String) : ChapterResult<String>
|
||||
}
|
||||
interface OrchestrationChapter<K> {
|
||||
+ getName() : String {abstract}
|
||||
+ process(K) : ChapterResult<K> {abstract}
|
||||
+ rollback(K) : ChapterResult<K> {abstract}
|
||||
}
|
||||
class OrderService {
|
||||
+ OrderService()
|
||||
+ getName() : String
|
||||
}
|
||||
class Saga {
|
||||
- chapters : List<Chapter>
|
||||
- Saga()
|
||||
+ chapter(name : String) : Saga
|
||||
+ create() : Saga {static}
|
||||
+ get(idx : int) : Chapter
|
||||
+ isPresent(idx : int) : boolean
|
||||
}
|
||||
class Chapter {
|
||||
~ name : String
|
||||
+ Chapter(name : String)
|
||||
+ getName() : String
|
||||
}
|
||||
enum Result {
|
||||
+ CRASHED {static}
|
||||
+ FINISHED {static}
|
||||
+ ROLLBACK {static}
|
||||
+ valueOf(name : String) : Result {static}
|
||||
+ values() : Result[] {static}
|
||||
}
|
||||
class SagaApplication {
|
||||
- LOGGER : Logger {static}
|
||||
+ SagaApplication()
|
||||
+ main(args : String[]) {static}
|
||||
- newSaga() : Saga {static}
|
||||
- serviceDiscovery() : ServiceDiscoveryService {static}
|
||||
}
|
||||
class SagaOrchestrator {
|
||||
- LOGGER : Logger {static}
|
||||
- saga : Saga
|
||||
- sd : ServiceDiscoveryService
|
||||
- state : CurrentState
|
||||
+ SagaOrchestrator(saga : Saga, sd : ServiceDiscoveryService)
|
||||
+ execute(value : K) : Result
|
||||
}
|
||||
-class CurrentState {
|
||||
~ currentNumber : int
|
||||
~ isForward : boolean
|
||||
~ CurrentState()
|
||||
~ back() : int
|
||||
~ cleanUp()
|
||||
~ current() : int
|
||||
~ directionToBack()
|
||||
~ forward() : int
|
||||
~ isForward() : boolean
|
||||
}
|
||||
abstract class Service<K> {
|
||||
# LOGGER : Logger {static}
|
||||
+ Service<K>()
|
||||
+ getName() : String {abstract}
|
||||
+ process(value : K) : ChapterResult<K>
|
||||
+ rollback(value : K) : ChapterResult<K>
|
||||
}
|
||||
class ServiceDiscoveryService {
|
||||
- services : Map<String, OrchestrationChapter<?>>
|
||||
+ ServiceDiscoveryService()
|
||||
+ discover(orchestrationChapterService : OrchestrationChapter<?>) : ServiceDiscoveryService
|
||||
+ find(service : String) : Optional<OrchestrationChapter<K>>
|
||||
}
|
||||
class WithdrawMoneyService {
|
||||
+ WithdrawMoneyService()
|
||||
+ getName() : String
|
||||
+ process(value : String) : ChapterResult<String>
|
||||
}
|
||||
}
|
||||
package com.iluwatar.saga.choreography {
|
||||
interface ChoreographyChapter {
|
||||
+ execute(Saga) : Saga {abstract}
|
||||
+ getName() : String {abstract}
|
||||
+ process(Saga) : Saga {abstract}
|
||||
+ rollback(Saga) : Saga {abstract}
|
||||
}
|
||||
class FlyBookingService {
|
||||
+ FlyBookingService(service : ServiceDiscoveryService)
|
||||
+ getName() : String
|
||||
}
|
||||
class HotelBookingService {
|
||||
+ HotelBookingService(service : ServiceDiscoveryService)
|
||||
+ getName() : String
|
||||
}
|
||||
class OrderService {
|
||||
+ OrderService(service : ServiceDiscoveryService)
|
||||
+ getName() : String
|
||||
}
|
||||
class Saga {
|
||||
- chapters : List<Chapter>
|
||||
- finished : boolean
|
||||
- forward : boolean
|
||||
- pos : int
|
||||
- Saga()
|
||||
~ back() : int
|
||||
+ chapter(name : String) : Saga
|
||||
+ create() : Saga {static}
|
||||
~ forward() : int
|
||||
~ getCurrent() : Chapter
|
||||
+ getCurrentValue() : Object
|
||||
+ getResult() : SagaResult
|
||||
~ isCurrentSuccess() : boolean
|
||||
~ isForward() : boolean
|
||||
~ isPresent() : boolean
|
||||
+ setCurrentStatus(result : ChapterResult)
|
||||
+ setCurrentValue(value : Object)
|
||||
~ setFinished(finished : boolean)
|
||||
+ setInValue(value : Object) : Saga
|
||||
+ toString() : String
|
||||
}
|
||||
class Chapter {
|
||||
- inValue : Object
|
||||
- name : String
|
||||
- result : ChapterResult
|
||||
+ Chapter(name : String)
|
||||
+ getInValue() : Object
|
||||
+ getName() : String
|
||||
+ isSuccess() : boolean
|
||||
+ setInValue(object : Object)
|
||||
+ setResult(result : ChapterResult)
|
||||
}
|
||||
enum ChapterResult {
|
||||
+ INIT {static}
|
||||
+ ROLLBACK {static}
|
||||
+ SUCCESS {static}
|
||||
+ valueOf(name : String) : ChapterResult {static}
|
||||
+ values() : ChapterResult[] {static}
|
||||
}
|
||||
enum SagaResult {
|
||||
+ FINISHED {static}
|
||||
+ PROGRESS {static}
|
||||
+ ROLLBACKED {static}
|
||||
+ valueOf(name : String) : SagaResult {static}
|
||||
+ values() : SagaResult[] {static}
|
||||
}
|
||||
class SagaApplication {
|
||||
- LOGGER : Logger {static}
|
||||
+ SagaApplication()
|
||||
+ main(args : String[]) {static}
|
||||
- newSaga(value : Object) : Saga {static}
|
||||
- serviceDiscovery() : ServiceDiscoveryService {static}
|
||||
}
|
||||
abstract class Service {
|
||||
# LOGGER : Logger {static}
|
||||
- sd : ServiceDiscoveryService
|
||||
+ Service(service : ServiceDiscoveryService)
|
||||
+ execute(saga : Saga) : Saga
|
||||
- isSagaFinished(saga : Saga) : boolean
|
||||
+ process(saga : Saga) : Saga
|
||||
+ rollback(saga : Saga) : Saga
|
||||
- serviceNotFoundException(chServiceName : String) : Supplier<RuntimeException>
|
||||
}
|
||||
class ServiceDiscoveryService {
|
||||
- services : Map<String, ChoreographyChapter>
|
||||
+ ServiceDiscoveryService()
|
||||
+ discover(chapterService : ChoreographyChapter) : ServiceDiscoveryService
|
||||
+ find(service : String) : Optional<ChoreographyChapter>
|
||||
+ findAny() : ChoreographyChapter
|
||||
}
|
||||
class WithdrawMoneyService {
|
||||
+ WithdrawMoneyService(service : ServiceDiscoveryService)
|
||||
+ getName() : String
|
||||
+ process(saga : Saga) : Saga
|
||||
}
|
||||
}
|
||||
SagaOrchestrator --> "-saga" Saga
|
||||
SagaOrchestrator --> "-sd" ServiceDiscoveryService
|
||||
SagaOrchestrator --> "-state" CurrentState
|
||||
CurrentState ..+ SagaOrchestrator
|
||||
Chapter ..+ Saga
|
||||
Saga --> "-chapters" Chapter
|
||||
Chapter --> "-result" ChapterResult
|
||||
ChapterResult ..+ Saga
|
||||
ChapterResult --> "-state" State
|
||||
State ..+ ChapterResult
|
||||
Result ..+ Saga
|
||||
Service --> "-sd" ServiceDiscoveryService
|
||||
SagaResult ..+ Saga
|
||||
Saga --> "-chapters" Chapter
|
||||
Chapter ..+ Saga
|
||||
FlyBookingService --|> Service
|
||||
HotelBookingService --|> Service
|
||||
OrderService --|> Service
|
||||
Service ..|> ChoreographyChapter
|
||||
WithdrawMoneyService --|> Service
|
||||
FlyBookingService --|> Service
|
||||
HotelBookingService --|> Service
|
||||
OrderService --|> Service
|
||||
Service ..|> OrchestrationChapter
|
||||
WithdrawMoneyService --|> Service
|
||||
@enduml
|
Reference in New Issue
Block a user