Создайте суперобъекты перехода

Stateflow® API в настоящее время не поддерживает прямое создание суперпереходов. Суперпереходы являются переходами между разными уровнями в графике. Суперпереход может быть между состоянием в графике верхнего уровня и состоянием в одном из его подсостояний, или между состояниями, находящимися в различных подсостояниях. Для лучшего понимания суперпереходов смотрите Перемещение Между Уровнями Иерархии при помощи Суперпереходов.

Можно использовать обходное решение для того, чтобы косвенно создать суперпереходы. В этом примере суперпереход желаем от соединения в субдиаграмме к соединению вне субдиаграммы. Для того, чтобы использовать API Stateflow, чтобы создать суперпереход в этом примере, сначала используйте API, чтобы создать сверхсостояние как обычное состояние с переходом между его содержавшим соединением и соединением снаружи.

Stateflow chart with one state. A transition connects a junction inside the state to a junction outside the state.

Теперь установите IsSubchart свойство состояния к true.

Stateflow chart with one subchart. A supertransition connects a junction inside the subchart to a junction outside the subchart.

Этот шаг делает A состояния субдиаграмма и переход между соединениями являются теперь суперпереходом.

Можно также соединить суперпереходы к, и от объектов в существующей субдиаграмме (утвердите A, например) с этими шагами:

  1. Сохраните исходное положение субдиаграммы A к временной переменной рабочей области.

    Например, если субдиаграмма A имеет указатель API sA, сохраните его положение этой командой:

    sA_pos = sA.Position;

  2. Преобразуйте субдиаграмму A к состоянию путем установки IsSubchart свойство к false.

    sA.IsSubchart = false;

  3. Разгруппируйте A состояния путем установки IsGrouped свойство к false.

    sA.IsGrouped = false;
    Когда вы преобразуете субдиаграмму в нормальное состояние, это остается сгруппированным, чтобы скрыть содержимое субдиаграммы. Когда вы разгруппировываете субдиаграмму, она может изменить размер, чтобы отобразить ее содержимое.

  4. Установите необходимые связи перехода.

    Смотрите Создают Графики при помощи API Stateflow для примера создания перехода.

  5. Установите IsSubchart свойство A состояния назад к true (=1). Например,

    sA.IsSubchart = 1;

  6. Присвойте субдиаграмму A его исходное положение.

    sA.Position = sA_pos;
    Когда вы преобразуете субдиаграмму в нормальное состояние и разгруппировываете его, это может изменить размер, чтобы вместить размер его содержимого. Первый шаг этой процедуры хранит исходное положение субдиаграммы так, чтобы это положение могло быть восстановлено после того, как связь перехода установлена.

Похожие темы