<?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>Dan&#039;s Drivelings &#187; Transfer ORM</title>
	<atom:link href="http://www.tntechnohermit.com/category/transfer-orm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tntechnohermit.com</link>
	<description>Random Thoughts of a Techno-Hermit</description>
	<lastBuildDate>Thu, 01 Sep 2011 16:37:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Converting one company to CFML using an OSS CFML engine</title>
		<link>http://www.tntechnohermit.com/2010/12/03/oss-cfml-engine-success-story/</link>
		<comments>http://www.tntechnohermit.com/2010/12/03/oss-cfml-engine-success-story/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 19:26:06 +0000</pubDate>
		<dc:creator>Dan Skaggs</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdSpring]]></category>
		<category><![CDATA[Mach II]]></category>
		<category><![CDATA[Transfer ORM]]></category>

		<guid isPermaLink="false">http://www.tntechnohermit.com/?p=473</guid>
		<description><![CDATA[There have been some lively discussions on Twitter today centered around the adoption of open source CFML engines in various types of businesses. I can&#8217;t speak to any kind of trends anywhere, but I wanted to share my experience with a project I was involved in last year that used Railo as the CMFL engine. [...]]]></description>
			<content:encoded><![CDATA[<p>There have been some lively discussions on Twitter today centered around the adoption of open source CFML engines in various types of businesses. I can&#8217;t speak to any kind of trends anywhere, but I wanted to share my experience with a project I was involved in last year that used <a href="http://getrailo.org">Railo</a> as the CMFL engine.<br />
<span id="more-473"></span></p>
<p>My brother, <a href="http://twitter.com/andrewskaggs">Andrew</a>, is the head of the IT department for a firm that sells books and other supplies to school libraries all over the country. When he took over the position, he inherited a web site built on Java using the Struts framework.  The original site had been in place for quite some time and the ownership decided it was time to refresh the site. The main issue (besides the outdated design) with the site was that it was so difficult to update.  I&#8217;m not a Java developer by any stretch of the imagination, but from what I understand, even the simplest update required the site to be recompiled. The actual implementation of the site was fairly brittle as well, so new features were generally not even considered for fear of breaking something that was currently working. </p>
<p>Andrew had previously done some ColdFusion work with me on some of my other projects. He approached his management about contracting with me to help them replace their java web site with one built on CFML. During the initial requirements gathering and planning phases, the decision was made to use Railo as the CFML engine for the site.  The site was launched a few months after Railo released their first open source version which appealed to them as they have several systems within the company that are open source. Cost was not a major concern (Railo being free vs the cost of a standard license of <a href="http://www.adobe.com/coldfusion">Adobe ColdFusion</a>) but it was a consideration as this project did have a fixed budget. When we started the project, Adobe ColdFusion 8 was the most current release. Budgetary constraints probably a few more factors I wasn&#8217;t privy to led to the decision to use Railo as the CFML engine for the site.</p>
<p>Our experience developing with Railo was very positive. We built the site using <a href="http://www.mach-ii.com">Mach-II</a>, <a href="http://www.transfer-orm.com">Transfer</a>, <a href="http://coldspringframework.org">ColdSpring</a> using a <a href="http://www.postgresql.org">PostgreSQL</a> database backend. We had one little issue with Mach-II when we plugged in the Mach-II Dashboard module into our main config. <a href="http://blog.maestropublishing.com/">Peter Farrell</a> and I traced it down and found that it was due to a difference in how Railo parsed XML vs how Adobe ColdFusion did. I worked with the folks at Railo and they got the problem sorted out in one of the next releases.</p>
<p>The site went live the first of August, 2009.  Between January 1 and August 1 of 2010, the site experienced a 562% increase in revenue generated when compared to the same time period of 2009 (the YTD time frame leading up to the new site going live). They&#8217;ve also seen a dramatic increase in the amount of traffic to the site since the new version went live (although I don&#8217;t have exact percentages at my fingertips to share). Just as importantly, in the months sice the new site went live, they have been able to add dozens of new features to the site&#8211;both publicly-available features as well as features for administrators and sales people that just would have been too difficult to try to weave into the previous java struts based application.</p>
<p>Finally, while this &#8220;success story&#8221; has Railo as <em><strong>one</strong></em> of its key components, the bigger issue in my mind is the fact that a formerly java-centric shop has converted to using CFML successfully to run their business and provide a better experience for their customers and employees.</p>
<p>Disclaimer: I&#8217;m not on either side of the Railo/OpenBD/Adobe CF argument. I&#8217;ve not had a client since that project that&#8217;s given me the option to use Railo so all of my work since then has been in Adobe CF but I certainly wouldn&#8217;t dismiss Railo straight away if there were an option to use it on a future project.  The intent behind this blog post is simply to provide one real-world example of Railo being an entry point into CFML development, not to take either side of the Twitter discussions that have been going on today.</p>
<p>**Update: Corrected the incorrect timeline of when Adobe ColdFusion 8 came out and removed some inaccurate statements about speed of Railo vs the Adobe CF version out at the time (which was mistakenly stated to be MX7). Thank you Adam for pointing out the error. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.tntechnohermit.com/2010/12/03/oss-cfml-engine-success-story/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Using Decorator objects in Transfer ORM</title>
		<link>http://www.tntechnohermit.com/2009/01/11/using-decorator-objects-in-transfer-orm/</link>
		<comments>http://www.tntechnohermit.com/2009/01/11/using-decorator-objects-in-transfer-orm/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 22:53:43 +0000</pubDate>
		<dc:creator>Dan Skaggs</dc:creator>
				<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Transfer ORM]]></category>

		<guid isPermaLink="false">http://dan.skaggsfamily.ws/?p=132</guid>
		<description><![CDATA[For the last few weeks I&#8217;ve been working on a project that uses the Mach II, ColdSpring and Transfer frameworks for ColdFusion. This is my first &#8220;real&#8221; project using Transfer and, I have to say, I&#8217;m supremely impressed with the thought and work put into the framework by Mark Mandel. It seems every time that [...]]]></description>
			<content:encoded><![CDATA[<p>For the last few weeks I&#8217;ve been working on a project that uses the Mach II, ColdSpring and Transfer frameworks for ColdFusion.  This is my first &#8220;real&#8221; project using Transfer and, I have to say, I&#8217;m supremely impressed with the thought and work put into the framework by Mark Mandel.  It seems every time that I come up with a question of how to do something, a quick look at the methods provided in the objects generated by Transfer reveals the answer.</p>
<p>The latest example came this week as we were moving more heavily into coding from the planning stages we&#8217;d been in for the most part up to now when I had an occasion to use the decorator feature built into Transfer.</p>
<p><span id="more-132"></span>If you&#8217;ve done any object-oriented development you&#8217;re familiar with the concept of building methods inside your objects to contain calculations or logic specific to that particular object. That&#8217;s easy enough to do when you are writing your own bean objects, but becomes somewhat of a problem when your bean objects are auto generated by Transfer. This is the exact situation that decorators are designed to solve. The decorator pattern &#8220;allows new/additional behaviour to be added to an existing class dynamically&#8221; (<a href="http://en.wikipedia.org/wiki/Decorator_pattern" target="_blank">Wikipedia</a>).</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;object</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;Product&quot;</span> <span style="color: #000066;">table</span>=<span style="color: #ff0000;">&quot;products&quot;</span> </span>
<span style="color: #009900;">    <span style="color: #000066;">decorator</span>=<span style="color: #ff0000;">&quot;components.decorators.ProductDecorator&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id</span> <span style="color: #000066;">name</span>=<span style="color: #ff0000;">&quot;productID&quot;</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;numeric&quot;</span> <span style="color: #000066;">generate</span>=<span style="color: #ff0000;">&quot;true&quot;</span> <span style="color: #000000; font-weight: bold;">/&gt;</span></span>
    <span style="color: #808080; font-style: italic;">&lt;!-- more properties --&gt;</span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/object<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>Using the code above, we can create a ProductDecorator.cfc in the /components/decorators folder and put any custom properties and methods that we need for the Product bean there.  The really sweet part is that, when Transfer instantiates a Product object, it automatically merges any properties and methods that you create in the ProductDecorator into the generated object.  So, you as the developer don&#8217;t have to do anything extra in order to access your custom methods than you would if you were accessing the methods generated by Transfer.  Simply get your object as normal (via the new(), read(), getByProperty() methods etc) and the resulting object returned to you will have your methods and properties included as well.</p>
<p>Simple, elegant, and really slick.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tntechnohermit.com/2009/01/11/using-decorator-objects-in-transfer-orm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

