Nov 13 2008

Deploying Adobe AIR in a locked down enterprise environment

Disease:
Your (customers) IT organization is resistant in rolling out the Adobe AIR runtime throughout the organization because “it is not secure”. Your rich internet application on the desktop is at risk because the desktop administrators in the IT department have heard that AIR applications have access to the local file system, and more, and thus don’t want users to install those applications.

Prescription:
It is recommended to point these administrators to the Adobe AIR Administrator’s Guide which covers enterprise deployment and configuration of Adobe AIR.

We have found that not all desktop administrators are aware of the ability to ‘lock down’ the Adobe AIR runtime when deployed within their organization. They tend to think that once Adobe AIR has been deployed on the desktop, that all users can just install any application which has the potential to harm local resources. The guide covers most of these concerns (and if not, let us know!) and should help administrators to better identify and limit the risks involved, for example by only allowing trusted applications to run within their firewalls.

The guide outlines how on Windows, IT administrators can apply configuration settings using registry keys to prevent installation of all AIR applications, how they can only prevent installation of untrusted AIR applications and how to disable automatic updates of the AIR runtime updates. The Adobe AIR runtime can also be silently installed, AIR based applications can be silently installed and End User License Agreements can be centrally suppressed by IT administrators (who accept the agreement on the users behalf.

Tips to stay healthy:
Adobe’s devnet has a dedicated section discussing Adobe AIR for IT administrators. It features articles on centrally distributing Adobe AIR in the enterprise and the Adobe AIR Security Whitepaper alongside the previously mentioned Adobe AIR Administrators Guide.

No responses yet

Oct 23 2008

Adobe on Business Process Modelling Notation (BPMN)

Recently I was asked by a large system integrator about Adobe’s standpoint on the Business Process Modelling Notation (BMPN) specification.

Not many people know that Adobe participates in quite some industry standards and supports their maturity/evolution such as BPMN, BPEL, BPDM and XPDL and that we are voting members of standard bodies such as OMG, OASIS and WFMC. Adobe is represented in all these standards bodies and actively participates in reviewing and authoring of these standards. We take a lot of that knowledge back into the decisions we make when developing our enterprise products, especially Adobe’s LiveCycle Enterprise Suite.

BPMN (Business Process Modelling Notation) is a specification for a couple of things:

  • A graphical notation. E.g. How different activities are represented in a process diagram.
  • Semantics of the graphical notation. E.g. What does it mean when you connect activities with a line.

From wikipedia:

The primary goal of BPMN is to provide a standard notation that is readily understandable by all business stakeholders. These business stakeholders include the business analysts who create and refine the processes, the technical developers responsible for implementing the processes, and the business managers who monitor and manage the processes. Consequently BPMN is intended to serve as common language to bridge the communication gap that frequently occurs between business process design and implementation.

Using the Process perspective in LiveCycle Workbench, one can visually create process maps that define and control your automated business processes. Since Workbench implements the main constructs for the graphical notation and the semantics of that notation as specified by BPMN, business analysts can create process diagrams using swimlanes, activities, events and associations following common modeling methodologies (we still have a gap to cover when it comes to modeling of Gateways).

LiveCycle Process Designer

To summarize: if you have been trained in BPMN, you will find it easy to model a process using LiveCycle Workbench.

If you want to read more on Adobe’s comments on BPEL and general standards, you should read this article on de LiveCycle DevNet:

ps: One should know that the current BPMN spec (v1.1) does not specify how a process diagram should be persisted by a modeling tool. There is no XML schema for example. However, there is another specification – XDPL – which does provide this and the BPMN v2 specification currently in review also has a defined schema for persistence. Since standards have not been defined or widely accepted, LiveCycle Workbench currently persist that process definition using custom XML for which Adobe has publish the XML Schema (which after installation can be found under the LiveCycle SDK/schema directory).

One response so far

Oct 22 2008

First FlexCamp for the Netherlands coming up !

Published by Christoph Rooms under Adobe AIR, Adobe Flex

Flexcamp is a free community event where you can share knowledge with other Flex developers. There will be lots of sessions : the early sessions will be for starters, and later on it will become more and more advanced. The idea is that you can jump in whenever you feel like …  There will be also a room for “unconference” style sessions,  these sessions allow you to discuss together with a number of community members on a specific topic of your choice. Get more info on http://www.flexcamp.nl. Also James Ward and Christophe Coenraets will also be around. Flexcamp is organized by the Dutch Flex User Group. Get registered today … seats are limited !

No responses yet

Oct 22 2008

LiveCycle Data Services 2.6 Capacity Planning Guide Now Available

Finally the Capacity Planning Guide for LiveCycle Data Services 2.6 has been published on the Adobe site. A document like this was asked for a few times during a DrLiveCycle consult, so it seems very welcomed by Flex developers leveraging Adobe LCDS.

As Damon Cooper, Director of Engineering, wrote on his website:

With LiveCycle Data Services 2.6, you can create Adobe Flex applications that can deliver thousands of messages per second to thousands of end users simultaneously:

This document presents the results of software benchmark tests performed by Adobe engineers on my LiveCycle Data Services team and show how LiveCycle Data Services 2.6 can scale linearly and perform under load using various messaging scenarios that represent real-world situations. It provides a starting point for those who need to plan a hardware and software infrastructure that scales in a linear fashion to meet peak period demand.

You can download the Capacity Planning Guide for LiveCycle Data Services 2.6 from www.adobe.com/go/lcds26_cap_planning_guide.

No responses yet

Oct 21 2008

Answering LiveCycle Data Services messaging questions

This month’s DrLiveCycle consult was about leveraging the message feature of LiveCycle Data Services.

Disease:
You are planning the architecture of your LCDS Messaging based application and you asked yourself the following questions:

  • Is the order in which the messages are delivered to the clients always guaranteed, and does that depend on which channel you use?
  • If you have many concurrent consumers/producers connected to your messaging destination, but the consumers/producers don’t generate a lot of messages, would that have more impact on the processor or the memory

Prescription:
DrLiveCycle checked back with the engineering specialists (Jeff Vroom and Mete Atamel helped the doctor with the right diagnose) and learned that the order of messages from server to client are currently only guaranteed when using the RTMP channel. A RTMP channel uses only a single TCP connection and therefore the message order is always guaranteed. The AMF/HTTP channels, on the other hand, may issue concurrent HTTP requests over multiple TCP connections and even though each TCP connection guarantees its message ordering, there’s no message order guaranteed across multiple TCP connections. So, currently the order is only guaranteed with RTMP channels.

So how about memory and CPU usage of low-active consumers? The answer is that an inactive consumer would just take up memory (there is the connection memory, session memory etc.). The only CPU load that an idle messaging client would take up is any load caused by polling, or the heart-beat style functionality that was put into the HTTP streaming channel.

Tips to stay healthy:
The polling overhead is fairly easy to compute based on your settings – how long does the request wait on both the client and the server. The streaming overhead is pretty low… periodically the server has to send some bytes back on the connection to keep it alive. The RTMP channels – when not using the RTMPT HTTP polling mode – don’t have any significant overhead.

One response so far

Oct 13 2008

Extending Adobe Document Management with even more functionality

If you have installed and deployed Adobe LiveCycle Content Services ES for Document Management and/or Archiving purposes you have already seen the out-of-the-box features that are included in the product. Now, if you have written your own extensions and want to package these, the easiest way to do this is by creating a so called AMP file. This is a format that can be imported in another instance of Adobe LiveCycle Content Services ES.

Now without going into details on how to create these AMP files, you should know that there are also AMP files available in the community that you might want to evaluate. If you have installed the full LiveCycle ES Suite you will also get, as part of the SDK, a couple of sample packages such as records management, blog integration (including WordPress), and others.

Now the documentation is not very clear on how to deploy the included samples (or other available AMP files) to your deployed Content Services application. Below you will find a couple of steps on how to import AMP files.

1. Locate the C:\Adobe\LiveCycle8.2\LiveCycle_ES_SDK\misc directory

2. In there you will find a couple of AMP files and a utility called Module Management Tool. (adobe-contentservices-mmt.jar)

3. Locate the C:\Adobe\LiveCycle8.2\jboss\server\all\deploy\adobe-contentservices.ear

4. Retrieve the contentservices.war file from the ear file above

5. Open a command line tool and goto the directory C:\Adobe\LiveCycle8.2\LiveCycle_ES_SDK\misc

6. Run: java -jar adobe-contentservices-mmt.jar install yourfilename.amp contentservices.war (Before doing this is is recommended to make a backup of the ear file!)

7. After this, copy back the contentservices.war file into the adobe-contentservices.ear file and copy it back to the LiveCycle ES Deployment directory (C:\Adobe\LiveCycle8.2\jboss\server\all\deploy)

7a. To validate wether the AMP is included in the war file, you can run the following command for a list of extensions: “java -jar adobe-contentservices-mmt.jar list contentservices.war”

8. Restart your jboss services to be 100% sure that you have the extensions available

If you find any interesting AMP files in the community, please share them with us. Have fun in trying the above.

One response so far

Oct 06 2008

Sometimes the LiveCycle Turnkey installation wizard does not proceed

Disease:
You have downloaded and extracted the LiveCycle ES Turnkey installer to your desktop. When running the installer it gets stuck at the ‘Type of Installation’ dialog screen, so that you can’t continue installing the software.

Prescription:
Typically why a turnkey install won’t proceed from this point is due to a “Directory too deep for turnkey installation” error.  What this means is that the directory you are running the installer from (say, a network location such as \\SomeServer01\Software\Installations\, or a folder somewhere deep in My Documents and Settings – like your desktop folder) is too distant from the location you are trying to install to and LiveCycle and the path between them is too long for LiveCycle to use. So the solution is to choose for an install directory in e.g. your C:/ drive.

Tip to stay healthy:
LiveCycle can be installed ‘manually’ which allows you to deeply integrate it into applications (java application servers, databases etc) that have already been deployed in your environment. However, it means that there is a lot of configuration that you have to do yourself.

As a developer that is often not the first thing you want to have to bother about, especially not when you start learning what LiveCycle can do for you.  Or, you do not even have all the required software installed at all. In that case the Turnkey install option is a great trouble saver.

Adobe LiveCycle ES Updater 1 comes with Turnkey installers for JBoss, Websphere as well as Weblogic for both Windows and UNIX. As with most of the Adobe software there are trials available online, at www.adobe.com/go/lces_trial.

No responses yet

Sep 29 2008

Load test Flex and LiveCycle Data Services enabled applications

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?

LiveCycle Data Services Stress Testing Framework admin UI screenshot

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.

4 responses so far

Sep 25 2008

Get the filename of a document that is the input for a LiveCycle process

Published by Waldo Smeets under Dr LiveCycle Question

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.

No responses yet

Sep 24 2008

How to ’switch off’ mandatory fields when the subform they belong to becomes invisible

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. 

 

 

No responses yet

« Prev - Next »