Architecture overview

Please note: we keep working on the detailed RAD Framework Architecture description, Programmers guide and tutorial applications. Expected delivery date is mid of November 2009.

The key idea of the FrameWork is to eliminate routine time-consuming C# coding by providing developer with Metadata driven application engine. Instead of writing DataAccess classes and ASCX/WinForm/Silverlight controls developer defines Entities, Attributes, Relations, Commands as well as UI Elements like Frames, Panels and Tabs as XML Metadata. This approach significantly increases development speed and saves costs at Support stage.

XML Metadata

Consider an example – you have some “Customer” table in the DB and would like to implement Customer Search/Vew/Edit/New forms.

All you need to do for this is define the MetaData listed below:

  <entity id="Customer" plural_caption="Customers"  single_caption="Customer"
             db_object="Customers" image_id ="Sample_Customer">
    <attributes>
      <attribute id="Id" primary_key="true" type="int"
                 visible="false"  default="=@sequence" />
      <attribute id="FirstName" caption="First Name" type="string"
                 max_length="50" nullable="false" />
      <attribute id="LastName" caption="Last Name" type="string"
                 max_length="50" nullable="false" />
      <attribute id="ContractDate" caption="Contract Date"
                 type="date" default="=SQL.select getdate()" />
      <attribute id="ContractFileContent" caption="Contract File" type="file"
                 nullable="true" filterable ="false" />
      <attribute id="CreditLimit" caption="Credit Limit"
                 type="float" default="100" />
      <attribute id="IsActive" caption="Is Active"
                 type="boolean" />
      <attribute id="Notes" caption="Notes" type="string"
                 control_width="3" max_length="2000" />
    </attributes>
  </entity>

Developers can write XML metadata files manually or use our Metadata Generator tool to create XML files by given DB structure within seconds.

Automatically Generated User Interface

After we add this metadata to our Application this will create the following User Interface screens automatically, without a single line of C# code:

 

Search Form

Search form allows user to filter data by any of attributes defined in MetaData. Different search operators can be selected for every attribute: Equal, Starts With, Between, Greater, Like, Not Empry, Is Empty, etc. For large search forms with big number of attributes it is possible for developer to move some of rarely used filters to the “Advanced Search” panel that is hidden by default. Also it is made possible to add any custom search criteria and map them to SQL patters that will be used when building result SQL select statement.  

Data Grid

Search results are displayed in DataGrid. It is made possible for user to re-open search form at any time for further adjustment of filter criteria. In Silverlight Framework DataGrid supports sorting, paging and inline data editing. In ASP.NET and WinForms frameworks DataGrids have more comprehensive functionality like Grouping, Grid Hierarchy, Layout customization, Storing of search criteria defined by the user for future use, etc.

 

Edit Form

Based on metadata definitions Framework Engine automatically creates Entity Edit form. By default Framework chooses edit controls based of data type of the attribute (text box, date edit, file upload, number edit, checkbox, etc), but it is made possible for the programmer to redefine any of controls or entire form. Simple data validation is done automatically. Depending on attribute level security settings Framework automatically hides or disables some of the attributes. For example – if we configure user role that is permitted to edit all Customer attributes except the Credit limit, then on the edit form framework will automatically create a text box in ReadOnly state for displaying the CreditLimit value but not allowing user to edit it. In the similar manner – if some user will not have permissions to see the credit limit value – then this attribute will become hidden on all entity forms – Search, List, Edit and View.  

Entity View Form

Entity view form allows user to see all entity attributes. It is possible to define complex layouts by grouping attributes in different panels and tabs.

 

File Upload form

For BLOB/Image attributes framework automatically creates user interface to upload and download files. There is no limit on the files size. For large files it is possible to restart and continue upload operation if connection was broken. It is worth to mention that all above Silverlight forms are completely created at runtime by our framework engine. If, for example, you would add new attribute to the Customer metadata – it would automatically appear on all Search/List/View and Edit forms related to the customer entity. This example demonstrates the very basic framework features. The way we designed framework allows building very complex UI with complex dependencies based on MetaData descriptions saving a lot of development time and costs.