====== Creating Flow Controllers ====== To create an ActionFlow controller, you must subclass the ActionFlow::Base ruby class. class MyController < ActionFlow::Base def initialize # Add your mapping here end # Add your step implementations here end Here's an example controller. This particular controller is an excerpt from the [[demo application]] provided to demonstrate the ActionFlow framework. class SimpleFormController < FlowApplicationController def initialize # Start the flow with the initialization view start_with :init # End the flow on the qui view end_with :quit # Redirect the invalid flows to the index of # the current controller so the flow initializes # correctly redirect_invalid_flows :action => :index # Rescue potential errors upon :StandardError => :quit_with_error # Map the init step view_step :init do # Map some events to steps on :next => :hello_world on :raise_error => :raise_error on :quit => :quit # Handle potential errors upon :StandardError => :quit_with_error end # Map the hello world step view_step :hello_world do # Map some events to steps on :hello_you_too => :quit on :back => :init # Handle potential errors upon :StandardError => :quit_with_error end # Map the error raising step action_step :raise_error do # Nothing to map, we'll throw an error # but the controller will rescue it. end # Map the hello world step action_step :quit_with_error do # Use this method as a step implementation method :show_error_and_quit # Map an event on :quit => :quit end # Map the quit step view_step :quit end def raise_error raise(StandardError.new, "Just a test") end def show_error_and_quit flash[:error] = "If you see this message, there was an error and your session has been terminated." event :quit end end ~~DISCUSSION~~