“Flex and LCDS best practices from the trenches” @ AdobeMAX 2010

Our MAX “Flex and LCDS best practices from the trenches” presentation
has just been published as a chaptered screen cast video.
Meanwhile I also posted the slides on slideshare :

In this presentation we go beyond the Flex and LCDS pimp demo, as we share practical and pragmatic practices that come from the collective experience of the real people who design, develop, and operate the Hendrix application.
Hendrix is an Adobe business critical enterprise rich Internet application (RIA) that provides Adobe’s service and sales representatives with a single, intuitive interface for addressing customer questions.

Adobe recently published a case study on Hendrix in their showcase portal, in which you will have a good overview of the project nature and ROI.
Whereas in this presentation you will find out about Hendrix integration landscape, technical constraints and challenges, as well as Hendrix core architectural principles:

  • How we drove the development and build the Hendrix architecture for a better encapsulation and modularization. How we advocate a clear separation of concern.
  • How we focused on APIS definitions.
  • How we handled exceptions.

We also presented the wonders of CTI integration and finally our last words were be about agility:

  • Agility tips for a distributed team,
  • Agility enabling tips :
    You will see how you can easily build a complete and efficient software factory
    while streamlining your flex development

All of these points were showcased through a sample (and simple) multiscreen (web and android) demo application.
Note that this sample application will be shortly released on adobe open source portal (on sourceforge.net) as part of the Cairngorm 3 project.
I’ll keep you posted.

Cairngorm 3.0.2 release

I’m delighted to announce the Cairngorm 3.0.2 release. As you may know by now Cairngorm 3 provides a set of optional Flex utilities libraries for navigation, validation, module loading, reduction of view behavior, task processing and popup management.

The latest version we made is Cairngorm 3.0.2 is made of the following libraries :

Note that all of the above was uploaded in a Cairngorm 3 maven repository.

Please note also that :

  • The Observer, Task, Popup and Validation libraries have been used in production for several years, but Cairngorm 3 marks their first official open-source release.
  • The other libraries (versions 0.*) are less mature and can still considered beta release.
  • Several of the Cairngorm 3 libraries are implemented as extensions to the Parsley Application Framework (as you may have guessed from the above names). In order to take advantage of these libraries, you also need to use Parsley. However, other Cairngorm libraries, such as Observer, Popup, Task and Validation are independent of any third-party framework. The Cairngorm 3 Architecture can also be applied with other third-party libraries and frameworks.
  • We are also currently working at improving Cairngorm 3 wiki

You are encouraged to submit us any bug or feature request at https://bugs.adobe.com/jira/browse/cgm

Automated testing and quality control for “Enterprise” Flex applications

http://francois.le.droff.com/xwiki/bin/download/Geek/Quality-n-Test-at-ttfx/ttfx-logo.jpg

Yesterday night, I had the chance and pleasure to present with Xavier Agnetti at the Parisian Flex User Group : Les Tontons Flexeurs.

We presented our return of experience around automated testing and quality control on enterprise Flex applications.

I’ve uploaded the slides on slideshare (they are mostly in english).

Part of the FlexUnit samples we presented and demoed can be found here :

We also discussed Patterns that ease unit testing, for further investigation, have a look at :

It was a very interactive and fun session.
Thank you “Les tontons flexeurs” for inviting us !

The Spring of Flex Remoting – slides & demo

I had the chance to present at the Riveria JUG on Friday, I had one hour to cover a lot of materials.
We discussed the Adobe Flash/Flex/AIR/RIA Enterprise Solutions, I also quickly demonstrated Flash Catalyst.

I also took a few minutes to demonstrate the latest spring-flex release through a simple CRUD application named spring-flex-todo. (Beware, the client side is not production ready)

I published this demo source code within the fna V2 project, under a LGPL V3 license :

You’ll see how elegant and easy is the Spring-Flex remoting integration; here is for example how I set up a TodoItem CRUD Flex Remoting service

package com.adobe.ac.samples.service.impl;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.adobe.ac.samples.dao.TodoItemDaoJpa;

import com.adobe.ac.samples.model.TodoItem;
import com.adobe.ac.samples.service.TodoService;

@Service("todoService")
@RemotingDestination(channels = { "channel-amf" })
@Transactional

public class TodoServiceImpl extends GenericManagerImpl<TodoItem, Integer>

implements TodoService {

@Autowired
public TodoServiceImpl(TodoItemDaoJpa todoItemDao) {
super(todoItemDao);
}

}

Here are the slides associated with this demo: The Spring of Flex Remoting :

For those of you who don’t like maven and would like to give this a try, I will provide a ANT version of the build as soon as one of you sends it to me.
What I except from any build is to :

  • be managing Dependencies
  • run the XUnit-Test
  • generate documentation and quality reports

So if you have a such Java/Flex ANT build, please contribute to fna V2.

If you live near by Nice and Sophia, lucky you, be sure to check out the next Riveria JUG events.

Maven on Flex/LiveCycle ES/Adobe projects : How to

Working with maven on pure Java (and thus LiveCycle ES project) is fairly easy,
the main challenge is to build/agree/find your livecycle ES jar repositories.
Managing Flex project with maven on the opposite can be more challenging.

Doing Flex

FlexMojos

After 127 votes on jira requesting maven support cf. SDK-12730,
the flex team finally announced their pick is flexmojos (*)

At the Flex Community Feedback Forum we once again heard a strong demand for Flex integration with Maven.
We, unfortunately, do not have the resources to work on this feature, but given the high demand, we have changed this feature request’s milestone to “SDK Community Fix Candidates”

  • we believe this is a good project for the community to work on.

If you’re interested in this feature we hope you’ll contribute to the Flex-Mojos project (http://code.google.com/p/flex-mojos/) that has been working on a Maven plugin for Flex.
In particular, they are looking for help to provide better AIR support. For further discussion, please post to the forums (http://www.adobeforums.com/webx/.59b7e646).

Good for me/us, our pick(*) (for fna) is flexmojos as well, the other good news are

  • version 3 of this maven plugin is now being sponsored by sonatype (VELO the author of flexmojos has been hired by sonatype a few months ago)
  • on top of that, m2eclipse support for FB is coming . cf. http://jira.codehaus.org/browse/MNGECLIPSE-598

Other challenges:

  • provide a maven archetype for quickstarting BlazeDS projects cf. BLZ-44
    • fna provides it now , but the lcds archetype is yet to come
  • Put BlazeDS WAR and libraries in a public Maven repository cf. BLZ-71
    • same for lcds, but now at least internally the nexus tsi server is providing that
  • Apps in non-main source folders are not yet supported, that sucks for maven projects cf. FB-8757
  • this other compilers bug can be annoying as well SDK-15406,
    • the compilers tells you have Error: Invalid Embed directive in stylesheet when you are just missing a dependency or a class.

Maven, Eclipse and FlexBuilder

Maven has now failry good maven support thanks to M2Eclipse (**)

m2eclipse support for FB is not there yet cf. http://jira.codehaus.org/browse/MNGECLIPSE-598
But it’s nevertheless perfetly feasible to work with FB and a maven build.

One of them is to add a M2_REPO linked resource that will be use in the FB build classpath.

Flex and Maven, further reading

I gathered quite a few links and tutorials at

Finding your artefacts, building your repositories

The next challenge when you are building project on top of Adobe products is that, none of them are released on maven central repositories.
You have to find (and often create) your archetypes elsewhere.

Non official Maven Adobe repositories

Here is the list I came up with, so far:

Do you know any others ?

What I do is that I proxy and aggregate those repositories with
other Adobe proprietary LiveCycle ES and lcds artefacts through a Nexus Maven Repository Manager for my entreprise projects.

What about you ?

Next Challenges : groupIds, artifactIds and dependencies standardisation

What groupId for livecyle ? lcds ? blazeds ? flexunit ? cairngorm ?
What are their dependencies ?
I should not be the one to say, though I did (within the fna repositories at least for flexunit, cairngorm, blazeds and a few other open source flex libraries)

But that should be done by the product team.
Today it’s not. It’s a shame and it’s error prone.

So go and vote for those bugs :

(*) : Though, alternatives exist :like http://www.servebox.org/maven-flex-plugin/ looks also good to me, have you tried it ?
(**) : Though, alternatives like q4e looks also good to me, have you tried it ?

Flex for Java developers (at the BreizhJUG)

Yesterday I had the chance to present at the BreizhJUG (a Breton Java user group) a session named
“Flex for Java Developers”. A crowd of almost 100 happy Java developers and architects was willing to know more about Flex.

I had an an hour and half to cover :

  • a basic presentation of the flash and AIR platforms,

  • cool UX flash/flex/AIR demos

  • the latest great features of flash 10

  • and flex, and its ecosystem from a Java developer perspective (mvn framework, testing libraries, building and quality tools, blazeds, lcds)

I ended up the session presenting fna
maven archetypes. I prepared some new fna features for this talk. Those features are still under development but are already available in SNAPSHOT releases :

  • I added flexbuilder support to some of my archetypes.
    (Taking as a start the simpler of all the fna archetypes, the
    flex-library-archetype)

  • I also upgraded the archetypes with flexmojos 2.0 support and up to the latest Flex SDK

Have a look atmy other blog
to look up for details and for the presentation I uploaded on slideshare

My blazeDS XDoclet Spring Hibernate Maven Archetype

I started working on a personal project during the week-ends lately.

Here is the result I’m happy to share with the world :
A great new blazeDS Xdoclet Spring Hibernate Maven Archetype (hosted at google code):

Try it out !

  • Add my maven repository to your repositories list in your maven configuration file,
  • Run 3 maven command lines :
    • mvn archetype:create …. (to create your new flex blazeds spring hibernate multi-modules project)
    • mvn install (at the root of your newly created project : to compile and package it)
    • mvn jetty:run-exploded (at the root of java_webapp module : to run and test your web app at http://localhost:8080 )

You’ll have a sample webapp displays a CRUD “Hello world!” flex web application . This CRUD application was “inspired” from a great article made by Sébastien Arbogast
Thanks Sebastien !

The flex stuff is compiled and packaged through Flex Mojos.
Thanks Velo !

I know quite a few people are waiting for it (12 votes and 6 watching) : https://bugs.adobe.com/jira/browse/BLZ-44
Don’t hesitate to drop me a comment, or a mail.
I’ll tell you more about it in the coming days.