Back button Jira issue

Cantor, Scott cantor.2 at osu.edu
Fri Jan 15 18:39:13 EST 2016


The "broader" issue I was referring to on the call in Jira is IDP-312, Implement a FlowExecutionRepository that doesn't impose Serializable on the view and conversation scopes



Marvin, you posted a link to the ClientFlowExecutionRepository replacement you built in that issue, so I was aware of it.

Our two major problems with using cookies for the state are serializability (huge, but ultimately a technical issue, and applies to any solution here) and Safari's cookie limitations (fatal).

Using local storage is very tough, but I don't know enough of the SWF interfaces here to really say anything definitively.

From what I can see, what you did is actually fit the state in the flow execution key parameter, not a cookie. That's an interesting alternative, but there are limitations on URL length that we'd run into I think.

My feeling has been that even if we could make the back button functional in SWF terms, we'd end up with a ton of corruption of our state tree because it's just too complex and not being maintained with enough rigor. We would need to get much more serious about codifying component contracts and cleaning up data at a lot of stages to avoid any possible misinterpretation of state. None of that is actually bad, of course, it's an indictment of some sloppy behavior now that I got away with because the flow is only one way and I knew it would be for the foreseeable future.

Something that popped into my head just now: I believe that the cause of the SWF behavior I'm having the most angst over is that *after a flow completes*, it sees the resumption of a missing flow execution, and actually produces a new execution of the flow, which I find really incomprehensible as a default. I wonder if it's possible to inject a sort of minimally extended version of the built-in session-backed repository for state but have it behave in a special way if it's asked to resume a missing flow.

Basically, fixing the back button mid-flow may require a much larger fix, but I'm wondering if there might be an alternative in the specific case of a flow being gone (which happens to include the login page left open for hours). If I could make it stop rewriting history by bouncing into a new flow execution, that would be close to restoring V2-like behavior where hitting Back a few times in fact gets you back.

-- Scott



More information about the dev mailing list