iApps LX State Engine

The state engine is responsible for maintaining the collection of blocks (their states, attributes, and values), and is essentially the iApps® LX framework, taking API calls from the users, and interfacing/orchestrating tasks with the processors.

The JSON block instance has multiple potential states. When you make a change to a JSON block instance contained within the state engine, it is alerted, the state is changed (for example from UNBOUND to BINDING), and then it is internally resolved to one of the final states (BOUND/UNBOUND/ERROR), with a BOUND state indicating that the configuration action has been completed successfully.

This full state engine resolution process is a combined effort between external APIs and an internal iApps LX platform system.

About user driven state engine changes

Some state engine changes are made from user configurable actions, that are executed by sending REST API requests (such as,PATCH) or alternatively by executing a GUI command (such as, Deploy). The table below shows the state changes that can be performed by the user.

User Driven State Changes
Current State Possible New State Description
TEMPLATE None Marks this JSON block as a template that can be copied. Templates may not go to any new state.
UNBOUND UNBOUND Updates JSON block configuration (no state change).
UNBOUND BINDING Initiates process of translating the configuration.
BOUND UNBINDING Initiates removing active configuration object.
BOUND BINDING Updates existing active configuration with a new configuration.
ERROR UNBINDING/BINDING Retries the state transition action, with or without configuration changes.

About state engine driven changes

Some block states changes can only be made by the iApps LX State Engine, behind the scenes, in response to actions performed by the config. These state transitions should never be made by the users.

State Engine Driven Changes
Current State Possible New State Description
BINDING BOUND Process of creating the active configuration from this block and has been completed.
BINDING/UNBINDING ERROR Unexpected problem has occurred. See error message for more details.
UNBINDING UNBOUND Process of removing active configurations that come from this block.

For more information about this internal contract process, see iApps LX Framework Contracts


Below is a graphical representation of the iApps LX block states and transitions:

../_images/blockstate.jpg

Example of state engine changes in a JSON block

The different states are viewable in JSON block responses. The following is an example of a template, showing the state as TEMPLATE, and then as a block instance with a BOUND state. These states are the result of user driven actions. In the third block, the state is BINDING which is resolved internally by the configuration processor. The BINDING state will either resolve to BOUND or ERROR (not shown in the example).

../_images/state_changes_response.jpg