<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Deck from RIA Unleashed</title>
	<atom:link href="http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/feed/" rel="self" type="application/rss+xml" />
	<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/</link>
	<description>Musings on DSLs, DSM, Agile, SPLs and CFML by Peter Bell</description>
	<lastBuildDate>Tue, 09 Mar 2010 16:45:10 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Links (11/19/2009) &#171; Steve Pietrek &#8211; Everything SharePoint</title>
		<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/#comment-46</link>
		<dc:creator>Links (11/19/2009) &#171; Steve Pietrek &#8211; Everything SharePoint</dc:creator>
		<pubDate>Fri, 20 Nov 2009 00:49:17 +0000</pubDate>
		<guid isPermaLink="false">http://appgen.pbell.com/?p=24#comment-46</guid>
		<description>[...] RIA Unleashed deck [...]</description>
		<content:encoded><![CDATA[<p>[...] RIA Unleashed deck [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peterbell</title>
		<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/#comment-32</link>
		<dc:creator>peterbell</dc:creator>
		<pubDate>Tue, 17 Nov 2009 16:34:41 +0000</pubDate>
		<guid isPermaLink="false">http://appgen.pbell.com/?p=24#comment-32</guid>
		<description>Hi Andy,

All of my business objects extend a basebusinessObject with format(), field() and processField() methods. They all call a singleton injected into the base business object called dataTypeFacade, and that has all of the data type cfc&#039;s (money, date, wysiwyg, URL, etc) loaded into it as singletons. It gets passed the property name, the property value (or the event object for processing forms), the data type, and any format override data (I want to use a fileupload data type, but want to limit it to pdf&#039;s and upload them into /special/folder) and it handles the processing.

Sample (simplistic) data type cfc:



// ***************** CONSTRUCTOR *****************
function init() {
	super.init();
	addDefault( &quot;symbol&quot; , &quot;$&quot; );
	return THIS;
}


// ***************** PUBLIC METHODS *****************

function field( PropertyName , PropertyValue , DataTypeProperties ) {
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );
	return &quot;#Properties.symbol# &quot;;
}

function format( PropertyName , PropertyValue , DataTypeProperties ) {
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );
	return &quot;#Properties.symbol# #Numberformat( arguments.PropertyValue , &#039;9.99&#039; )#&quot;;
}

function processField( PropertyName , Event , DataTypeProperties ) {
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );
	var FieldValue = trim( arguments.Event.get( PropertyName ) );
	if ( not len( FieldValue ) ) { FieldValue = 0; };
	return FieldValue;
}

</description>
		<content:encoded><![CDATA[<p>Hi Andy,</p>
<p>All of my business objects extend a basebusinessObject with format(), field() and processField() methods. They all call a singleton injected into the base business object called dataTypeFacade, and that has all of the data type cfc&#8217;s (money, date, wysiwyg, URL, etc) loaded into it as singletons. It gets passed the property name, the property value (or the event object for processing forms), the data type, and any format override data (I want to use a fileupload data type, but want to limit it to pdf&#8217;s and upload them into /special/folder) and it handles the processing.</p>
<p>Sample (simplistic) data type cfc:</p>
<p>// ***************** CONSTRUCTOR *****************<br />
function init() {<br />
	super.init();<br />
	addDefault( &#8220;symbol&#8221; , &#8220;$&#8221; );<br />
	return THIS;<br />
}</p>
<p>// ***************** PUBLIC METHODS *****************</p>
<p>function field( PropertyName , PropertyValue , DataTypeProperties ) {<br />
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );<br />
	return &#8220;#Properties.symbol# &#8220;;<br />
}</p>
<p>function format( PropertyName , PropertyValue , DataTypeProperties ) {<br />
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );<br />
	return &#8220;#Properties.symbol# #Numberformat( arguments.PropertyValue , &#8216;9.99&#8242; )#&#8221;;<br />
}</p>
<p>function processField( PropertyName , Event , DataTypeProperties ) {<br />
	var Properties = ProcessDataTypeProperties( arguments.DataTypeProperties );<br />
	var FieldValue = trim( arguments.Event.get( PropertyName ) );<br />
	if ( not len( FieldValue ) ) { FieldValue = 0; };<br />
	return FieldValue;<br />
}</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andrew</title>
		<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/#comment-29</link>
		<dc:creator>Andrew</dc:creator>
		<pubDate>Mon, 16 Nov 2009 22:01:20 +0000</pubDate>
		<guid isPermaLink="false">http://appgen.pbell.com/?p=24#comment-29</guid>
		<description>Hi Peter,

Can you expand on your Custom Data Type convention?  I cannot seem to wrap my head around how you are implementing these?  It sounds like you would have, for instance, a Display() method and the arguments would be of a type=&quot;com.datatypes.emailAddress&quot; etc. and then the dt cfc would have formatting options???  Am I close?  Could you share a snippet as to how you do that w/o giving away anything that you deem proprietary?

Thanks,
Andy</description>
		<content:encoded><![CDATA[<p>Hi Peter,</p>
<p>Can you expand on your Custom Data Type convention?  I cannot seem to wrap my head around how you are implementing these?  It sounds like you would have, for instance, a Display() method and the arguments would be of a type=&#8221;com.datatypes.emailAddress&#8221; etc. and then the dt cfc would have formatting options???  Am I close?  Could you share a snippet as to how you do that w/o giving away anything that you deem proprietary?</p>
<p>Thanks,<br />
Andy</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: peterbell</title>
		<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/#comment-27</link>
		<dc:creator>peterbell</dc:creator>
		<pubDate>Mon, 16 Nov 2009 16:16:05 +0000</pubDate>
		<guid isPermaLink="false">http://appgen.pbell.com/?p=24#comment-27</guid>
		<description>Yep. Although I think that it&#039;s important to realize that Hibernate doesn&#039;t come for free. There is quite a bit of voodoo involved in getting your caching strategies right for Hibernate and I&#039;d be interested to see how it would work hosting (say) 50 websites each with its own Hibernate session on a single regular server. One of the reasons I didn&#039;t port to Grails was because it&#039;s not really designed to run lots of little apps on a single box - one of the things I need to be able to do.

But the DSL part is really the main part of the presentation. Base classes, optional class files, XML DSLs and custom data types are the areas that provide the most value. The IBO is really for people who&#039;re not ready for that yet but want to start using objects more consistently in their applications.</description>
		<content:encoded><![CDATA[<p>Yep. Although I think that it&#8217;s important to realize that Hibernate doesn&#8217;t come for free. There is quite a bit of voodoo involved in getting your caching strategies right for Hibernate and I&#8217;d be interested to see how it would work hosting (say) 50 websites each with its own Hibernate session on a single regular server. One of the reasons I didn&#8217;t port to Grails was because it&#8217;s not really designed to run lots of little apps on a single box &#8211; one of the things I need to be able to do.</p>
<p>But the DSL part is really the main part of the presentation. Base classes, optional class files, XML DSLs and custom data types are the areas that provide the most value. The IBO is really for people who&#8217;re not ready for that yet but want to start using objects more consistently in their applications.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Seth</title>
		<link>http://appgen.pbell.com/2009/11/16/deck-from-ria-unleashed/#comment-26</link>
		<dc:creator>Seth</dc:creator>
		<pubDate>Mon, 16 Nov 2009 16:12:13 +0000</pubDate>
		<guid isPermaLink="false">http://appgen.pbell.com/?p=24#comment-26</guid>
		<description>Great presentation Peter!  I was also wondering where Hibernate would fit into the picture, this post clarifies that.  The DSL seemed to be the most powerful component, and I began thinking of a way to possibly implement that sort of functionality into a CF Builder extension ...</description>
		<content:encoded><![CDATA[<p>Great presentation Peter!  I was also wondering where Hibernate would fit into the picture, this post clarifies that.  The DSL seemed to be the most powerful component, and I began thinking of a way to possibly implement that sort of functionality into a CF Builder extension &#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
