Web Flow Definition Language
Lexaden Web Flow Language is a declarative flow definition language for authoring flows with hierarchical state structure.
Flow Rules Structure
There is a number of states defined:
Root state for the entire application, must be only one application state.
<application id="application"> </application>
Entry point state for the authenticated user role, is configured in Profile entity. For anonymous user the default profile state is taken.
<profile id="default" initial="platform" extends="profile"> </profile>
Defined to group relative module state and event configurations into packages.
<package:state id="roles" initial="user.role.manage" extends="package"> </package:state>
Defined to group controller states into modules by domains like organization, role, period, group, etc.
<module id="platform" initial="welcome" extends="module"> </module>
The most important state in application since it describes transitions logic and is bound to appropriate Controller class in application by annotations. Action states defined in controller state are bound to appropriate methods in Controller class.
<controller id="controller" initial="initView"> </controller>
On action state appropriate annotated method is called in controller class.
<action id="initView" extends="action"> </action>
On view state flow engine particularly injects view (view is a component) in appropriate placeholder of appropriate view container. See separate thread for more details.
<view id="displayView" extends="view"> </view>
flow engine event. Event with type=flow indicate a flow entry event, such events trigger opening top tabs. Any java object can be sent/received in event content.
<module id="contact.us" extends="contact.us"/> <on type="flow" event="contact.us.flow" to="contact.us"/>