Une statistique économique stipule que la mortalité enfantine (moins de 5 ans d’existence) des entreprises est à 80 %.
Or JBPM a plus de 5 ans, il a passé l’âge difficile de l’enfance, il est très populaire, et son père d’adoption s’appelle RedHat (prioritaire de Jboss) : C’est pour cette raison, qu’il se reconstruit, et se permet de prendre le risque de tout changer : modèle de programmation et schéma de base de données.
Son objectif: simplifier le modèle de programmation, pour augmenter le nombre d’adoption.
Rappelons que JBPM est le moteur de workflow (il veut qu’on dise BPM) le plus populaire de la communauté java. Il est embarqué, ou utilisé, dans plusieurs produit :; de Mule à Intalio en passant par Liferay, Alfresco et le fameux Exo Platform (dont le portail est devenu, depuis peu, Jboss Exo Portal, avec un grand avenir en perspective).
Notons que l’équipe d’Exo Platform a fait le choix de JBPM, comme moteur de workflow longtemps avant de fusionner avec Jboss (bien que le consortium ObjectWeb, OW2, dont Exo fait partie, en possède un : Bonita).
Jbpm 4 arrive pour renforcer le basculement vers le PVM (Processs Virtual Machine), concept un peu flou, mais qui est promu par RedHat.
Modèle de programmation remanié
Cette version 4 de JBPM est une réécriture complète de la version 3 : tout en conservant les principes de bases : 100% java, notion de processus, stockage des instances et des définitions des processus ans la base de données, basé sur Hibernate, assisté par un IDE.
Beaucoup d’utilisateurs de Jbpm 3 seront d'accord avec moi que certaines API étaient difficile à certains endroits et qu’il fallait écrire de complexes requêtes Hibernate conduisant à plusieurs problèmes:
Le mélange de concepts dans les API de JBPM3 faisait qu’on trouvait des méthodes éparpillés dans les classes JbpmContext, GraphSession ou TaskManagement.
L’équipe JBPM 4 a rationalisé cela autour de la l’API ProcessEngine.
N’importe quelle utilisation de JBPM commence par acquérir les services souhaités à partir de ProcessEngine : le nœud centrale du BPM selon RedHat.
Ensuite on utilise l’API selon le besoin
|
Deux autres API ont fait leurs apparitions :
Schéma de la base de données simplifié
le schéma de la base de donnée de JBPM 4 est simplifié par rapport à la version 3.x:
Et le mapping Hibernate est le suivant
<mapping resource="jbpm.repository.hbm.xml" />
<mapping resource="jbpm.execution.hbm.xml" />
<mapping resource="jbpm.history.hbm.xml" />
<mapping resource="jbpm.task.hbm.xml" />
<mapping resource="jbpm.identity.hbm.xml" />
Exemple simple : exécuter un processus JBPM4
Un premier test de la nouvelle mouture de JBPM : la version 4 de JBPM
Il s’agit d’un simple exemple de processus contenant deux étapes : une permettant d’afficher un message et l’autre de lancer un backup
JBPM 4 utilise la notation BPMN 2.0
La version XML de cette définition du processus :
<?xml version="1.0" encoding="UTF-8"?>
<process name="seconde_hello_de_OXIA" xmlns="http://jbpm.org/4.0/jpdl">
<start g="24,72,80,40">
<transition to="afficherMessage"/>
</start>
<java class="com.oxia.att.jbpm4.exemple.AfficherMessage" g="120,68,138,56" method="afficherMessage" name="afficherMessage">
<transition to="lancerBackup"/>
</java>
<end g="165,267,80,40" name="fin"/>
<state name="lancerBackup" g="143,147,92,52">
<transition name="to fin" to="fin" g="-30,-18"/>
</state>
</process>
La classe java de traitement de l’affichage
package com.oxia.att.jbpm4.exemple;
public class AfficherMessage {
public void afficherMessage() {
System.out.println("****** début de passage par un Etat");
System.out.println(" Bonjour de OXIA!");
System.out.println("****** fin de passage par un Etat ");
}
}
Pour tester ce processus dans un projet Java (simple)
public static void main(String[] args) {
// obtenir une instance de ProcessEngine avec la
// configuration souhaitée oxia.att.jbpm.cfg.xml
ProcessEngine processEngine = new Configuration().setResource("oxia.att.jbpm.cfg.xml").buildProcessEngine();
// obtenir une instance de RepositoryService
RepositoryService repositoryService = processEngine.getRepositoryService();
// Deployer la définition du processus first_Jbpm_Sample.jpdl.xml
repositoryService.createDeployment().addResourceFromClasspath("com/oxia/att/jbpm4/exemple/first_Jbpm_Sample.jpdl.xml").deploy();
// obtenir une instance de ExecutionService
ExecutionService executionService = processEngine.getExecutionService();
ProcessInstance processinstance = executionService.startProcessInstanceByKey("hello_de_OXIA");
System.out.println( processinstance.getId());
System.out.println( processinstance.getState());
}
Le résultat
****** début de passage par un Etat
Bonjour de OXIA!
****** fin de passage par un Etat
hello_de_OXIA.6
ended
Conclusion
RedHat a restructuré JBPM 4 autour d’une API claire et un schéma de base de données efficace.
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.
Quelques reproches pour le moment, l’obligation d’aller dans le repository SVN pour constituer les war de la console et la qualité médiocre de l’IDE (pas possible de créer un projet JBPM 4, amis seulement type 3)
Mais ceci est un autre sujet
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
5 commentaires :
Bonjour,
Juste preciser que le choix par defaut d'eXo platform comme solution BPM est Bonita (http://www.bonitasoft.com) est pas jbpm !
BTW, Bonita v4 a etait la premiere solution BPM Open Source basée sur la technologie PVM. Bonita v4 est disponible en version finale depuis septembre 2008
Cdt,
Miguel
article découvert dans
http://www.jorambarrez.be/blog/2009/08/14/interesting-blog-by-khaled-ben-driss-french/
pouvez vous me dire comment on peut tourner ce code sur jbmp
I've been surfing on-line more than three hours lately, but I never found any attention-grabbing article like yours. It's
lovely price enough for me. In my view, if all website owners and
bloggers made excellent content material as you probably did,
the internet will likely be much more useful than ever before.
My web site ... marketing
I'll right away snatch your rss feed as I can not to find your email subscription hyperlink or newsletter service. Do you've any?
Please let me know in order that I may just subscribe.
Thanks.
Also see my page > washington state unemployment website
Enregistrer un commentaire