<?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>Stefan Cameron on Forms &#187; CM</title>
	<atom:link href="http://forms.stefcameron.com/category/cm/feed/" rel="self" type="application/rss+xml" />
	<link>http://forms.stefcameron.com</link>
	<description>Building intelligent forms using Adobe LiveCycle Designer</description>
	<lastBuildDate>Wed, 16 Feb 2011 22:56:24 +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>Adobe MAX 2009 Lab Update</title>
		<link>http://forms.stefcameron.com/2009/08/24/adobe-max-2009-lab-update/</link>
		<comments>http://forms.stefcameron.com/2009/08/24/adobe-max-2009-lab-update/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 17:00:33 +0000</pubDate>
		<dc:creator>Stefan Cameron</dc:creator>
				<category><![CDATA[CM]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[LiveCycle]]></category>

		<guid isPermaLink="false">http://forms.stefcameron.com/2009/08/24/adobe-max-2009-lab-update/</guid>
		<description><![CDATA[We have been hard at work on our Solution Accelerator lab (filter by Speaker and choose my name, &#8220;Cameron, Stefan&#8221;). Now that the content is coming together, there have been a few changes which I thought I should mention in light of my previous post. In order to ensure the lab is successful in the [...]]]></description>
			<content:encoded><![CDATA[<p>We have been hard at work on our <a href="http://max.adobe.com/scheduler/#view=1">Solution Accelerator lab</a> (filter by Speaker and choose my name, &#8220;Cameron, Stefan&#8221;). Now that the content is coming together, there have been a few changes which I thought I should mention in light of my <a href="http://forms.stefcameron.com/2009/07/22/adobe-max-2009/">previous post</a>.</p>
<p>In order to ensure the lab is successful in the short amount of time we have (90 minutes) to build a small end-to-end solution, the Content Creation (CCR) and Correspondence Generation (CGR) building blocks will no longer be featured. Instead, we will feature the following building blocks, which should give you a taste for their power to accelerate your own solutions:</p>
<ul>
<li><a href="http://www.adobe.com/devnet/livecycle/solutions/bb_selection_capture.html">Selection and Capture (SNC)</a> &#8212; capture data and guide users through filling specific forms within a given set;</li>
<li><a href="http://www.adobe.com/devnet/livecycle/solutions/review_buildingblock.html">Review, Commenting and Approval (RCA)</a> &#8212; review the submitted forms and approve or reject as needed;</li>
<li><a href="http://www.adobe.com/devnet/livecycle/solutions/ondemand_buildingblock.html">On-Demand Assembly (ODA)</a> &#8212; automate the creation of a PDF package, a single PDF document containing a copy of submitted forms and other appropriate documentation.</li>
</ul>
<p>In the mean time, here&#8217;s some fun MAX trivia. You never know when it might come in handy&#8230;</p>
<p><img style="visibility: hidden; width: 0px; height: 0px" height="0" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNTExMjU*ODkzNjQmcHQ9MTI1MTEyNTU1MDIzMCZwPTc3NDM3MSZkPW1heDA5d2lkZ2V*Jmc9MiZvPTIyNzRhMDcyN2E5NDQzZmY4YjZhNzRkZmM2MWZhZDVjJm9mPTA=.gif" width="0" border="0"> <object id="MaxWidget" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab" height="400" width="400" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="_cx" value="10583"><param name="_cy" value="10583"><param name="FlashVars" value=""><param name="Movie" value="http://max.adobe.com/widget/MaxWidget.swf"><param name="Src" value="http://max.adobe.com/widget/MaxWidget.swf"><param name="WMode" value="Window"><param name="Play" value="0"><param name="Loop" value="-1"><param name="Quality" value="High"><param name="SAlign" value="LT"><param name="Menu" value="-1"><param name="Base" value=""><param name="AllowScriptAccess" value="sameDomain"><param name="Scale" value="NoScale"><param name="DeviceFont" value="0"><param name="EmbedMovie" value="0"><param name="BGColor" value="869CA7"><param name="SWRemote" value=""><param name="MovieData" value=""><param name="SeamlessTabbing" value="1"><param name="Profile" value="-1"><param name="ProfileAddress" value=""><param name="ProfilePort" value="1802317617"><param name="AllowNetworking" value="all"><param name="AllowFullScreen" value="false"><embed src="http://max.adobe.com/widget/MaxWidget.swf" quality="high" bgcolor="#869ca7" width="400" height="400" name="MaxWidget" align="middle" play="true" loop="false" allowscriptaccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" flashvars="crtr=1&amp;gig_lt=1251125489364&amp;gig_pt=1251125550230&amp;gig_g=2"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://forms.stefcameron.com/2009/08/24/adobe-max-2009-lab-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe MAX 2009</title>
		<link>http://forms.stefcameron.com/2009/07/22/adobe-max-2009/</link>
		<comments>http://forms.stefcameron.com/2009/07/22/adobe-max-2009/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 19:35:42 +0000</pubDate>
		<dc:creator>Stefan Cameron</dc:creator>
				<category><![CDATA[CM]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[LiveCycle]]></category>

		<guid isPermaLink="false">http://forms.stefcameron.com/2009/07/22/adobe-max-2009/</guid>
		<description><![CDATA[I have just been asked to be one of the speakers/trainers for the &#8220;Developing Enterprise Solutions Using Adobe Solution Accelerators&#8221; lab in the LiveCycle Develop track at MAX this year. Once you&#8217;ve registered for MAX, launch the Scheduler and choose &#8220;By Session &#62; Filter By: (product) LiveCycle ES; (speaker) Cameron, Stefan&#8221; to see my sessions. [...]]]></description>
			<content:encoded><![CDATA[<p>I have just been asked to be one of the speakers/trainers for the &#8220;Developing Enterprise Solutions Using <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/">Adobe Solution Accelerators</a>&#8221; lab in the LiveCycle Develop <a href="http://max.adobe.com/sessions/tracks/">track</a> at MAX this year. Once you&#8217;ve <a href="http://max.adobe.com/registration/">registered</a> for MAX, launch the <a href="http://max.adobe.com/scheduler/#view=1">Scheduler</a> and choose &#8220;By Session &gt; Filter By: (product) LiveCycle ES; (speaker) Cameron, Stefan&#8221; to see my sessions. I will most likely be focusing my time on the <a href="http://www.adobe.com/devnet/livecycle/solutions/bb_corr_gen.html">Correspondence Generation (CGR)</a> and <a href="http://www.adobe.com/devnet/livecycle/solutions/bb_content_creation.html">Content Creation (CCR)</a> building blocks which ship as part of the Solution Accelerator SDKs.</p>
<p>See you there!</p>
<p><a href="http://max.adobe.com/?sdid=ERZUY"><img height="130" alt="Adobe MAX 2009" src="http://assets.max.adobe.com/images/MAX09_Grey_140x130.jpg" width="140"></a></p>
<p class="postUpdate"><strong>Aug 24, 2009</strong> &mdash; Added links to the CCR and CGR building blocks.</p>
]]></content:encoded>
			<wfw:commentRss>http://forms.stefcameron.com/2009/07/22/adobe-max-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating and Loading Data Nodes</title>
		<link>http://forms.stefcameron.com/2009/06/01/creating-and-loading-data-nodes/</link>
		<comments>http://forms.stefcameron.com/2009/06/01/creating-and-loading-data-nodes/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 11:00:03 +0000</pubDate>
		<dc:creator>Stefan Cameron</dc:creator>
				<category><![CDATA[CM]]></category>
		<category><![CDATA[Data Binding]]></category>
		<category><![CDATA[Instance Manager]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Tables]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[XFA]]></category>

		<guid isPermaLink="false">http://forms.stefcameron.com/2009/06/01/creating-and-loading-data-nodes/</guid>
		<description><![CDATA[Have you ever needed to create data nodes in the Data DOM on-the-fly? How about a need to parse XML obtained from a web service data connection in order to find a value for some property? If that&#8217;s the case, then you&#8217;ll find-out how to do it in this article. Creating Data Nodes In a [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever needed to create data nodes in the Data DOM on-the-fly? How about a need to parse XML obtained from a <a href="http://forms.stefcameron.com/2009/03/23/pre-process-web-service-responses/">web service data connection</a> in order to find a value for some property? If that&#8217;s the case, then you&#8217;ll find-out how to do it in this article.</p>
<h2>Creating Data Nodes</h2>
<p>In a similar article, John Brinkman showed how to <a href="http://blogs.adobe.com/formfeed/2008/10/form_variables.html">create form variable nodes</a> at runtime however what&#8217;s not obvious about data nodes is that you don&#8217;t create them using
<p>a class name of your choice.</p>
<p>For example, say you wanted to create the following data node structure:</p>
<pre><code>&lt;custom&gt;
    &lt;message&gt;Hello World!&lt;/message&gt;
&lt;/custom&gt;</code></pre>
<p>&nbsp;</p>
<p><span id="more-372"></span></p>
<p>Given the following syntax for the createNode() function (see page 367 in the <a href="http://www.adobe.com/go/learn_lc_scriptingReference_82">LC Designer 8.2 Scripting Reference</a>):</p>
<pre><code>{model}.createNode(className [, name, namespace]);</code></pre>
<p>you might try the following, using &#8220;custom&#8221; as the class name for the first group/container node &lt;custom&gt;:</p>
<pre><code>var n = createNode("custom");</code></pre>
<p>Doing the above would generate an error stating that &#8220;custom&#8221; is an invalid node type.</p>
<p>The trick here is that only specific XFA class names are allowed, such as &#8220;text&#8221;, &#8220;decimal&#8221;, &#8220;integer&#8221;, etc., as well as two special types for data nodes: &#8220;dataGroup&#8221; and &#8220;dataValue&#8221;. When you need a data node that will <em>contain</em> other data nodes, you use the &#8220;dataGroup&#8221; class. When you need a data node to which you will <em>assign</em> a value, you use the &#8220;dataValue&#8221; node.</p>
<p>The JavaScript code to create the above XML structure then becomes:</p>
<pre><code>// &lt;custom&gt; data group to contain &lt;message&gt;
var c = xfa.datasets.createNode("dataGroup", "custom");
// &lt;message&gt; data value for "Hello World!"
var m = xfa.datasets.createNode("dataValue", "message");
// set value of data value node
m.value = "Hello World!";
// add &lt;message&gt; into &lt;custom&gt; data group node
c.nodes.append(m);
// print result to JavaScript Console (Ctrl + J in Acrobat)
console.println(c.saveXML("pretty"));

// output from above:

&lt;custom&gt;
    &lt;message&gt;Hello World!&lt;/message&gt;
&lt;/custom&gt;
</code></pre>
<p>Note that the createNode() function must be called on an object of type &#8220;model&#8221; and since we&#8217;re creating nodes in the Data DOM, we use the xfa.datasets object since it is a model object.</p>
<p>At this point, the &lt;custom&gt; node (and the nodes/values it contains) is <strong>not</strong> part of the Data DOM. To add it to the Data DOM so that it gets submitted with the rest of the form&#8217;s data, you would have to append it to a node <strong>inside</strong> the root subform (the top-most subform in the Hierarchy palette). For example, if your root subform&#8217;s name was &#8220;form1&#8243;, you would do the following to add the &lt;custom&gt; node to the form&#8217;s data:</p>
<pre><code>xfa.datasets.data.form1.nodes.append(c);</code></pre>
<p>This can be very useful. In fact, this technique is used in <a href="http://forms.stefcameron.com/category/cm/">Correspondence Management</a> letter template scripts to flag a selection list&#8217;s default selection as having been processed. Since the data merged into the list to print the letter based on the template may not match the default selection in the list, the scripts generate a special node directly in the Data DOM to indicate whether the list&#8217;s data value should be processed instead of its default selection (i.e. no need for a hidden checkbox field for each list, keeping the form/PDF file size down).</p>
<p>The &#8220;Custom Node Example&#8221; section in my <a href="http://forms.stefcameron.com/samples/data-binding/CreateLoadDataNode.pdf">sample form</a> demonstrates the above technique.</p>
<h2>Loading Data Nodes</h2>
<p>Another use for creating data nodes is they give you the ability to load existing XML in order to parse it without having to modify the Data DOM. If you create a new, orphaned (un-parented) data group node, you can use its loadXML() function to load an XML string into it, thereby giving you a handy XML node structure for parsing.</p>
<p>One example use of this would be in a form that retrieves various settings from a web service data connection where the structure of the returned data is determined by the input parameters (i.e. you have a single data connection which you can use to retrieve various data). You can return the XML data as a string and load it into a new data group node in order to parse-out the value you&#8217;re looking for without ever touching the Data DOM.</p>
<p>Another example would be an extension of my <a href="http://forms.stefcameron.com/2006/10/20/using-url-requests-in-pdf-forms/">URL Request</a> article. In this case, you could pass some XML data into your form via the URL request if your PDF form was available on a website. <font color="#ff0000"><strong>Warning:</strong> This is a not a secure method to pass data to your form.</font></p>
<p>Clicking the following link will load some movie data into the &#8220;Movies loadXML() Example&#8221; section of my sample form:</p>
<p><a href="http://forms.stefcameron.com/samples/data-binding/CreateLoadDataNodes.pdf?data=%3Cmovies%3E%3Cmovie%3E%3Ctitle%3ENacho%20Libre%3C%2Ftitle%3E%3Ccost%3E21.00%3C%2Fcost%3E%3CactorName%3EJack%20Black%3C%2FactorName%3E%3CcatName%3EComedy%3C%2FcatName%3E%3C%2Fmovie%3E%3Cmovie%3E%3Ctitle%3EMI%3AI%3C%2Ftitle%3E%3Ccost%3E20.00%3C%2Fcost%3E%3CactorName%3ETom%20Cruise%3C%2FactorName%3E%3CcatName%3EAction%3C%2FcatName%3E%3C%2Fmovie%3E%3C%2Fmovies%3E">CreateLoadDataNodes.pdf?data=%3Cmovies%3E%3Cmovie%3E%3Ctitle%3ENacho%20Libre%3C%2Ftitle%3E%3Ccost%3E21.00%3C%2Fcost%3E%3CactorName%3EJack%20Black%3C%2FactorName%3E%3CcatName%3EComedy%3C%2FcatName%3E%3C%2Fmovie%3E%3Cmovie%3E%3Ctitle%3EMI%3AI%3C%2Ftitle%3E%3Ccost%3E20.00%3C%2Fcost%3E%3CactorName%3ETom%20Cruise%3C%2FactorName%3E%3CcatName%3EAction%3C%2FcatName%3E%3C%2Fmovie%3E%3C%2Fmovies%3E</a></p>
<p>Finally, my sample form also has a handy &#8220;URI Encoding Tool&#8221; section which you can use to encode various strings to include in a website address (as above).</p>
<h2>Samples</h2>
<p><a href="http://forms.stefcameron.com/samples/data-binding/CreateLoadDataNodes.pdf">Download Sample [pdf]</a></p>
<p><strong>Minimum Sample Requirements:</strong> I created this sample using Designer 8.2 and Acrobat 9 however it should work fine back to Acrobat 7.0.5.</p>
<p>There is also a great example on creating data nodes on page 438 of the <a href="http://www.adobe.com/go/learn_lc_scriptingReference_82">LiveCycle Designer ES Scripting Reference for Designer 8.2</a> &#8212; an excellent XFA form scripting reference.</p>
]]></content:encoded>
			<wfw:commentRss>http://forms.stefcameron.com/2009/06/01/creating-and-loading-data-nodes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CM Letter Building Tutorial</title>
		<link>http://forms.stefcameron.com/2008/09/04/cm-letter-building-tutorial/</link>
		<comments>http://forms.stefcameron.com/2008/09/04/cm-letter-building-tutorial/#comments</comments>
		<pubDate>Thu, 04 Sep 2008 20:01:09 +0000</pubDate>
		<dc:creator>Stefan Cameron</dc:creator>
				<category><![CDATA[CM]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://forms.stefcameron.com/2008/09/04/cm-letter-building-tutorial/</guid>
		<description><![CDATA[For those of you interested in Adobe&#8217;s new Correspondence Management Solution Accelerator, I just posted a Letter Building Tutorial, complete with document and training videos, on the LiveCycle Product Blog.]]></description>
			<content:encoded><![CDATA[<p>For those of you interested in Adobe&#8217;s new <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/correspondence.html">Correspondence Management</a> <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/">Solution Accelerator</a>, I just posted a <a href="http://blogs.adobe.com/livecycle/2008/09/cm_letter_building_tutorial.html">Letter Building Tutorial</a>, complete with document and training videos, on the <a href="http://blogs.adobe.com/livecycle/">LiveCycle Product Blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://forms.stefcameron.com/2008/09/04/cm-letter-building-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Correspondence Management</title>
		<link>http://forms.stefcameron.com/2008/06/19/correspondence-management/</link>
		<comments>http://forms.stefcameron.com/2008/06/19/correspondence-management/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 17:40:28 +0000</pubDate>
		<dc:creator>Stefan Cameron</dc:creator>
				<category><![CDATA[CM]]></category>

		<guid isPermaLink="false">http://forms.stefcameron.com/2008/06/19/correspondence-management/</guid>
		<description><![CDATA[There are some activities that all businesses need to do. Two of those are corresponding with customers and opening new accounts (they could be simple processes or they could be very complicated depending on various requirements). Adobe has recognized this need and has added a new segment to it&#8217;s LiveCycle Enterprise Suite called Solution Accelerators. [...]]]></description>
			<content:encoded><![CDATA[<p>There are some activities that all businesses need to do. Two of those are <strong>corresponding with customers</strong> and <strong>opening new accounts</strong> (they could be simple processes or they could be very complicated depending on various requirements). Adobe has recognized this need and has added a new segment to it&#8217;s <a href="http://www.adobe.com/products/livecycle/">LiveCycle Enterprise Suite</a> called <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/">Solution Accelerators</a>.</p>
<p>These Solution Accelerators come in the form of development kits that provide tools, built on top of LiveCycle, that are designed to help businesses, enterprises and government agencies quickly get started on a correspondence (eg. building letters and sending them to customers) and/or enrollment (eg. opening a new bank account) solution tailored to their business requirements.</p>
<p>For the past few months now, I&#8217;ve been working on the <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/correspondence.html">Correspondence Management</a> Team at Adobe. We&#8217;re building some really cool tools that leverage many aspects of LiveCycle, <a href="http://www.adobe.com/products/flex/">Flex</a> and <a href="http://www.adobe.com/products/air/">AIR</a>. Today is an exciting day because I&#8217;ve just found-out that we now have our own spaces, for <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/correspondence.html">enterprise</a>, <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/fs_correspondence.html">financial services</a> and <a href="http://www.adobe.com/products/livecycle/solutionaccelerators/government.html#correspondence">government</a>, on Adobe&#8217;s web site!</p>
<p>Are you excited about this? Is this something your company has been looking for? What kind of features would you expect to see in a Correspondence Management or Enrollment Solution Accelerator?</p>
<p><strong>PS:</strong> This doesn&#8217;t mean the Designer-related posts will stop. I&#8217;m still very much involved with Designer and I use it every day so there&#8217;s still plenty to talk about.</p>
]]></content:encoded>
			<wfw:commentRss>http://forms.stefcameron.com/2008/06/19/correspondence-management/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

