主要内容

使用点符号识别数据

要指定从父状态到数据对象的路径,使用限定数据名称点符号.点符号是在statflow的特定级别上标识数据的一种方法®图的层次结构。限定数据名的第一部分标识父对象。随后的部分沿着分层路径标识子节点。

例如,在这个图表中,符号数据位于子状态aa国家的一个.状态和转换操作使用限定数据名引用该符号。

  • 在默认转换中,操作使用限定数据名称a.aa.data指定从图表到顶级状态的路径一个,到次态aa,最后到数据

  • 在国家一个,则输入操作使用限定数据名称aa.data从子状态指定路径aa数据

  • 在国家b,则输入操作使用限定数据名称a.aa.data指定从图表到状态的路径一个,到次态aa,然后到数据

有两个状态a和b的图表。状态a包含一个名为aa的子状态。状态aa包含一个名为data的数据对象。

限定数据名称的解析

在模拟过程中,statflow通过对图表层次结构执行本地化搜索以查找匹配的数据对象来解析合格的数据名称。搜索从符合条件的数据名称出现的层次结构级别开始:

  • 对于状态操作,起点是包含该操作的状态。

  • 对于转换标签,起始点是转换源的父级。

解析过程在图表层次结构的每一层搜索到数据的路径。如果数据对象与路径匹配,则流程将该数据对象添加到可能匹配的列表中。然后,该过程继续在层次结构的更高一级进行搜索。解析过程在搜索层次结构的图表级别后停止。如果存在惟一匹配,则限定数据名称将解析为匹配路径。否则,解析进程将失败。模拟停止,您看到一条错误消息。

此流程图说明了解析合格数据名称过程中的不同阶段。

描述解析合格数据名称的过程的流程图。

使用点符号的最佳实践

解析合格的数据名称:

  • 不执行所有数据的彻底搜索。

  • 在找到第一个匹配项后不会停止。

在解析合格的数据名称时,提高找到唯一搜索结果的机会:

  • 在限定数据名称中使用特定路径。

  • 给州指定唯一的名称。

  • 使用状态和框作为框来限制路径解析搜索的范围。

限定数据名称解析的示例

搜索没有产生匹配

在这个图表中,进入动作处于状态b包含限定数据名称aa.data.如果符号数据居住在国家aa,则statflow无法解析限定的数据名称。

有两个状态a和b的图表。状态a包含一个名为aa的子状态。状态aa包含一个名为data的数据对象。

该表列出了限定数据名解析过程中的不同阶段aa.data

阶段 描述 结果
1 从国家b,搜索一个对象aa包含数据 没有发现匹配。
2 向上移动到层次结构的下一层(图表层)。搜索对象aa包含数据 没有发现匹配。

搜索在图表级别结束,没有找到匹配aa.data,导致错误。

为了避免这个错误,在状态的进入动作中b,使用更具体的限定数据名称指定数据a.aa.data

搜索产生多个匹配

在这个图表中,进入动作处于状态一个包含限定数据名的两个实例aa.data.如果两个州都被命名aa包含一个名为数据,则statflow无法解析限定的数据名称。

有三种状态a, aa和b的图表。状态a包含一个名为aa的子状态。每个名为aa的状态都包含一个名为data的数据对象。

该表列出了限定数据名解析过程中的不同阶段aa.data

阶段 描述 结果
1 从国家一个,搜索一个对象aa包含数据 发现匹配。
2 向上移动到层次结构的下一层(图表层)。搜索对象aa包含数据 发现匹配。

搜索在图表级别结束,找到两个匹配项aa.data,导致错误。

为了避免此错误:

  • 使用更具体的限定数据名称。例如:

    • 指定状态的子状态中的数据对象一个,则使用限定数据名称a.aa.data

    • 以指定处于顶级状态的数据对象aa,则使用限定数据名称/ aa.data

  • 重命名其中一个包含的状态数据

  • 封闭顶层状态aa在盒子里或在另一种状态。添加框将阻止搜索过程检测处于顶级状态的数据。

    图表中,一个方框包含了顶级状态aa。

相关的话题