Evolutility.org 4.1
 

Evolutility Meta-model

Evolutility is a generic Web UI for CRUD. It generates all web forms at run-time based on external metadata. This metadata is structured in a unique way as defined in the Meta-model.

The meta-model can be understood as the structure of the application definitions. It can be used as a declarative language to describe application models. For any components (i.e. an address book or a task list), the user interface, its database mapping, and its behavior are totally defined outside of the code.

Evolutility meta-model is powerful yet simple. It allows for the description of CRUD web application structuring metadata in very compact ways using only 7 elements and 30 attributes (less than 40 words)...

An example: a do to list

Let's look at the code (or rather the absence of code) behind our to do demo application.

The object (database entity and UI) is defined by a single XML document. This XML document is composed of one form element containing one data element specifying the driving table name, some panel elements determining the visual grouping (in edit and view modes), and as many field elements.

Let's take a look at the XML for the To Do application:

<form label="To Do" xmlns="http://www.evolutility.com">

<data entity="task" entities="tasks" icon="todo.gif" dbtable="EVOL_ToDo" dborder="PriorityID, duedate" dbcolumnlead="title" />

<panel label="Task" width="62" >

<field type="text" label="Title" cssclass="fieldmain" width="100" dbcolumn="title" dbcolumnread="title" required="1" maxlength="255" search="1" searchlist="1" searchadv="1" />

<field type="date" label="Due Date" maxlength="10" width="40" dbcolumn="duedate" dbcolumnread="duedate" search="1" searchlist="1" searchadv="1" />

<field type="lov" required="1" label="Priority" width="60" dbcolumn="PriorityID" dbcolumnread="Priority" dbtablelov="EVOL_ToDoPriority" dborderlov="id" search="1" searchlist="1" searchadv="1"/>

</panel>

<panel label="Status" width="38">

<field type="lov" label="Category" width="100" dbcolumn="CategoryID" dbcolumnread="Category" dbtablelov="EVOL_ToDoCategory" dborderlov="name" search="1" searchlist="1" searchadv="1" />

<field type="boolean" label="Complete" labellist="C." img="checkb.gif" width="50" dbcolumn="Complete" dbcolumnread="Complete" search="1" searchlist="1" searchadv="1"/>

</panel>

<panel label="Notes" width="100">

<field type="textmultiline" label="" labeledit="Notes" labellist="Notes" width="100" height="6" dbcolumn="notes" dbcolumnread="notes" maxlength="1000" search="0" searchlist="0" searchadv="1" />

</panel>

</form>

This is it! As you can see it is much smaller than the HTML for each form needed for CRUD.

In addition, it is extremely easy to add fields or modify your applications later.

Read our award winning article on Minimalist Meta-Model for CRUD Applications at CodeProject.

Storing and managing metadata

Using Evolutility, metadata can be stored in XML, or directly in the database.

XML

XML is advantageous for easier deployment, and more flexible as Evolutility currently supports more features than EvoDico.

Database dictionary

Storing the metadata directly in the database ("EvoDico" set of tables) instead of XML, you can modify your applications in your browser.

It also comes with a set of wizards to build or install new applications easily.