<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chui's counterpoint &#187; 4GL</title>
	<atom:link href="http://www.redmountainsw.com/wordpress/archives/tag/4gl/feed" rel="self" type="application/rss+xml" />
	<link>http://www.redmountainsw.com/wordpress</link>
	<description>pulling the rug</description>
	<lastBuildDate>Wed, 17 Mar 2010 02:05:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Database Patterns with ASP.net MVC</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-asp-net-mvc</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-asp-net-mvc#comments</comments>
		<pubDate>Wed, 28 Oct 2009 14:12:22 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=862</guid>
		<description><![CDATA[Brad Wilson has a nice long post about the use of model metadata in ASP.NET MVC.
While most of these do not deal with database operations, they have a certain place in database modelling. The following are must haves:

Short Display Names &#8211; a sane toString() for tabular listings
Simple Display Text &#8211; a sane toString() for summarizing [...]]]></description>
			<content:encoded><![CDATA[<p>Brad Wilson has a nice long post about the <a href="http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html">use of model metadata in ASP.NET MVC</a>.</p>
<p>While most of these do not deal with database operations, they have a certain place in database modelling. The following are must haves:</p>
<ul>
<li>Short Display Names &#8211; a sane toString() for tabular listings</li>
<li>Simple Display Text &#8211; a sane toString() for summarizing complex displays</li>
</ul>
<p>I&#8217;m sure there are more gems to be mined from ASP.Net MVC. If anyone who knows more, please e-mail me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-asp-net-mvc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using patterns to accelerate software development</title>
		<link>http://www.redmountainsw.com/wordpress/archives/using-patterns-to-accelerate-software-development</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/using-patterns-to-accelerate-software-development#comments</comments>
		<pubDate>Fri, 24 Jul 2009 05:48:45 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/archives/using-patterns-to-accelerate-software-development</guid>
		<description><![CDATA[An Australian company is working on a AusIndustry grant on rapid application modelling. 
I&#8217;d love to interview these guys on the blog just for some insights they gained from the process.
]]></description>
			<content:encoded><![CDATA[<p>An Australian company is working on a AusIndustry grant on <a href="http://www.ptg-global.com/software/xpdesigner-full-application-simulation-no-programming/xpdesigner-full-application-simulation-no-programming_home.cfm">rapid application modelling</a>. </p>
<p>I&#8217;d love to interview these guys on the blog just for some insights they gained from the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/using-patterns-to-accelerate-software-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #13 &#8211; Read Only Fields</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-read-only</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-read-only#comments</comments>
		<pubDate>Thu, 26 Feb 2009 11:45:06 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=708</guid>
		<description><![CDATA[Some data dictionary mark certain fields as being read-only. Why should fields ever be read-only? How do they get edited in the first place?
Possible justifications:

The field represents a permanent record, i.e. it behaves more like a document than a database field. A field can be set at record creation time and no-other.
The field represents an [...]]]></description>
			<content:encoded><![CDATA[<p>Some data dictionary mark certain fields as being read-only. Why should fields ever be read-only? How do they get edited in the first place?</p>
<p>Possible justifications:</p>
<ul>
<li>The field represents a permanent record, i.e. it behaves more like a document than a database field. A field can be set at record creation time and no-other.</li>
<li>The field represents an integration field. For instance, an account_details table may have it&#8217;s e-mail and telephone fields populated from an LDAP source. By marking up the metadata consistently, the user interface automatically renders a field as label, or as a locked text box.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-read-only/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Database Patterns realized with AribaWeb</title>
		<link>http://www.redmountainsw.com/wordpress/archives/database-patterns-realized-with-aribaweb</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/database-patterns-realized-with-aribaweb#comments</comments>
		<pubDate>Sat, 21 Feb 2009 01:56:39 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/archives/database-patterns-realized-with-aribaweb</guid>
		<description><![CDATA[Take a look at aribaweb.org (viaTheServerSide). 
AribaWeb is a 4GL RAD for web applications running on a Java stack.
It uses an approach described in data dictionaries as a database pattern to generate metadata-driven UI.
The Ariba toolset seems reasonably mature from the screencasts, although one has to be wary because a lot of the AJAX work [...]]]></description>
			<content:encoded><![CDATA[<p>Take a look at <a href="http://www.aribaweb.org">aribaweb.org</a> (via<a href="http://www.theserverside.com/">TheServerSide</a>). </p>
<p>AribaWeb is a 4GL RAD for web applications running on a Java stack.</p>
<p>It uses an approach described in <a href="http://www.redmountainsw.com/wordpress/archives/4gl-patterns-6-data-dictionaries">data dictionaries as a database pattern</a> to generate metadata-driven UI.</p>
<p>The Ariba toolset seems reasonably mature from the screencasts, although one has to be wary because a lot of the AJAX work appears to be relatively new.</p>
<p>I&#8217;m watching the <a href="http://www.vimeo.com/1840925">MetaUI screencast</a> now, and the bubble style error messages on fields is quite cool. However, cooler still is the use of CSS-like language to mark up how fields are presented. This reduces impedance mismatch between binding data to controls, instead turns data into its representation.</p>
<p>Custom validation rules is specfied using a groovy string. I&#8217;m not sure if this is translated into Javascript on the client-side. The Meta UI specification decoupled from HTML (layout is in named zones), and there is no reason why this couldn&#8217;t be rendered in a RIA.</p>
<p>Actions in UI on a POJO is declared via an annotation (similar to Naked Objects). However, the actions seem to be more restrictive in the sense that the methods must not take any arguments.</p>
<p>e.g.</p>
<pre class="brush: java">
@Action(message=&quot;Account Suspended&quot;)
@Visible(&quot;! $object.isSuspended&quot;)
void suspendAccount() {
...
}
</pre>
<p>Overall, AribaWeb looks very polished. I haven&#8217;t had a look at the underlying libraries used<sup>1</sup>, but I look forward to delve into it further.</p>
<h2>Footnotes</h2>
<p><sup>1</sup>There was a mention of JPA and Hibernate. (Is the display layer JSF?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/database-patterns-realized-with-aribaweb/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #12 &#8211; Deploying Reference Tables</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-reference-tables</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-reference-tables#comments</comments>
		<pubDate>Sun, 07 Dec 2008 01:05:23 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=594</guid>
		<description><![CDATA[Coda Server uses a concept called Reference Tables. I first heard the term used by Ken Downs.
The interesting twist brought by Coda Server is in deployability.
In the countries table, &#8230; use the REF TABLE .. Ref tables are identical to regular tables, except that they are replicated automatically across the development, testing, and production environments. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://codaserver.com/">Coda Server</a> uses a concept called <a href="http://codaserver.com/?q=node/36"><em>Reference Tables</em></a>. I first <a href="http://www.redmountainsw.com/wordpress/archives/4gl-patterns-8-table-patterns">heard the term</a> used by <a href="http://database-programmer.blogspot.com/2008/01/database-skills-sane-approach-to.html#rule1">Ken Downs</a>.</p>
<p>The interesting twist brought by Coda Server is in deployability.</p>
<blockquote><p>In the countries table, &#8230; use the REF TABLE .. Ref tables are identical to regular tables, except that they are replicated automatically across the development, testing, and production environments. Any rows added, updated or deleted in those environments immediately percolate to all of the others. This is perfect for data such as countries which generally don&#8217;t change based on your application&#8217;s whims.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-reference-tables/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>4GL Patterns &#8211; #11 Custom Data Types</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-custom-dat-types</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-custom-dat-types#comments</comments>
		<pubDate>Tue, 30 Sep 2008 05:40:58 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=558</guid>
		<description><![CDATA[Rapid application development usually require data types beyond the simple INT, FLOAT and VARCHAR found in databases.
Here are some examples gleaned from existing frameworks:

Compiere/ADempiere &#8211; Account, Amount, Assignment, Binary, Button, Color, Costs+Prices, Date, Date+Time, FileName, FilePath, ID, Image, List, Location (Address), Memo, Product Attribute, Quantity, Row ID, Table, TableDirect, Text, Text Long, Time, URL, Yes-No, [...]]]></description>
			<content:encoded><![CDATA[<p>Rapid application development usually require data types beyond the simple INT, FLOAT and VARCHAR found in databases.</p>
<p>Here are some examples gleaned from existing frameworks:</p>
<ul>
<li><a href="http://en.wikiversity.org/wiki/ADempiere_Application_Dictionary">Compiere/ADempiere</a> &#8211; Account, Amount, Assignment, Binary, Button, Color, Costs+Prices, Date, Date+Time, FileName, FilePath, ID, Image, List, Location (Address), Memo, Product Attribute, Quantity, Row ID, Table, TableDirect, Text, Text Long, Time, URL, Yes-No, Number, Printer Name, Product Attribute, Quantity, Search</li>
<li><a href="http://plone.org/documentation/manual/archetypes-developer-manual/fields/fields-reference">Plone Archetypes</a> &#8211; CMFObjectField, ComputedField, ImageField, FilesField, LinesField</li>
<li><a href="http://www.codeigniter.com/">CodeIgniter</a>/Django &#8211; URL, Email</li>
<li><a href="http://xml.coverpages.org/udef.html">UDEF</a> &#8211; Amount, Code, Graphic, Measure (Unit of&#8230;), Percent, Picture, Rate, Document</li>
<li>Miscellaneous &#8211; tag</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-custom-dat-types/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #10 &#8211; Auditability</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-10-auditability</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-10-auditability#comments</comments>
		<pubDate>Mon, 22 Sep 2008 13:28:51 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=548</guid>
		<description><![CDATA[I have seen this pattern occur several times in my career. Ken Downs has a comprehensive treatment on history tables.
There are several high level ways of describing how versioning/auditability is implemented:

Versioned rows &#8211; history is mixed with current data in a single table. Results in complicated joins, archiving problems, performance trouble
Naive history tables &#8211; a [...]]]></description>
			<content:encoded><![CDATA[<p>I have seen this pattern occur several times in my career. Ken Downs has <a href="http://database-programmer.blogspot.com/2008/07/history-tables.html">a comprehensive treatment on history tables</a>.</p>
<p>There are several high level ways of describing how versioning/auditability is implemented:</p>
<ul>
<li><strong>Versioned rows</strong> &#8211; history is mixed with current data in a single table. Results in complicated joins, archiving problems, performance trouble</li>
<li><strong>Naive history tables</strong> &#8211; a mirror table that adds three additional columns &#8211; action (Create, Update or Delete), timestamp, and user</li>
<li><strong>Delta tables &#8211; </strong>records table, primary key, old value, new value, action (Create, Update, or Delete), timestamp, and user</li>
</ul>
<h2>Implementation</h2>
<p>Web applications tend to share database connections. This restriction means that we cannot implement auditing via database triggers, since the trigger does not have access to the current user. Instead, auditing is implemented at the database abstraction layer.</p>
<p>Oracle has a construct called SYS_CONTEXT (see: <a href="http://articles.techrepublic.com.com/5100-10878_11-6170613.html">TechRepublic</a> <a href="http://technology.amis.nl/blog/?p=777">AMIS</a>)</p>
<h2>Users, Groups and Elevated Privilege</h2>
<p>Any non-trivial business applications tend to have functionality beyond simple read/write permissions. Examples of this kind of use-cases can be seen in <a href="http://www.opengroup.org/onlinepubs/000095399/functions/setuid.html">setuid</a> in unix applications. Any audit-aware applications should take this into account, and log the real user id.</p>
<h2>Examples</h2>
<ul>
<li><strong>Document-type artifacts</strong> &#8211; for instance, if an organisation was tracking licenses, the address of the licensee should be recorded permanently. If the address changes, then a new row has to be created, so that it maintains a faithful record as to what the original issued license represented.</li>
<li><strong>Auditing</strong></li>
</ul>
<h2>See Also</h2>
<p>Data Dictionaries</p>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-10-auditability/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #9 &#8211; Search</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-9-search</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-9-search#comments</comments>
		<pubDate>Mon, 22 Sep 2008 13:15:55 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=543</guid>
		<description><![CDATA[Specific fields are marked as being searchable. User interface and code is automatically generated. 
Examples of Search in RAD

Adding Full Text Indexes to char columns &#8211; MySQL, SQLite, SQL Server
Query By Example (QBE) in MS Access &#8211; is a special case where all fields are made searchable
Autogenerated modal forms with search/filter capabilities. Used when look-up [...]]]></description>
			<content:encoded><![CDATA[<p>Specific fields are marked as being searchable. User interface and code is automatically generated. </p>
<h2>Examples of Search in RAD</h2>
<ul>
<li>Adding Full Text Indexes to char columns &#8211; MySQL, SQLite, SQL Server</li>
<li>Query By Example (QBE) in MS Access &#8211; is a special case where all fields are made searchable</li>
<li>Autogenerated modal forms with search/filter capabilities. Used when look-up tables get large</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-9-search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #8 &#8211; Table Patterns</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-8-table-patterns</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-8-table-patterns#comments</comments>
		<pubDate>Mon, 22 Sep 2008 13:03:41 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=540</guid>
		<description><![CDATA[Ken Downs classified database tables into several patterns. These are grouped along the lines of number of columns, number of rows, transient vs. permanent:

Reference Table &#8211; small number of columns, small number of rows, permanent. e.g. U.S. States. Also see Reference Table Deployability
Small Master Table &#8211; small number of columns (but more than a simple [...]]]></description>
			<content:encoded><![CDATA[<p>Ken Downs <a href="http://database-programmer.blogspot.com/2008/01/table-design-patterns.html">classified database tables into several patterns</a>. These are grouped along the lines of number of columns, number of rows, transient vs. permanent:</p>
<ul>
<li><a href="http://database-programmer.blogspot.com/2008/01/database-skills-sane-approach-to.html#rule1">Reference Table</a> &#8211; small number of columns, small number of rows, permanent. e.g. U.S. States. Also see <a href="http://www.redmountainsw.com/wordpress/archives/4gl-patterns-reference-tables">Reference Table Deployability</a></li>
<li><a href="http://database-programmer.blogspot.com/2008/01/database-skills-sane-approach-to.html#rule2">Small Master Table</a> &#8211; small number of columns (but more than a simple reference table), small number of rows, permanent. Master tables hold data, rather than look up information. e.g.</li>
<li><a href="about:blank">Large Master Table</a> &#8211; transactional</li>
<li><a href="about:blank">Cross Reference</a> &#8211; describes <strong>has-a</strong>, <strong>many-to-many</strong> and other relationships</li>
</ul>
<p>Ken goes on to suggest the types of primary keys for each type of table, e.g. Single-column CHAR primary keys for Reference and Small Master tables; Auto-assigned integers for Large Master tables; and Compound keys for Cross Reference.</p>
<p>I would like to add that tables should be explicitly annotated for their patterns and expected usage.</p>
<h2>Applicability and Consequences</h2>
<ul>
<li>Code generation tools can then intelligently cache slow changing patterns in-memory, during application start-up, or upon first-use.</li>
<li>Character primary keys can be used as shortcuts for rapid data entry</li>
<li>Look up controls can be auto-generated when reference tables are used in foreign keys</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-8-table-patterns/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>4GL Patterns #7 &#8211; Data Dictionaries</title>
		<link>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-6-data-dictionaries</link>
		<comments>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-6-data-dictionaries#comments</comments>
		<pubDate>Thu, 18 Sep 2008 02:26:42 +0000</pubDate>
		<dc:creator>Chui</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[4GL]]></category>
		<category><![CDATA[rad]]></category>

		<guid isPermaLink="false">http://www.redmountainsw.com/wordpress/?p=525</guid>
		<description><![CDATA[RAD thrives on autogenerated forms, autogenerated bindings, and autogenerated validation rules.
To support RAD, database dictionaries should contain hints that form libraries can use.
Here is a compilation of useful rules, gleaned from several forms libraries (XForms, MS Access):

field caption
tooltip
default value
full text search (KeywordIndex)
isMetadata (Archetypes Field Reference)
postback (Archetypes Field Reference) &#8211; False for password fields. If validation [...]]]></description>
			<content:encoded><![CDATA[<p>RAD thrives on autogenerated forms, autogenerated bindings, and autogenerated validation rules.</p>
<p>To support RAD, database dictionaries should contain hints that form libraries can use.</p>
<p>Here is a compilation of useful rules, gleaned from several forms libraries (XForms, MS Access):</p>
<ul>
<li>field caption</li>
<li>tooltip</li>
<li>default value</li>
<li>full text search (KeywordIndex)</li>
<li>isMetadata (<a href="http://plone.org/documentation/manual/archetypes-developer-manual/fields/fields-reference">Archetypes Field Reference</a>)</li>
<li>postback (<a href="http://plone.org/documentation/manual/archetypes-developer-manual/fields/fields-reference">Archetypes Field Reference</a>) &#8211; False for password fields. If validation fails, user will have to re-enter the value</li>
<li>help text (can be also used to generate documentation)</li>
<li>default format (currency, scientific, precision, short date)</li>
<li>look up fields (MS Access &#8211; a foreignkey can be displayed as a prepopulated ListBox or a ComboBox)</li>
<li>multivalued &#8211; one-to-many relationship (<a href="http://plone.org/documentation/manual/archetypes-developer-manual/fields/fields-reference">Archetypes Field Reference</a>) </li>
<li>min and max value (Compiere)</li>
<li>DB Column Name (Compiere)</li>
<li>Reference?</li>
<li>Parent Link Column (Compiere) &#8211; like Access Tables ?</li>
<li>Read Only logic (Compiere) &#8211; condition, if true, makes column read-only (useful when data is populated from another application)</li>
<li>Mandatory logic (Compiere) &#8211; condition, if true, makes column mandatory</li>
<li>hints on empty fields (see <a href="http://davidwalsh.name/mootools-form-field-default-plugin">David Walsh&#8217;s article</a>)</li>
<li>field validation rules, field validation text (MS Access, <a href="https://springmodules.dev.java.net/docs/reference/0.4/html/validation.html">Spring Validation</a>)</li>
<li>Permissions (MSAccess, Zope management screens),</li>
<li>Run-with-Owners-Permissions (MS Access)</li>
<li>Computed expressions (including SUM from related tables)
<ul>
<li>see <a href="http://lispy.wordpress.com/2008/09/12/going-up-one-more-level-of-abstraction-up-from-objects-and-relational-data/">abstracting relational data</a>, and</li>
<li><a href="http://www.andromeda-project.org/pages/cms/column.html">Andromeda Framework &#8211; see automation id</a></li>
</ul>
</li>
<li>Preferred positioning. Examples from
<ul>
<li><a href="http://www.crm-ctt.com">Interleave database</a><br />
<img src="http://www.crm-ctt.com/image.php?url=ss/ssa1.jpg" alt="" /></li>
<li>Microsoft InfoPath &#8211; fields are set to 50%, 33% or 25% width</li>
<li>Field Group (Compiere)</li>
<li>Schemata &#8211; Use named schematas to organize fields into grouped views (Archetypes)</li>
</ul>
</li>
<li>Widget (Archetypes) &#8211; in addition to the common TextWidget, you might have PickListWidget, CalendarWidget, ImageWidget</li>
<li>High Volume (Compiere) &#8211; shows search box instead of pick list</li>
<li>Encrypted (see <a href="http://www.compiere.com/products/product-demos/tour/easier-customization.htm">Compiere metadata demo </a>)</li>
</ul>
<p><strong>Visual Examples</strong></p>
<p>In the forms designer, Microsoft Access shows association between input controls and their labels. Changes made in the form does not change the data dictionary. However, it may still be useful for internationalizing applications.</p>
<div id="attachment_527" class="wp-caption alignnone" style="width: 477px"><a href="http://www.redmountainsw.com/wordpress/wp-content/uploads/db0061.png"><img class="size-full wp-image-527" title="Data Dictionary" src="http://www.redmountainsw.com/wordpress/wp-content/uploads/db0061.png" alt="Visually displaying association of UI elements" width="467" height="242" /></a><p class="wp-caption-text">Visually displaying association of UI elements</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.redmountainsw.com/wordpress/archives/4gl-patterns-6-data-dictionaries/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
