With all the anticipated hype surrounding our release of Apollo on Labs, this one might sneak under the radar a little – we’ve also just released to Labs the 2.5 incarnation of Flex Data Services, which includes a brand new change of image, renamed "LiveCycle Data Services 2.5". Let’s talk a little about what this means for Flex developers, what it means for LiveCycle developers, and what it means more generally for the platform upon which we are delivering innovative new user-experiences.
The next version of Flex Data Services
First and foremost, LiveCycle Data Services is the 2.5 release of the technology formerly known as Flex Data Services. As such, you’ll continue to employ this part of our technology platform when you seek to build powerful service-oriented or data-oriented architectures. More information on the intent of LiveCycle Data Service can be found here, including data management services, data synchronisation and conflict management, data paging, occasionally connected application development, messaging service features such as data push and publish/subscibre messaging, support for the develoment of applications that support collaboration and concurrent data sharing, "co-browsing" and experience sharing, as well as support for more robust testing strategies with automated functional testing using Mercury QuickTest Pro.
There are a number of enhancements in the LiveCycle Data Services 2.5 release – too numerous to mention, available in the release notes, but here’s a short summary of some of the new features that I think will capture the attention of current users of Flex Data Services:
- Runtime Configuration of Data Destinations; there is no longer a compile-time dependancy in your configuration of data services, these can be specified and configured at run-time in your application. I will try and discuss use-cases that can leverage this feature in a separate blog post.
- Per-client Quality of Service (QoS) in messaging; incredibly useful in the development of applications that make significant use of streams of real-time data, this feature empowers a Flex client with being able to set custom data access policies for real-time data streams.
- RTMP Tunnelling; a much requested feature by those leveraging the Real-time Messaging Protocol in Data Services, RTMP Tunnelling greatly simplifies the ability to have your applications punch through a firewall or proxy that otherwise impedes direct connections to your server.
- SQL Adaptor; I recall from MAX 2006 in Las Vegas, that many of you were conceiving code-generation solutions when your business tier was doing little more than mediating between a Flex client presentation-tier and a database integration tier. The new SQL adaptor removes the need to write any of the intermediate server-side JDBC code in your Java business tier when this is your typical architecture.
- General Improvements in Performance and Stability; in addition to these new features, the team have focussed on a number of core enhancements to the performance and stability of Data Services applications.
I encourage you to dig around the release notes and documentation a little on your own, to find out more about the above features, and to explore some of the other features such as the updates to the client-side web service library, features to seamlessly integrate with Ajax including Ajax dataservices and the Flex Ajax bridge, a new JSP tag library to more easily incorporate MXML and ActionScript code into a JSP as well as greater support for WSRP, for those of you that are enhancing portal application developents with the features and benefits of a Flex-based RIA solution.
What’s with the LIVECYCLE Data Services ?
So what’s with the name change ? I’ve spoken a great deal about Flex and LiveCycle on my blog in the past, as a platform of technologies that allow us to bring richer user-experiences to document and process-centric enterprise applications.
We started talking about the new version of our LiveCycle platform at MAX 2006. Duanne Nickull has a great post about the SOA (Service Oriented Architecture) for the next incarnation of LiveCycle over at his blog post here, but a benefit of this is that all the features of the LiveCycle platform will be more consistently exposed as a layer of services that can be invoked and consumed by a client technology.
Clearly, we have our own client technology in Rich Internet Applications with Flex, and so what you’re now beginning to see is the fruition of how the Flex technology that started life in Macromedia, and the LiveCycle technology that came from Adobe are coming together. By bringing the world of rich user-experiences together with technologies that improve the delivery of process-centric or document-centric experiences, we are able to much more rapidly and consistently develop applications that leverage our technologies on both ends of the wire.
The renaming of Flex Data Services to LiveCycle Data Services, for me, brings clarity to the utilty of the data services that are being offered to developers. Though squarely of benefit to Flex developers, these services can be equally consumed by an AJAX application for instance, and simply become another suite of services that can be leveraged and consumed by application developers in their RIA development. There has often been confusion as to what lives on the server and what lives on the client in the Flex ecosystem; this becomes clearer as you think of LiveCycle services as those we expose in a J2EE runtime for consumption by client technologies, including Flex.
PDF Generation from your Flex Application
However; what you will also see in the Labs beta, is the exposition of document-based features to your Flex applications. Let me talk a little about the PDF Generation capability of LiveCycle data services, which is a tremendous feature with unbounded use-cases.
Oftentimes in the capture of business requirements for an RIA, our customers will request the ability to deliver a rich and high-fidelity print experience to customers. Perhaps a customer has just engaged with an interactive mortgage calculator, or found a product of interest to them using a product configurator delivered as an immersive, lean-forward RIA experience.
Though Flex exposed APIs that allowed you to print areas of your application, and extended those APIs to allow you to do smart things like printing the entire contents of a datagrid, not just the visible rows, the experience from RIA to print was never a great one. More often than not, print requirements would be satisfied by throwing content into a neatly formatted HTML page that could be printed from within the browser.
One of the great new features of LiveCycle Data Services, is the provision of services that dramatically simplify the ability to dynamically generate high-fidelity PDF with the dynamic data from your RIA (or even from an Ajax application).
By creating a PDF Template using LiveCycle Designer, you can quickly and easily create Form templates – these Form templates are high-fidelity forms that will look like any typical paper document from a glossy brochure to a tax return. Similar to data-binding in a Flex application, a data-binding architecture for Forms can bring the dynamic data from a data model together with the Form template, to dynamically render a PDF.
In LiveCycle Data Services 2.5, we offer for you a service called XFAHelper (XFA is the XML Forms Architecture that combines Form Templates with XML data models) that you can invoke to take data from your RIA, from your backend services or indeed from any other data source, and populate a PDF template with that data. By writing a tiny Java class that invokes the XFAHelper, you can use a standard RemoteObject call from your Flex application to pass data down from your RIA and return to the browser a PDF populated with that data. If you don’t want to render the PDF back to the screen, you can do anything else you like with it – email it off to a customer, archive it in a database or document management system, or leverage other aspects of LiveCycle to have that document initiate or participate in a workflow, be secured with document policies, etc.
In future blog posts, I or one of my Adobe Consulting colleagues will offer some examples of how to create Flex applications that dynamically generate PDF using LiveCycle Data Services 2.5
And what about Apollo ?
With LiveCycle Data Services shipping on the back of Apollo, it should be no surprise how closely our product teams are working together to ensure that Apollo applications can leverage Flex and LiveCycle in their application architectures.
LiveCycle Data Services 2.5 will give you a glimpse of how the platform begins to glue together to deliver seamless experiences from the glass to the server.
One of the exciting features about Apollo, is the ability to work completely offline with web-delivered applications – LiveCycle Data Services is poised to play a key role in that use-case for your offline yet data-oriented RIA. Flex applications using LCDS will receive improved support for local queuing of outbound messages when the client is disconnected, with management of these messages when server reconnect occurs. A local data cache further supports future Apollo application support, enabling you to cache client data requests and data changes on the local file system, for later retrieval when the application resumes. It’s exciting to see all these different pieces of the framework coming together to offer elegant architectures for the delivery of Rich Internet Applications in either an occasionally connected desktop or browser-based deployment model.
As is the intention of Adobe Labs, we offer this early access to our technology not only to observe and understand what you want to do with it, but to offer you the opportunity to provide your feedback directly to the engineering team, to ensure that the product meets your particular and varied needs. I know the team are seeking feedback on everything from the web service support and PDF generation, your data management services and real-time data messaging applications to general feedback on new features such as the JSP tag library or the SQL Adaptor.
Everything you need to get started can be found on Labs.