BPEL (în engleză Business Process Execution Language) este un limbaj bazat pe XML pentru descrierea formală a proceselor de afaceri și a protocoalelor de interacțiune dintre ele. BPEL extinde modelul de interacțiune a serviciilor web și include suportul tranzacțiilor în acest model.

În general, configurația unui proiect BPEL este următoarea:

  • BPEL - editor vizual;
  • Business server de gestionare a proceselor.

Fișierele principale ale unui proiect BPEL:

  • .bpel — sinteza logică și coordonarea serviciilor web. De fapt, algoritmul de execuție a procesului de afaceri. (reprezentarea sa grafică amintește de o diagramă și o diagramă a fluxurilor de date într-o singură persoană).
  • .wsdl — descrierea interfețelor de mesagerie. "Cum se realizează un serviciu web" (WSDL).
  • .xsd — descrierea structurii de date a proiectului (Schema XML).

Prezentare generală

modificare

Se pot descrie interacțiunile Web-service în două moduri: procese de business executabile și procese de afaceri abstracte.

  1. Un proces de afaceri executabil: modelează un comportament real al unui participant într-o interacțiune de afaceri.
  2. Un proces de afaceri abstract: este un proces specificat parțial, care nu este destinat a fi executat. Contrar proceselor executabile, un proces abstract poate ascunde unele dintre detaliile operaționale concrete necesare. Procesele Abstract servesc un rol descriptiv, cu mai mult de un caz de utilizare posibil, inclusiv comportament observabil și / sau șablon de proces.

WS-BPEL își propune să modeleze comportamentul proceselor[1] printr-o limbă pentru specificarea proceselor de executare și a proceselor de afaceri abstracte. Procedând astfel, acesta extinde modelul de interacțiune al serviciilor web și îi permite să susțină tranzacțiile comerciale. De asemenea, definește un model de integrare interoperabilă care ar trebui să faciliteze extinderea procesului de integrare automată a proceselor atât în interiorul cât și între întreprinderi. Dezvoltarea sa a ieșit din noțiunea[2] că programarea în programele mari și programarea în limbile mici solicitate de diferite limbi.

Ca atare, este serializat în XML și are drept scop să permită programarea în spațiul mare.

IBM și Microsoft au identificat două limbi destul de similare, respectiv WSFL și Xlang. Popularitatea crescândă a BPML, succesul BPMI.org și mișcarea deschisă a BPMS au forțat Intalio Inc., IBM și Microsoft să decidă să îmbine aceste limbi într-o limbă nouă - BPEL4WS. În aprilie 2003, BEA Systems, IBM, Microsoft, SAP AG și Siebel Systems au transferat standardul BPEL4WS 1.1 OASIS prin intermediul Comitetului Tehnic BPEL Services Web Services. Deși BPEL4WS a apărut imediat în versiunile 1.0 și 1.1, comitetul tehnic WS-BPEL OASIS a votat la 14 septembrie 2004 pentru a desemna specificația WS-BPEL 2.0. Această modificare a fost făcută pentru a alinia BPEL cu alte standarde de servicii web care, prin denumirea convenției, încep cu WS-.

În iunie 2007, Active Endpoints, Adobe, BEA, IBM, Oracle și SAP au publicat specificațiile BPEL4People și WS-HumanTask, care descriu modul în care interacțiunea cu oamenii ar putea fi implementată în cadrul BPEL.

Cu privire la viitoarea direcție de dezvoltare a dezbaterii BPEL aprins. Nevoia de a adăuga semantica BPEL sub formă de WS-HumanTask unde alții subliniază doar faptul că BPEL nu a fost niciodată un limbaj complet.

Exemplu BPEL

modificare

Un exemplu ipotetic. Secvența BPEL mathProcess acceptă variabila $ numIn și o păstrează și returnează rezultatul în variabila $ numOut.

 <process name="mathProcess" targetNamespace="http://example.com/ws-bp/math"
 xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" 
 xmlns:math="http://manufacturing.org/wsdl/math">
    <partnerLinks>
        <partnerLink name="Math" partnerLinkType="math:exampleMath" myRole="mathService" />
    </partnerLinks>
    <variables>
        <variable name="numIn"   messageType="math:unsignedInt"/>
        <variable name="numOut"  messageType="math:unsignedInt"/>
        <variable name="num"     type="xsd:unsignedInt"/>
    </variables>
    <sequence>
        <receive partnerLink="Math" portType="math:mathPort" operation="secondDegree" variable="numIn" createInstance="yes"/>
        <assign name="LoopCounterIncrement">
          <copy>
             <from>$numIn.request</from>
             <to variable="num"/>
          </copy>
          <copy>
             <from>$num * $num</from>
             <to variable="numOut" part="response"/>
          </copy>
        </assign>
        <reply operation="secondDegree" partnerLink="Math" portType="math:mathPort" variable="numOut"/>
    </sequence>
 </process>
  1. ^ Business Process Execution Language for Web Services, Version 1.1 Arhivat în , la Wayback Machine. (PDF) (5 May 2003)
  2. ^ „OASIS Members Form Web Services Business Process Execution Language (WSBPEL) Technical Committee”. OASIS WSBPEL Technical Committee. . 

Vezi și

modificare