This site uses cookies and similar technologies related to personal data to offer you a better browsing experience and analyse traffic. By clicking "I Accept" on this banner, or using this site, you consent to this.

Live Universal Interface

New tool for cooperative development of application systems
We've developed the original software, the environment for developing interface (screen forms) for application systems both existing or newly developed (Live Universal Interface, LUI). What are the key features of this new product?
Despite the large variety of tools already existing in the software development it is not uncommon to face the situation when the creation of user interface requires more resources than the task to implement applied business logic. The project is simply drowning in the current of various screen forms. Typically this happens due to the fact that even having the advanced tools the developer still has to create algorithms aimed at processing events during data input and display. They should manage the display of information on the screen through elementary commands in close mutual connection with the business logic of the application. All the while being held fully liable for the result!

This approach requires high professionalism and a wide range of skills from both developers and project teams. The same reasons do not allow relying on such tools when rapid prototyping of applications without significant functional limitations during its implementation is needed.
LUI offers an entirely new approach where it is enough to set the right properties for the interface elements during the development of screen forms.
Their behavior will be selected automatically, based on the properties set. Some properties can have values for which dependency on the other interface object's state is declared. The developers don't have to care about refreshing the values of these properties.
This approach allows us to clearly separate the development of the system's business logic from the development of the user interface. Both tasks can be dealt with independently. That means the interface can be developed after the database is designed and created as well as after developing and debugging of business logic. Moreover, the new interface can be created for an already existing and debugged system implemented long ago. It can be implemented by replacing the old forms step by step without the system shutdown.
Our experience of using LUI during software development allowed us to see the effectiveness of this tool as well as prove the following advantages.


LUI allows quick implementation of accounting, finance, and paying systems for all business sectors. The vast capabilities of this tool make it applicable for B2B, B2G, G2B, G2C, and in some cases even for B2C markets. LUI proves to be immensely useful for solving IT matters in business consulting as well as in cases where one needs to create a prototype (a pilot design) of an automated system and do it quickly and at minimum expense.
Reduced development costs
Using LUI significantly reduces costs for development of user interfaces (in some projects the development time was up to three times lower compared to development using Apache Wicket framework).
Rapid prototype creation
LUI allows you to rapidly create prototypes of automated systems while focusing on the primary task of automating business processes.
Efficient application upgrades
Applications created using LUI can be effectively upgraded and modified — any changes to the user interface are made directly on the running system. There's no need for shutdown. And no need for preliminary steps, such as creating local modifications, verifying changes, compilation, and assembling.
Additional consumer properties
LUI adds various consumer properties to the developed software, such as combining thin client options with long transactions and advanced search possibilities (QBE — Query by Example).
Long application life cycle
Changing the interface to a modern one won't require changing the existing forms and won't interfere with the systems' logic. Thus LUI ensures long life cycle for the applications in the future.

LUI Key Features

Characteristics of the interface elements are independent of their implementation

Elimination of event-oriented approach from the program logic development

Using declarative languages for describing properties of interface elements

Easy connection to any working application


LUI Basic Concept
The guidelines used during LUI development are as follows
  • 1
    The algorithms for updating the interface elements during the form's functioning are described by a declaration of its behavior instead of event processing. The engine ensures correct data display for each element and the form in general during its life cycle.
  • 2
    The elements' characteristics set is established and coordinated, ensuring there are no contradictions and incompatibilities between their values.
  • 3
    The elements and their properties are abstracted enough to be independent of the interface engine specifications. I.e. the properties deal with concepts rather than devices.
  • 4
    Using the declarative language ensures that all dynamic fragments are processed without unhandled exceptions. No errors appear in returned values after such fragments are calculated.
  • 5
    The dynamic fragments are calculated only if and when requested.
  • 6
    Once a value is calculated it is not re-calculated again for consequential uses, instead, it is reused even for different elements in case these elements are textually equal.
  • 7
    When responding to an event the engine sends commands for changing the interface elements to the client monitor with minimum traffic required — i.e. sending only new and/or changed forms.

Independent characteristics of interface elements
When creating interface forms, the developer of business logic deals with quite abstract characteristics of their elements, which are universal for all interface building tools. The developer focuses only on the required functions of the interface and doesn't have to care about the tools.
This way the application development is clearly separated from the design tools (environment and language) needed to create engine or engines displaying the end result.
E.g. the developer doesn't have to deal with such characteristics as fonts (for alphanumeric engines), color (for monochrome engines), etc. to define an interface element. They deal with the roles negotiated beforehand with the engine developer, such as "Attention", "Invisible" etc. The engine developer, on the other hand, interprets these roles according to the goals and tools they have. In case of major disagreement regarding the representation of characteristics of the interface elements, the engine developer can customize them for each Customer or in some cases each User.

Elimination of event-oriented approach
When describing an interface one shouldn't apply the categories of events and triggers, because they are quite customized for certain engines in certain environments. Advanced tools can support various event types, while the others offer not so much but are able to handle some events on the other hand. The same event may imply different things and trigger different actions in various environments.

That is why when creating LUI we decided it should process all the relations between interface elements via declarative dynamic characteristics instead of event handling. I.e. their characteristics can be changed both when they are created through an engine, and during their functioning, depending on input data, values of context elements, content, components changed by the user, and the results of queries to the systems (business logic).

Dynamic characteristics
Property value can be constant (e.g. button name, element activity marker, data type in the cell, etc.). That means it has been defined beforehand and will not change until the form is closed. However, it is possible to use braced textual constructs ether in or instead of the form value, aka Dynamic fragments. Their appearance is a command to the interpreter that at the moment of applying the property value, the content of braces will be interpreted, calculated and replaced (including the braces themselves) with the result of the calculation.
Dynamic characteristics example — table header with contract objects:

Objects of Agreement{SQL:Select NVL(Max(' №'||CONTR_NO), 's') from CONTRACTS where ID=0{Param:CONTRID}}
This property contains a dynamic fragment acting as a database query based on CONTRID input parameter. The zero placed in front of the parameter ensures that the value won't be empty. Since all the dynamics here is based on the input parameter only, it will be calculated just once — when the form is loading.
Another example is a dynamic property Title, written in JavaScript, which is procedural but is used as a declarative one here:

{JavaScript:"{FormProperty:RowNum}"?"Current row №{FormProperty:RowNum}, code={CODE}":"no current row"}
This dynamic fragment handles the changing property of the form — RowNum, number of the current row, as well as the CODE value of the current row. The engine identifies changes in the row number and CODE value and applies them automatically. The developer doesn't have to create event handlers to recalculate and replace the Title property.

LUI Workflow
  • 1
    Let's assume that an event requiring a response from the interface appeared on a workstation where the interface is displayed. The event may theoretically result in recalculating codependent dynamic characteristics of some interface elements. Although the event is initially triggered by actions, such as click, pressing some key on the keyboard, etc., the events sent to the interface server from the Client's monitor are more specified. I.e. a cursor moved to another field/row/cell, a button pressed, field value changed, menu item selected, etc.
  • 2
    The interface server can handle all types of events it receives from the Client's monitor. It performs all necessary actions with the forms, their elements, and values. If the process involves elements' characteristics, their dynamic values are calculated.
  • 3
    Business logic applied via application procedures — either directly, or by API or in some cases by direct data handling.
  • 4
    Generating commands for the Client's monitor to make the necessary visual changes on the client's workstation. If the process involves elements' characteristics, their dynamic values are calculated.
  • 5
    Calculating values for the elements that might have changed during the event handling. Generating commands to apply new values to the Client's monitor.
  • 6
    The Client's monitor interprets the abstract commands from the server to real changes shown on the client's display.
Distribution and Download
The LUI software product is a tool for the development and execution of web applications created in the environment of LUI. The terms of the LUI distribution license are listed on the page:

To run web applications created in the LUI environment, the product is distributed freely, including the provision of source code programs, distribution kit and instructions for installing LUI, which can be downloaded on the page:
To all those interested in the industrial operation of LUI, including the possibility of developing web applications, we offer to use our paid contractual services:

  • Delivery of an industrial version of LUI for the development and execution of web applications
  • Provision of technical support services
  • Migration of existing applications to LUI
  • LUI Training
  • Refinement and customization of LUI to your requirements
  • Providing program source codes and a documented data schema

  • Forms' metadata stored in PostgreSQL database
  • Supports multiple connections to different databases
  • Supports connections to PostgreSQL and Oracle
  • Declarative languages — SQL, JavaScript, PL/pgSQL
  • Procedural languages — PL/pgSQL, JavaScript

  • Forms' metadata stored in Oracle database
  • Supports connection to a single Oracle database
  • Declarative language — Oracle SQL, Oracle PL/SQL
  • Procedural language — Oracle PL/SQL
If you are interested in the services listed above or need an installation package for other OSes, please email us at or call +7 495 913-75-75.
«FORS Development Center», Subsidiary office
129626, Moscow, Grafsky lane., 14, bld. 2

Phone: +7 495 798 98 38 ext. 240, 267, 239, 212