PlantUML描述《分析模式》第2章“当责”(2)

66 阅读4分钟

原图2.8图片EA绘制图片

图2.8 当责。

使用当事者,当责可以涵盖广泛的当事者间责任,包括管理、雇佣和合约。

PlantUML

@startuml

skinparam linetype ortho

skinparam ranksep 60

skinparam nodesep 120

class 当责类型

class 当责

class 时间段

class 当事者

class 人

class 组织

当责类型 "1" -- "0..*" 当责

时间段 "1" -- "0..*" 当责

当责 "0..*" -- "-委托方1" 当事者

当责 "0..*" -- "-责任方1" 当事者

当事者 <|-- 人

当事者 <|-- 组织

当责类型 -[hidden]down- 当责

当责 -[hidden]down- 时间段

当责 -[hidden]right- 当事者

当事者 -[hidden]right- 组织

@enduml

图片

原图2.9

图片

EA绘制

图片

图2.9 当责的知识级和操作级。

知识级对象定义操作级对象的合法配置。只能根据相应的当责类型和当事者类型在当事者之间创建当责。

PlantUML

@startuml

skinparam ranksep 160

skinparam nodesep 140

class 动作

class 当责

class 当责类型

class 当事者

class 当事者类型

class 时间段

当责类型 "0.." -- "-委托方s\n1.." 当事者类型

当责类型 "0.." -- "-责任方s\n1.." 当事者类型

当责 "0..*" -- "-委托方1" 当事者

当责 "0..*" -- "-责任方1" 当事者

当责类型 "-类型1" -- "0..*" 当责

当事者类型 "-类型1" -- "0..*" 当事者

当责 "0..*" -- "1" 时间段

当责 "0.." -- "0.." 动作

note right of 当责

  约束:

  类型.委托方s->includes(委托方.类型)

  and

  类型.责任方s->includes(责任方.类型)

end note

当责类型 -[hidden]right- 当责

当事者类型 -[hidden]right- 当事者

@enduml

图片

原图2.10

图片EA绘制图片

图2.10 允许当事者类型具有子类型和超类型。

给当事者类型添加泛化使定义知识级变得更容易

PlantUML

@startuml

skinparam ranksep 120

skinparam nodesep 180

class 当责

class 当责类型

class 当事者

class 当事者类型

当责类型 "0.." -- "-委托方s\n1.." 当事者类型

当责类型 "0.." -- "-责任方s\n1.." 当事者类型

当责 "0..*" -- "-委托方1" 当事者

当责 "0..*" -- "-责任方1" 当事者

当责类型 "-类型1" -- "0..*" 当责

当事者类型 "-类型1" -- "0..*" 当事者

当事者类型 "-子类型s\n0..*" -- "-超类型\n0..1" 当事者类型

note top of 当责

  约束:

  (委托方.类型->closure(超类型))->intersection(类型.委托方s)->notEmpty()

  and

  (责任方.类型->closure(超类型))->intersection(类型.责任方s)->notEmpty()

end note

当责类型 -[hidden]left- 当责

当事者类型 -[hidden]left- 当事者

@enduml

图片原图2.11图片EA绘制图片

图2.11 层级当责类型。

所添加的约束意味着通过此类型的当责来链接的当事者必须形成一个层级结构。

PlantUML

@startuml

class 当责类型

class 层级当责类型

当责类型 <|-- 层级当责类型

note right of 层级当责类型

  约束:

  对于此类型的“当责”,

  “当事者”只对其中一个负责。

end note

@enduml

图片

原图2.12

图片

EA绘制

图片

图2.12 分级当责类型。

分级当责支持固定级别,如销售办事处、分部、地区。

PlantUML

@startuml

skinparam ranksep 80

skinparam nodesep 180

class 当责类型

class 分级当责类型

class 层级当责类型

class 当事者类型

当责类型 <|-- 分级当责类型

当责类型 <|-- 层级当责类型

当事者类型 "-级别s* {sequence}" -right- " * " 分级当责类型

note bottom of 分级当责类型

约束:

“当事者”只对唯一的“当事者类型”

为级别列表中的下一个级别的“当事者”负责。

end note

note bottom of 层级当责类型

约束:

对于此类型的“当责”,“当

事者”只对其中一个负责。

end note

@enduml

图片

原图2.13


图片EA绘制
图片

图2.13 重新平衡当责类型的子类型。

一个更好地组织当责类型层级结构的方式。

PlantUML

@startuml

skinparam ranksep 80

skinparam nodesep 120

class 当责类型

class 层级当责类型

class 分级当责类型

class 定向当责类型

class 当事者类型

分级当责类型 -up-|> 当责类型

定向当责类型 -up-|> 当责类型

层级当责类型 -left-|> 当责类型

分级当责类型 "" -- "-级别s\n{sequence}" 当事者类型

定向当责类型 " " -right- "-委托方s" 当事者类型 

定向当责类型 " " -- "-负责方s" 当事者类型

@enduml

图片

原图2.14

图片

EA绘制

图片

图2.14 操作范围

操作范围定义当责在创建时所承担的责任。它们可以用于职务描述。

PlantUML

@startuml

class 当责

abstract class 操作范围

class 地点

class 临床护理范围

class 协议范围

class 资源供给

class 销售区域

class 观察概念

class 数值

class 协议

class 数量

class 资源类型

class 产品类型

操作范围 <|-- 临床护理范围

操作范围 <|-- 协议范围

操作范围 <|-- 资源供给

操作范围 <|-- 销售区域

当责 "1" -- "0..*" 操作范围

地点 "0..1" -- "*" 操作范围

临床护理范围 "0..*" -- "1" 观察概念

协议范围 "0..*" -- "-数额1" 数值

协议范围 "0..*" -- "1" 协议

资源供给 "0..*" -- "1" 数量

资源供给 "0..*" -- "1" 资源类型

销售区域 "0..*" -- "1" 产品类型

@enduml

图片