Java USSD menu tree generation - how to

Deepak Marur picture Deepak Marur · May 25, 2010 · Viewed 8.9k times · Source

I want to generate a tree-based menu using Java that will appear on a USSD browser. Each node may have children, ending with leaf nodes. I will also have to maintain state regarding each user who accesses this menu (like his current position on the menu) to facilitate navigation.

Any ideas on how I may achieve the tree generation and state management?

Answer

Albert picture Albert · Jun 14, 2010

I assume that you get a message from the gateway such as: (Session#, UserInput) and you need to compute the next information to send to the user ?

I propose:

  1. table CURRENTSTATE:
    Session#
    State

  2. table STATES:
    State
    Title

  3. table CHOICES:
    State
    Choice
    Name
    DoCode
    NewState

Then when you get the message (Session#, UserInput):

  1. query CURRENTSTATE using the Session# to determine what state the user is in.
  2. query CHOICES using the State and Choice=UserInput to determine the new state (and DoCode) based on user input.
  3. Based on DoCode, you can do some processing.
  4. update CURRENTSTATE to reflect the new state.
  5. query STATES to get the Title (e.g. "Please choose a color").
  6. query CHOICES to get the possible choices from the new state (e.g. (1, "Blue"), (2, "Red"), etc.)
  7. build the message (concat Title + choices)
  8. return message to user.

Is that a reasonable way to solve the problem ?