The Why
Model Driven Apps (MDA) while simple in interface, allow for quick builds and built in components that would take hours to replicate in a Canvas app.
This guide will be the first part in a series of how to build a MDA. Throughout this guide we will be simulating an organization that needs to track purchase requests and approvals. The scenario will have a user submit a request that a supervisor has to evaluate. Then based upon the request amount have it go down one of three (small, medium, large) paths. All the while it will be going through the stage gates of finance, budget, and management.
The How
As with all good projects planning is the most important part. While it is tempting to go and just start delivering, it is vital to first create an ERD (Entity Relationship Diagram), a DFD (Data Flow Diagram), and map out security roles. These three documents allow will center and guide the project and mitigate (hopefully) rework.
I create these documents within Viso. It is has all of the blocks/languages needed for this endeavor built in.
However even before building these documents a discovery session needs to occur, this is where you the developer will get all the necessary requirements written down to later be deciphered into the formal documents. I prefer to use Whiteboard as a means of capturing everything quickly.
Draw the data
ERD
For ERD diagrams I prefer to use the Crows foot Notation. I know that others may be more “scholarly” in their approach, but it works for me when building a MDA.
For this scenario we will be build a custom table with lookups to standard table. Using standard tables minimizes the amount of data entry required.
DFD
As with the ERD I use Visio to build out the DFD. I like to use BPMN 2.0 as the language. It is language managed by OMG and provides more than enough detail for MDA.
Security
Security is broken down into two parts Row Level Security (RLS) and Column Level Security (CLS).
In the same Visio Document I like to create three tables. RLS, CLS, and roles to user mapping. This way when it comes time to create the roles I can just copy and paste.