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 path route exists, they system should support the user in navigating the application, by keeping track of the path they have travelled and current status in of the application as well. To help achive this we have know now introduced the FreeFlow navigation.

By applying specific construcs constructs of Flowsflows, 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 want wants to or is able to. After which the whole flow can be completed.

Three parts of Blueriq are used to implement the FreeFlow navigation:

  1. There are two specific flowtypes that have required to be used to use this type of navigation and change to use behaviour of the validation engine differently
  2. We created a new navigation menu which is a specific container implementation, that works in conjunction with the new flow types and the validation engine
  3. The validation engine
  4. while in these type flows.
  5. A container type to use as the navigation menu,
  6. An event named 'previous' to support flowing back to the last visited menu item

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 use case for such a validation is 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 euros or more to proceed. In that case a validation on the read-only field 'sum of the deposits' could be used.

The required flow and containertypes The new flow typs and the new containertype can be found in the Blueriq Basic Modelling Library. The validation has been changed but only internally, so no specific installment of configuration has to done whether you want to use the FreeFlow or not.'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 application enters the flow of type FreeFlow, it's behaviour changes back to 'normal' navigation when that flow is finished. 

The basic construct in which FreeFlow should be modelled is as depicted in the figure below.

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 navigation. Instead the return button on the page 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 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 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 returns to the menu landing page to continue the free flow.

How it used to be before FreeFlow

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

...

  • when the user might not be experienced in the topic at hand in the form and wants or needs to be able to fill in all information known to him as it arises
  • when there are a fixed number of high level topics that can be addressed by the user in any order. The navigation menu only allows for one levels of topics, sublevels or are not possiblesupported.
  • when validations should not limit the user in getting the known information into the form

...

  • 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)