Business Process Execution Language

Business Process Execution Language

En informatique, Business Process Execution Language (ou BPEL, prononcé 'bipeul', ou 'bipèl'), est un langage de programmation destiné à l'exécution des procédures d'entreprise. Le BPEL est issu des langages WSFL (Web Services Flow Language) et XLANG, et est dérivé du XML.

Le BPEL vise à rendre possible le programming in the large. Les concepts de programming in the large et programming in the small distinguent deux aspects de l'écriture de procédures asynchrones à long terme qu'on voit généralement dans les procédures d'entreprise.

Ce langage a été défini dans sa version 2.0 par une spécification du consortium OASIS à la fin du mois de mars 2007.

Sommaire

Le fichier BPEL

Le fichier BPEL définit le processus, ou l'enchaînement et la logique des actions qui seront exécutées par le moteur d'orchestration. La structure du fichier BPEL est la même que celle du processus. Ce fichier est véritablement le code source de l'application que constitue le processus, le moteur d'orchestration agissant comme une machine virtuelle capable d'exécuter le code BPEL.

La balise <process>

La balise <process> est l'élément racine (au sens XML) du fichier BPEL. C'est à l'intérieur de cette balise que se retrouvera la description complète du processus. Grâce à l'attribut name, on peut donner un nom au processus.

Exemple:

<process 
  name="processName"
  xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable"
  targetNamespace="http://example.com"
  xmlns:tns="http://example.com"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 
[...]
 
</process>

La balise <import>

Cette balise permet d'importer un fichier WSDL par exemple:

<import namespace="http://example.com" location="fichier.wsdl" importType="http://schemas.xmlsoap.org/wsdl/" />


La balise <partnerLinks>

Cette balise permet de lier des actions définies dans le fichier WSDL (via partnerLinkType) au process BPEL. L'attribut myRole ou partnerRole définit si c'est une action qui appelle le processus ou si c'est une action appelée par le processus.

<partnerLinks>
  <partnerLink name="PartnerLink1" partnerLinkType="tns:examplePL" myRole="exampleRole" />
</partnerLinks>


La balise <variables>

Cette balise permet de définir les variables utilisées par le processus.

<variables>
  <variable name="var" messageType="tns:exampleMessage" />
</variables>

La balise <sequence>

Cette balise va contenir des actions ou de la structure directement liée à l'exécution du processus.

<sequence name="Main">
  [Actions]
</sequence>


La balise <receive>

Cette balise permet de recevoir un signal de l'extérieur du processus. Cela permet d'instancier un processus par exemple, ou plus généralement d'attendre qu'un évènement se termine avant de continuer le processus.

<receive name="Receive1" createInstance="yes" PartnerLink="PartnerLink1" operation="exampleOperation" portType="examplePortType" variable="var1In"/>


La balise <reply>

Cette balise permet de renvoyer une réponse à un partnerLink qui en attend une. D'abord le receive, puis, après le traitement, le reply.

<reply name="Reply1" PartnerLink="PartnerLink1" operation="exampleOperation" portType="examplePortType" variable="var1Out"/>

La balise <invoke>

Cette balise permet d'appeler un webservice. Elle utilise un partnerLink « sortant » et peut ou non recevoir une réponse.

<invoke name="invoke1" PartnerLink="PartnerLink1" operation="exampleOperation" portType="examplePortType" inputVariable="varIn" outputVariable="varOut"/>

La balise <forEach>

La balise forEach permet d'effectuer une boucle. On déclare un compteur (variable qui sera incrémentée à chaque itération), une valeur de départ et une valeur finale pour ce compteur. La boucle peut s'exécuter en mode parallèle.

<forEach name="superBoucle" parallel="yes" counterName="index">
  <startCounterValue>1</startCounterValue>
  <finalCounterValue>$uneVariable</finalCounterValue>
  [Instructions]...
</forEach>

Dans cet exemple, si $uneVariable est égale à 3, la boucle sera exécutée 3 fois. Le compteur peut être appelé comme n'importe quelle variable (ici $index).

La balise <while>

Boucle.

 

La balise <repeatUntil>

Boucle.

 

La balise <correlationSet>

Lorsque plusieurs actions sont lancées en mode parallèle, il peut être indispensable de les relier entre elles, par exemple, un receive peut être lié à un invoke. La balise correlationSet permet de lier des invoke et des receive entre eux. Il ne peut y avoir qu'un seul correlationSet par process, donc lorsqu'on veut utiliser des correlationSet dans un forEach en mode parallèle, le correlationSet doit être défini dans le forEach.

<correlationSet name="CorSetEx" properties="exns:propEx"/>

Pour que ce soit valable, il faut avoir déclaré dans le fichier WSDL (de namespace exns et importé dans le BPEL)ceci:

<vprop:property name="propEx" type="xsd:string"/>
 
<vprop:propertyAlias propertyName="tns:propEx" messageType="action1Response" part="part">
  <vprop:query>idEx</vprop:query>
</vprop:propertyAlias>
 
<vprop:propertyAlias propertyName="tns:propEx" messageType="action2Request" part="part">
  <vprop:query>idEx</vprop:query>
</vprop:propertyAlias>

Le namespace vprop correspond à http://docs.oasis-open.org/wsbpel/2.0/varprop et on suppose que les structures des messages action1Response et action2Request est identique:

<part>
  <idEX>valeur</idEx>
  [...]
<part>

Ensuite, dans l'invoke et le receive correspondants, vous renseignez la correlation:

<invoke ... > <!-- Action1 -->
  <correlations>
    <correlation set="CorSetEx" initiate="yes" pattern="response"/>
  </correlations>
</invoke>
 
<receive ...> <!-- Action2 -->
  <correlations>
    <correlation set="CorSetEx" initiate="no"/>
  </correlations>
</receive>

Voir aussi

Liens internes

Liens externes

Spécifications

Cette section liste la plupart des spécifications considérées comme faisant partie des standards BPEL.

Implémentations


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Business Process Execution Language de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Business Process Execution Language — Die WS Business Process Execution Language (BPEL) ist eine XML basierte Sprache zur Beschreibung von Geschäftsprozessen, deren einzelne Aktivitäten durch Webservices implementiert sind. Die im Jahr 2002 von IBM, BEA Systems und Microsoft… …   Deutsch Wikipedia

  • Business Process Execution Language — As defined in the abstract of the Web Services Business Process Execution Language OASIS Standard WS BPEL 2.0, WS BPEL (or BPEL for short) is a language for specifying business process behavior based on Web Services. Processes in WS BPEL export… …   Wikipedia

  • Business Process Execution Language For Web Services — Die WS Business Process Execution Language (BPEL) ist eine XML basierte Sprache zur Beschreibung von Geschäftsprozessen, deren einzelne Aktivitäten durch Webservices implementiert sind. Die im Jahr 2002 von IBM, BEA Systems und Microsoft… …   Deutsch Wikipedia

  • WS-Business Process Execution Language — Die WS Business Process Execution Language (BPEL) ist eine XML basierte Sprache zur Beschreibung von Geschäftsprozessen, deren einzelne Aktivitäten durch Webservices implementiert sind. Die im Jahr 2002 von IBM, BEA Systems und Microsoft… …   Deutsch Wikipedia

  • Business Process Modeling Language — (BPML) is a meta language for the modeling of business processes, just as XML is a meta language for the modeling of business data. BPML was a proposed language, but now the BPMI has dropped support for this in favor of BPEL4WS. BPMI took this… …   Wikipedia

  • Business Process Modeling Language — Die Business Process Modeling Language (BPML) ist eine XML basierte plattformunabhängige Metasprache zur Beschreibung von Geschäftsprozessmodellen. Mit BPML können in WSDL beschriebene Web Services zu Geschäftsprozessen verknüpft werden. Eine… …   Deutsch Wikipedia

  • Business Process Modeling Notation — (BPMN) est une notation graphique standardisée[1] pour modéliser des procédures d entreprise dans un workflow. Business Process Modeling Notation a été développée par la Business Process Management Initiative (BPMI), et est maintenant maintenue… …   Wikipédia en Français

  • Business Process Modeling Notation — Die Business Process Modeling Notation (BPMN, engl. Modellierungsnotation für Geschäftsprozesse) ist eine grafische Spezifikationssprache in der Wirtschaftsinformatik. Sie stellt Symbole zur Verfügung, mit denen Fach und Informatikspezialisten… …   Deutsch Wikipedia

  • Business Process Model and Notation — Die Business Process Model and Notation (BPMN, engl. Modellierungsnotation für Geschäftsprozesse) ist eine grafische Spezifikationssprache in der Wirtschaftsinformatik. Sie stellt Symbole zur Verfügung, mit denen Fach und Informatikspezialisten… …   Deutsch Wikipedia

  • Business Process Modeling — Bei der Geschäftsprozessmodellierung (engl: Business Process Modeling) werden Geschäftsprozesse oder Ausschnitte daraus abstrahiert meist grafisch dargestellt, und somit modelliert. Der Schwerpunkt liegt auf dem Darstellen des Ablaufs, aber auch… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”