lundi 31 août 2009

Jbpm 4 Tutorial: JBPM 4, which is BPMN compliant, simplifies his programming model

Now that, JBPM, has passed the difficult age of childhood, and that it is a very popular BPM framework, his adopted father RedHat (JBoss owner) has decided to change everything: programming model and schema database.

Its goal: to simplify the programming model, to increase the number of adoptions and to reinforce the shift to the PVM (Processs Virtual Machine).

Programming model revised

This version 4 JBPM is a complete rewrite from version 3: while retaining the basic principles: open source, 100% Java, concept of process, storage of instances and definitions of process into the database, based on Hibernate, assisted by IDE.

Many users jbpm 3 will agree with me that certain APIs are difficult and that they needed to write complex queries Hibernate, leading to several problems.

With the mixture of concepts in JBPM 3 APIs, methods are scattered in classes JbpmContext, GraphSession or TaskManager.

The JBPM 4’s team has rationalized all BPM concepts, around the API ProcessEngine.

Any use of JBPM starts by acquiring the services desired from ProcessEngine: the central node of BPM by RedHat.

Use the API as needed

  • RepositoryService: allows to manage static data processes: deployment, activation / deactivation request
  • ExecutionService: exposes runtime execution operations (for process instances): start executing process instances, manage variables, retrieve instances, etc.
  • TaskService: it is the modeling of human interaction: everything to manage tasks: create, search, assign, complete..

clip_image002[4]

Two other APIs have made their appearances:

  • HistoryService: In JBPM 4 there is a clear separation between the runtime and data archiving. This service provides statistical measurements and calculations performed by the engine. This API has no relation with the runtime: it discusses the history and times past. Through this service the historical data (instances completed, work performed) can be searched and presented a statistical study Later.
  • ManagementService: This API is intended for tools to manage processes telque famous JBPM console.

Database Schema simplified

clip_image003[4]

clip_image004[4]

Hibernate mapping is as follows

1:            <mapping resource="jbpm.repository.hbm.xml" /> 
2: <mapping resource="jbpm.execution.hbm.xml" />
3: <mapping resource="jbpm.history.hbm.xml" />
4: <mapping resource="jbpm.task.hbm.xml" />
5: <mapping resource="jbpm.identity.hbm.xml" />


A first test of the new version of JBPM: Version 4 JBPM



It is a simple example of a process containing two steps: one to display a message and another to launch a backup

JBPM 4 uses the notation BPMN 2.0



clip_image001



The XML version of this process definition:



1:  <?xml version="1.0" encoding="UTF-8"?> 
2: <process name="seconde_hello_de_OXIA" xmlns="http://jbpm.org/4.0/jpdl">
3: <start g="24,72,80,40">
4: <transition to="afficherMessage"/>
5: </start>
6: <java class="com.oxia.att.jbpm4.exemple.AfficherMessage" g="120,68,138,56" method="afficherMessage" name="afficherMessage">
7: <transition to="lancerBackup"/>
8: </java>
9: <end g="165,267,80,40" name="fin"/>
10: <state name="lancerBackup" g="143,147,92,52">
11: <transition name="to fin" to="fin" g="-30,-18"/>
12: </state>
13: </process>


The java class for Handling the message (very very simple ) :



1:  package com.oxia.att.jbpm4.exemple; 
2: public class AfficherMessage {
3: public void afficherMessage() {
4: System.out.println("****** début de passage par un Etat");
5: System.out.println(" Bonjour de OXIA!");
6: System.out.println("****** fin de passage par un Etat ");
7: }
8: }


To test this process in a Java project (very basic steps )



1:  public static void main(String[] args) { 
2: // get the ProcessEngine instance
3: ProcessEngine processEngine = new Configuration().setResource("oxia.att.jbpm.cfg.xml").buildProcessEngine();
4: // get one instance of the RepositoryService
5: RepositoryService repositoryService = processEngine.getRepositoryService();
6: // Deploy the process definition du processus
7: repositoryService.createDeployment().addResourceFromClasspath("com/oxia/att/jbpm4/exemple/first_Jbpm_Sample.jpdl.xml").deploy();
8: // get one instance of the ExecutionService
9: ExecutionService executionService = processEngine.getExecutionService();
10: ProcessInstance processinstance = executionService.startProcessInstanceByKey("hello_de_OXIA");
11: System.out.println( processinstance.getId());
12: System.out.println( processinstance.getState());
13: }


The Result:



1:  ****** début de passage par un Etat 
2: Bonjour de OXIA!
3: ****** fin de passage par un Etat
4: hello_de_OXIA.6
5: ended


Conclusion



RedHat has restructured JBPM 4 around a simplified API and a clear pattern of effective database.



Reste à vérifier les annonces concernant l’amélioration des performances : grâce au nouveau schéma de base de données, la récriture des classes de bases de Job executor et activities et l’amélioration de la gestion de la concurrence.



It remains to check the listings for improving performance: thanks to the new schema database, the rewriting the basic classes of Job executor and activities and improving concurrency management.









(fr)




  • Autre sujets



    1. Un peu de monitoring Métier (BAM) avec JBPM et SeeWhy (event-driven business intelligence )



    2. Comment modéliser un processus métier avec JBPM : exemple “gestion des entretiens”



    3. Quelle est la différence entre JBPM et Intalio ?



    4. Graph Oriented Programming (GOP) avec JBPM



    5. BPM & Moteur de workflow : l’offre open source



    6. La version 4 de JBPM prend le virage de BPMN



    7. Jbpm 4 Tutorial : JBPM 4 a simplifié son model de programmation et a confirmé l’orientation BPMN


  • dimanche 30 août 2009

    Cloud et MOM open source : Jboss HornetQ le Middlewares Orientés Messages de Redhat vise le PaaS

    On sait tous qu’ « Un Middlewares Orientés Messages (MOM) est une nécessité pour le système d’information des entreprises. L’usage des MOM dans le SI des entreprises, va s’accentuer à mesure que le concept EDA et CEP prennent leurs places.

    Mais, ce qui est nouveau, c’est que la guerre des clouds, se joue aussi sur le front des MOM.

    Selon JBoss, cela est évident : Le messaging applicatif va devenir une des clés de toute offre PaaS (Plateforme as a service).

    Un « Un Middlewares Orientés Messages » est un élément, aussi important que la base de données, chez tous les fournisseurs de solutions pour le cloud, et non pas seulement chez Amazon (Amazon Simple Queue Service (Amazon SQS)

    Middlewares Orientés Messages : l’offre open source

    Rappelons que la liste des MOM open source reste encore longue.

    Dans la catégorie MOM classique (essentiellement compatible JMS (liste restreinte à Java)

    · Jbossmq

    · Joram

    · Openjms

    · Open MQ (GlassFish)

    · OpenJMS

    · XMLBlaster

    · Zero MQ

    · Spread

    Dans la catégorie MOM implémentant le protocole AMQP

    · RabbitMQ

    · Amqplib

    · Open AMQ

    · Qpid (dans l’incubateur de projet Apache)

    Rappelons que dans le monde open source le projet MOM le plus célèbre reste ActiveMQ.

    Naissance de HornetQ de Jboss

    Le projet devait avoir le nom de JBoss Messaging 2.0, mais pour des raisons marketing, un nouveau nom a été choisi : HornetQ

    HornetQ remplacera à terme JbossMQ 1.x, ce dernier est passé en mode maintenance..

    clip_image002[4]

    (http://hornetq.blogspot.com/, selon l’image, il s’agit bien d’un Hornet …)

    Les caractéristiques annoncées de HornetQ : un MOM multi-usage

    Jboss parle d’une réécriture de JbossMQ dans un objectif de meilleure performance, facilité d’utilisation, facilité d’incorporation dans un « java software » et de montée en charge.

    HornetQ implémente les protocoles classiques des MOM asynchrone, et y ajoute le protocole AMQP (Advanced Message Queuing Protocol).

    AMQP est un nouveau protocole pour les systèmes de messagerie orientés Middleware à comparer au protocole SMTP (pour les gestionnaires des emails). L'objectif d'AMQP est de standardiser l'échange de messages entre serveurs de message.

    HornetQ : le MOM du cloud

    HornetQ est considére par Jboss comme « le MOM du cloud »

    HornetQ va privilégier l’approche RestFull, en considérant que cette approche primordiale pour le Cloud.

    Signalons que l’attaque de Jboss vient au moment où chacun des "combattants" dans la guerre des cloud (L’épisode du PaaS), Google, Spring/Vmware et Micrsoft, a avancé un ou plusieurs de ses pions.

    Télécharger HornetQ : http://hornetq.org/downloads.html

    Plusieurs exemples JMS sont offerts et permettent de faciliter l’apprentissage.

    Notons, qu’avec cette version du MOM de Jboss, la communauté open source, montre un intérêt croissant pour le protocole AMQP. Est-ce que c’est un gage de réussite pour ce protocole ?

    Mais ceci est un autre sujet

    lundi 24 août 2009

    Cloud computing : SQL Azure est annoncé, vers le "Cloud data management"

    La réponse au BigTable de Google est là : Microsoft distille la riposte et elle est de taille

    On peut résumer l’approche : «Conserver vos habitudes SQL avec SQL Azure, le « SQLServer du Cloud de Microsoft ».

    Rappelons que Windows Azure est l'offre "Cloud Computing" de Microsoft. Il s’agit d’une offre "Platform as a Service" (PaaS). Une sorte de système d'exploitation pour le cloud.

    Pour l’instant, la plateforme Azure comprend trois parties : Windows Azure, SQL Azure et .NET Services.

    SQL Azure : c’est quoi ?

    SQL Azure (anciennement SQL Data Services) correspond à une base de données relationnelle “on the cloud” de la plateforme Azure. Il parait qu’elle repose sur SQL Server.

    Ce module est différent des services de stockage non-relationnels fournis par la brique Windows Azure (Tables, Blobs, Queues), conçus pour les besoins de mise à l’échelle extrêmes de certains scénarios pour le “Cloud”.

    SQL Azure s’oriente, dans sa première version, vers le supporte d’un sous ensemble de TSQL langue, contrairement à SDS qui lançait un nouveau paradigme nommé ACE (Authority, Container, Entity).

    Chaque ordre TSQL peut être classés dans les l’un des 3 niveaux :

    • Pris en charge (supporté) : dans ce contexte signifie qu'il n'ya pas de différence dans la façon dont traite SDS une déclaration ou d'une fonction par rapport à SQL
    • partiellement supporté
    • non supporté signifie que la caractéristique donnée n'est pas prise en charge par la SDS (exemple l’ordre BACKUP ne sera pas disponible)

    A ce stade aucun ordre SQL nouveau n’est prévu.

    Selon MSDN (le blog : TSQL Support in SQL Data Services) les principales limitations sont:

    • Pas de possibilité d’accéder ou de manipuler les ressources physiques.
    • Certaines fonctionnalités ne seront pas accessibles comme par exemple la réplication.
    • SQL Profile ne sera pas non plus disponible

    Il semble que Microsoft, cherche à faciliter le portage d’applications, plus besoin de redévelopper la couche données pour une application utilisant SQL Server.

    Offre de prix

    Rien n’est gratuit :

    Contraient à l’approche Google, qui offre un quotas gratuit, la payement commence dés le premier octet de stockage et dès la première requête.

    Le modèle de facturation est basé sur l’usage, une combinaison entre le volume de donnes et les nombre de requête

    -Web Edition = $9.99 / mois, limité à 1 BD de 1 Go de stockage et 10 heures d’exécution de requêtes

    -Business Edition = $99.99 / mois, limité à 1 BD de 10 Go de stockage et 100 heures d’exécution de requêtes

    -Bande passante = $0.10 / Go en entrée,  $0.15 / Go en sortie

    Ce qui est intéressant c’est que Microsoft s’engage sur un SLA (Service Level Agreement) de 3 neufs (99.9%) pour SQL Azure..

    La question qui demeure : “à ce stade, faut continuer à investir sur l’apprentissage de Azure, ou bien attendre un peu que se “tout cela “ se stabilise ?”

    Mais ceci est un autre sujet

    mercredi 19 août 2009

    Terracotta achète Ehcache: la concentration des projets open source s’accélère

    Il y a quelques jours on a vue l’acquisition de Spring par Vmware, hier, 18 août 2009, c’est autour d’ EhCache de se faire « absorber » par Terracotta.

    Ehcache une API de gestion de cache de donnée, est le projet open source le plus populaire dans la spécialité. EhCache est très connue par la communauté Java EE et spécialement par les utilisateurs de Hibernate et Spring.

    Terracotta est une entreprise qui propose des solutions de clustering de JVM pour adresser les problématiques de haute disponibilité et de partage d’instance d’objets entre plusieurs JVM.

    En quelques sortes Terracotta offre à l’application une mémoire distribuée sur toutes les JVM connectées (concept de Network Attach Memory).


    Dans le mode open source Terracotta est en concurrence directe avec RedHat (JBoss Infinispan : open source Data Grid par la JBOSS).

    Mais, la véritable concurrence vient des entreprises à code fermé, Oracle (Coherence) et GigaSpaces, et GemStone Systems.

    Les deux sociétés sont issues du monde open source. Bien que techniquement logique, Il est probable que cet achat ne soit le prélude d’une préparation de la société à une vente.

    Rappelons, que les deux solutions, Terracotta et ehcahe, s’intègrent parfaitement à Spring. Ça pourrait donner des idées à Vmware.

    Mais ceci est un autre sujet

    lundi 17 août 2009

    Grails, groovy & Google Appengine (3G): créer et déployer votre première application dans le cloud en 10 commandes

    Introduction

    Après 3,5 mois de test de la version java de Googgle Appengine, j’arrive à la conclusion suivante : dans la version actuelle (Googgle Appengine SDK installé : la version 1.2.2), il est utopique de penser à migrer sans efforts des applications javaEE actuelles. La migration reste possible, n’est pas triviale.
    L’approche PaaS proposé par Google, dans son offre Googgle Appengine, ne privilégie pas la réutilisation des applications existantes pour trois raisons (contrairement à l'approche - à tester- de Spring sur son CloudFoundary).


    - Une limitation des API java disponible et du ClassLoader (ce lien pour les classes du JRE et ce lien will-it-play-in-app-engine ?)
    • - Une limitation des actions possibles (pas de gestion de thread, pas d’écriture dans des fichiers, …)
    • - Un changement dans l’utilisation des bases de schémas possibles de bases de données
    • Il est préférable que la première application déployée soit réécrite spécialement pour le Googgle Appengine. Cela permet de comprendre le modèle de programmation et le modèle de facturation, les performances … avant même de penser à la connecter aux autres applications Google.
    Pour une première exploration, je conseille d”adopter une approche RAD en utilisant l’un sur des frameworks “nouvelle approche du monde Java EE basé sur le concept de “Convention Over Configuration”.

    Graisl & Groovy

    Depuis sa version 1.1.1, Grails, est devenu le framework le plus prometteur de cette mouvance. Grails encapsule un condensé de Best practices, des meilleurs framewors (Spring, …) open source, des plugins spécifiques …
    Ce tutorial vous permet de saisir la faciliter de création et déploiement d’une application

    Créer et déployer votre première application dans le cloud en10 commandes

    Alors si vous souhaiter vous lancer dans le cloud en quelques minutes : adopter l’approche 3 G : Grails, groovy & Google Appengine.

    Les prérequis

    1. Java JDK installé (de préférence la dernière version )
    2. Grails installé : la version Grails 1.1.1
    3. Goggle Appenigne SDK installé : la version 1.2.2
    4. Avoir un compte Googgle Appenigne

    Les étapes simplement (commades …)

    1. grails create-app my_First_3G_app
    2. cd my_First_3G_app
    3. grails uninstall-plugin hibernate
    4. grails install-plugin gorm-jpa
    5. grails install-plugin app-engine
    6. grails create-domain-class com.oxia.att.test.Message (ajouter un attribute message et faire le mapping JPA avec les annotations )
    7. grails generate-all com.oxia.att.test.Message (ajouter le code Groovy et GSP pour personaliser les écrans selon vos besoins)
    8. add to grails-app\conf\Config.groovy - google.appengine.application=" app3g "
    9. grails set-version 1
    10. grails app-engine deploy
    Pour visualiser le résultat, allez au http://app3g.appspot.com
    Exemple de cette approche : http://np-grails.appspot.com/twitting/list
    Exemple de cette approche : http://np-grails.appspot.com/twitting/list

    Pour tester localement l’application :

    • grails app-engine
    • go to http://localhost:8080 and test the app locally

    Les étapes avec explications

    Les étapes de 1 à 5 permettent de créer la structure de l’application
    Exemple de cette approche : http://np-grails.appspot.com/twitting/list

    Ce qu’il faut retenir :

    Ce qu’il faut retenir, Google appengine n’est pas compatible Hibernate, et que grâce au plugin Gorm-JPA de Grails, l’utilisation des annotations JPA est possible.
    Les étapes 8 à 10 : concernent le déploiement
    Les étapes 6 et 7 concernent l’application Grails et le code métier, affichage …
    L’application doit répondre, bien sûre, à vos besoins métiers, et correspondre à la charte graphique de votre entreprise.
    Tous ses aspects peuvent être réalisés avec Grails / Groovy en respectant les limitations de Google app engine.
    Espèrerons que la même application soit compatible avec l'offre de Spring sur son CloudFoundary.
    Signalons, en fin, que la principale limitation qui va rencontrer votre projet : la définition de votre schéma de persistance (pour ne pas dire schéma SQL) compatible avec BigTable (ce n’est pas du SQL bien qu’on y accède en JPA ou JDO, dison GQL)
    Mais ceci est un autre sujet
    autres entrés sur le même sujet
    Cloud Computing : Créer votre première application avec GoogleApp Engine et java
    Quel crédit donner aux résultats affichés par le DashBoard de GoogleApp Engine (GAE) ?

    jeudi 13 août 2009

    Open source : le modèle du logiciel libre serait-il menacé par les grands fournisseurs de software

    La dernière nouvelle est tombée le 10 août, une surprise générale en plein période estivale, Vmaware, éditeur commerciale à code fermé, acquiert la totalité de SpringeSource, un éditeur commercial basé sur un modèle open source et code ouvert.

    est ce que c’est la tendance : prise de contrôle par les grands fournisseurs des éditeurs open source :

    d’après le Gartner : c’est une lame de fond !

    à vraie dire les exemples le montrent bien :

    Exemples d’acquittions

    Mais, ce n’est pas la seule information de ce type (ordre non chronologique..) :


    1) Novell a fait l'acquisition de SUSE Linux (en 2004)

    2) Cisco, a acheté en 2008, Jabber, l’éditeur de la solution de messagerie instantanée open source Jbber et fondateur du protocole de messagerie instantané XMPP (Extensible Messaging and Presence Protocol). XMPP est adopté par Google, Micorsoft,

    3) Nokia, en 2008 a acheté Symbian Ltd, éditeur du système d'exploitation du même nom

    4) SUN a mis la main sur MySQL

    5) Oracle a mis la main sur Sun, et tout son actif de codes sources libres (Java, MySQL, …). Rappelons que Sun se targe souvent d’être l’entreprise, qui contribue le plus à l’open source. SUN a déjà mis en open source tout son

    6) Citrix a acheté l'hyperviseur open source Xen,

    7) IBM, a acheté , en 2005, la société Gluecode Software, une société spécialisée dans les logiciels libres issus de la fondation Apache, notamment le serveur d’applications Geronimo et le SGBD Derby.

    8) Oracle a acheté en 2006 société Innobase, connu de la communauté open source par InnoDB, utilisé, comme de gestionnaire de tables pour MySQL (une des alternatives)

    9) Oracle a acheté en 2006, Sleepycat Software, qui développe la base, open source, Berkeley DB, embarquée dans Linux et open office

    10) Progress a racheté, en 2008, Iona Technologies, ce qui a permit à Progress Software de mettre le pied dans l’open source, à tyravers FUSE et serviceMix

    11) Serena Software acquiert Projity éditeur d’OpenProj, logiciel de gestion de projet open source, et de Project-ON-Demand, logiciel de gestion de projet en mode SaaS

    12) Nokia a acheté Trolltech, éditeur de Qt, un environnement de développement open source basé sur C++ pour Windows, Mac et Linux. Trolltech a développée aussi Qtopia Phone Edition, version mobile de Linux.

    13) Yahoo a mis la mais sur Zimbra, une suite collaborative open source de type Outlook Exchange qui en plus de fonctionnalités collaboratives traditionnelles, intègre plusieurs nouvelles technologies du Web telles que l’Ajax, les tags et la VOIP



    (aujourd’hui le 13 aout 2008, je m’arrête à ce chiffre, …)

    Exemples de financement massive

    Ce type de prise de contrôle par l’acquisition et absorption, n’est pas la seule façon de contrôler le projet open source…

    En effet, si c’est ce n’est pas une prise de contrôle par les grands fournisseurs achat directe, c’est un financement massive et directe (peut être pour créer une dépendance forte et peser sur les décisions!)

    IBM : a crée Eclipse et reste le principal soutien à Eclipse Fondation

    Google : principale bailleurs de fonds pour FireFox

    IBM : est un soutien à Prosgresql

    IBM : a crée Eclipse et reste le principal soutien à Eclipse Fondation

    IBM et SUN: principaux souteneurs à OpenOffice (et on devine pourquoi)

    SUN est principale soutien à Glassfish, serveur d’application Open source

    IBM est principale soutien à Geronimo, serveur d’application Open source

    Et Microsft commence à soutenir des projets Open source (plateforme codeplex.com) et fondation Linux.

    Rappelons que Microsoft, Google et Yahoo au sont des sponsors Platinium d'Apache

    Exemples de consortium

    Autres situations à inclure dans l’observation et l’analyse: le poids important des consortiums financés par les gouvernements.

    L’exemple qui me vient à l’esprit est le consortium OW2, financé par la communauté européenne et des grandes entreprises (FranceTélécom, Thalès, BULL, IRIA, CNRS …) a soutenu plusieurs : Fondé en 2007 suite à la fusion d'ObjectWeb et d'Orientware, le consortium OW2 regroupe des acteurs industriels et académiques mondiaux qui conjuguent leurs efforts pour créer en open-source du logiciel middleware de nouvelle génération.

    on le sait : la communauté européenne considère que l’open source est un axe stratégique pour l’IT et la compétitivité européenne..

    la tendance de fond : un seul fournisseur contrôle le projet (directement ou indirectement)

    D’autres part,

    Le Gartner, pointe de l’index, une nouvelle tendance de fond : des logiciels open source sans communauté, avec le soutien d’un seul fournisseur.

    D’après le Garner, d'ici 2012, la moitié au moins du CA généré par les logiciels open source et les services associés proviendra de projets "sponsorisés" par un seul fournisseur

    Est-ce raisonnable ? Sachant que la force du modèle économique de l’open source puise sa force, justement, dans cette communauté.

    Est-ce qu’une stratégie de phagocytage ou dynamitage, ou est ce que la démonstration que le modèle marche ?

    Est-ce que le les prochaines versions du code source resteront « disponible et gratuit », ou est ce que la dernière version, vraiment libre sera celle avant l’achat.

    Une analyse montre que le slogan « Open Source for Sale » va s’accélérer et de plus en plus sa forme, peut être grâce à al crise ou à cause de la crise!

    De toutes les façons, le monde d’après la crise sera différent,

    Mais ceci est un autre sujet …

    ---------------

    sur le même sujet

    Tomcat, Spring, Grails, Groovy : dans le giron de Vmware

    Oracle a acheté SUN : Que va-t-il se passer ?

    Oracle & SUN : Quel avenir pour l’unique solution MDM open source, SUN MDM Suite?

    Si IBM achèterait SUN : Quelle conséquence pour le monde Java ?

    Terracotta achète Ehcache: la concentration des projets open source s’accélère

    mardi 11 août 2009

    Groovy,Grails & Web service: Consommer simplement un web service

    Question : comment consommer simplement un web service

    Réponse : avec groovy, très simplement en 3 lignes de code

    Nous allons utiliser le webservice crée à l’occasion du billet suivant : Grails, Groovy, xFire & SoapUI : créer un web service et le tester en 22 lignes de codes, 7 commandes et 5 minutes

    Les étapes sont simples

    Etape 1 : installer Groovy

    Voir ce lien :

    Etape 2 (optionnel): créer un projet Groovy avec Eclipse ou avec STS (Springsource Tool Suite, la version free et conseillée pour ce type de projet)

    Télécharger à partir du lien suivant: http://www.springsource.com/products/springsource-tool-suite-download

    Etape 3 : ajouter la librairie nécessaire "groovyws-xxxx-0.5.0.jar »

    Télécharger à partir de ce lien http://dist.codehaus.org/gmod/groovyws-minimal-0.5.0.jar

    Etape 4 : créer le code pour consommer le web service (le WSDL est définie ici)


    1:  def proxy = new WSClient("http://localhost:8080/webservice-xfire/services/role?wsdl", this.class.classLoader)
    2: proxy.initialize()
    3: def result = proxy.getRoles()
    4: // utilization de la réponse
    5: assert result.getClass().name=="com.oxia.att.grails.ArrayOfRole"
    6: def role=result.role[0]
    7: assert role.name.getClass().name=='javax.xml.bind.JAXBElement'
    8: println 'NS ' +role.name.getName()
    9: println 'Valeur ' +role.name.getValue()

    ( l’a classe Role possède une propriété ‘name’)

    Explication :

    dans ce usage; Groovy se base sur CXF (avec la version SOAP version: 1.1 pour le moment et présente ces deux classes org.apache.cxf.endpoint.dynamic.DynamicClientFactory et groovyx.net.ws.AbstractCXFWSClient getBindingOperationInfo)

    en se basant sur le WSDL il va créer dynamiquement les classes nécessaires

  • com.oxia.att.grails.ArrayOfRole,
  • com.oxia.att.grails.GetRoles,
  • com.oxia.att.grails.GetRolesResponse,
  • com.oxia.att.grails.ObjectFactory,
  • com.oxia.att.grails.Role,
  • com.oxia.att.grails.ServiceMethod,
  • com.oxia.att.grails.ServiceMethodResponse

    Les résultats sont retournés dans un objet crée à la volé (com.oxia.att.grails.ArrayOfRole) et sont de type javax.xml.bind.JAXBElement.

    Qui contient le nameSpace : {http://grails.att.oxia.com}name

    Et la valeur : admin

    Pour ceux qui pensent que la manipulation des résultats n’est pas évidente, il est temps de se rappeler que Groovy vous permet de créer vos propre méthodes de manipulations dynamiquement.

    Ça permet de simplifier la manipulation des objets …javax.xml.bind.JAXBElement

  • C'est ici que se manifeste la puissance de Groovy en tant que langage dynamqiue avec sa capacité à manipuler les Closures ..

    Mais ceci est autre sujet …

    Lien utile:

  • Consuming a web service with Groovy Web Service
  • Groovy Web Service
  • Groovy Web Service installation

    autres sujets : Groovy & Grails

  • Tomcat, Spring, Grails, Groovy : dans le giron de Vmware
  • Groovy & Grails : L’instabilité en vue du coté JRuby, une opportunité de plus pour Groovy & Grails
  • Groovy et Grails dans le giron de SpringSource : Un bel avenir pour les langage dynamique
  • lundi 10 août 2009

    Tomcat, Spring, Grails, Groovy : dans le giron de Vmware

    10 août 2009 : Un jour d’été pas comme les autres, une montée fulgurante d’une société, crée il y a 5 ans sur la base du consulting autour d’un framework Ioc, pour devenir la référence d’une communauté java toujours en quête d’évolution.

    Aujourd’hui 10 août 2009 Vmware le leader incontesté de la vritualisation a annoncé l’acquisition de springSource le leader incontesté de la voie alternative de la communauté Java, du Server Side et java Software

    Rappelons les grandes dates pour Spring :

    novembre 2002: Rod Johnson publie son réquisitoire contre la voie officielle de J2EE : “J2EE Design and Development”

    février 2003: Lancement d’un IOC en open source ‘Spring le Framework’
    Juillet 2004: Lancement de SpringSource ‘Spring l’entrerpise’

    janvier 2008: Acquisition par SpringSource de Covalent Technologies ( Apache java Software Foundation projects, Tomcat, Axis …)

    novembre 2008: Acquisition par SpringSource de G2One : Groovy and Grails.

    mai 2009: Acquisition par SpringSource der Hyperic (monitoring de système).

    Le but ultime de ce mariage, reste à mon avis, la préparation de prochaine bataille de l’IT: celle du cloud computing ( Qu’il s’agisse de Cloud privé ou public).

    Rappelons que les offres cloud de Microsoft et de Google menacent directement le modèle &économique de VMware : Les deux Big Brothers offrent des infrastructures vitalisées par essence. Les offres cloud de Microsoft et de Google parlent en plus directement aux développeurs : .Net C# ou Java, conserver vos habitudes, programmez simplement et déployer facilement. Chère développeur Azure ou Google Appengine : des Vmware ou des Framework (Spring compris…) il n’y guère besoin, le cloud est là pour simplifier votre travaille. ….

    Il s’agit donc, d’un autre mariage de raison, entre deux leaders préparant leurs avenirs :

    Vmware est focalisée sur la simplification et l’automatisation des infrastructures pour les applications et Spring est focalisée sur la simplification et l’automatisation du développement des applications.

    Pour le monde java, c’est une bonne nouvelle si ça aboutit à une vraie simplification des modèles de développement, déploiement et monitoring.

    Restons vigilant sur l’ouverture du code de Tomcat, Spring, Grails et Groovy …

    d’autre part, VMware, doit batailler pour s’imposer dans le monde des clouds privées ou va t’elle fusionner avec Amazon ?

    Mais ceci est une autre histoire


    news : http://blog.springsource.com/2009/08/10/springsource-chapter-two/

    http://www.marketwatch.com/story/vmware-to-acquire-privately-held-springsource-2009-08-10

    http://www.infoq.com/news/2009/08/vmware-springsource

    http://www.marketwire.com/press-release/Vmware-Inc-NYSE-VMW-1028298.html

    dimanche 9 août 2009

    Grails, Groovy, xFire & SoapUI : créer un web service et le tester en 22 lignes de codes, 7 commandes et 5 minutes

    Préambule : Avant de commencer, s’agissant de publier des services, je rappelle que je reste adepte du concept Contrat-first. Mais, ce tutoriel est destiné à montrer la puissance de l’approche Grails. Il doit être affiné pour suivre l’approche contract-first. Qu'il s'agisse d'une solution java développée 'from scratch' ou basée sur du 'java software' payé en $$ ou sur du .net basée sur Biztalk : l'essentiel c'est que le contrat soit défini dès le début

    Question : comment créer un web service en exposant la liste à partir d’une base de données

    Contexte : confronté, sur un nouveau projet, à une demande du client qui souhaite rapidement : apprendre à consommer des web services, dans un projet classique JSF/Spring/Hibernate . L’idée est d’utiliser Spring webservice template, mais, Il a fallu fournir des web services rapidement, pour les consommer

    Réponse : le simple c’est d’utiliser Grails (yes it's a java software from Spring cretors, based on Groovy : a dynamique java software from the Spring source ...)

    Des webservices en moins de 5 minutes, 6 commandes et 22 lignes de codes …

    En prime : les écrans de gestion de l’entité cible dans la base de donnée

    Etape 1: installer Grails

    http://www.objis.com/formation-java/tutoriel-grails-installation.html

    Etape 2 : créer une application

    (Commande 1)>grails create-app webservice-xfire

    (Commande 2)>cd webservice-xfire

    (Commande 3)>grails create-domain-class com.oxia.att.grails.Role

    Ajouter ce code (en somme du Plain old Groovy objects, dit POGO)

    1:  package com.oxia.att.grails
    2: class Role {
    3: String name
    4: static constraints = {
    5: name(blank: false, size: 1..20)
    6: }
    7: public String toString() {
    8: return name
    9: }
    10: }


    (commande 4)>grails create-controller com.oxia.att.grails.Role



    Etape 2 : installer le plugin xFire



    http://www.grails.org/plugin/xfire



    (commande 5)> grails install-plugin xfire


    Etape 3 : générer les bases du service en relation avec le POGO Role

    (commande 6)> grails create-service com.oxia.att.grails.Role

    Etape 4 : ajouter un peu de code Groovy pour exposer le métier

    1:  class RoleService {
    2: static expose=['xfire']
    3: def serviceMethod(Role dc) {
    4: return true
    5: }
    6: Role[] getRoles(){ Role.list() as Role[] }
    7: }

    clip_image001[4]

    Etape 5 : lancer

    (commande 7)> grails run-app
    http://localhost:8080/webservice-xfire/services/role?wsdl
    clip_image003[4] Avant de tester le web service : ajouter au moins 1 Role (le fameux admin…) ( les écrans d’administration ont été générés aussi) clip_image004[4]

    Etape 6 : tester avec SoapUI

    Créer un projet avec SOAP UT à partir du WSDL

    clip_image005[4]

    SOAPUI va créer ce projet

    clip_image006[4]

    Lancer le teste

    clip_image008[4]

    Le résultat n’est pas « orienté » Contrat-first

    Mais … avec du XPATH on pourra se débrouiller !

    Avouons qu’il faut travailler encore le CONTRAT

    Etape 7: statistique

    Code utile : 22 lignes de codes (les tests unitaires sont aussi utiles mains non comptabilisées dans ce cas)

     +----------------------+-------+-------+
    | Name | Files | LOC |
    +----------------------+-------+-------+
    | Controllers | 1 | 4 |
    | Domain Classes | 1 | 10 |
    | Services | 1 | 8 |
    | Unit Tests | 3 | 36 |
    +----------------------+-------+-------+
    | Totals | 6 | 58 |
    ( sans formatage de texte )

    Etape 8 : consommer le service

    Utiliser Spring Web service template

    Mais, ceci est un autre sujet

    --------------------------------------------------

    autres sujets Grails

    -- Groovy & Grails : L’instabilité en vue du coté JRuby, une opportunité de plus pour Groovy & Grails

    -- Groovy et Grails dans le giron de SpringSource : Un bel avenir pour les langage dynamique
    --------------------------------------------------

    autres sujets à venir

    - le concept Java 3G : Grails, Groovy et Google appengine

    - les plugins Grails


    jeudi 6 août 2009

    Twitter, Faut il envisager la vie sans : Twitter a subit sa première cyber-attaque

    Twitter touché par un déni de service attaque DDOS : la nouvelle paru dans CNN il y a à peine quelques heures (CNN.com et reteurs ) , ce jeudi 06 juillet 2009.

    L’attaque, coordonnée, sur Twitter a causé la fermeture du site de réseautage social, dit de microbloging, pour au moins deux heures.

    En théorie cette attaque de twitter.com devrait, perturber uniquement les twitteurs.

    Le principale problème, dans cette histoire, est que la panique généralisée a touché essentiellement les faceboukeurs dépendant (remarquons qu’avec l’addiction, il faut faire attention à la coupure brutale et envisager servage lors de toute thérapie …),

    Trois points sont à retenir :

    1. Twitter devient le talon d’Achille du réseautage social : La panique n’a pas touché seulement, les utilisateurs directs de Twitter, mais les utilisateurs des autres sites liés et référent twitter (un nombre croissant d’applications ping Twitter pour des infos). Ce type d‘attaque est accentué par les utilisateurs de twitter eux-mêmes qui en paniquant envoient plus de

    http://lonewolflibrarian.files.wordpress.com/2009/05/twitterverse.jpg

    ( selon Lone Wolf Librarian)

    clip_image002

    2. Un site dépendant des services de twitter, comme FaceBook, doit être conçue en envisageant la vie sans : La place que prend twitter dans le paysage du réseautage social, devient de plus en plus handicapante pour les sites liés, lorsque l’architecte n’a pas envisagé quoi faire lorsque twitter est HS (hors service)

    3. les infrastructures de twitter ont montré leur fragilité, twitter gagnerait à les renforcer en attendant de trouver le bon modèle économique pour les rentabiliser ...

    Cette attaque sur twitter, n’est peut être qu’un exercice militaire, la suite cette été, comme ce qu’a subi l’Estonie, été 2007

    Mais ceci est un autre histoire suivre, …

    pour plus d’info

    http://www.stumbleupon.com/s/#2IQI48/mashable.com/2009/08/06/twitter-outage//

    http://www.stumbleupon.com/s/#2IQI48/mashable.com/2009/08/06/twitter-outage//

    http://edition.cnn.com/2009/TECH/08/06/twitter.attack/index.html

    http://www.reuters.com/article/rbssITServicesConsulting/idUSN0612153720090806

    lundi 3 août 2009

    Groovy & Grails : L’instabilité en vue du coté JRuby, une opportunité de plus pour Groovy & Grails

    Il semble que la chance sourit encore à Groovy & Grails.

    Après le support total de SpringSource, allant jusqu’à l’acquisition, voilà qu’une tempête se profile de coté de son principal conçurent dans le monde Java, le fameux Jruby.

    L’info tombé en ce fin du mois de juillet : les principaux développeurs derrière le projet JRuby ont quitté SUN pour rejoindre la société Engine Yard spécialisée en hébergement Ruby On Rails et se présente comme l'une des plus importantes entreprises de l'écosystème de Ruby on Rails

    Les transfuges ont prétexté de l’incertitude autour du sort du projet JRuby, suite à l’acquisition de SUN par Oracle. Le plus difficile pour un Techos c’est l’absence de décision : « Supporte » ou « ne supporte pas » : or Oracle excelle dans l’art de cacher les intentions… , après tout on décidera dans quelques mois, lorsqu’on aurait ouvert tous les cartons de SUN …

    D’un autre coté, Engine Yard mise sur l'adoption de JRuby par les développeurs Web Java et qui manquait jusque là d'experts dans ses équipes

    Rappelons que Grails, suit le chemin tracé par Rails & Rubby "coding by convention", mais en se basant sur Groovy, le langage dynamique de référence du monde Java.

    En privilégiant le concept de « Convention not Configuration », Grails cherche à simplifier le développement des applications Web.

    De plus, la capacité d’heberger Garils & Groovy sur le Google AppEngine, leur ouvre de nouvelles perspectives et met en danger les hébergeurs web en générale et Engine Yard en particulier.

    Mais, souhaitons que le projet JRubby puisse continuer à avance, la concurrence stimule, et la compétition génère de l’innovation. Et surtout espérerons que la prochaine version de JRuby (1.4) soit livrée à temps : en Septembre.

    Finalement, ne pas oublier que la concurrence réelle pour Grails reste l’écosystème Rubby on Rails, qui lui continue son chemin, tranquillement …

    Le monde Java a maintenant de bonnes réponses à Ruby en Groovy, Scala, et Clojure et de bonnes réponses à Rails dans Grails...

    Mais ceci est un autre sujet..

    ---------------------------------

    source :http://www.computerworld.com/s/article/9135958/Sun_s_JRuby_team_jumps_ship_to_Engine_Yard


    -----------------

    autres sujets : Grails




    Architecte SOA & Professionnel Open Source Headline Animator

     
    Khaled BEN DRISS
    Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.