vendredi 5 août 2011

EventBus

If something need to be clarified(and I supposed it should be) don't hesistate to write comments

(mise à jour le 02/10/2012)
Architecture de mes Ihm:
Après passage dans une phase d'authentification on a accès au panel Principal: MainPanel.
Celui-ci contient une zone de contenu ContentPanelHolder qui recoit des panels ayant comme classe mère une classe abstraite MyAppContentPanel.
 Chacun de ces panels de contenu possède un jeu de boutons de commandes donnant accès aux fonctionnalités correspondantes aux droits de l'utilisateur.
Chaque bouton de commande va générer un événement métier de type ActionChangedEvent, cette classe d'événement possède un accesseur permettant de préciser la fonctionalités désirée ce qui correspondra donc à différents panels à charger dans le ContentPanelHolder.
public void setAction(BusEventsAction action) {
        this.action = action;
    }   
    @Override
    public Type getAssociatedType() {       
        return TYPE;
    } 

Bien sur les ContentPanels sont eux intéressés à recevoir les événements concernant la mise à jour des données .
L'EventBus permet de transformer les événements "utilisateurs" en "événements métier", de les déclencher et d'éviter de coupler la source des événements aux "abonnés"  qui vont les traiter.  On délègue la distribution à l'EventBus. Lorsque l'on a besoin de rajouter dans un composants (le plus souvent un panel) un comportement déclenché par tel ou tel événement, il suffit de faire implémenter l'interface du gestionnaire correspondant (handler) et d'inscrire le handler auprès de l'EventBus et d'écrire le code à exécuter en réaction à l'événement.
(update on 2012 October the 2nd )
UI Architecture:
After passing through an authentification stage the MainPanel is displayed.
This one cinlude a content place  ContentPanelHolder which is loaded with panels extending an abstract class MyAppContentPanel.
Each of this content panels has a set of command buttons corresponding to the actions authorized by the user's right.
Each button will trigger a business event of  ActionChangedEvent, this event class get  accessors to set and obtain the action required which in turn correspond to different panels to load in the ContentPanelHolder.
public void setAction(BusEventsAction action) {
        this.action = action;
    }   
    @Override
    public Type getAssociatedType() {       
        return TYPE;
    }

Besides the ContentPanels will subscribe to data related business events...
L'EventBus allow to transform the "user" events into "business events", to trigger them and to avoid to couple the events source with the "listenners" which will process them.  We delegate the dispatching to the EventBus. When we need to add in a component (mainly panels) a behavior triggered by an event we just have to do the necessary in the panel to implemnts the handler interface, declare the handler to the EventBus and write the code to execute in response to the event.

Aucun commentaire:

Enregistrer un commentaire

It's your turn / Exprimez vous
What do you think, what would you like to be exposed, on which topic you don't agree....
Qu'en pensez vous, quels sujets aimeriez vous voir traités, sur quels point n'êtes vous pas d'accord....