Key components

The key components and how they relate to each other.

Overview of Flow, Step, Control and Pipes

Flow

On a high level, Forms delivers well defined "apps" with the soul purpose simplifying a process related to an "IAM-problem". Each app is called a Flow. A Flow have a set of basic properties. For example who may access, is it public, how do it consume authentication.

Step

Flow consists of a number of Steps. Each Step aims to guide the end user through the process. A simple Step could just consists of read only data about a user or a group.

Control

Every Step includes a number of Controls. A Control is some kind graphical entity used to let users read or write data. Just like a Flow or a Step a Control has a number of properties that will define it's behaviour.

By combining Flow, Step & Control small well-defined IAM apps can be built fast with instant added value.

Pipes

When a user wants to do something in the UI, such as retrieve or write data to a data source or process data, a pipe can be used. A pipe consists of a number of valves that can retrieve, write or process data. Pipes and valves are something that is found in all Fortified ID products and are shared between the products, so if you have knowledge of this from one of our other products, it works the same in Forms.

Data management

A flow starts by initialising two state objects: the Accumulated Flow State, and the Accumulated Flow Delta. If an initialising pipe is configured, that pipe is executed and the result, which must be a single, flat key/value object, is added to the Accumulated Flow State.

During the progression of a Flow, data from each step is accumulated in both state objects according to certain rules.

The data in the Accumulated Flow State can be referenced using the prefix flow, combined with the ID of the Control that provided the data.

Example:

The data in the Accumulated Flow Delta is sent to the pipes configured to run throughout the flow.

Example:

The next section describes this process in detail.

Control data and accumulated state

As the flow transitions from one step to the next, a number of things happen:

  1. Each Control in the current step contributes its data to the Accumulated Flow State. For read only Controls, no change is accepted.

  2. Each Control in the current step is inspected to see if it has data to contribute to the Accumulated Flow Delta. A Control only contributes data to the Delta if at least one of the following conditions holds true:

    • The data that the Control holds has changed since the Step was loaded.

    • The Control property always_include is set to true.

  3. If a pipe function is associated with the current step, that pipe is called with the Accumulated Flow Delta, i.e. accumulated changed data from all steps up to and including the current one.

  4. The data in the response from the pipe function, which must be a single, flat key/value object, is added to the Accumulated Flow State.

Data flow

Each Control contributes data to the Accumulated Delta according to a set of rules. The flowchart below visualises these rules. At the end of each step, before transitioning to the next or ending the flow, each Control is checked according to the flowchart, and when all Controls have been processed, the associated pipe is executed with the Accumulated Delta as parameter. The pipe returns a single, flat key/value object, which is added to the Accumulated Flow State.

Unexpected error with integration mermaid: Integration is not installed on this space