Posts in Category "Uncategorized"

Amsterdam XTech

I bet you think three X’s following the name of the city on their heraldic device and everything down to the drains are something other than symbolic of a cross upon which an apostle by the name of Andrew was crucified. Why three? According to Queen Wilhelmina who decreed them, they represent three moral virtues: Compassion, Resolution, and Heroism. You thought they meant something else?

X – Compassion: Back in Amsterdam showing our support for another XTech. I guess they felt sorry for me having to travel all the way to Amsterdam (ha!) so I got added at the last minute to the AJAX day tomorrow – spinning up a new talk on the interaction models and UI practices that make for good RIA, and digging into the Services Oriented Client with AJAX and Adobe Flex.

X – Resolution: High resolution. It’s all about handling events and states. The fun is in the UI and the coding – you have all that expression baked in your IDE now, don’t you? My resolution: try harder if I find it needs more than one button that just says, “Yes, Yes, Yes.”

X – Heroism: Have you seen Spry yet? Minimum J AJAX – sweet. Maybe I’ll show it tomorrow. Also in Amsterdam this week, besides all the normal goings-on, looks like the Barcamp Amsterdam II is cooking – so we are all looking forward to the sessions and lessons this week.

Turns out I’m missing the sessions, lessons and all the Guru:Logic at JavaOne . Like I said, it’s all about the events and getting into the States.



Very old coder…

Have you noticed the high degrees of appropriated terminology that technologies and developers continue to borrow from the music industry? Seeing a conference called mix that had nothing to do with audio technology or bartending was the spark for me. I am getting on the “band” wagon.

Some examples:

Mash-ups: Used to define when a DJ takes tracks from the seventies or eighties, roughs them up a bit, gives the bassline a little more substance and suddenly you have Pat Benatar humming along to a Digweed track. Wait, now it also means slamming technologies together (not too many from the seventies and eighties) with no bassline and producing an app where none existed before.

Mixing: Used to mean when a sound engineer (like Daniel Lanois) puts his hands on the sliders and ensures that the background vocals are not popping out in front of the svelte tones of some surfer dude. Also means data from many sources all rendered in the same UI. With Flex you can build apps that let users work the UI with sliders, which could make users feel like they are in the booth.

There are more examples of this, but rather than “harp” on these, I thought it would be fun to keep the spirit of things moving along and generate some new ones. After all, who can argue the usefulness of digital rights management for documents and files, and that was clearly driven by the music and video industry need for piracy reduction.

B-Side: Beta version developer tools being used in production applications.

Classics: 4GL

Click track: The passing of billable time.

Dub: Changing the UI without changing the app logic.

Fade in: What developers do with new tools and languages.

Fade out: What developers do during sales presentations.

Detune: Removing clustering, connection pooling, etc to point out performance bottlenecks in applications.

Karaoke: Blogging about what someone else said and quoting them verbatim and freely while doing it.

Key: Seemingly necessary adjective before the word “differentiator”

Re-mix: Changing the perception of emerging technology to match what your boss says you need.

Payola: Free hockey tickets and baseball caps given to developers in exchange for their sworn loyalty, and hopefully a customer reference story.

Top 10: Bug list.

Vocoder: Very old coder.

Voiceover: What you have to do to make sense of marketecture regardless of the audience.

Got more?

Adobe proves more Flexible

The Flex 2 Beta is live and you can check it out at Adobe Labs. This is the second significant new product we have revealed on Labs since the acquisition of Macromedia late last year.

Flex 2 is a big change. A change for Adobe. A change for Flex. A change in the licensing. A change in the amount of associated collateral, adjuncts and how open we are going to be with our frameworks, SDKs and encouraging different approaches to developing on our platform.

For our many LiveCycle customers, watch for the integration with our LiveCycle products, namely LiveCycle Forms and LiveCycle Workflow, with Flex applications. This is not integration in the typical software company sense of the word – we have just been using “above the API” development to get things working together, and so have a few of our customers and partners. We have already built some powerful examples of how this can benefit the Web 2.0 user experience, seen in the form of integration between Flex applications and PDF forms, ColdFusion and PDF Forms using our XPAAJ download (XML PDF Access APIs for Java) and using Flex to build a portal-type application to manage all of a user’s PDF forms. We plan to get this integration posted as bits on Labs over the next little while and I will keep you posted.

There has already been a lot of excitement around the beta for Flex 2, so much so that there have been some misconceptions and information put out there that is not accurate. I would like to clear some of this up. You may have read on some of the news sites that FlexBuilder was going to cost $1,000 per developer. It is going to be under $1,000. You may have read that there was going to be a developer version of Flex Enterprise Services – which you might expect since many of the other products like ColdFusion, Flash, Dreamweaver and even LiveCycle products have developer versions. In fact, we are going to be giving away for free a version that will allow you to have up to 20 users connected to a deployed application. Yes, you can use this for development, and that is the intent, but at this point it is fair to speculate that applications will be deployed on Flex Enterprise Services using this version.

We are also putting the final touches on the Flex2 SDK and this will be available on the Labs site in the next little while. While the SDK in its current iteration is for Windows only, my team and many others are working to get an “official” Mac version released as well.

A lot of this may come as no surprise to developers that had been working Macromedia, but, I think this marks a new dedication to how Adobe works with developers and how we bring products out into the market in cooperation with developers, gaining more and more feedback, input, and community support for our launches.

IMHO, Web 2.0 just went beta, and now that we are here and launching, I can’t imagine ever doing it any differently. Now, get down to the lab and improve your user’s experience.

Adobe + Macromedia = (G) All of the above

1) Equals a lot of hard work that we have been doing to align our various product lines and the benefits of that are already apparent in the new bundles you can find on the Adobe store. I can get Dreamweaver with Photoshop? Sign me up!

2) Equals some best kept secrets that our team and many other teams have been doing to build some great sample applications – Macromedia Flex with Adobe LiveCycle, Macromedia ColdFusion with Adobe LiveCycle, Macromedia Flash with Adobe Acrobat and more… stay tuned to our developer centers for more on this.

3) Equals a new world of opportunity for developers interested in taking advantage of the largest installed interactive, multimedia, customizable, extensible platform for client applications. We have seen some great examples of this already and we are asking you to tell us what you are working on this area so we can better understand the new world of possiblity. Got something cool to share? Comment on this blog or send an email to

4) Equals time to roll up our sleeves and start the real integration work, not the integration of two companies, but the integration of two complete worlds of software that are already well established with business users, developers and designers. We are already working on the next version of LiveCycle here at Adobe and we are very excited about the opportunity this will present to us.

5) Equals a huge sigh of relief on everyone’s part. Us techie types don’t really spend a lot of time thinking about what it takes to really make a deal like this happen. Instead we tend to get right down in the weeds as soon as possible and start trying to reinvent the wheel (IMHO, square is underrated even though its a bumpy path to take). When it comes to mergers or acquisitions, we want to acquire the code instead of our rival, merge the data instead of our domains, optimize the runtime instead of the resources, and we really only need lawyers to be part of the focus group on the new UI.

6) Equals Integration above the API – encouraged and supported! You still bend the rules, you still break the apps, you still find the hidden features (yes, we have no buggy bananas), and you still have to make it do what you want it to. But, now we can actually help. In fact, this morning the first order of business was supporting an early example of very tight integration between Flash and Acrobat by some very talented developers. (more to come on this…)

7) An opportunity for a multiple choice question. Adobe+Macromedia = :

a) A sign of life for Web 2.0.
b) A truly everywhere client platform.
c) A real composite application development suite.
d) The beginning of the end of deployment-driven architectures.
e) One of the largest and fastest growing developer communities around.
f) A new face for Java.
f) A really cool bunch of awesome geekiness with all the requisite blinky lights and shiny knobs.

If you answered a resounding “Gee, yes, yes, yes” to all of the above, then you’d fit right in around here today.

Ed. note: Yes, he drank the koolaid – although it’s technically not his fault, Mike Potter actually drank some first and then slipped it into Ben’s coffee while he was busy talking up the person rumored to be his new boss. These things happen.

SOA, BPM and Documents

Matching the types and tiers of applications between SOA, BPM and Document Services might make me guilty of “marketecture” – the clever but generally obfuscating, vague and confusing PPT version of a real application architecture – but I have found the following to provide the basis for a very useful tool employed in explaining how to build a better mousetrap with LiveCycle and PDF-centric applications.

According to the AMR Research Market Analytix Report “Service-Oriented Architecture: Survey Findings on Deployment and Plans for the Future,” the dominant reason (48%) for people to embrace SOA technologies is the ability to configure business processes more quickly and flexibly. A growing number of developers are moving toward SOAs (intentionally in most cases) in order to meet challenges of both intra-application behaviors and the need for truly functional interactivity. This approach can automate the result of processes in a faster, securer, and more cost-effective way. While SOA is often used in many differing domains with different semantics, I like to use the definition of SOA as an architectural paradigm, or simply stated, a model for architecture.

Reinventing people’s processes by integrating documents or forms into SOAs involves some discussion on three technical topics: SOAs, BPM workflows, and document services. If we use 3 tiers to describe the SOA overlay on the core applications and we assume that each tier has three elements, then each element in a tier interacts with its corresponding counterpart in another tier. Now I wave the magic technology marketing wand and the three tiers apply to other technology trends like BPM, workflows, and document services. Then I spin the three ideas to align around the necessary application components and “abracadabra, ala-shazam” I have provided a method to describe an open architecture and standards-based approach to developing applications that utilize documents as the interface and enable IT developers to add or eliminate services to meet changing technical requirements or business needs.

The SOA afficionado builds applications as services. SOA can be defined using three different views or elements that are required:

1) Applications: The developer breaks down underlying artifacts and improves the aspect orientation of discreet units of application or business logic.

2) External interfaces: This developer exposes both configuration interfaces and activity interfaces.

3) Transport: The developer enables SOA by providing transports to the collection of services within composite applications.

The BPM or workflow architecture gets applications oriented around workflows so that services can be integrated into BPM applications. Three types of workflows can be persisted from your SOA up to the document layer:

1) Intra-application workflows: Developers combine the services interfaces of different applications, essentially exposing and serializing APIs to create new functionality or new transaction types that persist across several applications or infrastructure layers.

2) External workflows: Developers can externalize business processes and workflows to interface to a set of pre-existing applications. What is needed is a way to represent expose services or represent transactions and data to the various business stakeholders.

3) Human-centric workflows: Developers can provide interfaces for people to access the various functions. This access can be granted based on the roles of the different actors that need to request, submit, review, or approve the things that cannot be automated through technology alone. Even if these transactions can be automated, they often still require some type of intervention in order to provide approval or input..

Documents services can be used to link security services to a specific document, create and bind policies to documents, and expose enterprise data as documents with read and write permissions for authenticated users. The following three elements comprise the baseline of document services:

1) Document services: Developers can deploy document services on the same layer as other services and therefore can be easily combined with other applications that require access to the API. Not only can we process requests using these services, but we can also impact the way in which applications process information contained in the specific document functions. Further, these transactions can now be handled as secure communications inside and outside a firewall.

2) Document templates: Developers can dynamically assemble intelligent documents at runtime using data and logic constraints in the XML or code. Intelligent documents are actually secure, dynamic digital containers for delivering and executing document services. The documents integrate XML content and high-fidelity presentation in PDF with powerful business logic that drives form or document design behavior. Built-in capabilities include calculations, routing instructions, error checking, digital signatures, and data validation. Data in XML can be imported and extracted automatically.

3) Document clients: Users interact with the documents through universal clients. Examples of universal clients include standard web browsers or free software to enable people to view and engage with interactive, quality digital documents anywhere at any time. Adopting accepted standards like web interfaces and PDF is critical because it offers users uninterrupted access to materials now and in the future.

Given the similiarity and the dependencies in each of the three tiers, a simplistic comparison can be applied to show how the approach we are taking to manifest documents as the end-user interface for large applications is therefore an instantiation of an SOA.

1) There are both application logic and a message bus required to instantiate application interactions. In this layer we can consider the folowing:
Application = Intra-application workflow = Document services

2) There needs to be an application interface or some technology provision for external interaction that is schema-driven. Given that:
Application interface = External workflows = Dynamic templates

3) A useful container generally requires a client that provides the usability to these interfaces, and unlocks the workflows, data and interaction required to carry out the application functions
Transport = Human-centric workflow = Interactive forms and documents

In each of the examples above, the dependencies roll back into the previous. For example, an interactive form assumes the existence of and represents human-centric workflow and has a dependency on a mechanism for transport. Simply put, email me the form and I will submit the data from here. It’s not about redundant technology, it’s more about abundant technology and, IMHO, this is a logical extension of where you might already going. If you clicked to this blog from the Macromedia MXNA, then this blog is a document that went through a workflow and exists in a services oriented architecture.

No actual developers, code or architectures were used or harmed in the creation of this entry, yet. The almost entirely fictional representations herein are meant to provoke thought, not debate, and any resemblance to marketing or technical literature is purely coincidental.

SOA – a Spock-Oriented Analogy

Next week I am giving a talk at the XML Conference and Exposition 2005, which is the one show that is the source for everything XML and just XML, running November 14-18 at the Atlanta Hilton in Atlanta, Georgia. You can find out more at

We also attended the sister conference XTech in Amsterdam earlier this year, and that was a great gathering of gurus with groovy gadgets grinding on the topics driving SOA.

This particular 3-hour cruise entitled “Web Services and Architecture: The Next Generation” takes place on Monday morning (stardate 11.14) as part of the pre-show tutorials. Forgive the trekkie title, but it is a bit of an episodic where the actors change daily, and we are constantly pouring over the trade rags to find out the latest on their relationships. We also toyed with sub-titles like “Back to the Enterprise” and “Thoughts from the Bridge”, but in the end we called it like it is. The next generation, which is to say the one right before the next one after that.

“We are going to run out of ‘unobtainium’ any minute now…I’m giving her all she’s got, captain.”

Like many technologists, I confess to being a little embarassed when I think that I probably spend more time talking about SOA than I do actually executing on it. I have been speaking on Web services standards and SOA for over five years and I keep promising myself that this is the year when I will ask the question, “Who out there is doing SOA now?” and everyone will put up their hand. I’m counting on you and I can honestly say that we get to put our collective hand up with the work we are doing on the LiveCycle platform at Adobe.

If we go back about five years I remember reading in a published study that more people were planning on doing web services than were actually aware of what they were. In other words, the awareness stat was lower than the adoption stat. Strange science indeed, but it struck me then and it does again, that the reason this was the case was that it was so complicated (yes, even then), was that in order to truly understand it you actually had to plan for a launch.

IMHO, I am not sure my talk at XML 2005 will remove the necessary cloaking devices but I do know that it is going to be a full three hours or more of up-to-the-minute, feet-first diving into the standards forces that are at play. And, I do know that I am counting on the fact that the discussions following the talk and during the course of the four day show will take me to parts of the galaxy I didn’t know existed.

Trust that I’ll update you as the voyage continues…

Use Java tools to test XFA forms and applications

Today we launched testing tools and samples that run in both JUnit and Rational Robot for forms and applications that are based on Adobe LiveCycle software.

The two test cases provide a framework for automated testing of XFA-based PDF files developed in Adobe® LiveCycle™ software. They allow you to programmatically get and set various fields in an XFA-based PDF form, click buttons, and execute various JavaScripts embedded inside a PDF document.

With these functionalities, you can build more complicated test cases. Note that to run these test cases you must have Adobe® Acrobat® Professional installed on your computer.

This download is available as part of the enterprise developer program and this is limited to members only. If you would like access to these samples and are not a member, please let me know.

Developer pre-release for our new forms designer

We are currently hosting a pre-release program for our newest version of Adobe LiveCycle Designer. If you are interested in being a part of this, send your contact information to and request access to the Designer PreRelease.

For our thousands of users that are out there, this is a pretty exciting release and definitely has a lot of the features you have been requesting. Here is a list of what’s new in LiveCycle Designer 7.1:
– Tables (Yay! You could do this before with script or design objects but the new wizard is super slick)
– Language-Specific Features for Arabic, Hebrew, Thai, and Vietnamese
– New Paper Forms Barcode object
– Dynamic form object properties
– Descriptions in the Hierarchy and Data View palettes
– Controlling subform breaks based on data

LiveCycle Designer now lets you create simple, complex, and nested tables. You can quickly create a static or dynamic table using the Table Assistant. Static tables have a fixed number of columns and rows while dynamic tables have a fixed number of columns but the number of rows in the table will change depending on how much information is in the data source.

Language-Specific Features for Arabic, Hebrew, Thai, and Vietnamese
LiveCycle Designer now supports Arabic, Hebrew, Thai, and Vietnamese. The characters in Arabic, Hebrew, Thai, and Vietnamese are context-sensitive, that is, different images are used for the same character depending on its position within a word and some characters are made up of a combination of several characters. LiveCycle Designer now supports right-to-left or bidirectional text which occurs when texts of different direction orientation appear together.

New Paper Forms Barcode object
With LiveCycle Designer, you can add two-dimensional (2D) barcodes to interactive PDF forms using the Paper Forms Barcode object. You can then publish the barcoded forms to a website or distribute them by email or CD. When a user fills a barcoded form by using Adobe Reader, Acrobat Professional, or Acrobat Standard, the barcode is updated automatically to encode the user-supplied form data. The user can submit the form electronically or print it to paper and submit. Using LiveCycle Barcoded Forms you can later extract the user-supplied data as part of an automated workflow, routing the data among approval processes and business systems. When integrated with LiveCycleWorkflow, a single unified forms process can easily support different paper form submissions, each with their own specific workflow.

Dynamic form object properties
LiveCycle Designer now lets you set up dynamic properties for form object properties. This means that you can assign values from a data source to form object properties that LiveCycle Designer updates at run time. For example, the items in a drop-down list can be populated with a list of countries that are stored in a data source.
Dynamic properties allow you to modify form object properties outside of the form design and rely on a data source. This can be useful in deployment and maintenance scenarios. In addition, the same data source can supply data to different form designs. For example, a long list of countries can be stored in one data file and used in many forms. You can use dynamic properties to implement functionality formerly possible only with scripting.

Descriptions in the Hierarchy and Data View palettes
You can now view captions or descriptions of the objects in the Hierarchy and Data View palettes. These provide more information about the objects when you are building a form.

Controlling subform breaks based on data

You can now use conditional breaks to manually specify when and how to manage subform breaks. Conditional breaks allow you to verify data for a field within a repeating subform against previous instances of that field. The repeating subform can then be broken up according to the change in the data supplied to the field, and if required, automatically generate a new page.

Compatibility with version 6
You can use the Compatibility tab in the Form Properties dialog box to update forms that were created in LiveCycle Designer version 6 to version 7. If the older form will be viewed primarily with Acrobat 7.0 or Adobe Reader 7.0 or later, use the Compatibility tab.

Send us an email and we will get you access to the software right away. Use the forums or mailing list there to give us feedback on the new version.

Can a web service start a workflow?

Developers have been looking for additional guidance and support on initiating Adobe LiveCycle Workflow processes from a web service. They are interested in understanding how kicking off a workflow is accomplished using web services or ultimately how processes are initiated using third-party apps.

Chris Trubiani, who is one of our developer support engineers for the Adobe Enterprise Developer Program walked me through this, and I think it is worth sharing.

To initiate a workflow from a third party app, you would typically use a web service call. You wouldn’t use the LiveCycle WorkFlow API for that as the API needs to be used from within the context of the Workflow engine and your app would not be running in that context.

It is not possible to provide meaningful sample code for something like this since the code is ideally generated by some third party tool, and is unique since it is based on your wsdl. But I’m going to tackle the points involved and hopefully that will get you off to a good start with understanding the procedure.

The first thing is to create a process and deploy a workflow in it. When you create the workflow make sure to check the “Web Service Access” box so that the workflow will be available as a web service.

Once the workflow is deployed the wsdl will be available at the URL: http://ServerName:Port/services/ProcessName?wsdl

– ServerName is the name of the server that LCWF is hosted on.
– Port is the port that JBoss is listening to (usually 8080).
– ProcessName is the name of the process you created and deployed the workflow in.

In your code you would create some proxy code that allows you to access the web service. Your IDE of choice should have a tool that will generate this automatically for you when you pass it the URL to the wsdl.

For example, in WebSphere if you create a Web Service Client and give it the URL to the WSDL, it will automatically generate the necessary proxy code. Using this you can access the web service by calling the methods in the proxy code.

There are four methods exposed by the web service:

– invoke()
– synchronousInvoke()
– getResult(long)
– getStatus(long)

These are fairly self-explanatory names but you can find a description of what these methods do in the javadocs that come with the Workflow SDK in the com.adobe.workflow.manager.ProcessManager class.

There are lots of ways to kick off a workflow with human interaction, like the actual submission of a form, but this is very useful when doing integration using a workflow that is outside of the core application.

Props for XML, Data and the Document

In this year’s Intelligent Enterprise Readers’ Choice Awards, Adobe was named winner in the categories of Best XML Authoring, Managing and Publishing Application, and Best Data and Document Capture System. Every year, Intelligent Enterprise polls its readers to gauge the best in a variety of technology categories. While specific products were not called out in the final categories, it is great to see us getting a nod for our platform and tools. I have to say that this award really belongs to our product and engineering teams.