Чтобы задать путь от родительского состояния к объекту данных, квалифицированное имя данных использует 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
в коробке или в другом состоянии. Добавление корпуса препятствует процессу поиска обнаруживать данные в состоянии верхнего уровня.