• › Connexion
  • Blog RIA.do.be
  • Blog Web2Entreprise
Section separator

Catégories

  • Annonces
  • Évènements
  • Concepts et Usages
  • Général
  • Notes Techniques
  • Références
Adobe EMEA Silver Solution Partner Section separator

Abonnement

  • RSS Articles Articles (RSS)
  • RSS Articles Commentaires (RSS)
  • RSS mail Articles (Email)
  • Populaires
  • Récents
  • Commentaires
  • Premiers Retours sur l’Adobe MAX 2009 (vu 12 810 fois)
  • Comment forcer les styles des composants Flex/AS3 d’une librairie SWC réutilisable (vu 5 224 fois)
  • Utiliser le framework Cairngorm pour Flex 2 (1/4) (vu 4 986 fois)
  • Architecture MVC: Cairngorm ou PureMVC ? (vu 2 970 fois)
  • Le problème du ModelLocator Cairngorm (vu 2 821 fois)
Articles récents
  • Développeur, Communicant, Designer ou Ergonome ? Changez pour Kap IT
  • Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?
  • Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • Premiers Retours sur l’Adobe MAX 2009
  • Mais Où est Kap IT ?
Commentaires récents
  • Fadi Mansour dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • nico dans Détection de l’Événement « Coller » avec Flex Builder 3 et Flash Player 9
  • Florian dans Application AIR : Comment Sauvegarder/Charger un Document et lui Associer une Extension ?
  • Fadi Mansour dans Comment intégrer une application Flex dans une application Flash ou AS3
  • yoann dans Comment intégrer une application Flex dans une application Flash ou AS3

Auteurs

  • Alexis Kartmann (11)
  • Benoit Kogut-Kubiak (2)
  • Christoher Bograt (1)
  • Cyril Daloz (7)
  • Daniel Pesic (5)
  • Fadi Mansour (3)
  • Florian Fesseler (1)
  • Guillaume Mignard (2)
  • Jean de Laulanié (2)
  • Julien Revel (19)
  • Mahmoud Ramadan (1)
  • Matthieu Jobert (1)
  • Stéphane Guyot (1)
  • Stéphane Koëth (2)
  • Yann Graufogel (2)
Section separator

Tags

actionscript Cairngorm MVC Corporate LCDS skin kapinspect compilation fds AS3 AMF livecycle builder Kap IT Flex PureMVC AIR Adobe MAX RTMP Web 2.0 BlazeDS JVM RIA Framework Kap Lab
Section separator

Archives

  • décembre 2009 (2)
  • novembre 2009 (1)
  • octobre 2009 (3)
  • septembre 2009 (1)
  • août 2009 (1)
  • avril 2009 (2)
  • février 2009 (2)
  • janvier 2009 (4)
  • décembre 2008 (4)
  • novembre 2008 (2)
  • octobre 2008 (2)
  • septembre 2008 (2)
  • août 2008 (1)
  • juin 2008 (1)
  • avril 2008 (4)
  • mars 2008 (3)
  • février 2008 (2)
  • janvier 2008 (1)
  • décembre 2007 (3)
  • novembre 2007 (1)
  • septembre 2007 (1)
  • juillet 2007 (1)
  • juin 2007 (1)
  • mai 2007 (4)
  • avril 2007 (8)
  • mars 2007 (2)
  • février 2007 (1)

Marque-pages

  • Adobe Labs
  • AStrois Blog
  • Code moi un mouton
  • Coma Informatique
Section separator

Kap IT

  • Site Web
  • Blog Web2Entreprise
  • Blog RIA.do.be
  • Lab

Blog RIA.do.be

Veille, Recherche et Développement RIA Flex-AS3-LiveCycle

Utiliser le framework Cairngorm pour Flex 2 (1/4)

Par Julien RevelgravatarFermerAuteur : Julien Revel Email : julien.revel@kapit.fr
Site : http://www.kapit.fr
A propos : Voir les autres billets de l'auteur (19)
, publié le 11 avril 2007

En pratique, le problème qui se pose à tout développeur Flex est le même que celui qui se pose à tout développeur tout court : comment éviter que le code ne se transforme en un spaghetti inextricable et devienne impossible à maintenir.

Dans le cas des applications frontales, le problème a été résolu depuis de nombreuses années : il faut autant que faire se peut séparer les données (et leur traitement) de leur représentation. Il y a évidemment des centaines de manières de procéder, mais en l’occurence Adobe nous en propose une, à savoir Cairngorm, présenté comme un framework de développement. Ici il faut entendre framework non pas dans le sens de boite à outils (ce qu’est déjà Flex) mais en tant qu’implémentation de best practices. Les concepteurs de Cairngorm ne disent d’ailleurs pas autre chose (http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html).

Avant même de d’utiliser ou même de se pencher sur Cairngorm, il est important de penser correctement votre application. C’est pourquoi le premier chapitre du tutorial Cairngorm est consacré aux VO (Value Objects), ce qui peut sembler la base pour un programmeur J2EE, d’autant qu’un VO n’est ni plus ni moins qu’un DTO. Qu’est-ce qu’un VO ? C’est un objet typé qui représente une entitée logique de votre application. Imaginons que vous fassiez une gestion de bibliothèque. A un moment ou à un autre, vous allez afficher les données d’un livre dans un composant XMLX dédié à cet effet. Il faut donc que vous créiez un VO livre dont les champs s’afficheront dans le composant.

public class Book implements ValueObject
{
[Bindable]
public var title:String;
[Bindable]
public var author:String;
[Bindable]
public var publisher:String;
[Bindable]
public var isbn:String;
}

Et le composant associé sera un truc du genre :

<mx:canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:label text="Titre : "/>
<mx:label  text="Auteur : "/>
<mx:label  text="Editeur : "/>
<mx:label  text="ISBN :"/>
<mx:textinput  text="{book.title}"/>
<mx:textinput text="{book.author}"/>
<mx:textinput text="{book.publisher}"/>
<mx:textinput text="{book.isbn}"/>
</mx:canvas>

où book est une instance de Book.

On remarque l’utilisation du binding sur lequel insistent les concepteurs de Cairngorn. Le binding assure en pratique que l’objet book sera mis à jour en permanence quelles que soient les modifications que l’on effectue avec l’interface.
En pratique les VO servent en fait d’interface entre les données remontées depuis le serveur (et/ou destinées à y être stockées) et les views de Flex. Et le binding assure le liant.

Mais allez-vous me dire : Où y-a-t’il séparation entre les données et les views ? Nous allons y venir. Au sens strict les VO ne sont font pas partie de Cairngorm bien qu’une interface vide encourage vivement à créer des VO. Cairngorm propose donc un premier objet destiné à assurer cette séparation : le ModelLocator.

Stricto sensu, le ModelLocator dans l’API Cairngorm est une interface vide. Ce doit être un singleton, mais c’est à vous de faire en sorte qu’il le soit. Ce qui est important, c’est que le ModelLocator va être une sorte de “sac” contenant tous vos VO. Vous aurez donc un point d’accès unique pour toutes vos données, avec une méthode d’accès unique pour ces données depuis les views. Reprenons l’exemple précédent: le ModelLocator pourrait être

[Bindable]
public class MyModelLocator implements ModelLocator
{
private static var modelLocator : MyModelLocator
public static function getInstance() : MyModelLocator
{
if ( modelLocator == null )
{
modelLocator = new MyModelLocator();
}
return modelLocator;
}
// ArrayCollection of books
public var books : ArrayCollection;
}

On imagine bien une DataGrid qui liste les livres disponibles à partir du champ books du ModelLocator. Quelque chose comme ça :

<mx:DataGrid dataProvider={MyModelLocator.getInstance().books} .....

Et si l’on rajoute dans le ModelLocator un champ selectedItem:Object correspondant au DataGrid.selectedItem, l’exemple de fiche vu plus haut devient :

<mx:canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
<mx:label text="Titre : "/>
<mx:label text="Auteur : "/>
<mx:label text="Editeur : "/>
<mx:label text="ISBN :"/>
<mx:textinput text="{MyModelLocator.getInstance().selectedIndex.title}"/>
<mx:textinput  text="{MyModelLocator.getInstance().selectedIndex.author}"/>
<mx:textinput  text="{MyModelLocator.getInstance().selectedIndex.publisher}"/>
<mx:textinput text="{MyModelLocator.getInstance().selectedIndex.isbn}"/>
</mx:canvas>

Evidemment, se pose le problème : comment met-on à jour MyModelLocator.selectedItem à partir de la DataGrid et ce, de manière “propre” ? On peut pour cela utiliser le FrontController. Mais ce sera l’objet du prochain article qui listera les autres fonctionnalités de Cairngorm.

Articles relatifs

  • Utiliser le framework Cairngorm pour Flex 2(3/4) (1)
  • Utiliser le framework Cairngorm pour Flex 2 (4/4) : Remarques et Add-On (6)
  • Utiliser le framework Cairngorm pour Flex 2 (2/4) (1)
  • Le problème du ModelLocator Cairngorm (5)
  • Digest estival de news Adobe (1)
Catégories: Notes Techniques
Tags: Cairngorm, Flex, RIA

7 commentaires sur “Utiliser le framework Cairngorm pour Flex 2 (1/4)”

  1. Mike dit :
    12 avril 2007 à 10:50

    Une remarque :
    en mettant tout dans le même sac, cela ne va pas être simple de s’y retrouver quant l’application va grossir et se complexifier.
    Il vaut mieux rajouter un ou plusieurs sous niveaux à ton ModelLocator. Exemple :
    ModelLocator.getInstance().bookModel.books

    Mike

  2. jrevel dit :
    12 avril 2007 à 10:57

    Absolument. Mais c’est aussi ce que je dis : initialement, on peut tout mettre dans le ModelLocator, le mieux comme le pire.

  3. Florian F. dit :
    12 avril 2007 à 23:18

    Merci pour cet article, je cherchais justement de la documentation sur Cairngorm et en plus, c’est en français!

    Vivement le prochain.

  4. mruellan dit :
    5 juin 2007 à 13:10

    Il n’y aurait pas une petite erreur ??

    {MyModelLocator.getInstance().selectedIndex.title} devrait être :
    {MyModelLocator.getInstance().selectedItem.title} non ?

  5. erick dit :
    9 août 2007 à 0:30

    bonjour et merci pour ces articles forts utiles !

    Ptite question/remarque :
    dans l’exemple de MyModelLocator ne faudrait-il pas rendre ‘books’ [Bindable] ?

  6. Tibetoine dit :
    7 février 2008 à 9:25

    Bonjour,

    Mike pourrais tu développer ton idée de découper le modelLocator en sous partie ?

    Merci

  7. florian dit :
    20 mars 2008 à 18:34

    Billet yrès intéressant ;) je suis hors sujet mais je trouve kle design de votre blog très sympathique :) bone continuation !

Laisser une réponse

Cliquer ici pour annuler la réponse.

Article précédent
Article suivant
 
Haut de page

Copyright © 2009 Kap IT - Blog RIA - Blog Web2Entreprise - Kap Lab

Motorisé par Wordpress - Thème avec YAML par Kap IT