分析工厂采购系统,画出顺序图

第一部分:顺序图语法

(1)简单示例:你可以用->来绘制参与者之间传递的消息, 而不必显式地声明参与者。你也可以使用 --> 绘制一个虚线箭头。另外,你还能用 <-<--,这不影响绘图,但可以提高可读性。 注意:仅适用于时序图,对于其它示意图,规则是不同的。

1 @startuml
2 Alice -> Bob: Authentication Request
3 Bob --> Alice: Authentication Response
4
5 Alice -> Bob: Another authentication Request
6 Alice <-- Bob: another authentication Response
7 @enduml

(2)声明参与者:关键字 participant 用于改变参与者的先后顺序。

你也可以使用其它关键字来声明参与者:

  • actor
  • boundary
  • control
  • entity
  • database
 1 @startuml
 2 actor Foo1
 3 boundary Foo2
 4 control Foo3
 5 entity Foo4
 6 database Foo5
 7 collections Foo6
 8 Foo1 -> Foo2 : To boundary
 9 Foo1 -> Foo3 : To control
10 Foo1 -> Foo4 : To entity
11 Foo1 -> Foo5 : To database
12 Foo1 -> Foo6 : To collections
13
14 @enduml
 1 @startuml
 2 actor Bob #red
 3 ‘ The only difference between actor
 4 ‘and participant is the drawing
 5 participant Alice
 6 participant "I have a really\nlong name" as L #99FF99
 7 /‘ You can also declare:
 8    participant L as "I have a really\nlong name"  #99FF99
 9   ‘/
10
11 Alice->Bob: Authentication Request
12 Bob->Alice: Authentication Response
13 Bob->L: Log transaction
14 @enduml

您可以使用关键字 order自定义顺序来打印参与者。

1 @startuml
2 participant Last order 30
3 participant Middle order 20
4 participant First order 10
5 @enduml

(3)在参与者中使用非字母符号:你可以使用引号定义参与者,还可以用关键字 as 给参与者定义别名。

1 @startuml
2 Alice -> "Bob()" : Hello
3 "Bob()" -> "This is very\nlong" as Long
4 ‘ You can also declare:
5 ‘ "Bob()" -> Long as "This is very\nlong"
6 Long --> "Bob()" : ok
7 @enduml

(4)给自己发消息:参与者可以给自己发信息,消息文字可以用\n来换行。

1 @startuml
2 Alice->Alice: This is a signal to self.\nIt also demonstrates\nmultiline \ntext
3 @enduml

(5)修改箭头样式:修改箭头样式的方式有以下几种:

  • 表示一条丢失的消息:末尾加 x
  • 让箭头只有上半部分或者下半部分:将<>替换成\或者 /
  • 细箭头:将箭头标记写两次 (如 >>//)
  • 虚线箭头:用 -- 替代 -
  • 箭头末尾加圈:->o
  • 双向箭头:<->
 1 @startuml
 2 Bob ->x Alice
 3 Bob -> Alice
 4 Bob ->> Alice
 5 Bob -\ Alice
 6 Bob \\- Alice
 7 Bob //-- Alice
 8
 9 Bob ->o Alice
10 Bob o\\-- Alice
11
12 Bob <-> Alice
13 Bob <->o Alice
14 @enduml

(6)对消息序列编号:关键字 autonumber 用于自动对消息编号。语句 autonumber start 用于指定编号的初始值,而 autonumber startincrement 可以同时指定编号的初始值和每次增加的值。

1 @startuml
2 autonumber
3 Bob -> Alice : Authentication Request
4 Bob <- Alice : Authentication Response
5 @enduml
 1 @startuml
 2 autonumber
 3 Bob -> Alice : Authentication Request
 4 Bob <- Alice : Authentication Response
 5
 6 autonumber 15
 7 Bob -> Alice : Another authentication Request
 8 Bob <- Alice : Another authentication Response
 9
10 autonumber 40 10
11 Bob -> Alice : Yet another authentication Request
12 Bob <- Alice : Yet another authentication Response
13
14 @enduml

 1 @startuml
 2 autonumber "<b>[000]"
 3 Bob -> Alice : Authentication Request
 4 Bob <- Alice : Authentication Response
 5
 6 autonumber 15 "<b>(<u>##</u>)"
 7 Bob -> Alice : Another authentication Request
 8 Bob <- Alice : Another authentication Response
 9
10 autonumber 40 10 "<font color=red><b>Message 0  "
11 Bob -> Alice : Yet another authentication Request
12 Bob <- Alice : Yet another authentication Response
13
14 @enduml
 1 @startuml
 2 autonumber 10 10 "<b>[000]"
 3 Bob -> Alice : Authentication Request
 4 Bob <- Alice : Authentication Response
 5
 6 autonumber stop
 7 Bob -> Alice : dummy
 8
 9 autonumber resume "<font color=red><b>Message 0  "
10 Bob -> Alice : Yet another authentication Request
11 Bob <- Alice : Yet another authentication Response
12
13 autonumber stop
14 Bob -> Alice : dummy
15
16 autonumber resume 1 "<font color=blue><b>Message 0  "
17 Bob -> Alice : Yet another authentication Request
18 Bob <- Alice : Yet another authentication Response
19 @enduml

(7)组合消息:我们可以通过以下关键词将组合消息:

  • alt/else
  • opt
  • loop
  • par
  • break
  • critical
  • group, 后面紧跟着消息内容

可以在标头(header)添加需要显示的文字(group除外)。关键词 end 用来结束分组。注意,分组可以嵌套使用。

 1 @startuml
 2 Alice -> Bob: Authentication Request
 3
 4 alt successful case
 5
 6     Bob -> Alice: Authentication Accepted
 7
 8 else some kind of failure
 9
10     Bob -> Alice: Authentication Failure
11     group My own label
12         Alice -> Log : Log attack start
13         loop 1000 times
14             Alice -> Bob: DNS Attack
15         end
16         Alice -> Log : Log attack end
17     end
18
19 else Another type of failure
20
21    Bob -> Alice: Please repeat
22
23 end
24 @enduml

(8)给消息添加注释:我们可以通过在消息后面添加 note left 或者 note right 关键词来给消息添加注释。你也可以通过使用 end note 来添加多行注释。

 1 @startuml
 2 Alice->Bob : hello
 3 note left: this is a first note
 4
 5 Bob->Alice : ok
 6 note right: this is another note
 7
 8 Bob->Bob : I am thinking
 9 note left
10     a note
11     can also be defined
12     on several lines
13 end note
14 @enduml

(9)Creole和HTML:

 1 @startuml
 2 participant Alice
 3 participant "The **Famous** Bob" as Bob
 4
 5 Alice -> Bob : hello --there--
 6 ... Some ~~long delay~~ ...
 7 Bob -> Alice : ok
 8 note left
 9   This is **bold**
10   This is //italics//
11   This is ""monospaced""
12   This is --stroked--
13   This is __underlined__
14   This is ~~waved~~
15 end note
16
17 Alice -> Bob : A //well formatted// message
18 note right of Alice
19  This is <back:cadetblue><size:18>displayed</size></back>
20  __left of__ Alice.
21 end note
22 note left of Bob
23  <u:red>This</u> is <color #118888>displayed</color>
24  **<color purple>left of</color> <s:red>Alice</strike> Bob**.
25 end note
26 note over Alice, Bob
27  <w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>
28 end note
29 @enduml

(10)分隔符:你可以通过使用 == 关键词来将你的图表分割多个步骤。

 1 @startuml
 2
 3 == Initialization ==
 4
 5 Alice -> Bob: Authentication Request
 6 Bob --> Alice: Authentication Response
 7
 8 == Repetition ==
 9
10 Alice -> Bob: Another authentication Request
11 Alice <-- Bob: another authentication Response
12
13 @enduml

(11)生命线的激活与撤销:关键字activatedeactivate用来表示参与者的生命活动。一旦参与者被激活,它的生命线就会显示出来。activatedeactivate适用于以上情形。destroy表示一个参与者的生命线的终结。

 1 @startuml
 2 participant User
 3
 4 User -> A: DoWork
 5 activate A
 6
 7 A -> B: << createRequest >>
 8 activate B
 9
10 B -> C: DoWork
11 activate C
12 C --> B: WorkDone
13 destroy C
14
15 B --> A: RequestCreated
16 deactivate B
17
18 A -> User: Done
19 deactivate A
20
21 @enduml
 1 @startuml
 2 participant User
 3
 4 User -> A: DoWork
 5 activate A #FFBBBB
 6
 7 A -> A: Internal call
 8 activate A #DarkSalmon
 9
10 A -> B: << createRequest >>
11 activate B
12
13 B --> A: RequestCreated
14 deactivate B
15 deactivate A
16 A -> User: Done
17 deactivate A
18
19 @enduml

(12)进入和发出消息:如果只想关注部分图示,你可以使用进入和发出箭头。使用方括号[]表示图示的左、右两侧。

 1 @startuml
 2 [-> A: DoWork
 3
 4 activate A
 5
 6 A -> A: Internal call
 7 activate A
 8
 9 A ->] : << createRequest >>
10
11 A<--] : RequestCreated
12 deactivate A
13 [<- A: Done
14 deactivate A
15 @enduml
 1 @startuml
 2 [-> Bob
 3 [o-> Bob
 4 [o->o Bob
 5 [x-> Bob
 6
 7 [<- Bob
 8 [x<- Bob
 9
10 Bob ->]
11 Bob ->o]
12 Bob o->o]
13 Bob ->x]
14
15 Bob <-]
16 Bob x<-]
17 @enduml

(13)构造类型和圈点:可以使用<<>>给参与者添加构造类型。在构造类型中,你可以使用(X,color)格式的语法添加一个圆圈圈起来的字符。

1 @startuml
2
3 participant "Famous Bob" as Bob << Generated >>
4 participant Alice << (C,#ADD1B2) Testable >>
5
6 Bob->Alice: First message
7
8 @enduml
1 @startuml
2
3 skinparam guillemet false
4 participant "Famous Bob" as Bob << Generated >>
5 participant Alice << (C,#ADD1B2) Testable >>
6
7 Bob->Alice: First message
8
9 @enduml

(14)更多标题信息:在标题描述中使用\n表示换行。还可以使用关键字titleend title定义多行标题。

1 @startuml
2
3 title __Simple__ communication example\non several lines
4
5 Alice -> Bob: Authentication Request
6 Bob -> Alice: Authentication Response
7
8 @enduml
 1 @startuml
 2
 3 title
 4  <u>Simple</u> communication example
 5  on <i>several</i> lines and using <font color=red>html</font>
 6  This is hosted by <img:sourceforge.jpg>
 7 end title
 8
 9 Alice -> Bob: Authentication Request
10 Bob -> Alice: Authentication Response
11
12 @enduml

(15)包裹参与者:可以使用boxend box画一个盒子将参与者包裹起来。还可以在box关键字之后添加标题或者背景颜色。

 1 @startuml
 2
 3 box "Internal Service" #LightBlue
 4     participant Bob
 5     participant Alice
 6 end box
 7 participant Other
 8
 9 Bob -> Alice : hello
10 Alice -> Other : hello
11
12 @enduml

(16)移除脚注:使用hide footbox关键字移除脚注。

1 @startuml
2
3 hide footbox
4 title Footer removed
5
6 Alice -> Bob: Authentication Request
7 Bob --> Alice: Authentication Response
8
9 @enduml

(17)外观参数(skinparam):

 1 @startuml
 2 skinparam sequenceArrowThickness 2
 3 skinparam roundcorner 20
 4 skinparam maxmessagesize 60
 5 skinparam sequenceParticipant underline
 6
 7 actor User
 8 participant "First Class" as A
 9 participant "Second Class" as B
10 participant "Last Class" as C
11
12 User -> A: DoWork
13 activate A
14
15 A -> B: Create Request
16 activate B
17
18 B -> C: DoWork
19 activate C
20 C --> B: WorkDone
21 destroy C
22
23 B --> A: Request Created
24 deactivate B
25
26 A --> User: Done
27 deactivate A
28
29 @enduml
 1 @startuml
 2 skinparam backgroundColor #EEEBDC
 3 skinparam handwritten true
 4
 5 skinparam sequence {
 6     ArrowColor DeepSkyBlue
 7     ActorBorderColor DeepSkyBlue
 8     LifeLineBorderColor blue
 9     LifeLineBackgroundColor #A9DCDF
10
11     ParticipantBorderColor DeepSkyBlue
12     ParticipantBackgroundColor DodgerBlue
13     ParticipantFontName Impact
14     ParticipantFontSize 17
15     ParticipantFontColor #A9DCDF
16
17     ActorBackgroundColor aqua
18     ActorFontColor DeepSkyBlue
19     ActorFontSize 17
20     ActorFontName Aapex
21 }
22
23 actor User
24 participant "First Class" as A
25 participant "Second Class" as B
26 participant "Last Class" as C
27
28 User -> A: DoWork
29 activate A
30
31 A -> B: Create Request
32 activate B
33
34 B -> C: DoWork
35 activate C
36 C --> B: WorkDone
37 destroy C
38
39 B --> A: Request Created
40 deactivate B
41
42 A --> User: Done
43 deactivate A
44
45 @enduml

(18)填充区设置:可以设定填充区的参数配置。

 1 @startuml
 2 skinparam ParticipantPadding 20
 3 skinparam BoxPadding 10
 4
 5 box "Foo1"
 6 participant Alice1
 7 participant Alice2
 8 end box
 9 box "Foo2"
10 participant Bob1
11 participant Bob2
12 end box
13 Alice1 -> Bob1 : hello
14 Alice1 -> Out : out
15 @enduml

第二部分:《工厂采购》系统对象交互顺序

  • 采购员选择订货货品。
  • 到达订货界面,开始接收客户信息,接收货品信息,显示货品信息。
  • 到达订货管理器,创建客户,取货品信息,创建订单。
  • 创建客户到达客户区。
  • 取货品信息到达货品区。
  • 创建订单到订单区。

第三部分:《工厂采购》系统顺序图

 1 @startuml
 2 skinparam sequenceArrowThickness 2
 3 skinparam roundcorner 20
 4 skinparam maxmessagesize 60
 5 skinparam sequenceParticipant underline
 6
 7 actor 采购员
 8 participant "订货界面" as A
 9 participant "订货管理器" as B
10 participant "客户" as C
11 participant "货品" as D
12 participant "订单" as E
13
14 采购员 -> A: 客户信息()
15 activate A
16 采购员 -> A: 选择订货货品()
17 activate A
18
19 A -> B:接收客户信息()
20 activate B
21 A -> B:接收货品信息()
22 activate B
23 B --> A: 显示货品信息()
24 deactivate B
25
26 B -> C: 创建客户()<<create>>
27 activate C
28 B -> D: 取货品信息()
29 activate D
30 D --> B: 货品信息()
31 activate D
32 B -> E: 创建订单()<<create>>
33 activate E
34 @enduml

原文地址:https://www.cnblogs.com/Lilith404/p/10800184.html

时间: 2024-11-06 00:06:12

分析工厂采购系统,画出顺序图的相关文章

用Visio画UML顺序图

1.顺序图 顺序图又称为时序图,顾名思义,它着重表现的是对象间消息传递的时间顺序.顺序图描述的对象也是一个用例,即一组行为操作,而它表现的是这组行为的先后关系(纵坐标),以及每个行为是属于哪个对象的(横坐标). 作用:用对象间的交互来描述用例. 组成成分:参与者.对象 对象的生命线:用于表示某段时间内该对象是存在的,表示对象的生存时间. 消息:表示对象间的通信.当收到消息后,接收消息的对象立即开始执行活动,起到激活对象的作用.通常用消息名和参数表来标识. 横坐标:表示不同的对象.对象的左右顺序不

灵悟礼品网上专卖店——画出E-R图

一.小组成员: 洪雪意(产品负责人) 陈淑筠(Master) 二.组内人员任务情况 计划完成的任务的第三个模块:分析并建立数据库 已完成的任务: 任务的第三个模块: 陈淑筠(完成任务1):画出商品资料.顾客资料E—R图 洪雪意(完成任务2):画出管理员资料.订单资料.订单明细E—R图 正在进行的任务: 任务的第三个模块: 陈淑筠(负责任务3):新建商品资料表.顾客资料表 洪雪意(负责任务4):新建管理员资料表.订单资料表.订单明细表 任务面板: 三.分析情况 陈淑筠:画出商品资料.顾客资料E—R

分析超市购物流程,并画出活动图

第一部分:活动图语法 (1)简单活动图:活动标签(activity label)以冒号开始,以分号结束.活动默认安装它们定义的顺序就行连接. 1 @startuml 2 :Hello world; 3 :This is on defined on 4 several **lines**; 5 @enduml (2)开始/结束:你可以使用关键字start和stop表示图示的开始和结束. 1 @startuml 2 start 3 :Hello world; 4 :This is on define

如何画出甘特图——2013版Excel

学习了这久,这还是我第一次接触甘特图.现在来说说用excel画甘特图. 理论: 甘特图,也称为条状图(Bar chart).是在1917年由亨利·甘特开发的,其内在思想简单,基本是一条线条图,横轴表示时间,纵轴表示活动(项目),线条表示在整个期间上计划和实际的活动完成情况.它直观地表明任务计划在什么时候进行,及实际进展与计划要求的对比. 管理者由此极为便利地弄清一项任务(项目)还剩下哪些工作要做,并可评估工作是提前还是滞后,亦或正常进行.是一种理想的控制工具.其中甘特图的含义有三个: 1.以图形

学AXURE画出原型图,把你的设计展示出来

下载地址:http://www.axure.com Axure是原型图设计工具,Axure比PS简单,会AXURE一般有两种岗位,产品经理.交互设计师. 当然,想做好上面两岗位,还要会 需求分析挖掘.交互理念.交互设计.产品管理.协调沟通 . AxureRP Pro7.0 从入门到精通 教学视频: http://www.elsyy.com/course/lesson-8203?-147303.html 知乎的讨论: https://www.zhihu.com/question/19892861

如何在论文中画出漂亮的插图?

知乎用户的回答(1259票)]: 强烈推荐 Python 的绘图模块 matplotlib: python plotting .画出来的图真的是高端大气上档次,低调奢华有内涵~ 适用于从 2D 到 3D,从标量到矢量的各种绘图.能够保存成从 eps, pdf 到 svg, png, jpg 的多种格式.并且 Matplotlib 的绘图函数基本上都与 Matlab 的绘图函数名字都差不多,迁移的学习成本比较低.开源免费.如图所示(题目描述中的图在最后): (以下图片均引用自 Thumbnail

架构师必备技能:教你画出一张合格的技术架构图

当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况: 对着画布无从下手.删了又来? 如何用一张图描述我的系统,并且让产品.运营.开发都能看明白? 画了一半的图还不清楚受众是谁? 画出来的图到底是产品图功能图还是技术图又或是大杂烩? 图上的框框有点少是不是要找点儿框框加进来? 布局怎么画都不满意…… 如果有同样的困惑,本文将介绍一种画图的方法论,来让架构图更清晰. 先厘清一些基础概念 1.什么是架构? 架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策. 架构是

如何画出一张合格的技术架构图?

当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况: 对着画布无从下手.删了又来? 如何用一张图描述我的系统,并且让产品.运营.开发都能看明白? 画了一半的图还不清楚受众是谁? 画出来的图到底是产品图功能图还是技术图又或是大杂烩? 图上的框框有点少是不是要找点儿框框加进来? 布局怎么画都不满意…… 如果有同样的困惑,本文将介绍一种画图的方法论,来让架构图更清晰. 先厘清一些基础概念 1.什么是架构? 架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策. 架构是

Matlab plotyy画双纵坐标图实例

Matlab plotyy画双纵坐标图实例 x = 0:0.01:20;y1 = 200*exp(-0.05*x).*sin(x);y2 = 0.8*exp(-0.5*x).*sin(10*x);[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); set(AX(1),'XColor','k','YColor','b');set(AX(2),'XColor','k','YColor','r'); HH1=get(AX(1),'Ylabel');set(HH1,'Strin