Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Fixed some typos

...

Normal flow navigation is meant to guide the user through a form or an application along a predefined route. However, when no such predefined route exists, they system should support the user in navigating the application, by keeping track of the path they have travelled and current status of the application as well. To help achive this we have now introduced the FreeFlow navigation.

By applying specific construcs constructs of flows, pages and containers the FreeFlow mechanisme mechanism can be applied using the building blocks we all already know. An adaptation in the validation engine of the Blueriq Runtime helps the user to navigate freely, while being attented to validation messages on pages, that can be solved along the way whenever the user wants to or is able to. After which the whole flow can be completed.

...

To not interrupt the user's flow, when using the free flow mechanism, the validation engine handles all validation rules as non-blocking. An additional change in the validation engine when using free flow is the validation of read-only fields. The usecase use case for such a validation is for  for read-only attributes that represent a conclusion based on multiple inputs. For instance a user can make deposits from multiple accounts, but the sum of the deposits must be 10.000 euro's euros or more to proceed. In that case a validation on the read-only filed field 'sum of the deposits' could be used.

The required flow and containertypes can be found in the Blueriq Basic Modelling Library. The 'previous' event can be defined in the model to support the automatic flow back. The changed behaviour in the validation engine is triggered when the applicaiton application enters the flow of type FreeFlow, it's behaviour changes back to 'normal' navigation when that flow is finished. 

...

Because of the 'previous' event, which will route the user back to the last visited page, the return route is not modelled when using free flow naviationnavigation. Instead the return button on the page get's a Validate gets a Validate and Continue event named Previous. In free flow we can use the validate and continue event type while navigating the menu items since the validations will not hinder the user's flow but will only assist in keeping track of the pages the user has visited, but that contain contains invalid or incomplete information.

...

Each free flow menu item will correspond to a flow of type SinglePageFlow. This suggests that the single page flow can only contain a single page, which is not entirely true. We do expect the single page flow to have one 'landing' page for the menu item. From that landing page users can navigate to other pages in the single page flow, but they can not navigate to other menu items while doing that. So in the model the menu should be disabled. A typical usecase use case for this type of navigation is when the menu landing page contains an instance list and new instances will be added on a separate page. In this case the menu can temporarily be disabled when the user fills out the information in the instance and retuns returns to the menu landing page to continue the free flow.

...

Before the availability of the FreeFree flow FreeFlow in Blueriq you were also quite able to create such a navigation model. This however had a lot of drawbacks. To accomplish it a lot of boilerplate modelling had to be done, that didn't account to the actual business goal of the application. And because of all this boiler plate modelling, maintaining and testing your model grew in effort significally. 
With boiler plate modelling we mean that:

  • the navigation container had to be custom made, including a front-end theme , with extensive conditionality
  • the navigation 'options' had to be modeled, usually decision tables were abused for this (abused because it mixes business logic with interaction logic)
  • validation rules were commonly duplicated, for handling the blocking and non-blocking situations that the attributes had to be able to deal with
  • the flow model was overly complicated because all the options had to be explicitly modeled, also troubling the readability of the model and thus troubling maintainability
  • the navigation model had to be put into the domain, in order to model the decision tables and use it in the flows. Again mixing business knowledge with interaction knowledge

...

  • external flows, because the external flow creates its own session it doesn't have the same validation context ánd cannot provide the same user experience as this session dóes apply blocking validation 
  • widgets using the AQ_DashboarDashboard_FlowWidget and AQ_DashboarDashboard_ProjectWidget. The same reasons as per the external flows apply.
  • applying a repeat condition to a SinglePageFlow. This flowtype is not meant to be repeatable (in order to create a undefined number of menu items in the AQ_NavigationMenu container)