I don't have a good alternative, either. This may be one feature we
lose
in the move to client/server programming. The idea of a rigid
conversation flow where panel sequence is determined by the server
may
become a thing of the past, even though it has some really good
points.
But why loose this feature? Because there are problems with it? Because
our
apps don't scale / perform badly? Why the move to client/server (a
browser
app is nothing more than a client/server app).
OK, but you don't need to lose that flow when you move to the web.
There's no reason you can't have a flow between pages in a web world,
and that includes two different "entry points" into a common multi-page
flow where at the end of the flow you return to the "correct" place.
We've been doing it in web apps for years. There are two ways we've
accomplished this, both have advantages.
The simpler way is to pass a parm to the "common flow" telling it where
to return when it's done. We (and others I've seen use this concept)
tend to call it the retURL, short for "return URL" so you're basically
telling the target flow, when you're complete redirect to the retURL
url. Simple enough. The nice thing is, if you do your urlencoding
correctly you can move from flow to flow to flow and the retURL just
keeps getting bigger. The problem with this approach is there is a limit
to how big the URL can be. IE seems to have problems w/URLs > 4K. It
takes a while to get there, but if you've got long URLs to begin with,
then a couple of loops and you're there.
Second way requires more infrastructure, but it works better. Basically
the same concept, but instead of using the URL to hold the "done stack"
(named because we have actions in our app called "done" that takes you
back to the last logical entry point, eg F3) you store the stack in a
database table. If a page wants to register itself as the "done" target
it simple writes itself into the stack. When you need to process the
done action you look at the last URL on the stack and go there.
-Walden
As an Amazon Associate we earn from qualifying purchases.