fév 07 2008

Workflow et Gestion de flux

Tag: Analyse, Architecture, Développement, Idées, Springkarl verger @ 21:54

L’objectif est d’appréhender les concepts du workflow, pour ce faire nous allons implémenter un petit projet de test permettant de comprendre les principes.

Pour le projet nous nous appuieront sur les outils suivants: spring, hibernate,jdom et groovy et comme d’habitude le projet maven sera téléchargeable à la fin du tutoriel.

wikipedia : Un workflow est un flux d’informations au sein d’une organisation, comme par exemple la transmission automatique de documents entre des personnes.

On appelle « workflow » (traduisez littéralement « flux de travail ») la modélisation et la gestion informatique de l’ensemble des tâches à accomplir et des différents acteurs impliqués dans la réalisation d’un processus métier (aussi appelé processus opérationnel ou bien procédure d’entreprise). Le terme de « workflow » pourrait donc être traduit en français par « gestion électronique des processus métier ».

De façon plus pratique, le workflow décrit le circuit de validation, les tâches à accomplir entre les différents acteurs d’un processus, les délais, les modes de validation, et fournit à chacun des acteurs les informations nécessaires pour la réalisation de sa tâche.

Le moteur de workflow est le dispositif logiciel permettant d’exécuter une ou plusieurs définitions de workflow. Par abus de langage, on peut appeler ce dispositif logiciel tout simplement “workflow”.

Présentation du Projet

Pour notre projet de test nous allons aborder les concepts suivants : tache,fonction,transition,context d’execution. Je met de côté volontairement la partie gestion des droits et habilitations des utilisateurs pour éviter de complexifier le model.

exemple de flux

flux.jpg

le workflow est composé de tache et de transition, un contexte d’exécution est transporté tout au long du processus, ce dernier peut être modifié par les taches, et les transitions pourront accéder à ce contexte, chaque transition est évalué et permet de définir le chemin a suivre dans le flux.

Continue reading “Workflow et Gestion de flux”


jan 12 2008

SPRING JMS ActiveMQ

Tag: Développement, J2EE, Springkarl verger @ 17:36

L’objectif de cet article est de vous permettre d’appréhender les bases de la mise en place de JMS avec SPRING et activeMQ.

 

Le projet de test que vous allez réaliser est téléchargeable à la fin de cet article, ce projet un projet maven donc pour le build : mvn package .Maven s’occupera de télécharger les dépendances pour vous .

 

Spring est le meta-framework du moment, il intègre les concepts comme AOP IOC MVC et fourni un nombre considérable d’helpers pour l’intégrations de technologies, nous l’utiliserons afin de bénéficier des templates jms qu’il fournis.

 

Java Message Service (JMS) permet d’envoyer et de recevoir des messages de manière asynchrone entre applications ou composants Java. Un client peut également recevoir des messages de façon synchrone dans le mode de communication point à point.

 

ActiveMQ d’Apache est le plus populaire et puissant des Message Broker open source, il permet une intégration aisé et multi languages.

 

  1. Installation activeMQ

    tout d’abord vous devez télécharger activeMQ ici , une fois cela fait vous le décompacter

    tar zxvf apache-activemq-5.0.0.tar.gz

    puis vous vous positionner dans le répertoire correspondant

    cd apache-activemq-5.0.0/bin

et enfin vous lancer le script d’execution

activemq > activemq-log.txt

a ce stade activeMQ est prêt à etre utilisé. Vous pouvez vous connecter à la console pour vérifier

à l’adresse http://0.0.0.0:8161/admin/

activeMQ est désormais accessible sur le port 61616 pour vos applications java.

Continue reading “SPRING JMS ActiveMQ”


jan 08 2008

Hibernate Search Lucene Spring Maven

Tag: Architecture, Développement, J2EE, Springkarl verger @ 23:21

L’objectif de cet article est de vous permettre d’appréhender la mise en place d’une indexation avec le moteur Lucene en s’aidant des frameworks java du moment sur le marché à savoir Hibernate et Spring.

Le projet de test que vous allez réaliser est téléchargeable à la fin de cet article, ce projet un projet maven donc pour le build : mvn package .Maven s’occupera de télécharger les dépendances pour vous .

Hibernate Search vous permet de profiter du moteur d’indexation Lucene pour indexer les objets de votre domaine métiers.

Lucene est basé sur une technologie d’indexation des contenus textuels similaire à Google ou d’autres moteurs de recherche. D’ailleurs, un sous-projet de Lucene, Nutch, offre les fonctionnalités de Google et permet de faire de la recherche sur des millions de pages web.

Lucene offre des performances inégalées et est scalable quelle que soit la volumétrie en terme de contenu ou de nombre de recherches.

Spring quand à lui est le meta-framework du moment, il intègre les concepts comme AOP IOC MVC et fourni un nombre considérable d’helpers pour l’intégrations de technologies, nous l’utiliserons dans notre projet pour manager hibernate et les transactions

L’intégration d’hibernate search est assez aisé et ce fait par le biais des annotations et les events hibernate.

Les annotations permettent de définir les propriétés que vous voulez indexer ainsi que leur stratégies d’indexations.

Les events s’occupent pour vous de synchroniser les indexes Lucene avec vos Entités hibernate

 

L'image “http://www.hibernate.org/hib_docs/search/reference/en/shared/images/lucene-backend.png” ne peut être affichée car elle contient des erreurs.

voilà après ce rapide tour d’horizon, nous allons mettre en place hibernate search pour un projet de test

Continue reading “Hibernate Search Lucene Spring Maven”


jan 05 2008

Transactions et SPRING Framework

Tag: Architecture, Développement, J2EE, Springkarl verger @ 23:20

L’objectif de cet article est de faire quelques rappels interressants sur les transactions et leur comportements avec SPRING.

Définition d’une Transaction : Une transaction regroupe une série d’opérations dans un tout indivisible. La transaction n’est validé que si chacune des taches unitaires qu’elle regroupent se sont déroulées correctement (COMMIT). Dans le cas contraire (si une des taches unitaires échoue) l’ensemble des données traitées retrouvent leur état initial(ROLBACK).

Une transaction doit respecter les quatre contraintes suivantes dites ACID :

  • Atomicité : une transaction doit s’effectuer en tout ou rien ;

  • Cohérence : la cohérence des données doit être assurée dans tous les cas, même dans les cas d’erreur où le système doit revenir au précédent état cohérent ;

  • Isolation : la transaction va travailler dans un mode isolé où elle seule peut voir les données qu’elle est en train de modifier, cela en attente d’un nouveau point de synchronisation ; le système garantit aux autres transactions, exécutées en parallèle sur le même système, une visibilité sur les données antérieures ;

  • Durabilité : lorsque la transaction est achevée, le système est dans un état stable durable, soit à l’issu d’une modification transactionnelle réussie, soit à l’issue d’un échec qui se solde par le retour à l’état stable antérieur.

Overview d’une transaction applicative

les transactions spring permettent d’encapsuler plusieurs appels de méthodes sur différentes couches et d’en assurer le caractère ACID.

overview-Transaction

Continue reading “Transactions et SPRING Framework”


déc 29 2007

Présentation de TerraCotta

Tag: Architecturekarl verger @ 21:00

Les solutions classiques de clustering fonctionnent pour les applications JEE soit en s’appuyant sur JMS pour synchroniser différentes instances d’une application tournant sur différentes JVM ou sur des solutions de cache distribué du type JCache (JSR 107). De façon générale, ces solutions passent par la sérialisation.

L’architecture de TerraCotta est pensé pour minimiser le dialogue réseaux, garantir qu’il n’y est pas de perte d’objet, fournir un control maximum, le tout en assurant d’obtenir une haute disponibilité et d’éviter les SPOF (Single Point Of Failure).

Terracotta propose une approche différente, le clustering est proposé au niveau JVM directement.

terracotta_architecture

Continue reading “Présentation de TerraCotta”