Page 2 of 3 FirstFirst 123 LastLast
Results 11 to 20 of 24

Thread: What do you want in Spring Web Flow 1.1?

  1. #11
    Join Date
    Jan 2006
    Location
    Zürich, Switzerland
    Posts
    423

    Default

    Hi Goonie,

    Quote Originally Posted by Goonie View Post
    For example, I don't need a flow-id if I decide that the mapping of the FlowController already identifies a flow (of course, I would do without the ability to handle multiple flows with one controller, which I don't consider important)
    This is already supported out-of-the-box! Just configure a defaultFlowId for your FlowControllers on a per-controller basis.

    Quote Originally Posted by Goonie View Post
    Another example, if I don't want to support multiple conversations in one browser session, I would not need the conversation identifier.

    Ideally I'd like to be able to strip SWF down to no request parameter at all, except for the events.
    Interesting idea, but I wonder if this is more of a corner case. I suppose we would have to see if there is a sufficient number of users who require such functionality.

    As an aside, I suppose you could just implement your own custom FlowExecutorArgumentHandler that stores the conversation key in the session for createFlowExecutionUrl() and then retrieves the conversation key from the session for extractFlowExecutionKey(), etc. (note: I haven't fully thought this through. thus it may not be feasible. )

    Quote Originally Posted by Goonie View Post
    Here is why: I am implementing an web UI to a chess game. Each of the 64 fields (much more in certain chess variants) is potentially clickable, which means I really have to keep URL sizes down for the links (64 * 100 chars is already 7 kB just for the links!). Currently (without SWF), I just use the URL "?id=a4" for field a4 (6 bytes). This has kept me from introducing SWF to my project.
    If you have the option to switch to an AJAX or DHTML implementation of your page, you could certainly cut down greatly on the size by using JavaScript to dynamically build the chess board, links, etc. Just a thought.

    cheers,

    Sam

  2. #12
    Join Date
    Aug 2004
    Location
    Indianapolis, IN
    Posts
    6

    Default Thoughts

    Better Back Button Management
    I would like to see better back button management. Specifically, backing into a sub flow. I realize that it is possible to handle this declaratively however, if declaring was optional that would be great. Especially in instances where a user triggers a back event which takes the user to the last view-state within a sub-flow. Now it gets ugly when you have nested sub-flows and need to handle back events because, it just adds a lot of unnecessary XML. If webflow could have some sort of history manager that allows webflow to retrace it's footsteps without losing the information going forward, that would be great. I'm not sure how to implement this, I have tried on my own and do not have a complete solution.

    Error Handling within Test Cases
    I would like to be able to get validation errors within test cases easier possibly through a convenience method like: getErrors().

    Dependency Injection within Test Classes that extend org.springframework.webflow.test.AbstractXmlFlowEx ecutionTests
    It would be nice if classes that extend AbstractXmlFlowExecutionTests could participate in dependency injection instead of having to create a constructor that initializes the class.

    Explicit Set of Listeners in Test Cases
    It would be nice if I didn't have to set the listeners of a flow on the startFlow method in the AbstractXmlFlowExecutionTests class. Its easy to forget this step and when deployed as a web application this is a step one doesn't normally take.


    Keep up the good work!

  3. #13

    Smile Some features I'd like to see

    I really like the idea of composition and inheritance, bring it on

    Working with Object Sub Types
    This may/may not be solved with that but I think we need to address issues with working on subclasses of objects (not just subclassing flows). Yar, okay maybe it will be addressed by inheriting flows... but some good examples of this will be fantastic.

    Currently I'm working with a domain object in my system called a Format. A Format has a few different options and corresponding views available to it depending on the implementation type. What I'd like to see in the inheritance work in Spring Web Flows, in addition to being able inherit flows, is also the ability to easily choose a flow based upon the type of object. This is kinda doable now via expressions on the view attribute of a view-state, but a good best practice example would be fantastic since there are a few ways of doing this and I'm guessing some approaches are better then others.

    Spring Web Flows for Entire Presentation Tier
    From the sounds of it, many people are going down this path, and I'd like to see more work/examples which cover some of the pitfalls when going down this path:
    - Stopping sub-flow depth explosion... to stop a user bouncing between new flows
    - Working with bookmarks
    - "Escaping" the flow stack
    - General thoughts on this approach vs hybrids (like Spring MVC and SWF)

  4. #14

    Default Inheritance + 1

    By inheritance I would like to be able to add new actions to an existing flow, by using a different config file. This allows me to have a "basic main flow" and to change it slightly in different implementations of my application.

    Will that be supported?

  5. #15
    Join Date
    Mar 2006
    Posts
    119

    Default A few things I would like...

    In "stream of consciousness" order:

    1. a standard 'breadcrumbs' facility (I currently use a custom FlowExcutionListener adapted from a long-running thread in this forum)

    2. better JMX support (I have tried exporting the flowregistry as an MBean, but that is not too useful). I am after statistics: how many flows have been started, how many have finished, how many are active NOW, how many have thrown exceptions, etc. I currently have my own FlowExcutionListener doing some of this, but I am sure that more could be done. These stats are needed when tuning/testing a system. (Micro)Managers also love to be told these things...

    3. almost ALL my view-states look like:

    Code:
    	<view-state id="contactDetailsCheck" view="scriptTemplate">
    		<render-actions>
    			<action bean="contactDetailsCheckAction" method="setupForm" />
    		</render-actions>
    		<transition on="back" to="${flowScope.previousViewStateId}">
    			<action bean="contactDetailsCheckAction" method="bind" />
    		</transition>
    		<transition on="next" to="troubleCallType">
    			<action bean="contactDetailsCheckAction"
    				method="bindAndValidate" />
    		</transition>
    	</view-state>
    Violates the DRY principle.

    I'd love to have been able to have a template/super state that would pick up much of the boilerplate (as I DO have with my bean configs).

    4. a standard 'back' facility. Again I am using a FlowExcutionListener adapted from discussions on this forum. Very similar to the breadcrumbs listener. Would have been nice to have been able to pick something up "out of the box", however.

    5. I had to do a lot of popups for my current project...these were a pain point for me. I initially tried to use SWF for everything, spawning popups as subflows (see my earlier posting on popups in this forum). Unfortunately, once a popup is closed, there doesn't seem to be any easy way to transition back to a point in the 'main' flow (some fancy JavaScript might have done it,but I didn't have time to 'experiment' to the extent needed). I eventually gave up and adopted a spring MVC controller for the main application and spawned popups as top-level flows...this proved easier (but not as 'intellectually' satisfying...)

    6. I NEVER was able to get JMeter working for me (loadrunner was a no-brainer, however...worked fine). IMHO, this IS a SWF issue. What does one do after development: functional and load testing. A demo (WITH Redirect after POST still turned on) would be nice. Would make people (ME anyway :-) ) feel more comfortable about adopting this new/hoopy technology. For Functional testing, Canoo WebTest is A Good Thing, by the way.

    7. Keep encouraging the Good Work being done by the SpringIDE guys! Managers LOVE pretty pictures and Christian is really making progress with the visualiser...Once I was able to put the images of my flows on my cubicle wall, my managers started to 'get it' and began to grasp the amount of work that was ACTUALLY involved in what I was doing. Up to that point, all I had was text and hand waving: "a picture paints a thousand words"...usually because people don't actually read the thousand words anyway.

    8. maybe the ability to 'scaffold' a new project...an out of the box, fill in the blanks application with breadcrumbs, back button handling, JMX support, cluster-ability, etc. The existing demo apps didn't really help me that much (sorry).

    Anyway...IMHO SWF is a really good tool. THANK YOU, to all the developers. I'd have hated to have used struts or plain Spring MVC for my current project!

    Cheers,

    Alph

  6. #16
    Join Date
    Aug 2006
    Location
    Arequipa-Peru / South America
    Posts
    2,806

    Default

    i see that our members ask for more features and i can be agree,

    the point is that these new things should be explain it in detail in documentation(pdf) but furthermore of a specification, something with more details(reason of all, why use this, when,other options, consequences etc etc) and examples of course

    if these information is already in the web, pls share the link, SWF in a first glance can be complicated, i learnt this powerfull tool from a book and study the examples of the distribution

    i hope you see my point SWF team

    thanks for your effort and time
    - Manuel Jordan

    Kill Your Pride, Share Your Knowledge With All
    The Fear Of The LORD Is The Beginning Of Knowledge, But Fools Despise Wisdom And Discipline. Proverbs 1:7

    Blog


    Technical Reviewer of Apress

    • Pro SpringSource dm Server
    • Spring Enterprise Recipes: A Problem-Solution Approach
    • Spring Recipes: A Problem-Solution Approach, 2nd Edition
    • Pro Spring Integration
    • Pro Spring Batch
    • Pro Spring 3
    • Pro Spring MVC: With Web Flow
    • Pro Spring Security

  7. #17
    Join Date
    Sep 2004
    Location
    Leuven, Belgium
    Posts
    1,853

    Default

    Other interesting ideas about flow inheritance can be found here:
    http://forum.springframework.org/showthread.php?t=22940

    Erwin

  8. #18
    Join Date
    Jul 2007
    Posts
    5

    Default Internationalization (i18n) & Localization of Flows

    Hi,

    I would appreciate very much if there would be an improved internationalization and localization in SWF available.

    Would it be possible to implement a behaviour analog to ResourceBundles, i.e. selecting a respective flow by a Locale during runtime ?

    I have got something in mind like this:

    Example "Order Flow" ("webflow-config.xml"):
    ...
    <flow:registry id="flowRegistry">
    <flow:location path="/WEB-INF/flows/order-flow.xml"/>
    <flow:location path="/WEB-INF/flows/order-flow_en.xml"/>
    <flow:location path="/WEB-INF/flows/order-flow_fr_CH.xml"/>
    <flow:location path="/WEB-INF/flows/order-flow_it_CH.xml"/>
    </flow:registry>
    ...

    Each order-flow config file may implement different flows. According to the submitted Locale the respective flow would be called.

    Please, see also my thread at: http://forum.springframework.org/showthread.php?t=41347

    Thanks !

  9. #19
    Join Date
    Aug 2004
    Location
    Sydney
    Posts
    503

    Default

    Not sure if this will be handled by Flow Composition and Inheritance, but we'd like to be able to get access to parent flow details.

    e.g.

    1. Launch flow A, which results in some flow scope context details being loaded, e.g. a person id.

    2. Launch flow B, as a subflow to A, passing a person id in as a flow input param.

    3. Now, if i want to just abandon flow B, without doing a cancel/finish, but just click somewhere on the page which might be related to flow A I can't easily do that now (I think).

    When I'm in flow B, I want to still be able to render page links using context details from flow A, and then click on those links and launch a new flow C, which is a subflow from flow A.

    If anyone has a neat solution to this, either using SWF 1.0, or a 'thinking outside the box' solution then i'd be interested to hear it.

  10. #20

    Default

    We've got something fairly similar in an app I'm working on, where we have a menu which allows you to jump to any page in the top-level flow from any of the subflows.

    It works by having a global transition in the subflows which catches any unhandled transitions (i.e. the events from the menu), and propagates then out to the top-level flow, which then transitions to whatever they asked for.


    Each of the subflows that can be jumped out of has the following
    Code:
    <global-transitions>
        <transition on="*" to="menuNavigationState">
            <set attribute="menuNavigationEvent" scope="conversation"  value="${lastEvent}"/>
        </transition>
    </global-transitions>
    
    <end-state id="menuNavigationState"/>
    which saves the current event to a conversation scope variable (you could probably use an output mapper to do this, if you wanted).


    The top-level flow then has a global transition which catches the "menuNavigationEvent" transition, and dispatches according to what was actually selected. What I've got below isn't how our app actually works, as we're got a navigation TargetStateResolver which does additional things like checking that you're allowed to go to the state, but conceptually it's like it.

    Code:
    <global-transitions>
        <transition on="menuNavigation" to "navigationDispatchState"/>
    </global-transitions>
    
    <decision-state>
        <if test="${conversationScope.menuNavigationEvent.id eq 'here'}" then="here"/>
        <if test="${conversationScope.menuNavigationEvent.id eq 'there'}" then="there"/>
    </decision-state>

    To launch subflow C, you'd just transition to a subflow state which starts it from the navigation dispatcher.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •