
@startuml

skinparam class {
	BackgroundColor<<CommandLineInputEndpoint>> BurlyWood
    BackgroundColor<<CommandLineArgsInputEndpoint>> BurlyWood
    BackgroundColor<<AliyunHttpInputEndpoint>> BurlyWood
    BackgroundColor<<OutputEndpoint>> BurlyWood
    BackgroundColor<<PureFunction>> LightBlue
    BackgroundColor<<AlternativePath>> Crimson
    BackgroundColor<<Resource>> Brown
}

class NumInput <<CommandLineInputEndpoint>>
class Add2 <<PureFunction>>
class Add <<PureFunction>>
class Print <<OutputEndpoint>>
class Multi3 <<PureFunction>>
class LoadData <<OutputEndpoint>>
class WriteData <<OutputEndpoint>>
class Accumulator <<PureFunction>>

NumInput --> NI::Integer
NI::Integer --> Add2
NI::Integer --> Multi3
NI::Integer --> LoadData
LoadData --> LD::Integer
LoadData <.. AccuStore
Add2 --> A2::Integer
A2::Integer --> "2" Add
Multi3 --> M3::Integer
M3::Integer --> "1" Add
Add --> A::Integer
A::Integer --> "1" Accumulator
LD::Integer --> "2" Accumulator
Accumulator --> AC::Integer
AC::Integer --> Print
AC::Integer --> WriteData
WriteData ..> AccuStore
@enduml
