Sep
29
2008
Disease:
You have built an amazing cool and data intense Rich Internet Application with Adobe Flex and expect many users to work with your application. Suddenly you get concerned; how will the server behave when hundreds or even thousands of users visit your site?
Prescription:
Some more background on this problem first; You probably know that a server in production will behave differently when interacting with a RIA than compared to serving traditional HTML apps that you have been building before. This is mainly because UIs are not generated on the server any more. Though on the other side, there is probably increased data exchange between the client and server and most of all…. ideally you use the ActionScript Message Format (AMF) and Data Management cause it is easier to develop or faster on the client. But how does it impact the server, can it handle the load and do traditional load testing tools still work?

Adobe currently hosts the LiveCycle Data Services Stress Testing Framework on Adobe Labs which addresses lots of these questions. The framework helps developers that use LiveCycle Data Services ES 2.6 to load test the server-side implementation of their LCDS applications. The page is stuffed with information on how to use the Framework so definitely spend some time going through all the details. The Data Services Stress Testing Framework is currently in beta form, but available for testing and evaluation. You can download and test the framework and we obviously hope you will provide us your feedback through the Adobe Labs page.
Tips to stay healthy:
The stress / load testing problem itself has been around for long, and many software vendors have created solutions to help web developers test their servers for large rollouts. However, most of these solutions are still based on the traditional HTML web metaphor and do not work well with AMF. Also, the Data Services Stress Testing Framework currently does not support BlazeDS or other AMF server implementations. Adobe is currently working with a number of testing tool vendors to implement all of the data transport protocols available in Flash. It seems that Borland’s SilkPerformer is one of the first to have AMF3 support. I have not worked with it myself and would love your feedback. Obviously if you know of other tools that are useful for load testing your Flex applications, feel free to leave a comment!
ps: I heard internally that we are working on a new Capacity Planning Guide for LiveCycle Data Services ES 2.6 whitepaper, but it has not yet been finalized. I assume it will be posted in the coming weeks on the LiveCycle Development Center so stay tuned.
UPDATE: You can download the Capacity Planning Guide for LiveCycle Data Services 2.6 from www.adobe.com/go/lcds26_cap_planning_guide.
Sep
25
2008
Disease:
Your process takes a Document type as input parameter and you need to know its file name somewhere in your process.
Prescription:
In LiveCycle you can use XPath to write expressions to get access to document attributes and write those values into a process variable. The expression to get the filename would be:
getDocAttribute(/process_data/@doc_input, “basename”)
Tips to stay healthy:
The getDocAttribute function is documented on LiveDocs but it does not list all the string names for document attributes that you can retrieve (read on….). There is also a page on Document attributes for attachments and notes.
A really cool way to find out what attributes are available to you, is to use a new feature of LiveCycle Workbench named Record and Playback. This way you just Record a running process which takes a document as input parameter. Then during playback you can introspect that document variable and then Workbench will list all attribute variables available! When I did this in my processes I noticed that the available attributes depends on the document you submit (and it might explain why they are not documented) to just name a few; ‘Length’, ‘ContentType’, ‘Wsfilename’, ‘Basename’ and ‘file’.
[updated on 25th] Added the tip to use Workbench Record and Reply to find document attributes.
Sep
24
2008
Disease:
Putting objects ‘visible/invisble’ is a great feature to guide end-users to fill-out forms in an easy way. However, when putting a subform, which contains mandatory fields to invisible, the mandatory fields still remain mandatory. This can off course be solved by putting all mandatory fields to ‘non-mandatory’ through scripting but can become a development nightmare.
Prescription:
The idea is to have a general procedure which would specify for each subform which fields are mandatory. We will define an array inside the form which will contain a list of mandatory fields for each subform. Secondly, a procedure is built which will loop through this array for the given subform and will put the fields to mandatory/non-mandatory depending on the fact whether the subform has been set to visible/invisble.
A sample form can be found here.
Tips to stay healthy:
When analyzing your forms take in consideration how objects will be grouped and which fields are mandatory within a group. This makes it afterwards easy to introduce these fields/subforms in the array.
Sep
07
2008
A whole different kind of topic for this blog, but on Friday September 5th the Adobe Benelux Livecycle Team and 15 customers took a day to watch the training for the Formula 1 in Spa/Francorchamps. A couple of things I took back:
- These cars make noise!
- The Circuit is beautifully situated in the Belgian Alps
- It was really exciting to watch
- I have never seen Fries & Mayonaise for 5 Euro per/portion
One of our guests, Ed Steenhoek of Accenture, took some great pictures, and he made a selection of 40 (out of 600) available on his website. Now that’s a different quality compared to the ones on my iPhone as shown below.

Many thanks to everybody who was able to join us. Enjoy the pictures.