1. A method for customizing a software application, comprising: storing in a memory a profile associated with a user; storing in the memory a plurality of states, each state being associated with a user interface; storing in the memory a plurality of transitions including a default transition and a profile-specific transition, each transition including a task to be performed by a workflow program; executing with a processor the workflow program, the workflow program comprising logic that when executed causes the processor to: identify the profile associated with the user; display the user interface of a state of the plurality of states; receive from the user a transition input available for the state, where the transition input is associated with a transition of the plurality of transitions; determine whether or not a profile-specific transition associated with the received transition input which corresponds to the profile of the user exists; if a profile-specific transition associated with the received transition input which corresponds to the profile of the user exists, retrieve the profile-specific transition associated with the received transition input as a retrieved transition; if no profile-specific transition associated with the received transition input which corresponds to the profile of the user exists, retrieve the default transition associated with the received transition input as the retrieved transition; and perform the task included in the retrieved transition.