状态建模描述系统中实体的状态、转换和动作。实体有生命周期和可能状态,状态模型表示状态、序列、转换事件、条件和操作。适用于行为复杂和规范严格的实体。核心要素包括状态、转换、状态图和表。状态是实体的特定阶段,状态转换由事件触发,状态图展示生命周期,状态表罗列关系。

状态建模

1 目的

状态建模用于描述和分析系统中实体的不同可能状态、该实体如何从一种状态转变为另一种状态,以及当实体处于不同状态时可能发生的情况。

2 描述

实体 是系统中的一个对象或概念。实体 可以用于多个流程。每个实体都有自己的生命周期,有始有终。

在状态模型(有时也称为状态转换模型)中,状态是对状态的一种形式化表示。当需要对一个行为复杂且对其行为有严格要求的实体有一个准确一致的理解时,会使用到这种模型。

状态模型描述了:

  • 一个实体可能的状态集,
  • 实体可能存在的状态序列,
  • 一个实体如何从一种状态变为另一种状态,
  • 使实体状态改变的事件和条件,以及
  • 实体在生命周期中所处的不同阶段可以或必须采取的动作。

虽然流程模型可以显示所有在该流程中使用或受影响的实体,但状态模型则提供了一种补充视角:一个实体如何影响或被用在所有与之相关的流程上。

3 元素

.1 状态

实体在其生命周期内具有有限的状态数,尽管它可以同时处于多个状态。每个状态都有一个名称,并描述了在该状态下可以执行的操作。可能存在规则,规定哪些操作必须或能够执行以及实体可以响应或触发哪些事件。

一个复杂的状态可以分解为子状态。

.2 状态转换

实体如何从一种状态转换到另一种状态,可能是由流程步骤、业务规则或信息内容决定的。一个实体的状态序列并不总是线性的;一个实体可能会跳过几个状态或将退回到之前的某个状态,甚至可能不止一次。

转换可能是有条件的(由特定事件或达到条件触发)或自动的(在前一个状态中通过完成所需操作或经过一段时间后触发)。它也可以递归,离开一个状态并返回到相同的状态。转换以导致转换的事件、决定实体是否必须对事件做出反应的条件以及与事件关联的操作的形式进行描述。

.3 状态图

状态图显示一个实体的生命周期,从该实体第一次被创建开始,经过所有可能的状态,直到它被丢弃且不再被使用。

在状态图中,一个状态用带圆角的矩形表示。可能有任意多个状态。一个状态可以分解为子状态。

从一个状态转换到另一个状态,使用 一个指向起点状态到终点状态 的单向箭头表示,可选地用导致实体的状态从一种状态转变为另一种状态的事件名称、可选的条件和操作 标记。

实体生命周期的开始和结束分别用特殊的符号表示,用于指示该实体已存在或已被丢弃且生命周期结束。

.4 状态表

状态表 是一种显示状态及其之间转换的二维矩阵。它可以用作状态图的替代品、预处理或补充,用于捕获和分析。这是一种从领域专家那里获取 状态名称 和 事件名称 的简单方法。

每一行显示一个初始状态、转换以及结束状态。如果一个状态能够响应多个转换,那么每一个转换都会有一行来表示。

一个在一排中看起来像终端状态的状态 可能在另一排中作为起始状态。

4 使用考虑 10.44.4 使用考虑

.1 优势

  • 确定适用于正在建模实体的业务规则和信息属性。
  • 确定并描述实体在不同状态下的活动。
  • 与纯文本相比,它是一种更有效的文档和沟通工具,尤其是当要描述的事物有多个状态、转换和这些转换所受的条件时。

.2 限制

  • 通常只用于理解并交流被视为复杂的实体;简单的实体可以不用构建状态模型所需的时间和精力来理解。
  • 建立一个状态模型似乎很简单,但在域 SME 之间就模型所需的细节达成共识可能很困难且耗时。
  • 构建状态图需要对状态和转换有很高的精度;一些域 SME 和商业分析从业者在试图描述这种程度的细节时感到不舒服。