The life cycle of the AbstractDynamicMenu class is based on the
life cycle of the SmappStatePlugin class; however, there are slight
differences in menu functionality.
If you extend the
AbstractDynamicMenu class, it implements the
processMessageLogic method and the
processStateLogic method.
- The processStateLogic method calls the
init method.
- processStateLogic calls both the
constructMenuList and
saveSessionVariables methods.
- The
SmappStatePlugin::getStateAttributes
method calls getStateAttributeList, which aggregates the
attributes returned by the method with attributes defined in the
AbstractDynamicMenu class, such as the input
exit-menu item and the output key-value pair.
- An AbstractDynamicMenu
state is initially activated as a follow-up transition from a previous
state, so the processing engine calls its processStateLogic method. The init and constructMenuList
methods are called sequentially to initialize and construct the menu.
Eventually, the menu is sent as an SMS message, and the processing engine
waits for the response. The consumer selects a menu item.
- If constructMenuList returns only a single item, the
state immediately calls saveSessionVariables, and
proceeds with the default dynamic follow-up transition. You can customize
the state's default behavior by overriding the
continueWhenSingleEntry method.
- When a response arrives, the processing engine calls the
state's processMessageLogic method, which
calls constructMenuList to assemble the
menu and interpret the selected menu item. If the selection is a valid menu
item, saveSessionVariables is called. The
state prepares the selected-item details for output, and proceeds with the
follow-up transition, as returned by the saveSessionVariables method. If null is returned, the default
OK follow-up transition is used.