LiveCycle ES Update 1 Beta has been released to the public.  If you work with LiveCycle, make sure to enroll in the LiveCycle ES Prerelease Program to obtain a copy of this beta version.  If you're wondering what's new with this update, Greg Wilson has posted a summary of the new features on his blog.

I finally got approval to go to CF.Objective this year!  I've been wanting to go since I heard great things about last year's conference.  This year schedule looks promising too, with great speakers and tracks.  I don't see myself sticking to one track but rather picking the best (for me) of the different sessions.

By glancing through the schedule I'm already looking forward to Advanced Techniques With The ColdBox Framework  by Luis Majano; ColdSpring 1337 by Chris Scott; Transfer ORM Caching Mechanics by Mark Mandel.  There are other ones which I need to make my mind for since they overlap like the workshop by John Paul Ashenfelter (I attended to one of his pressos in CFUnited and it was great) and CF with Air by Samer Sadek ( a coworker of mine).

Regardless of what I pick,  I'm sure this will be a great learning experience as well as a good chance to share the great guys of the CF community. If you haven't buy your tickets yet, hurry up and get registered!

See you at Objective!

I’ve seen several questions in the LiveCycle user forum about how to pre-populate a form with user data in the Workspace, so I’ve decided to demonstrate how to accomplish this. Notice that although this explanation is digested enough so that a beginner can accomplish the task, you need to have a good understanding of how forms are rendered in LiveCycle, basic understanding of the XML Path Language (XPath) & how to set the XML schema to your form.

First let’s understand how LiveCycle renders a form in the workspace for a specific process. When you set your process you set an input variable which holds the form to render. LiveCycle by default assigns the “Default Renderer” service to this variable so that it gets rendered properly in the Workspace. This “Default Renderer” is just a short-lived process with several activities that sets variables and enables your form for the workspace.

If you want to pre-populate a form with data, all you have to do is create your custom renderer service. For instance, let’s say you want to render a PDF form in the Workspace. So we need the “Render PDF Form” (see image 1) from the “Samples Forms” category (this samples should be in your process list unless you/the administrator didn’t upload the LiveCycle Archives that comes with the installation). This process takes a PDF form and renders it to the Workspace. First the short-lived process sets some parameters, then renders the form using the renderPDFForm operation from the Forms Service, and then enables the PDF Form to be rendered in the workspace.

 Render PDF Form process design
Image 1: Render PDF Form Process Design
 

To pre-populate the form we need to get the logged in user info and inject that into the form before getting to the “render Form” activity. To do that you can copy the “Render PDF Form” process into a new process. Then to your new process you want to:

1-      Add two input variables: one called “userId” of type string and another one xmlData of type xml. 

2-      In the first step of the process you want to extract the form’s XML data and assign that to the xmlData variable. 

This Wednesday, I'll be speaking at the new Baltimore Adobe User Group (BAUG) on LiveCycle ES.  If you live around the Baltimore area, this is a great opportunity to learn what is LiveCycle ES and what it can do for your company.  My presentation comprise two parts as described below:

What’s all the buzz about Adobe LiveCycle ES?

Have you heard about LiveCycle and how great it is but never had a chance to see it in action? Maybe you’ve heard how it can unlock PDF documents, control who can view/print/copy documents even when these have left your network, render forms in multiple formats (HTML, PDF and SWF) all with a single file. Learn why the buzz about LiveCycle ES and why renowned companies like Wachovia and the Federal Government are using LiveCycle ES to automate their business processes.

Unleash the power of Reader Extensions ES

Have you ever filled out a PDF form and, after all the effort, noticed you cannot save your data? Or maybe try to add attachments, comments, signatures, connect to a database but are unable because of the limitations of Adobe Reader? Learn how you can use LiveCycle Reader Extensions ES to unlock these and more capabilities for single or bulk PDF documents.

 
I'll be preceded by Curtis Layton, whom will be speaking on: Intro to Object Oriented Programming in ColdFusion.

You can get more details about the event at the BAUG website: http://baltimore-aug.org/

Check this out!  Tomorrow, Flex Camp DC will be broadcast LIVE and FREE by AboutWeb and Adobe.  Check the post from Phil Nacelli below:

"Just want to pass on the word that tomorrow AboutWeb LLC and Adobe Systems will be hosting the Flex Camp Washington, DC 2008. This is one-day gathering with Adobe Flex experts covering everything you need to know about the power of Flex, the upcoming release of Flex 3, and a bit about the much anticipated Adobe Air.

Since we have already surpassed the registration capacity, we are going to be broadcasting the entire event live on Adobe Connect from 9:30am to 12:00pm and then after lunch break from 1:00pm to 5:00pm (All times are Eastern Standard Time).

To view the event go to http://adobechats.adobe.acrobat.com/dcflexcamp08/, choose the "Enter as a Guest" option and click "Enter Room" after entering your name. We look forward to seeing you online!"

I’ll be speaking in the next LiveCycle User Group meeting in February at the David Packard Conference Center in DC. The topics I’ll be presenting are:

  • Capabilities and usage of Reader Extensions
  • Integrating LiveCycle ES with your backend systems

 

To register and to see more details on this meeting go to the Capital Area LiveCycle User Group website at: http://www.dc-livecycle.com/index.cfm?event=meetings.showMeeting&meetingId=29

Mark Mandel has announced today that Transfer ORM will become a Professional Open Source Software.  He wants to dedicate more time to present the framework and travel to conferences (he will remain coding for the framework though).  I'm sure we all agree Mark has done an excellent job developing, maintaining Transfer and keeping up with the developer group, so it is of great pleasure to hear Mark's new endeavors.

If you wish to become actively involved with Transfer, check this out, Mark is looking for people interested in the following areas:
  • Transfer Support
    A subscription and/or per incident model for support as pertaining to Transfer installation, use and/or any overall issues.

  • Transfer Training
    A Transfer curriculum that will come in a series of short courses, as well as single/multiple day training programs, covering both on-line training, and in-person training.

  • Transfer Developer Certification
    Much like ColdFusion Developer Certification,a Developer certification give you a listing on the new Transfer site as certified, as well as a spiffy certificate.

  • Transfer Training Certification
    Again, much like ColdFusion Training Certification, this would give you a listing on the Certified Trainers page on the Transfer ORM site, as well as access to the training materials.
If you are interested in any of the above programs you can contact him via the contact form, or the Transfer Google Group

To see the full details and his original post checkout his blog post http://www.compoundtheory.com/?action=displayPost&ID=281

When working with web applications we often, very often, face the problem that the configurations in the various environments where the application will be deployed differ from one another.  This could be anything from different datasource names, security credentials, email server address and most important it could be an application setting to set your application mode (dev mode, live mode).  I say “most important” because if you have an e-commerce this flag could be the difference between charging customers or letting every transaction go through (Free goodies!).


 A way to deal with this problem (I believe the most commonly adopted) is to use a config file to set all this properties.  That’s where the famous “.ini” comes in (or XML), which is that text file with the variables for an environment.  It does the job but now you have a config file per environment and this could be a local, a dev, a staging and a production file.  So, now you have another problem, which is you have to make sure not to replace any of these files every time you do an update to your app (been there, done that).  You can use Ant to avoid making this mistake but you still have multiple copies of the config file lying around.  So, what if you can have a single file that “knows” what properties and values to use depending on the environment that is at?


Rob Gonda and I, created a very simple environment configurator that works of a single XML file and sets the needed properties based on the server is at.  We did this over a year ago but neither of us took the time to blog about it.  Now that I still see developers using multiple config files, I’ve decided post this as a small project on RIAForge.org. I’ve called it Environment Config for lack of creativeness, I guess.


The basics:

It consists of 2 files, one XML file and one CFC.  In the XML file you define all your environments and properties and pass the location of the file to the CFC which will parse your XML file and return a structure with the properties. Is that simple!


The Anatomy of the Environment XML:

 I'm trying to figure out if there's a way to generate dynamic PDF forms with ColdFusion or anything at all and ran into this at CFFORM reference page for CF8:

Incorporating interactive fields in PDF forms

ColdFusion 8 lets you use the cfform tag to create PDF forms that contain static and interactive form fields. The cfform tag must exist within a cfdocument tag (where format="pdf"). Only one cfform tag can exist within a cfdocument tag.

Completed forms can be posted to the server as an HTTP Post, or the entire PDF can be submitted as binary stream. If the PDF is submitted, you can use the cffile tag to save completed PDF form to a hard drive:

<cffile action="write" file="c:\savedpdf.pdf" output="#PDF.content#">

The output can be manipulated and extracted by using the tag.

Only the following cfform attributes are supported in generating PDF forms:

  • action
  • format
  • method
  • name
  • onSubmit
  • skin
  • style

To embed an existing PDF form generated by LiveCycle Designer or Acrobat, use the tag.

Then they provide the following example which has some obvious errors:

A simple PDF form

<cfdocument format="pdf">
<cfdocumentsection ../>
...
...
<cfform type="html/xform">
<cfinput type="textbox" name="employeeName" value="#fullName#"
readonly="true">
<cfinput type="textbox" name="employeeID" value="#id#" readonly>
<cfselect name="contributionPercentage" options="#optionsStruct#"
 required="true">
<cfinput type="submit" name="SubmitAsHTTPPost">
<cfinput type="submit" name="SubmitAsPDF" submitType="PDF">
</cfform>
...
...
<cfdocumentsection ../>
</cfdocument>

Of course I got all excited about it but after several attempts all I got was a 
PDF document that looked like a form but that didn't work at all. It was merely
a PDF Document.

 So I wonder, is this a big goof from Adobe or can you really create dynamic PDF forms with ColdFusion (without any LiveCycle interaction).

Interesting thing I came across in the past couple of days.  At work we have setup a TurnKey installation of LiveCycle ES for testing purposes.  As you might know this means LiveCycle is deployed in JBOSS with MySQL as the backend database.

Well, being a newbie to JBoss and because I did not take the time to Read the JBoss documentation since this was for testing purposes (Who does anyways?) I stumbled upon a merciless error that did not want to go away!

At one point I renamed the default data-source(DefaultDS) to something else and updated several files as mentioned in this tutorial from onjava.com.

Changing the name of the default data-source caused a connection failure since the “DefaultDS” that was being referenced in many files (as I explain below) did not exist. So, the server log was being bombarded by this error every 5 seconds or so!