更新时间:2025-07-14 GMT+08:00
分享

绘制组合片段

Fragment用来对顺序图中的消息发送/接收施加控制,用以将复杂的交互场景分解为更小、更易于管理的部分。每一个Fragment都会有对应的操作符类型,不同的操作符对应着不同的逻辑控制,Fragment中一共有12种操作符类型,可参考下方的操作符介绍说明。

服务将使用频率高的loop、alt元素放到工具箱中直接使用,与通过Fragment设置成loop、alt元素意义相同无区别。

操作符介绍

片段类型

片段名称

说明

alt

抉择

具备alt操作符的Fragment通常表示一组行为选择,且最多只有一个行为被选择。被选择的行为必须有一个明确或隐含的值为true的卫语句表达式,如果没有显式卫语句表达式则表明其是一个隐含的值为true的表达式。

对应到软件模型,alt通常用来表示if...else if...或者switch语句的逻辑执行。

opt

选择

具备opt操作符的Fragment通常表示一个唯一行为是否被选择,它等同于具备一个内容行为和一个空内容行为的alt操作符。

对应到软件模型,alt通常用来表示if或者if...else语句的逻辑执行。

break

中断

具备break操作符的Fragment通常表示封闭交互内的一个中断行为,带有卫语句表达式在值为true时,该中断行为会被选择,而封闭交互内的其余交互都不会执行。与opt操作符相比,它多了一个中断后续逻辑执行的能力。该Fragment在绘制时应该包含封闭交互逻辑内的所有生命线。

对应到软件模型,break通常用来表示if...break语句的逻辑执行。

loop

循环

片段重复一定次数,可以在临界中指示片段重复的条件。

par

并行

并行处理。 片段中的事件可以交错。

critical

关键

用在par或seq片段中。指示此片段中的消息不能与其他消息交错。

seq

弱顺序

有两个或更多操作数片段。 涉及同一生命线的消息必须以片段的顺序发生。 如果消息涉及的生命线不同,来自不同片段的消息可能会并行交错。

strict

强顺序

有两个或更多操作数片段。 这些片段必须按给定顺序发生。

consider

考虑

指定此片段描述的消息列表。 其他消息可发生在运行的系统中,但对此描述来说意义不大。

ignore

忽略

此片段未描述的消息列表。 这些消息可发生在运行的系统中,但对此描述来说意义不大。

assert

断言

操作数片段指定唯一有效的序列。 通常用在consider或ignore片段中。

neg

否定

此片段中显示的序列不会发生。 通常用在consider或ignore片段中。

建模步骤

  1. 选择片段元素的操作符类型。

    从元素面板拖拽Fragment元素到画布中,会先要求用户选择对应的操作符类型,默认操作符类型是opt。各个操作符对应的含义可参考上方的操作符说明及下方的模型示例。

    除了通用Fragment之外,元素面板还额外提供了使用频率较高的loop和alt操作符片段,可以快速拖入使用。

  2. 打开编辑条件面板。

    Fragment元素通常会包含有一定量的条件集,可以在元素上通过单击右键 > 编辑条件打开条件编辑面板。

    • 通过交互操作符下拉框设置操作符类型,支持设置操作符的显示和隐藏。
    • 通过新增条件按钮/删除按钮/单击条件名称等可以新增/删除/修改条件。
    • 通过条件列表首列的拖动图标调整各条件顺序。

    除了右键菜单,也可以通过鼠标悬浮到Fragment元素的条件名称上,单击编辑图标打开条件编辑面板。

  3. 调整条件区域高度

    当Fragment元素有多个条件时,在元素内会有多个条件区域,以虚线进行分隔。可以通过拖拽虚线来调整条件区域的高度。

模型示例

  • alt操作符:表示if...else if...或者switch语句的逻辑执行。

    对应的代码模型。

  • opt操作符:表示if或者if...else语句的逻辑执行。

    对应的代码模型。

  • loop操作符:表示for或者while等循环逻辑的执行。

    对应的代码模型。

  • break操作符:表示对for或者while等循环逻辑的执行中断,通常与loop操作符结合使用。

    对应的代码模型。

相关文档