2016-08-29 6 views
1

Вот вопрос тем, у кого есть опыт работы с Boost MSM. У меня очень крупная государственная машина, реализованная с помощью Boost MSM, и, наконец, сегодня я закончил векторный предел 50 (на мой конечный автомат слишком много событий, чего нельзя избежать). Я создал более высокие заголовки векторов (vector60, vector70 и т. Д.), Но я хотел сжать свой автомат в целом.Иерархический конечный автомат с Boost MSM

Вопрос в том, поддерживает ли MSM иерархические государственные машины. Например (исправьте меня, если я ошибаюсь), на иерархическом конечном компьютере, если событие не обрабатывается в определенном состоянии, это событие будет перенаправлено в родительское состояние текущего состояния & и так далее.

Как часть уменьшения размера таблицы перехода, я надеялся создать родительское состояние, в котором будут обрабатываться события с обычными обработчиками, что уменьшит размер таблицы перехода.

Любые рекомендации/комментарии оценены.

Благодаря

+0

Я ничего не знаю о MSM, но мой собственный CHSM является иерархическим: http://chsm.sourceforge.net –

ответ

3

Да, Boost.MSM поддержка иерархических автоматов. Иерархические машины состояний называются «состояние подмашины». Это термин UML, и Boost.MSM также использует его.

Вот пример подпроцесса состояния машины: http://redboltz.wikidot.com/sub-machine-state

Переход от родительского состояния машины к югу от государственной машины, вы можете использовать точки входа состояния псевдо. См. http://redboltz.wikidot.com/entry-point-pseudo-state

Переход от машины подзаголовка к родительскому компьютеру состояния, вы можете использовать псевдоопределение точки выхода. См. http://redboltz.wikidot.com/exit-point-pseudo-state

Событие оценивается внутренним большинством состояний во внешнее состояние. Таким образом, вы можете написать общий переход на родительский конечный автомат. Вот немного практического примера: http://redboltz.wikidot.com/practical-sub-machine-example

Все примеры содержат диаграмму состояний конечных машин UML и полный код.

Смежные вопросы