samedi 28 février 2009

BPM & Moteur de workflow : l’offre open source

Un processus est un enchaînement ordonné (totalement ou non) de réalisation d'activités de l'entreprise qui : transforment des éléments d'entrée en éléments de sortie en vue de réaliser un objectif dans le cadre d'une stratégie.

Qu'est ce qu'un processus métier ?

Processus mis en œuvre au sein d'une organisation et dont les sorties répondent aux besoins d'un
client interne ou externe à cette organisation.

Un Processus métier

  1. Possède un objectif
  2. Possède des entrées spécifiques
  3. Possède des sorties spécifiques
  4. Utilise des ressources
  5. Possède un ensemble d'activités réalisées dans un certain ordre
  6. Peut concerner plusieurs unités organisationnelles
  7. Crée une valeur ajoutée pour un participant (Le participant peut être interne ou externe).

On constate aujourd'hui une convergence des solutions de workflow et de gestion des processus métier (BPM Business Process Management).

Qu'est ce qu'un moteur de workflow ?

D'un point de vue « informatique », la gestion électronique des processus métier (workflow ) des processus est la gestion des flux d'informations au sein d'une organisation, comme par exemple la transmission automatique de documents entre des personnes.

Ainsi, 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.

Pour un processus de publication en ligne par exemple, il s'agit de la modélisation des tâches de l'ensemble de la chaîne éditoriale.

Il permet généralement un suivi et identifie les acteurs en précisant leur rôle et la manière de le remplir au mieux.

Le moteur de workflow est le dispositif logiciel permettant d'exécuter une ou plusieurs instances de workflow. Par abus de langage, on peut appeler ce dispositif logiciel tout simplement "workflow".

Un tel système est capable de charger en mémoire une ou plusieurs définitions de processus de workflow. Sur demande de l'utilisateur, un processus peut être démarré (instancié). Le système va suivre le cheminement décrit par le processus et présenter la ou les activités à réaliser aux différents acteurs du workflow.

Les éléments de base d'un moteur de workflow ?

Les solutions Workflow définissent

  • un model pour spécifier les machines à état (Graphe)
  • Un modèle d'exécution

Les modèles peuvent être différents, Mais, ils sont tous basés sur la notion de graphe orienté (directed graph) et définissent ainsi un GOP (Graph Oriented Programming)

Des moteurs de workflow (BPM) open source ?

Face aux solutions propriétaires de BPM et de workflow (Oracle, IBM, BEA, W4, etc.), l'open source présente des alternatives très attractives, dont les principales sont (liste complète en annexe):

Moteur de workflow open source

Jbpm

http://www.jboss.org/jbossjbpm/

Bonita

http://wiki.bonita.objectweb.org/xwiki/bin/view/Main/WebHome

enhydra-shark

http://www.enhydra.org/workflow/shark/index.html


OSWorkflow

http://www.opensymphony.com/osworkflow/

http://wfmopen.sourceforge.net/

Agila

http://incubator.apache.org/projects/agila/index.html

OFBiz : The Open For Business Project: Workflow Engine Guide

http://ofbiz.apache.org/docs/workflow.html

XFLOW Process Management System

http://xflow.sourceforge.net/

A noter que les acteurs du monde open source (JBoss, OW2 ..) collaborent pour concevoir une approche innovante de virtualisation BPM, autour du concept de PVM (Process Virtual Machine). Cette approche est en avance par rapport aux approches classiques des moteurs de workflow propriétaires.

Le moteur BPM / workflow de Jboss (RedHat) JBPM

Deux parties :

jBPM un moteur de workflow

JBoss jBPM est un système de gestion de workflow écrit en Java, basé sur la notion de GOP (Graph Oriented Programming) un modèle de programmation orienté processus.

Il allie la définition graphique du processus (traduite ensuite en XML) et la programmation Java pour permettre de structurer l'application métier soutenat le processu cible. Développeurs et responsables métier peuvent se référer aux mêmes graphes, ce qui facilite l'implémentation des processus requis par les uns et concrétisés par les autres.

IDE de modélisation intégré à Eclipse

En plus du moteur de workflow, jBPM fournit un outil d'assistance au développement basé sur Eclipse: permettant de modéliser graphiquement les différentes activités qui composent le processus.

Installation

Les étapes :

  • Installer JAVA.
  • Installer le moteur JBoss jBPM et le serveur d'application JBoss (ou un autre serveur d'application Java EE).
  • Installer le designer de processus.

la suite ..... "
Graph Oriented Programming (GOP) avec JBPM"

pour aller plus loin :

http://fr.wikipedia.org/wiki/Moteur_de_workflow

http://java-source.net/open-source/workflow-engines

http://www.novaforge.org/novaforge/fr-selectionner/bmp

http://www.jboss.org/jbossjbpm/jbpm_documentation/


autres 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. La version 4 de JBPM prend le virage de BPMN

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


mercredi 25 février 2009

Le master data management possède, enfin une offre open source

Où va s'arrêter la montée de l'open source vers les couches métiers du SI?

Resté longtemps la dans le giron des offres propriétaires, le MDM (Master Data Management), s'est vue « attaquer » par la première offre open source : Sun Master Data Management (MDM) Suite (http://www.sun.com/software/javaenterprisesystem/javacaps/mdm_suite.jsp).

Une donnée de référence (Master Data) est une donnée fondamentale qui décrit un domaine de l'entreprise : clients, produits, fournisseurs, comptes, sites et employés.

Le MDM (Gestion des données de référence ) est une discipline de gestion des données de référence afin que cette donnée reste unique au sein de l'entreprise tout en étant partagé par plusieurs applications ou services métiers


Cette offre MDM de SUN, fait partie du produit JAVA CAPS destiné à créer une plateforme SOA open source, signé du créateur de JAVA.

Venant de SUN, cette attaque n'est pas le signale d'une déferlante d'offre open source MDM: SUN a décidé de tout mettre en open source, même les solutions qu'elle trouvé dans les cartons des différentes acquisitions, et ce produit se trouve là presque par hasard (même si on dit chez SUN que MDM suite est un développement interne …)

Bref, il va falloir tester cette offre pour la comparer à l'écosystème des offres propriétaires (au sens code fermé) existantes :

  1. EBX.Platform (http://www.orchestranetworks.com)
  2. Kalido Master Data Management Software (http://www.kalido.com/products-for-it-master-data-management.htm)
  3. webMethods Master Data Management (de softwareAG) (http://www.softwareag.com/Corporate/products/wm/integration/master_dm/default.asp)
  4. Oracle Master Data Management Suite (http://www.oracle.com/master-data-management/index.html) qui revendique plus de 800 clients
  5. IBM® InfoSphere™ Master Data Management (http://www-01.ibm.com/software/data/infosphere/mdm_server/) qui revendique plus de 800 services métiers out-of-the-box pour gérer des données de références (lecture/mise à jour)
  6. TIBCO Collaborative Information Manager (http://www.tibco.com/software/master_data_management/collaborative_information_manager/default.jsp)
  7. SAP NetWeaver MASTER DATA MANAGEMENT (http://www.sap.com/france/solutions/netweaver/components/masterdata/index.epx)
  8. et toute nouvelle offre de iWay software la iWay Master Data CenterMDM de http://www.iwaysoftware.com/products/iway_master_data_center.html

Pour certains, « l'outil est là », cherchons le besoin ? »

Peut être l'intérêt porté à cette discipline MDM sera accentué grâce à la disponibilité de cette offre open source.


mercredi 18 février 2009

Paramétrer CronTrigger de Quartz : un jeu d’enfant pour un connaisseur du Cron d’UNIX

Quartz utilise des "expressions cron" pour calculer le moment exact du lancement d'un JOB (par exemple le 3 de chaque mois à 21H10, lancer le batch de remboursement).

Cron expressions est très puissants, mais peut être assez déroutant, pour les débutants.

En fait, il suffit de connaitre le choix fait par Quartz, pour que tout devienne simple.

La classe CronTrigger deQuartz a été aligné sur le format des expressions CRON d'UNIX, qui est un outil puissant et éprouvé de planification soius UNIX.

C'est la classe org.quartz.CronExpression qui implémente le détail (le détail se trouve dans la documentation JavaDoc de CronExpression)


Ce tutoriel a pour but de prendre une partie de mystère de la création d'un cron expression

Avant de commencer, je présente ici quelques lignes de code java qui permettent de tester une expresion CRON avant de la lancer en production


public
void imprimeCronExpression(String expression) throws Exception{

CronExpression cronExpression= null;



cronExpression = new CronExpression(expression);

Date fire1 = cronExpression.getNextValidTimeAfter(new Date());

System.out.println(d1);

}


Si on fixe l'expression = "0 15 21 3 * ?"

Le résultat, de l'appel de la méthode imprimeCronExpression ("0 15 21 3 * ?")

Tue Mar 03 21:15:00 CET 2009 (le 03 du mois à 21:15:00)


Une expression Cron est une chaine de caractères composée de 7 champs (dont les 6 premiers on obligatoires)


champ

Valeurs autorisés

Caractère spécial autorisé

Secondes

0-59

, - * /

Minutes

0-59

, - * /

Heures

0-23

, - * /

Jour du mois

1-31

, - * ? / L W

Mois

1-12 ou JAN-DEC

, - * /

Jour de la semaine

1-7 ou SUN-SAT

, - * ? / L #

année

vide, 1970-2099

, - * /


La liste de Caractères spéciaux autorisés

*

( "toutes les valeurs») - utilisée pour sélectionner toutes les valeurs dans un champ. Par exemple, "*" dans le domaine minutes "chaque minute".

?

( "pas de valeur") - utile si vous avez besoin de préciser quelque chose dans l'un des deux domaines (Jour du mois ou Jour de la semaine) dans lesquels les caractères sont autorisés, mais pas l'autre.

Par exemple, si je veux déclencher un job le 3èmejour du mois, indépendamment du jour la semaine "0 15 21 8 * ?".


Mettre l'expression "0 15 21 8 * *", déclemnche une Exception

java.lang.UnsupportedOperationException: Support for specifying both a day-of-week AND a day-of-month parameter is not implemented.

-

utilisé pour indiquer une fourchette. Par exemple, "10-12" à l'heure domaine signifie "l'heure 10, 11 et 12".

,

utilisés pour spécifier des valeurs. Par exemple, « MON,WED,FRI" signifie, "le jour lundi,mercredi et vendredi».

/

utilisé pour spécifier les incréments. Par exemple

-- "0 / 15" dans le champ des secondes signifie «la seconde 0, 15, 30 et 45"

--"5 / 15" dans le champ des secondes signifie «la seconde 5, 20, 35 et 50".

Vous pouvez aussi spécifier "/" après le caractère''-''dans ce cas est équivalent à avoir «0» avant le «/»." 2 / 3 " dans le chanmp Jour du mois, "lancer le job tous les 3 jours à partir du deuxième jour du mois".

L

( "dernier")

- la valeur "L" dans Jour de la semaine, il signifie simplement "7" ou "SAT".

- la valeur "L" dans « Jour du mois », signifie "le dernier jour du mois", donc 31 jours de Janvier, Février pour 28 jours sur les années non bissextiles. Mais si elle est utilisée après une autre valeur, il signifie "le xxx dernier jour du mois" - par exemple "6L" signifie "le dernier vendredi du mois".

W

( «semaine») - utilisée pour spécifier le jour de la semaine (lundi-vendredi) le plus proche de la journée.

Par exemple, "15W": "le plus proche jour de la semaine du 15 du mois". Ainsi, si le 15 est un samedi, le job sera lancé, le vendredi 14, mais si le 15 est un dimanche, le le job sera lancé le lundi 16. Si le 15 est un mardi, le job sera lancé, le mardi 15.

Cas exceptionnel : "1W" , si le 1er est un samedi, le job sera lancé le lundi 3 du mois, car il doit être lancé durant le mois.

Autre cas « LW » : le dernier jour de la semaine du mois

#

Signifie le Nième XXX jour du mois.

"6#3" "le 3iemme vendredi du mois" (jour 6 = Friday).

"2#1" = le premier Lundi du mois

"4#5" = le 5iemme Mercredi du mois (si le mois ne comporte pas 5 mercredi, le job ne sera pas lancé


Le reste c'est un jeu d'enfant (javadoc de CronExpression quartz sur le sujet)

jeudi 12 février 2009

Microsoft dévoile un peu plus Azure Services Platform

Azure Services Platform, qui est considérée comme l'annonce la plus importante faite par Microsoft depuis celle de sa stratégie Internet en 1995.
Azure permettra de démocratiser le Cloud Computing : les développeurs utilisant l'IDE Visual Studio vont pouvoir déployer des solutions pour le Cloud, très simplement.

la bataille frontale avec Google sur le sujet à débutée.

à suivre ...

samedi 7 février 2009

Jahia 6 revient dans la course des EMS / CMS

A partir de la version 6.0, Jahia a migré vers GWT (Google Web Toolkit) le fameux framework AJAX de google (c'est la partie UI components dans le schéma d'architecture).

Jahia est connu en Tunisiepour être la plateforme de base, depuis 2005, de l'un des sites les plus visité en Tunisie : le site du premier opérateur de téléphonie mobile privée, le fameux Tunisiana.

Autres nouveautés de Jahia 6 : il embarque Apache Plutot 2.0, comme moteur de Portlets (JSR 168 et JSR 286) et de moteur de Mashup


Est-ce que ces choix permettront à Jahia de revenir dans la course des EMS / CMS,

Notons que ce monde des « CMS/plateforme collaboratif / Portail » vire vers les plateformes de vitalisation de poste de travail à l'instar de ExoPlateform,



jeudi 5 février 2009

Must Have : The Definitive Guide to Spring Web Services

Vous êtes sur un méga projet SOA, ou simplement sur un petit projet de création d'un webservice,

Vous avez adopté une approche contract-first, vous avez entendu parler de Spring ou bien vous êtes un expert de Spring Ioc,

Vous avez entendu parler du concept REST et vous penser le mettre en ouvre dans l'un de vos projets,

ce livre, est alors fait pour vous, c'est un « Must Have »,

Le titre du livre : The Definitive Guide to Spring Web Services

Ses auteurs Tareq Abed Rabbo (Tunisiana) & Russ Miles (SpringSource)

Dans ce livre, Tareq Abderabbo a fait la synthèse de plusieurs années de mise en ouvre, réussie, de Spring Web service et des autres Framework annexes,

un retour d'expérience très attendu, et un lien avec OSGI très apprécie

Etudier cet ouvrage sera une bonne opportunité d'avoir une vision plus globale des capacités d'un conteneur léger comme Spring et de tout ce qui l'entoure.

http://www.apress.com/book/view/9781430219934

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.