AlgorithmicApproaches resort under PageFlowCentric approaches.
The same sort of specification expressed by a finite state machine (FSM) or a set of rules can be expressed in an algorithm using a programming language. Tasks in the Ada language may be regarded as an analogy of what such algorithms will look like. The concept is best illustrated with an example (using the Cocoon framework, in the JavaScript programming language):
1 function example()
2 {
3 var result;
4
5 cocoon.sendPageAndWait("firstPage.html");
6 result = cocoon.request.get("someFormValue");
7
8 if (result == "a")
9 cocoon.sendPage("aPageForA.html")
10 else
11 cocoon.sendPage("aPageForOther.html")
12 }
Cocoon and similar approaches exemplify a programming language concept called continuations. (The interested reader is referred to http://www-128.ibm.com/developerworks/library/j-contin.html.
When the function in this example is executed and it reaches sendPageAndWait, the state of the program is saved (in session scope), and the specified page is sent to a client browser. If the browser then submits a form in reply (the user having pushed a button, for example), then the state of the program is restored and processing continues at the next line.
All the powerful semantics of the host programming language constructs are thus available (exception handling, for example) for specifying page flow.
CherryFlow is another such example, using the Python programming language.