Web Application Generator

Labels
AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(183) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Archive
Blog
Web Application Generator
Monday, May 14, 2012PrintSubscribe
Building “New” Rows with SQL Business Rules

Session variables provide a context for the current user activities. The common use for session variables is to perform automatic data filtering and to facilitate data input.

The Session and URL Variables example explains how to store an ID of  a supplier in a session variable. The stored Supplier ID is used for product filtering.

It is easy to use the same session variable to assign a supplier when a new product is entered.

Add a new SQL Business Rule to the Products data controller and enter its properties as follows.

Property Value
Command Name New
Type SQL
Phase Execute
Script
-- assign the Supplier ID
set @SupplierID = @Session_SupplierID
-- assign default values to other fields
select 
    @SupplierCompanyName = CompanyName, -- Supplier alias field
    @UnitsOnOrder = 0,                  -- Unit On Order
    @Discontinued = 0                   -- "Discontinued" flag
from Suppliers
where SupplierID = @SupplierID
-- assign default Reorder Level as the maximum reorder level  
-- for the products of this supplier
select @ReorderLevel = max(ReorderLevel)
from Products
where SupplierID = @SupplierID

Click OK button to save the business rule.

The script definition uses the value stored in the session variable SupplierID to assign the initial values to the lookup field SupplierID and its alias SupplierCompanyName when a new product record is created. It also figures ReorderLevel as a maximum reorder level of supplier products. The script assigns default values to the fields UnitsOnOrder and Discontinued.

The hierarchy of Products data controller will look as shown in the picture.

The selected business rule is executed when a new data row is created by the data controller before it is rendered in the user interface in the web browser

Click Browse to generate the app. Navigate to Suppliers page and choose Show Supplier Products in the context of any data row.

Select a custom 'SQL' action to store the SupplierID in the user session variable

The supplier ID will be stored in the session variable and the web browser will redirect to Products page.

Start creating a new product. The default supplier field values will be automatically entered in the new data record.

The application framework executes business rules that match the New command name. It returns all changed “field” parameter values as the values of a new data row to the web browser. The client library renders a new data row in a presentation view.

The session variable SupplierID is used to assign default values to the fields SupplierID, SupplierCompanyName, and ReorderLevel

You can visit other application pages. The value of the session variable SessionID will remain the same. If you arrive to Products page directly without choosing another supplier, then the same supplier stored in the session variable will be assigned to the new product record.

Monday, May 14, 2012PrintSubscribe
Session_VarName & Url_VarName

Web applications may maintain a collection of session variables on the server and use the variables when a user navigates between pages. A session variable is usually initialized when a user signs in or when a certain action is performed. The variables exist on the server for a duration of the browsing session and expire when user closes a browser or logs out.

There are also the client-side variables that are typically passed as URL arguments when users navigate from one page to another.

SQL Business Rules can access both types of variables and manipulate their values.

Consider the the following example that demonstrates creation and use of a session variable in the Northwind sample.

Start Project Designer and right-click Suppliers / Actions /ag1 (Grid) node in the Project Explorer on Controllers tab. Select New Action option.

Creating a new data controller action in a web app created with Code On Time using Project Designer

Enter these property values and click OK to create the new action.

Property Value
Command Name SQL
Header Text Show Supplier Products
Data
set @Session_SupplierID = @SupplierID
set @Result_ShowAlert = 
    'Primary key of supplier "' + @CompanyName + 
    '" has been stored in the user session. ' +
    'You will be redirected to products.'
set @Result_NavigateUrl = 'Products.aspx?FilterBy=Suppliers'

The Suppliers data controller hierarchy will look as follows

image

Now the application can make use of the session variable SupplierID and URL variable FilterBy.

Let’s limit the list of products rendered on the Products page to those that have their SessionID column value equal to the value stored in the session variable. The filtering will only take place if FilterBy=SupplierID is detected in the URL of the Products page. The page has to provide an explanation that the list of products is filtered to avoid any confusion on a part of user.

Select Products / Views / grid1 view node on the Controllers tab in Project Explorer.

Grid view 'grid1' selected in Project Explorer

Enter the Filter Expression and save the changes.

Property New Values
Filter Expression
@Url_FilterBy is null or 
@Url_FilterBy = 'Suppliers' and SupplierID = @Session_SupplierID

The entire filter expression is embedded in the WHERE clause of SELECT statement created by the application framework at runtime.

Right-click the Products / Business Rules node. Select New Business Rule option and enter the following properties of the new rule.

Property Value
Command Name Select
View grid1
Name ExplainFilter
Type SQL
Phase Before
Script
if @Session_SupplierID is not null and @BusinessRules_Tags is null
begin
    -- tag the client-side view to render explanation once
    set @BusinessRules_Tags = 'Explained'
    -- find the supplier company name
    declare @Supplier nvarchar(40)
    select @Supplier = CompanyName
    from Suppliers 
    where SupplierID = @Session_SupplierID
    -- display a "view message" in the web browser
    set @Result_ShowViewMessage = 
        'The supplier of these products is "' + 
        @Supplier + '".'
end

Press OK to save the business rule. The hierarchy of the Products data controller will change.

'Named' business rule select in Project Explorer heirarchy of a web app created with Code On Time application generator

Click Browse and navigate to Products page. The entire list of products will be displayed as if the project has never changed.

Navigate to Suppliers page and open a context menu of any supplier. Choose Show Supplier Products option.

The active context menu with a custom SQL action 'Show Supplier Products'

The browser alert window will be displayed. At that time the relevant Supplier ID has been stored in the session variable by application server.

The browser alert message created by SQL action 'a100 – SQL | Show Supplier Products'

Click OK and the web browser will navigate to Products page.

Notice the FilterBy=Supplier fragment in the address bar.

The view message displayed by SQL Business Rule 'ExplainFilter'

The filter expression specified in the Products / Views / grid1 view node is evaluated whenever users interact with the data on the Products page.

If the FilterBy argument is not specified in the URL of the page, then the value of parameter @Url_FilterBy is equal to NULL.

The parameter named @Session_SupplierID is equal to the value assigned by SQL  action Suppliers / Actions / ag1 (Grid) / a100 – SQL | Show Supplier Products. If the action has not been executed, then the value of parameter @Session_SupplierID is null.

Once assigned, a session variable value is available in data views of all application pages.

Saturday, May 12, 2012PrintSubscribe
SQL and Email Business Rules, Stored Procedures with Output Caching

Code On Time release 6.0.0.27 introduces major new enhancements to the business rules processing and data retrieval.

It is now possible to create SQL Business Rules that can interact  with all tiers of a web application: database engine tier, application server tier, and client web browser tier. All of these are possible in a comfort of a familiar SQL dialect such as T-SQL or PL/SQL. Take a look at a validation example with SQL Business Rules. You can now develop and debug SQL Business Rules in your favorite tool and paste them as-is in the application definition. Use data controller virtualization to define SQL Business Rules at runtime with the node set plugins.

Stored procedure and web services a frequently used to build custom result sets that cannot be produced with a straightforward SELECT statement. Code On Time web applications now offer a powerful output caching model that makes it easy integrating a stored procedure or web service as a data source.

Email Business Rules allow easy implementation of notification in a lifecycle of a web application.

The following features, enhancements, and bug fixes are included in this release:

  • BusinessRules class supports string properties Whitelist and Blacklist that allow to control execution of named business rules of type SQL and Email.
     
  • Debug / End Debug statements can be included in SQL Business Rules and SQL action definition.
     
  • New Search action allows implementation of custom Search Bars and Search Dialogs.
     
  • A data view with action Search defined without a confirmation data controller will broadcast the search command to any other data views on the page that reference it in its own 'Search action confirmation property.
     
  • Data views feature the new property Show Action Buttons that has a default value of Top and Bottom. Other supported values are None, Top, and Bottom.
     
  • Method BusinessRules.Email accepts parameter MailMessage that can be preconfigured with attachments and still take advantage of automatic formatting. Premium edition only.
     
  • "Soft" filtering is now supported with SQL Business Rules.
  • SQL Business Rules support FieldName_Modified property.
     
  • It is possible to tag a data view in SQL Business Rules:
    set @BusinessRules_Tags = 'Tagged'
      
  • View messages are includes in the details of automatic reports.
     
  • SQL Business Rules and "SQL" action now support "@Url_" and "@Session_" parameters. This parameters are processed by application framework and do not require a declaration.
     
  • Filter details have a correct height in DotNetNuke projects.
     
  • DotNetNuke Factory does not publish the portal DLLs if the project has a direct dependency on the DotNetNuke site.
     
  • Improved detection of DotNetNuke system tables. System tables are hidden from the application generator.
     
  • It is now possible to reference any property of the business rules class as @BusinessRules_NameOfProperty in SQL actions and SQL Business Rules.
     
  • Element iframe is assigned a tab index when rendering custom field editors (Rich Text) and file upload.
     
  • Action State Machine performs an iteration on the client while trying to match an action in the group with the same scope as the last action. If the last action has been invoked from the data sheet view then the scope is Grid.
     
  • Class ControllerNodeSet has been enhanced to support business rules.
     
  • Fixed the bug with conversion of null values in data access objects.
     
  • Data format string is correctly applied when a lookup value is selected in edit/new modes.
     
  • Subsequent execution of Result.ShowViewMessage will not "forget" the default view header.
     
  • View-level messages rendered by business rules via Result.ShowViewMessage or @Result_ShowViewMessage will remain permanently displayed in the original data controller view until dismissed by the user or if the page is reloaded.
     
  • Project Explorer now displays the field length, read-only, and null flags in the tree.
     
  • Project Explorer displays '*' next to the name of mandatory fields.
     
  • Parameters @Result_Refresh and @Result_RefreshChildren are now supported in SQL Business Rules.
     
  • Mandatory lookups with Items Style set to Radio Button List will force a user to make a selection.
     
  • SQL Business Rules support New and Edit commands when selecting data on the server.
     
  • Fixed the problem with slight shifting of modal dialogs in Internet Explorer in tabbed form views.
     
  • Subsequent uploading of annotations will not loose the focused tab in the form.
     
  • Fixed the bug with printing of charts in automatically created reports.
     
  • The bug when opening View Details with annotations has been resolved.
     
  • TimeSpan fields are provided with an automatic drop down selector spaced in 15 minutes.
     
  • Multi-field copy now ignores spaces around "=" sign.
     
  • BusinessRules class uses case-insensitive parameter names when processing SQL action and SQL Business Rules.
     
  • SQL Business Rules are correctly working when there is not dedicated handler for the data controller.
     
  • SQL Business Rules will throw an exception if a value is assigned to @Result_Error and send a JavaScript expression to the browser if a value is assigned to @Result_ExecuteOnClient.