PlantUML+EA描述《分析模式》第6章存货和会计(5)
《GJJ-004 分析模式及实现》,umlchina.com/url/video.html
原图6.17
EA绘制
图6.17 用后向链式触发请求明细账户要它的分录。
PlantUML
@startuml
start
:更新账户;
:返回分录;
stop
@enduml
原图6.18
EA绘制
图6.18 更新账户的方法。
在正在处理的账户的每个输入账户上递归调用更新账户的操作。
PlantUML
@startuml
start
repeat
:查找将自己作为输出的过账规则;
-> 每个过账规则;
:查找触发的账户;
:比较并更新账户集合;
backward:更新账户;
repeat while (有新出现账户)
:执行过账规则;
stop
@enduml
(目前,PlantUML的活动图语法还不能完整表示书中原图以及EA版UML图的内容)
原图6.19
EA绘制
图6.19 基于账户触发来更新账户的交互图
PlantUML
@startuml
title
账户被要求使其自身达到最新状态
它找到所有以它作为输出的过账规则
它找到作为这些过账规则触发者的所有账户
它使每个这样的账户达到最新状态(递归)
它执行所有以它作为输出的过账规则
end title
participant ":账户"
participant ":过账规则"
participant "触发者账户: 账户"
[-> ":账户" : 更新()
activate ":账户"
":账户" -> ":账户" : 取以自己为输出\n的过账规则()
activate ":账户"
deactivate ":账户"
loop 所有符合条件的过账规则
":账户" -> ":过账规则" : 取触发者()
activate ":过账规则"
deactivate ":过账规则"
loop 所有触发者账户
":账户" -> "触发者账户: 账户" : 更新()
activate "触发者账户: 账户"
deactivate "触发者账户: 账户"
end
end
loop 所有符合条件的过账规则
":账户" -> ":过账规则" : 执行()
activate ":过账规则"
deactivate ":过账规则"
end
deactivate ":账户"
@enduml
原图6.20
EA绘制
图6.20 使用账户类型。
这引入了一个可以在上面定义过账规则的知识级。
PlantUML
@startuml
skinparam nodesep 140
skinparam ranksep 100
class 账户类型
class 过账规则
class 雇员账户
class 雇员
账户类型 "1\n-触发者" -- "0..*" 过账规则
账户类型 "1\n-输出" -- "0..*" 过账规则
账户类型 "1" -- "0..*" 雇员账户
雇员账户 "0..*" -- "1" 雇员
@enduml