Blog: Posts from May, 2012

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
Posts from May, 2012
Thursday, May 17, 2012PrintSubscribe
Limiting Access to Data Views With Roles

The visibility of a data view on a page can be controlled with Visible When expression written in JavaScript. For example, the child data view in a master-detail configuration may or may not be visible if a master field has a certain value.

Both, master and detail data views may have additional visibility requirements that have nothing to do with the data. The user identity may be a contributing factor. For example, only administrative users can see certain data views on the pages that are available to other user roles as well.

Property Roles allows introducing additional level of identity control to complement Visible When expression.

Start Project Designer for Northwind sample and select Customers page in the Project Explorer hierarchy.

Change Customers / container1 / view1 (Customers, grid) data view node.

Property New Value
Activator Tab
Text Customers

Add two data views to the Customers / container1 node with the following properties.

Data View #1

Property Value
Controller Employees
Activator Tab
Text Employees
Roles Administrators

Data View #2

Property Value
Controller Products
Activator Tab
Text Products
Roles Administrators

Change Customers / Container2 / view2 (Orders, grid1) data view node.

Property New Value
Roles Administrators

Change Customers / Container2 / view3 (CustomerCustomerDemo, grid1) data view node.

Property New Value
Roles Administrators

This is the hierarchy of the modified Customers page.

Modified 'Customers' page from Northwind sample created with Code On Time web application generator

Click Browse on the designer toolbar to generate the app. Sign in with the standard user account user/user123%.

This is the view of Customers page as seen by non-administrative user account.

This is the view of Customers page as seen by non-administrative user account.

Logout and sign in as admin/admin123%. This user belongs to the role Administrators.

This is how administrator sees the same page.

This is how administrator sees the same page.

Wednesday, May 16, 2012PrintSubscribe
Conditional Email Business Rules

If you review the introduction to Email Business Rules, then you will learn that a notification will be sent out when a new customer record has been created. What if you want to trigger a notification for new customers from a certain country? Email notifications are frequently triggered in response to changes in data.  What do you do in that case?

It is time for name calling, blacklisting, and whitelisting (all in a good sense).

Let’s enhance the Northwind sample with an automatic notification that will go out when a product price has increased.

Start Project Designer, activate Controllers tab in Project Explorer, select Products data controller, and create a new SQL business rule with the following properties.

Property Value
Command Name Update
Type SQL
Phase After
Script
if @UnitPrice_Modified = 0 or @UnitPrice_OldValue >= @UnitPrice_NewValue
   set @BusinessRules_Blacklist = 'PriceChanged'

The business rule will blacklist something named PriceChanged if the product unit price has not increased.

Add an Email business rule with these properties.

Property Value
Command Name Update
Name PriceChanged
Type Email
Phase After
Script
Host: smtp.gmail.com
Port: 587
UserName: YOUR_EMAIL_ADDRESS@gmail.com
Password: PASSWORD
EnableSSL: true

From: "Sales Admin" <YOUR_EMAIL_ADDRESS@gmail.com>
To: RECEIPIENT@northwind.com
Subject: Price of "{ProductName}" has been increased

User {@BusinessRules_UserName} has changed the price of "{ProductName}" from {UnitPrice_OldValue, c} to {UnitPrice_NewValue, c}.

Northwind,
Administrator

Make sure to replace the highlighted parameters with your own values.

Notice the data format string “c” next to UnitPrice_OldValue and UnitPrice_NewValue. Use any standard or custom numeric, date, and time span format strings as needed.

This is the new look of Products data controller hierarchy in Project Explorer.

Named email business rule 'PriceChanged' is blacklisted by preceding SQL business rule if the price of the product has not increased

SQL and Email business rules are evaluated and executed in the order of their appearance in the data controller. An SQL business rule can prevent any other business rules from being executed by “blacklisting” the rule name in the parameter @BusinessRules_Blacklist. If the rule’s name is on the list, then it will not be executed. Rules without names are not effected.

Generate the application and modify a product without making any changes to the price – there will no be notifications.

Increase a price of any product and you will get a notification that may look like this.

A conditional email notification in Gmail is informing about product price increase

You can have multiple “named” email business rules and implement a single SQL business rule to control their execution with the help of “blacklist”.

If you need to reorder the business rules then click on Business Rules node, select an individual rule and move it up and down.

There is also a better sounding alternative – the “whitelist”. The idea behind the whitelist is very simple. If a named business rule is not on the whitelist, they it is not allowed to execute.

This is the “whitelist” version of the SQL business rule from above.

set @BusinessRules_Whitelist = 'Nothing'
if @UnitPrice_Modified = 1 and @UnitPrice_OldValue < @UnitPrice_NewValue
   set @BusinessRules_Whitelist = 'PriceChanged'

Note that both, blacklist and whitelist, can contain multiple names separated by “comma”, or “semicolon”. For example,

PriceChanged,LowStock

Use of whitelist and blacklist depends on your personal preferences. Generally, whitelist is a more natural method of expressing notification triggers since a condition must be “positive” for a notification to go out.

Use a combination of both lists when needed.

Wednesday, May 16, 2012PrintSubscribe
Feature: Email Business Rules

Integrated email notifications are an absolute necessity in line-of-business web applications.

Developer can define Email Business Rules in application data controllers.

image_thumb[43]

Email notifications will be sent out automatically in response to user actions.

Here is the sample script of an email business rule.

Host: smtp.gmail.com
Port: 587
UserName: YOUR_EMAIL_ADDRESS@gmail.com
Password: PASSWORD
EnableSSL: true

From: "Sales Admin" <YOUR_EMAIL_ADDRESS@gmail.com>
To: RECEIPIENT@northwind.com
Subject: Customer "{CompanyName}" has been signed up!

Please call {ContactName}, {ContactTitle} at {Phone} to make introductions.

Northwind,
Administrator

Create a new customer record in Northwind sample.

Adding a new customer record in Northwind sample created with Code On Time web application generator for ASP.NET, Windows Azure, DotNetNuke, and Microsoft SharePoint

The recipient specified in the email business rule will receive a message. This is how the notification message may look in Gmail.

image

Learn more about Email Business Rules now!