Идентифицируйте данные при помощи записи через точку

Чтобы задать путь от родительского состояния к объекту данных, квалифицированное имя данных использует dot notation. Запись через точку является способом идентифицировать данные на определенном уровне Stateflow® иерархия графиков. Первая часть квалифицированного имени данных идентифицирует родительский объект. Последующие части идентифицируют дочерние элементы по иерархическому пути.

Для примера в этом графике символ data находится в подсостоянии aa состояния a. В действиях состояния и перехода используются квалифицированные имена данных для обращения к этому символу.

  • В переходе по умолчанию действие использует квалифицированное имя данных a.aa.data чтобы задать путь от графика до состояния верхнего уровня a, к подсостоянию aa, и, наконец, чтобы data.

  • В состоянии a, действие входа использует квалифицированное имя данных aa.data для задания пути из подсостояния aa на data.

  • В состоянии b, действие входа использует квалифицированное имя данных a.aa.data чтобы задать путь от графика до состояния a, к подсостоянию aaи затем, чтобы data.

Разрешение имен квалифицированных данных

Во время симуляции Stateflow разрешает квалифицированное имя данных, выполняя локализованный поиск иерархии графика для совпадающего объекта данных. Поиск начинается на уровне иерархии, где отображается указанное имя данных:

  • Для состояния активности начальной точкой является состояние, содержащее действие.

  • Для метки перехода начальной точкой является родительский элемент источника перехода.

Процесс разрешения выполняет поиск пути к данным на каждом уровне иерархии графиков. Если объект данных соответствует пути, процесс добавляет этот объект данных в список возможных совпадений. Затем процесс продолжает поиск на один уровень выше в иерархии. Процесс разрешения останавливается после поиска по уровню графика иерархии. Если существует уникальное соответствие, то указанное имя данных разрешается по совпадающему пути. В противном случае процесс разрешения завершается неуспешно. Симуляция останавливается, и вы видите сообщение об ошибке.

Этот график потока иллюстрирует различные этапы процесса для разрешения квалифицированных имен данных.

Лучшие практики для использования записи через точку

Разрешение имен квалифицированных данных:

  • Не выполняет исчерпывающий поиск всех данных.

  • Не останавливается после нахождения первого матча.

Для улучшения шансов на нахождение уникального результата поиска при разрешении квалифицированных имен данных:

  • Используйте определенные пути в квалифицированных именах данных.

  • Назовите состояния уникальными именами.

  • Используйте состояния и коробки в качестве оболочек, чтобы ограничить возможности поиска разрешения пути.

Примеры квалифицированного разрешения имен данных

Поиск не производит совпадений

На этом графике действие входа в состоянии b содержит указанное имя данных aa.data. Если символ data находится в состоянии aa, тогда Stateflow не может разрешить указанное имя данных.

В этой таблице перечислены различные этапы процесса разрешения для квалифицированного имени данных aa.data.

СтадияОписаниеРезультат
1Запуск в состоянии b, поиск объекта aa который содержит data.Совпадение не найдено.
2Переход на следующий уровень иерархии (уровень графика). Поиск объекта aa который содержит data.Совпадение не найдено.

Поиск заканчивается на уровне графика, не найдено совпадений для aa.data, в результате чего произошла ошибка.

Чтобы избежать этой ошибки, в действии входа состояния b, укажите данные с более конкретным именем a.aa.data.

Поиск производит несколько совпадений

На этом графике действие входа в состоянии a содержит два образцов квалифицированного имени данных aa.data. Если оба состояния названы aa содержать объект данных с именем data, тогда Stateflow не может разрешить указанное имя данных.

В этой таблице перечислены различные этапы процесса разрешения для квалифицированного имени данных aa.data.

СтадияОписаниеРезультат
1Запуск в состоянии a, поиск объекта aa который содержит data.Совпадение найдено.
2Переход на следующий уровень иерархии (уровень графика). Поиск объекта aa который содержит data.Совпадение найдено.

Поиск заканчивается на уровне графика двумя найденными совпадениями для aa.data, в результате чего произошла ошибка.

Чтобы избежать этой ошибки:

  • Используйте более конкретное имя данных. Для образца:

    • Чтобы задать объект данных в подсостоянии состояния a, используйте квалифицированное имя данных a.aa.data.

    • Чтобы задать объект данных в состоянии верхнего уровня aa, используйте квалифицированное имя данных /aa.data.

  • Переименуйте одно из состояний, содержащих data.

  • Окружение состояния верхнего уровня aa в коробке или в другом состоянии. Добавление корпуса препятствует процессу поиска обнаруживать данные в состоянии верхнего уровня.

Похожие темы