Loops 如何在序列图中显示几个循环并在其中执行操作?
我想展示我的UserControl/控件在插入数据列表时所做的事情,当用户按某些键、选择文本等时会发生什么 不知何故,我觉得序列图并不适合显示多个循环,也不适合在循环中进行操作Loops 如何在序列图中显示几个循环并在其中执行操作?,loops,sequence-diagram,Loops,Sequence Diagram,我想展示我的UserControl/控件在插入数据列表时所做的事情,当用户按某些键、选择文本等时会发生什么 不知何故,我觉得序列图并不适合显示多个循环,也不适合在循环中进行操作 我错了吗?或者我该如何处理这种情况?如果您谈论的是一个循环,那么循环中的所有元素都会发生一系列操作 如果循环中的操作相当复杂,我会将循环中完成的操作本身建模为序列图 我不认为这里可以有经验法则,但是当循环本身的过程很复杂,并且循环相对不那么复杂时,我们可以在单个序列图中使用它们 如果有循环的过程不是很复杂,但是循环很复杂
我错了吗?或者我该如何处理这种情况?如果您谈论的是一个循环,那么循环中的所有元素都会发生一系列操作 如果循环中的操作相当复杂,我会将循环中完成的操作本身建模为序列图 我不认为这里可以有经验法则,但是当循环本身的过程很复杂,并且循环相对不那么复杂时,我们可以在单个序列图中使用它们 如果有循环的过程不是很复杂,但是循环很复杂,那么我将为循环的操作绘制一个序列图,并注意整个序列是由循环调用的 如果需要,您还可以拥有两个序列图 更新:
我们必须在图中添加一些注释,因为在序列图中表示“条件”并不简单。
验证部分类似于
do validation
if validation succeeds
proceed to next (business or other) logic
if validation fails
feedback to user (or some other logic)
+----+ +----+ +----------------+ +----------------+
|User| | UI | | Your Validator | | Business Logic |
+----+ +----+ +----------------+ +----------------+
| select | | |
|--------------->| doValidation | |
| |------------------>|----+ |
| | | | Validate |
| | |<---+ |
| | | |
| | | (validation fails: |
| | Validation Fail | feedback to client) |
| |<------------------| |
| | | |
| | | |
| | | (validation succeeds: |
| | | proceed to |
| | | business logic) |
| | | |
| | | someLogic |
| | |----------------------->|
| | | |
有关使用alt块的示例,请参见 我如何用序列图来描述用户在选择某个东西,而我在选择某个东西时进行验证?序列图中通常有一个参与者。从参与者到第一个类(在您的情况下是UI)的“消息”是“选择一个项目”,例如是的,但在选择过程中,算法开始检查选择中的一些字符/选择发生时。如何用序列图来描述这一点?如果我理解正确,用户界面上有某种列表,当用户从列表中选择一项时。当进行此选择时,您将执行一些验证/处理,并且(可能)根据结果继续执行下一步。我的解释符合这一点。我是否正确理解你的情景?是的,这是我的情景。下一步是允许选择或将其限制在字符上。
+----+ +----+ +----------------+ +----------------+
|User| | UI | | UI - Backend | | Busines Logic |
+----+ +----+ +----------------+ +----------------+
| Add Record | | |
|--------------->| doinsertOrUpdate | |
| |------------------>| |
| | | exists(record) |
| | |----------------------->|
| | | |
____|________________|___________________|________________________|__________
|[Record exists] | | | |
| | | | Get Record | |
| | | |----------------------->| |
| | | | | |
| | | |--------+ | |
| | | | | Set UI Values | |
| | | |<-------+ | |
| | | | | |
| | | | Update Record | |
| | | |----------------------->| |
| | | | | |
| | | Send Message | | |
| | |<------------------| | |
| | | "Record found, | | |
| | | Updated" | | |
|___|________________|___________________|________________________|_________|
| | | |
| | | |
______|________________|___________________|________________________|_________
| [Record does not | | | |
| exist] | | | |
| | | |--------+ | |
| | | | | Generate | |
| | | | | Seqeuence | |
| | | |<-------+ | |
| | | | | |
| | | | Create New Record | |
| | | |----------------------->| |
| | | Send Message | | |
| | |<------------------| | |
| | | "New Record | | |
| | | Created" | | |
|_____|________________|___________________|________________________|_________|
| | | |
| | | |
| | | |