如何在UML状态机图中处理输入流并基于输入组合生成输出
UML 2 状态机(Harel图)建模方案
不需要使用并行状态和广播机制,仅通过嵌套状态即可完全匹配需求,完整设计逻辑如下:
顶层状态划分
共设置2个互斥顶层状态,所有状态默认输出CorrputSignal,仅有效状态输出合规信号:
- 信号未验证状态:未满足连续3次
SignalOk触发条件的场景,内部嵌套3个子状态实现连续次数计数 - 信号有效状态:已满足连续3次
SignalOk触发条件的场景,输出携带SteeringAngle原始转向数据的ValidSignal
嵌套子状态规则(信号未验证状态下)
三个子状态用于累计连续SignalOk的触发次数,初始默认进入「连续0次SignalOk」状态:
- 连续0次
SignalOk- 输入为
SignalOk:跳转至「连续1次SignalOk」 - 输入为
SignalWeak/SignalLost:保持当前状态
- 输入为
- 连续1次
SignalOk- 输入为
SignalOk:跳转至「连续2次SignalOk」 - 输入为
SignalWeak/SignalLost:跳转回「连续0次SignalOk」
- 输入为
- 连续2次
SignalOk- 输入为
SignalOk:直接跳转至顶层「信号有效状态」 - 输入为
SignalWeak/SignalLost:跳转回「连续0次SignalOk」
- 输入为
信号有效状态转换规则
- 输入为
SignalOk:保持当前状态,持续输出ValidSignal - 输入为
SignalWeak/SignalLost:直接跳转回「连续0次SignalOk」状态,输出切换为CorrputSignal
适配说明
该设计完全匹配你当前的工具能力约束,没有使用并行状态、广播机制,仅靠嵌套状态就实现了输入流的连续状态判断,所有逻辑符合需求定义的输出规则。
内容的提问来源于stack exchange,提问作者Priom Biswas
相关产品推荐
相关产品推荐

