Обычно набор возможных действий фиксируется с помощью методов в интерфейсе.Вы имеете в виду, что в разное время, в зависимости от предыдущих действий, должны быть включены только некоторые действия (например, вход в систему, прежде чем делать что-либо еще)?
В этом случае вы можете смоделировать его как компоненты(пользователь и системы), общаясь друг с другом и моделируя взаимодействие через конечный автомат или диаграмму последовательности.Если это то, что вам нужно, то фактическая реализация может быть такой же простой, как кодирование конечного автомата, например, в Java.
Или вы можете захотеть взглянуть на каркасы рабочих процессов.Но я думаю, что вам нужно уточнить ваши требования немного подробнее.
Или вы имеете в виду, что пользователь может вводить даже новые действия?