Interesting article on HTML 5 and Flash

I just read an interesting article posted by Greg Wilson about the current debate about Flash and HTML 5. While I understand the widespread excitement about something new happening in the world of HTML (it’s been a long time coming), I am surprised by the amount of noise around how HTML 5 will be the Flash killer.  Seriously?!?! I know it’s been a long time since HTML 4, but have we all forgotten the issues around browser fragmentation and compatibility issues? With newer browsers like Chrome in addition to the fragmentation of versions of IE and Firefox for example just screams of managing multiple implementations.

Don’t get me wrong, I truly believe that HTML 5 is a great thing. The more you commoditize features, the more vendors like Adobe have to innovate. Everyone wins. HTML 5 and Flash go hand in hand like HTML 4 and Flash do today. I especially like Greg’s analogy of using Flash to replace all your <IMG/> tags. That is absurd. Just as absurd as thinking that HTML 5 will provide everything Flash can do consistently across browsers and OSes.

A generic way to use template variables in LiveCycle ES2

I saw a very interesting question on the Adobe Forums recently. Someone was asking if it was possible to use the setValue service to process a variable that was setup as a template. For those of you that are not familiar with templates in LiveCycle ES2, a template is basically a string value that has embedded xPath expressions. The idea is to have a chunk of text where some parts of it are substituted with runtime data values. Here is an example of a template:

Your name is {$/process_data/@FullName$} and your address is {$/process_data/@Address$}.

The end goal of course is for some processor to take the above template and replace the variable text {$ … $} with the actual value resolved from the xPath query.

The answer to the question of the setValue service being able to process such a template is unfortunately … no. The only way you could construct a dynamic string like this would be to use the concat() method in setValue. Sounds like a decent approach, but the problem is that if you want to change the text surrounding the dynamic values you have to touch your process map. Not so cool 🙂

My first reaction to this problem was to think of some way we could work around this limitation. What better way to implement a workaround then the executeScript service. With the executeScript service, you can write your own Java code while having access to the context of your LiveCycle ES2 process. For more information about the executeScript service, go to

OK, now I am committed to writing some Java code. No big deal. the first step is to find some effective way to parse the template string and locate the variable text blocks identified by {$ and $}. Naively, I think regex. Ugh.. regex is like black magic to me. With some help from Danny Saikaly I get some funky regex statement that seems to work and I end up with code like this:

import java.util.regex.*;

Pattern variablePattern = Pattern.compile("\\{\\$([^\\$]*)\\$\\}");
String template = patExecContext.getProcessDataStringValue("/process_data/@templateString");
Matcher variableMatcher = variablePattern.matcher(template);
StringBuffer result = new StringBuffer();
while (variableMatcher.find())
    MatchResult _match = variableMatcher.toMatchResult();
    String xPathString =;
    xPathString = xPathString.substring(xPathString.indexOf("$") + 1, xPathString.lastIndexOf("$"));
    String value = patExecContext.getProcessDataStringValue(xPathString);           
    variableMatcher.appendReplacement(result, value);

NOTE: the double slashes “\\” in the regex are used to escape special characters here because of Java.

Then Danny makes a good observation, better test this thoroughly because you want to make sure that special characters in variable names are handled correctly, etc. Of course, he’s right. So now I am starting to think… “There has to be a better way to do this!!!”

I reached out to one of the LiveCycle ES engineers, Florantin Wandeler. I tell him about what I am trying to do and he also rains on the parade (rightfully so)… “That’s nice, but what if you have embedded xPath expressions?” … Hmmm, didn’t think of that! He then puts me onto a wicked useful, but not documented built-in function called replacePathExpressions(). Of course this makes sense, LiveCycle ES2 uses templates for many services, it’s just that it’s not exposed as a generic service. Quickly, I replace the code above with this:

//Get the templateString process variable value.
String template = patExecContext.getProcessDataStringValue("/process_data/@templateString");

// Call the replacePathExpressions() method.
// It is a built-in method that will look for all {$ $} variable text and process each xPath expression and replace them in the text.
String result = patExecContext.replacePathExpressions(template);

// Now, the result string contains all of the resolved xPath statements.
// Let's set the process variable that will hold the result.


My Sessions at MAX 2010

Again this year, I will be presenting at MAX. In addition to the regular track sessions, I have signed up to host a full day pre-conference session called “Creating Enterprise RIAs: From Design to Implementation”. For the past few months, I have been running Adobe Enterprise Developer Days where we take a look at the new possibilities that are now available with the release of CS5. Using a new comer to the CS lineup – Catalyst, we can now bridge the gap between the visual designers and application developers. Catalyst is able to import visual assets from other CS tools such as Photoshop and Illustrator. Once the visual assets are imported, Catalyst can then be used to convert artwork into components – while maintaining visual fidelity!!!!


During these Adobe Enterprise Developer Days, I have been demonstrating how you can take a Photoshop PSD file with multiple layers into Catalyst and actually build a functional prototype. I won’t go into all the features here, but for a sneak peak, check out this recording of Kevin Lynch demonstrating Catalyst at the Web 2.0 conference.

Once all the interactivity is defined in Catalyst, I then import the project into Flash Builder 4. Using a wicked cool plug-in that the LiveCycle ES team has created – The LiveCycle Services Discovery Plug-in for Flash Builder, I can then wire up the project to real enterprise-class services. Trust me, this is a jaw dropper!!! And this is the reason I have agreed to do a full day pre-conference session at MAX this year. The ability to bridge the gap between the visual designers that can deliver on the requirements of usability and experience and the application developers that need to translate them into back-end transactions is invaluable. 

The other session I will be hosting is called “LiveCycle Data Services in the Cloud”. For a while now, Adobe has been working closely with Amazon’s EC2 offering to provide hosted services for our enterprise software. LiveCycle ES has been the first product line to embrace this approach. For over a year now, we have made available to our Adobe Enterprise Developer Program members as a benefit to their membership. is basically a provisioning system to enable EADP members to launch and manage their own instance of LiveCycle ES in the cloud. We have evolved this offering to support customers that whish to use LiveCycle ES in the cloud in production as a single-tenant system.  We launched Adobe LiveCycle Managed Services in January 2010. As this new offering is taking off, it just makes sense to extend the reach to LiveCycle Data Services. During my BYOL (Bring Your Own Laptop) session, I will walk through how to launch your own LCDS instance in the cloud and start building enterprise-class applications that leverage the hosted instance.

Make sure you sign up now at !


LiveCycle Workbench ES2 add-ons now available on labs.


The LiveCycle Workbench ES2 engineering team is providing existing LiveCycle ES2 customers with the opportunity to get access to new tooling features as they are being built! To get access to this new ES2 candy, navigate to


Here is an overview of what you will get in this update site ZIP file:

Variable Highlighting — The feature enables users to clearly see which variables are used for each activity that is selected on the process.

Approval Wizard — The feature enables users to design an approval task with ease of answering a few questions in a wizard.

Record & Playback shortcut — The feature allows users to start recording and open their recording from the invocation dialog.

Schema Editor — The feature enables users to use a visual editor to create schemas.

Application Filter — The feature simplifies the dialog that allows users to retrieve applications by filtering the application that already exist in their workspace.

Event Tooling — The new wizard and user interface designed for events will make creating events much easier.

Relationship Viewer — The feature allows users to see the relationship of forms to their fragments.

Type Selection Improvements — The display of the data types in the variable creation dialog has been made easier.

Server Log Viewer — Support for viewing the LiveCycle Server log in the new Workbench Server Log viewer.

LiveCycle Developer Network site gets facelift


It’s a very proud moment for us, the LiveCycle devnet site has been refreshed with new content around ES2 as well as undergoing a face lift.

Hopefully you will find it easier to locate the valuable content we have posted.

Let me know what you think, suggestions for improvement are always welcome.

Breaking News from MAX

image We are just finishing up the first official day of MAX 2009. So far the LiveCycle ES sessions have been going very well. The pre-conference session held on Saturday and Sunday had over 70 people in the room. I was tearing up watching so many people using Workbench 🙂

We keynote on day 1 was very exciting. Not only did we announce LiveCycle ES2  and it’s availability by the end of this year (finally, I will be able to publicly blog about all the amazing new stuff in ES2) – we also announced the availability of LiveCycle Workspace ES2 for mobile. This app will enable you to access your process management tasks from your BlackBerry, Windows Mobile and iPhone devices. Read more on Matt MacKenzie’s blog. Another cool fact about this mobile application is that it is the very first Adobe application to make it on the iPhone AppStore!!! SWEET.

Must see LiveCycle session @ MAX

Harnessing the Value of User-Centric Applications

See how Deutsche Telekom is using Flex + Adobe LiveCycle in combination with its enterprise systems to streamline and improve HR communications with over 100,000 employees and retirees.  Learn about Adobe’s vision for user-centric computing and see an in-depth demonstration that illustrates how the Flash Platform + LiveCycle ES2 together improve customer experience and employee productivity.

This session will be held Wednesday, October 7th at 11:00 AM

Adobe to acquire Omniture

Today, Adobe announced that it will be acquiring Omniture. To find out more, click here.

Marcel’s follower appreciation MAX 2009 discount promotion

CashWith MAX 2009 around the corner, you better make sure that you are registered and pumped for all the awesome enterprise sessions we will be offering this year. If you are not yet registered, then what are you waiting for? a promo code??? Fine! if that’s what it takes, that’s what we’ll do!

The first 25 people that send me an email at between August 31st and September 4th and I will supply you with a promo code that you can use to save some of your hard earned money and attend MAX 2009 in Los Angeles.  This offer is for new full pass registrations only and cannot be combined with any other promotion, package or offer.

I can’t make it any easier  🙂

Some Enterprise Software Reminders…

There is a lot of stuff happening at Adobe in the enterprise space, so I thought that a little reminder of what’s available to our community of enterprise developers would be a good idea.

MAX 2009

This year, there is a true focus on the enterprise space. We have put a lot of effort to define and develop a truly valuable session track that will cater to the intermediate / advanced audience. For those of you that are beginners or want an guided tour of the next release of LiveCycle ES, we also have a pre-conference track focused on training. This will ensure that everyone is at the required level to take full advantage of the sessions we have defined during the conference. We even have a LiveCycle@MAX bundle available.

LiveCycle ES Next

Don’t forget about the LiveCycle ES Next prerelease program that is in progress. If you have not had a look at the next version, I strongly recommend that you do. I have to admit that after using the new version, it pains me to go back to the current release. The improvements that have been made around the development experience are tremendous. Workbench is quickly becoming a best in class enterprise application IDE. The installation and configuration experience is effortless.

We have some exciting contests under way as well. Take the time to log a few bugs and win a free copy of Acrobat Professional Extended. Or build a cool application and enter to win a free pass to MAX 2009. All of the details are available on the site.

LiveCycle Data Services 3

LiveCycle Data Services 3 also posted on introduces a set of very compelling features. the least of which is a new technology code-named “Fiber” which provides the ability to create model-driven applications. The Adobe Common Data Model will allow developers to declaratively define a data model that will contain more than just structure and simple constraints. Within the data model you will be able to define business logic, variants, rules, etc. The very powerful approach will dramatically reduce development time while truly enable developers to separate data from presentation. 

ColdFusion 9 And Flash Builder 4

Previews of the next generation of ColdFusion and Flash Builder are still available on There are some very compelling reasons to check these out as well. ColdFusion 9 introduces many new features – a new Eclipse-based IDE (Bolt), turn your CFCs into services, integrate your CF applications with Exchange, etc.

Flash Builder 4 is also got some game… Enabling Flash Catalyst workflows by introducing a new component model called “Spark”, service discovery with auto-code generation, network monitor so that you can see what’s being sent and received by your Flash applications, etc. You will also need Flash Builder 4 if you want to have a look at the new Adobe Common Data Model introduced by LC Data Services 3.