Beruflich Dokumente
Kultur Dokumente
Licence
Creative Commons
Contrat Paternit Partage des Conditions Initiales l'Identique
2.0 France
keulkeul.blogspot.com
http://creativecommons.org/licenses/by-sa/2.0/fr
BPEL - M. Baron - Page 2
Plan du cours
Problmatique Prsentation BPEL BPEL par lexemple : HelloWorld BPEL parties statique et dynamique Chorgraphie / Orchestration Structure dun BPEL
keulkeul.blogspot.com
Logiciels utiliss
Nav. Web, Netbeans 6.7.1, Glassfish 2.1.1 (OpenESB 2.2), SOAP UI
keulkeul.blogspot.com
Pr-requis
Ingnierie des donnes Schema XML, WSDL, SOAP
Ceci est une astuce
Remerciements
TODO
Articles
docs.oasis-open.org/wsbpel/2.0/Primer/wsbpel-v2.0-Primer.pdf bpelsource.com www.oracle.com/technology/pub/articles/matjaz_bpel2.html
keulkeul.blogspot.com
Cours
dlc.sun.com/pdf/820-6323/820-6323.pdf www.javapassion.com/soaprogramming/BPELOverview.pdf developers.sun.com/docs/javacaps/jbi/capsbpeldeseng.cnfg_bpel-se-blueprints_r.html netbeans.org/kb/61/soa/understand-trs.html
BPEL - M. Baron - Page 5
Problmatique : Scnario
1
keulkeul.blogspot.com
Problmatique : Scnario Solution 1 : lutilisateur doit se rendre sur chaque site Web des administrations
Se rendre sur le site de lcole 1 Client SI de lEcole Inscription Payement Gnrer numro tudiant (INE)
SI BUS
Problmatique : Scnario Solution 2 : lutilisateur nutilise que le site Web de lcole qui fournit un Workflow complet
1 Se rendre sur le site de lcole Inscription Payement Gnrer numro tudiant
Client SI de lEcole
Le site Web de lcole est adapte pour couvrir les besoins mtiers des sous SI keulkeul.blogspot.com
Moteur Orchestration
SI BUS
PHP
Langages de processus mtiers (Workflow) Diffrents langages permettent de modliser les processus mtiers
01/2001 03/2001 06/2001 03/2002 06/2002 08/2002 08/2002 04/2007
XLang
WSFL
ebXML
WSCL
BPML
WSCI
BPEL 1.0
BPEL 2.0
Prsentation : WS-BPEL WS-BPEL (ou BPEL en abrg) est lacronyme de Business Process Execution Language Son origine est issu des langages WSFL et XLANG Standard OASIS en V2.0 Bas sur les standards du Services Web tendus (WSDL) Syntaxe base sur XML
keulkeul.blogspot.com
Langage graphique Fournit les oprateurs classiques dun langage de programmation (squence, parallle, boucle, ) Gestion des erreurs
BPEL - M. Baron - Page 12
A noter que les solutions BPEL proposes par les diteurs de logiciels fournissent la fois lditeur et le serveur Les diteurs graphiques sont gnralement intgrables dans les environnements de dveloppement (Eclipse, Netbeans,
keulkeul.blogspot.com
Visual Studio, ) Dans ce cours, nous utiliserons une solution libre base sur le moteur OpenESB et le module graphique fourni par Netbeans
BPEL - M. Baron - Page 13
Pour faire du BPEL : Outils des solutions OpenESB (via Glassfish 2.1) et Netbeans 6.7.1
https://open-esb.dev.java.net/
Orchestra
http://orchestra.ow2.org
IBM (Weblogic + Workshop) BPEL for Windows Workflow Foundation (Visual Studio et Biztalk) BPEL - M. Baron - Page
14
BPEL par lexemple : HelloWorld Pour introduire la prsentation du langage BPEL nous construisons un processus HelloWorld Le processus BPEL est dcrit par le Service Web suivant
Une opration makeHello qui prend en paramtre une chane de caractre et retourne une chane de caractre
BPEL par lexemple : HelloWorld Cration dun nouveau projet BPEL (File -> New Project) partir des exemples (Samples)
keulkeul.blogspot.com
BPEL par lexemple : HelloWorld Prciser les caractristiques physiques du projet BPEL
keulkeul.blogspot.com
BPEL par lexemple : HelloWorld Gnration des fichiers et initialisation des outils BPEL
keulkeul.blogspot.com
Editeur graphique
keulkeul.blogspot.com
<sequence> <receive name="start" partnerLink="Synchronous" operation="operation1" portType="ns1:portType1" variable="inputVar" createInstance="yes"> </receive> <assign name="Assign1"> <copy> <from>$inputVar.inputType/ns2:paramA</from> <to>$outputVar.resultType/ns2:paramA</to> </copy> </assign> <reply name="end" partnerLink="Synchronous" operation="operation1" portType="ns1:portType1" variable="outputVar"> </reply> </sequence> </process>
Synchronous.bpel du projet
HelloWorldBPEL
BPEL - M. Baron - Page 19
BPEL par lexemple : HelloWorld Utilisation du projet HelloWorldBPELApplication pour le dploiement (type Composite Application)
Tous les projets BPEL peuvent tre dploys comme module JBI
keulkeul.blogspot.com
<SOAP-ENV:Envelope ...> <SOAP-ENV:Header/> <SOAP-ENV:Body> <typeA xmlns="http://xml.netbeans.org/schema/Synchronous"> <paramA>Mickael BARON HelloWorld</paramA> </typeA> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
BPEL par lexemple : HelloWorld Le processus BPEL est dcrit par un WSDL et est accessible par un client Service Web (voir cours JAX-WS)
keulkeul.blogspot.com
BPEL : partie statique Comme vu prcdemment la partie statique dun processus est dfinie par un document WSDL Le document WSDL permet de dcrire
Les points dentres et de sorties du processus Dfinir les types des donnes (XML Schema) et les messages utiliss pour dcrire ltat du processus Les oprations qui sont autorises et qui permettent dinvoquer le processus
keulkeul.blogspot.com
Par consquent tous les concepts introduits dans les prcdents cours WSDL, SOAP et JAX-WS sont r-utilisables
Cration dun client du processus partir du WSDL (ws-import) Envoie de messages SOAP
BPEL - M. Baron - Page 23
BPEL : partie dynamique La partie dynamique du processus est dcrite par le fichier BPEL Ce document BPEL permet de dcrire
Lordonnancement des diffrentes sous tapes du processus Linvocation vers les oprations des Services Web partenaires La logique et ltat du processus
WSDL WSDL
BPEL
SOAP
Serveur Web
keulkeul.blogspot.com
Client
SOAP
Serveur Web BPEL
WSDL SOAP
Serveur Web BPEL
Moteur Orchestration
Orchestration
keulkeul.blogspot.com
Vue locale un processus Description de la logique dexcution des services partenaires et des messages changs BPEL sinscrit dans la description de lorchestration BPEL
- M. Baron - Page 25
Services A
Services B
keulkeul.blogspot.com
Envoyer l'OA
OA Request
Recevoir OA
keulkeul.blogspot.com
Recevoir lOA
Services A
OA Response
Envoyer lOA
Services B
Chorgraphie : Description des messages changs entre les participants et leurs ordres
Traitement amont
Envoyer l'OA
OA Request
keulkeul.blogspot.com
Traitement aval
Recevoir lOA
Processus A
OA Response
Structure dun fichier BPEL <process> (un seul autoris) <partnerLinks> (un seul autoris)
Dfinition et rles des processus participants
Structure dun projet BPEL Un projet BPEL se compose de trois catgories de fichiers
Les fichiers de description des processus (*.bpel) Les fichiers de description des Services Web (*.wsdl et *.xsd) Les fichiers de dploiement (*.xml) dont la structure dpend fortement du moteur BPEL utilis
*.bpel
*.wsdl *.xsd
keulkeul.blogspot.com
deploy.xml
Apache ODE
ou catalog.xml
META-INF
jbi.xml
OpenESB
BPEL par lexemple : HelloWorld 2 Nous tendons le processus HelloWorld prcdent en ajoutant une invocation un Service Web externe Ce processus BPEL est dcrit par le Service Web suivant
Une opration makeHello qui prend en paramtre une chane de caractres et retourne une chane de caractres
Rcupration du message envoy par le client (chane de caractres) Invocation dun Service Web externe (partenaire) avec comme paramtre la chane de caractres reue par le processus Retourner au client le message rcupr de linvocation prcdente
BPEL - M. Baron - Page 31
Partner Links Pour rappel, du point de vue des clients le processus BPEL est un Service Web Deux faons dinteragir entre un processus BPEL et des Web Services externes
Un processus BPEL invoque des oprations issues dautres Web Services (dit Partenaires) : Lien de partenaire (PartenerLink) de type invocation
keulkeul.blogspot.com
Un processus BPEL reoit des invocations issues de clients : Lien de partenaire (PartenerLink) de type client
Pour rsumer, un lien de partenaire dsigne les relations entre des partenaires / clients et le processus BPEL - Page BPEL - M. Baron
32
Partner Links Un lien de partenaire est reprsent dans le fichier BPEL par un lment partnerLink Il contient les attributs suivants
name : nom donn au partnerLink myRole : spcifie le rle du processus BPEL partnerRole : spcifie le rle du partenaire ou du client partnerLinkType : type de partnerLink dfini dans la description WSDL
Si lattribut myRole est uniquement utilis (sans partnerRole) seules les interactions vers le processus sont autorises
keulkeul.blogspot.com
Si lattribut partnerRole est uniquement utilis (sans myRole) seules les interactions vers les partenaires et les clients sont autoriss Les deux rles peuvent tre utiliss en mme temps - Page BPEL - M. Baron
33
Client
Service Web
HelloWorld
keulkeul.blogspot.com
keulkeul.blogspot.com
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
BPEL - M. Baron - Page 35
Partner Links Types Un PartnerLinkType dcrit la relation entre deux services en dtaillant le rle que chaque service implmente Chaque rle spcifie un PortType (issu du WSDL) qui doit tre implment par le service qui implmente ce rle
<partnerLink name="PartnerLinkInvocation" partnerLinkType="tns:HelloWorldLinkType" partnerRole="HelloWorldRole"/> ...
keulkeul.blogspot.com
<portType name="HelloWorld"> <operation name="makeHelloWorld"> <input message="tns:makeHelloWorld" /> <output message="tns:makeHelloWorldResponse" /> </operation> <operation name="simpleHelloWorld"> <input message="tns:simpleHelloWorld" /> <output message="tns:simpleHelloWorldResponse" /> </operation> </portType> <plnk:partnerLinkType name="HelloWorldLinkType"> <plnk:role name="HelloWorldRole" portType="ns:HelloWorld"/> </plnk:partnerLinkType>
BPEL dfinit la notion de variables qui permet de manipuler les messages des interactions entre les partenaires Une variable est dfinie par des types et des messages dclars dans un WSDL Une variable est dfinie par les attributs suivant
keulkeul.blogspot.com
name : nom de la variable type : type via un type XML Schema par exemple
Ou
<message name="HelloWorldInvokeActivityBPELOperationRequest"> <part name="inputmessage" type="xsd:string"/> </message> <message name="HelloWorldInvokeActivityBPELOperationResponse"> <part name="outputmessage" type="xsd:string"/> </message>
Variables dcrites dans le fichier BPEL Messages dcrits dans le fichier WSDL du processus Messages dcrits dans le fichier WSDL du Service Web
BPEL - M. Baron - Page 38
keulkeul.blogspot.com
<message name="makeHelloWorld"> <part name="value" type="xsd:string" /> </message> <message name="makeHelloWorldResponse"> <part name="helloWorldResult" type="xsd:string" /> </message>
Activits Un processus BPEL est dcrit par un ensemble dtapes Chaque tape est appele une activit (activity) Deux catgories dactivit sont distinguer
keulkeul.blogspot.com
Activit Simple
Activit Structure
BPEL - M. Baron - Page 39
Activits : Receive Lactivit Receive est utilise pour la mise en attente du processus tant quun message nest pas envoy par un partenaire Elle est utilise gnralement pour instancier le processus BPEL (premire activit du processus) Elle est dfinie par la balise <receive> dont les principaux attributs de cette activit sont
name : nom de lactivit
keulkeul.blogspot.com
40
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
keulkeul.blogspot.com
Activits : Reply Lactivit Reply permet denvoyer une rponse au message envoy lactivit Receive Le couple Reply / Receive dcrit une opration de type requte / rponse Elle est dfinie par la balise <reply> dont les principaux attributs de cette activit sont
name : nom de lactivit
keulkeul.blogspot.com
42
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
keulkeul.blogspot.com
Activits : Assign Lactivit Assign peut tre utilise pour copier des donnes dune variable vers une autre Possibilit dutiliser des expressions complexes pour modifier le contenu des variables (XPath, transformations XSL) Elle est dfinie par la balise <assign> qui peut contenir un ensemble de sous balises <copy> La balise <copy> contient son tour des sous balises <from> et <to> pour exprimer la copie dun contenu vers un autre
keulkeul.blogspot.com
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
MakeHelloWorldInput
keulkeul.blogspot.com
Respect des typages puisque les parts des messages sont de type identique (xsd:string)
BPEL - M. Baron - Page 45
keulkeul.blogspot.com
Activities : Invoke Lactivit Invoke est utilise pour dclencher lappel une opration sur un portType dfini par un lien de partenaire Seules les oprations suivant le modle One-way et Request/Response peuvent tre invoques par un BPEL Linvocation dopration ncessite lutilisation de variables en entre et en sortie pour initialiser la requte et la rponse Elle est dfinie par la balise <invoke>
name : nom de lactivit
keulkeul.blogspot.com
partnerLink : identifiant du lien partenaire operation : lopration invoquer portType : le portType pour de lopration inputVariable : informations transmettre la requte ouputVariable : utilises pour rcuprer les donnes de la rponse
BPEL - M. Baron - Page 47
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
keulkeul.blogspot.com
Activities : Invoke Lactivit Invoke ne permet de dclencher que des oprations issues dun Service Web tendu (via WSDL) Les travaux de standardisation sintressent actuellement la possibilit dinvoquer diffrents services de technologies diffrentes (Service Web de type REST) Toutefois, il est actuellement possible dinvoquer des services sous condition de dfinir un adaptateur WSDL Dmarche
keulkeul.blogspot.com
Dfinir un Service Web Adaptateur respectant le contrat du service (dfini par un EJB) invoquer Implmenter le mapping entre le Service Web Adaptateur et le service invoquer Ajouter comme lien de partenaire le Service Web Adaptateur Invoquer les oprations
BPEL - M. Baron - Page 49
Activities : Sequence / Flow / While / Pick / Lordonnancement des activits est dfini par des activits complexes Lactivit Sequence permet dexprimer que des activits soient dclenches dans un ordre donn Lactivit Flow permet de dfinir quune ou plusieurs activits soient dclenches de manire concurrente Lactivit While permet de dfinir quune activit peut tre
keulkeul.blogspot.com
rpte plusieurs fois Lactivit Pick permet de mettre en attente une activit jusqu larrive dun message
BPEL - M. Baron - Page 50
Activities : Sequence / Flow / While / Pick / Exemple : Mise en place de lactivit Sequence
<sequence> <receive name="Receive1" createInstance="yes" partnerLink="PartnerLinkClient" operation="makeHello" portType="tns:HelloWorldInvokeActivityBPELPortType" variable="input"/> 1 <assign name="Assign1"> <copy> <from variable="input" part="inputmessage"/> <to variable="MakeHelloWorldInput" part="value"/> </copy> </assign> <invoke name="Invoke1" partnerLink="PartnerLinkInvocation" operation="makeHelloWorld inputVariable="MakeHelloWorldInput" outputVariable="MakeHelloWorldOutput"/> <assign name="Assign2"> <copy> <from variable="MakeHelloWorldOutput" part="helloWorldResult"/> <to variable="output" part="outputmessage"/> </copy> </assign>
keulkeul.blogspot.com
HelloWorldInvokeActiviyBPEL.bpel du
projet HelloWorldInvokeActivityBPEL
BPEL - M. Baron - Page 51
Processus BPEL en mode Synchrone et asynchrone Gestion des erreurs Gestion transactionnelle
keulkeul.blogspot.com
Journalisation et alertes
Connatre ltat du processus BPEL en cours dexcution