In this interview, recorded at JavaOne 2009, Greg Wilson, Enterprise Platform Evangelist at Adobe Systems, provides an overview of the Adobe LiveCycle Enterprise Suite, an SOA platform that deploys to a J2EE application server and provides a range of services from process management to PDF generation. He looks at some of the out-of-the-box services and tools provided by LiveCycle such as an invocation layer, a workflow engine, and the Workbench IDE. He differentiates the Enterprise Suite from the LiveCycle Data Platform and also talks about BlazeDS, an open source version of LiveCycle Data Services.
DZone: Greg, can you tell us a little bit about your role at Adobe?
Greg Wilson: Sure. I'm part of a team of individuals in Adobe that go in to, basically, evangelize Flex, the whole Flash platform, which includes Flex and AIR, Flash Player. We also focus on LiveCycle Data Services, BlazeDS, and the whole LiveCycle DS platform. Our team goes out to customer sites, and we basically evangelize the technology and show how to best apply it. We go to events such as JavaOne, of course, and spread the word, so to speak.
DZone: What is Adobe LiveCycle?
Greg: Big question. So LiveCycle is a collection of products, basically. It's LiveCycle Enterprise Suite. And Enterprise Suite is a J2EE application. It's an SOA platform that deploys in a J2EE app server and provides well over 100 services, for all sorts of features. For example, rights management is a part of that. One of the services applies a policy to a document, and that policy controls who can open that document, what they can do with it, whether they can print it or not, how long they can keep it open, et cetera. PDF generation is another part as well as document security.
We also have a lot of basic process-management capabilities. If think about customers implementing applications where a form is filled out, someone needs to approve that form based on other conditions. Maybe the VP needs to approve it, pull data from other systems. LiveCycle is a platform that allows you to bring all that together and tie all that together into a really efficient process.
DZone: What is difference between what the LiveCycle Data Services platform provides and the LiveCycle Enterprise Suite?
Greg: Yeah, it's a common confusion. So LiveCycle Data Services is part of the overall LiveCycle platform. Data Services is specifically focused on data-enabling applications built on the Flash platform. If I'm a developer and I build an application using Flex, for example, and I'm going to deploy that either on the web, Flash Player, or as a desktop app on Adobe AIR, in order for me to communicate and to interact with the server, typically I would use LiveCycle Data Services. That can include things like simple Java remoting, publish-subscribe messaging, if you're doing real-time data feeds, and all the applications that that enables. Even things like data paging, data management, conflict resolution, offline data synchronization, all those types of data-related things that are traditionally very intricate for developers to build is provided with LiveCycle Data Services. And LiveCycle Data Services is also used as a means for those applications to interact with the entire LiveCycle Suite.
DZone: As an enterprise Java developer, how would I go about creating custom services for LiveCycle applications?
Greg: In addition to the over 100 services that come with it, we provide documentation to deploy your own services. So it's basically a POJO, a Plain Old Java Object, and you create a class, and that class becomes your service, and then each method is basically an operation in that service. It's very easy to deploy that in your LiveCycle application. Now you've taken the Java code that performs whatever function you need it to perform and as soon as you deploy it to LiveCycle, you can take advantage of things like the invocation layer, for instance - you can invoke that now through a Web services call, or from an EJB. You can invoke it through a watched folder, through an email, and also through Flash remoting, through a Rich Internet Application. So, by taking your code and putting it inside of our service container, you get all that invocation-layer value-add right out of the box.
LiveCycle also provides a workflow engine, a process-management engine, that you can use to take what you've just deployed--maybe you've written some code that determines an interest rate. Maybe you have a proprietary mechanism internally to take certain data and calculate an interest rate. Any time you want to do that, you can actually orchestrate that with other services.
We have a tool called Workbench, and it's the IDE for LiveCycle. And besides deploying these new services, it also allows me to combine those together into a more complex process. So that process may be collect a form, get an approval, determine the interest rate. That's where your custom component would come into play. And it's just another box on the screen, basically, that you configure. So the fact that you had Java code, now it's very easy to take that and make it part of a bigger process with the orchestration features in LiveCycle.
DZone: What are some of the major enterprise Java application servers supported by LiveCycle?
Greg: We support JBoss, WebSphere, and WebLogic. If you go to our website, you can download a trial version. It's completely turnkey. Basically, you install it and it has pre-configured, pre-wired JBoss and MySQL, and the whole thing pre-deployed, so it's very easy to get into it. But we also have installation scripts so that you can talk with WebSphere and WebLogic. We have customers that deploy on all of those. We also require a back-end database. So that's where state is managed, process state and back-end data is stored. We support MySQL, SQL Server, DB2, and of course, Oracle.
DZone: Spring is pretty ubiquitous throughout the community -- are you providing any Spring?
Greg: Jeremy Grelle from SpringSource and Christophe Coenraets, a member of my team, have put together a toolkit that's around BlazeDS, Blaze Data Services, which is the open source version of LiveCycle Data Services. It's a subset of functionality but they've put together a toolkit that basically allows my Flex applications to interact with the Spring back end through this toolkit. So that already exists today. That's in a release-candidate state, and I think it's going to go live any day.
After that, I'm sure that will evolve into other things. And it's been presented several times at JavaOne, and we've had a pretty huge crowd every time, so I think it's something that people are interested in.
DZone: You presented an interesting demo at JavaOne, showing how an Adobe AIR client can interact with LiveCycle Data Services. Am I ultimately locked in to using an AIR client, or do I have some flexibility here?
Greg: You can use, actually, anything, because, remember, you can invoke a process through an EJB call. So any Java front end can actually interact with a LiveCycle service process. But there's also a SOAP interface. So if you have .NET type applications, you can interface with it. There's watched folders, which is a little more archaic, but we have a lot of people still using that today. It makes sense in a lot of applications, even email and Flash. So, no, you're absolutely not locked into it.
We have customers that have systems that interact with LiveCycle, and we have other customers that have custom front ends that people fill out for them. So it's meant to be very open-ended in that respect.
DZone: How does LiveCycle handle transactional state?
Greg: Well, the demo we gave, it was a pretty complex work flow, multiple steps. So, depending on where you are, that state is managed in a database. You could imagine, for your audience that hasn't seen the tool, it's almost like just a work-flow diagram, a series of boxes connected with lines. That's oversimplifying it, because we have a lot of features that go beyond that. But depending on what step it's at, the state of that, what step it's currently running is stored in a database. Those can be very long-running transactions. We have transaction support built right in.
DZone: When is the next major release of the Enterprise Suite planned, and what are some of the new features we can expect to see?
Greg: Well, unfortunately, all I can say is that it's later this year. And I can't really talk about the features yet, but we're going to talk about that very soon. I will tell you that it's some really cool stuff. The whole story around Rich Internet Applications, and LiveCycle as a back end, is getting even better. So that's pretty much all I can say at this point.
DZone: Thanks you for your time today, Greg.
Greg: Yeah, any time. I appreciate it.