BPEL ( Business Process Execution Language ) is an XML- based language for the formal description of business processes and their interaction protocols. BPEL extends the web services interaction model and includes transaction support in this model.
In general terms, the configuration of a BPEL project is as follows:
- BPEL-visual editor;
- Business process management server.
Main BPEL project files:
- .bpel - logical synthesis and coordination of web services. In fact, the algorithm for executing a business process. (Its graphical representation resembles a block diagram and a diagram of data flows in one person).
- .wsdl - Description of interfaces for messaging. How to Reach the Web Service ( WSDL ).
- .xsd - description of project data structures ( XML Schema ).
Content
History
IBM and Microsoft have identified two fairly similar languages, WSFL and Xlang , respectively. The growing popularity of BPML, the success of BPMI.org and the open movement of BPMS have forced Intalio Inc., IBM and Microsoft to decide to combine these languages into a new language - BPEL4WS. In April 2003, BEA Systems , IBM, Microsoft, SAP, and Siebel Systems transferred BPEL4WS 1.1 OASIS to standardize on the Web Services BPEL Technical Committee . Although BPEL4WS appeared immediately in versions 1.0 and 1.1, the WS-BPEL OASIS technical committee voted on September 14, 2004 to name the specification WS-BPEL 2.0. This change was made to align BPEL with other web services standards that, under a naming convention, begin on WS-.
In June 2007, Active Endpoints, Adobe, BEA, IBM, Oracle and SAP published the BPEL4People and WS- HumanTask specifications, which described how people can be implemented in BPEL.
There is a heated discussion about the future direction of BPEL development. The need to add semantics to BPEL in the form of WS-HumanTask and other things only emphasizes the fact that BPEL has never been a full-fledged language.
BPEL Example
Hypothetical example. The mathProcess BPEL sequence takes the $ numIn variable, puts it square and returns the result in the $ numOut variable.
<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>
Literature
- Understanding SOA with Web Services. By Eric Newcomer , Greg Lomow . Addison Wesley Professional 2004
- SOA for the Business Developer: Concepts, BPEL, and SCA. Ben Margolisand, Joseph Sharpe
See also
- Buisness process
- Activebpel
- Pentaho
- BPMN
- SOA
- SOAP
- Wsdl
- UDDI
Standards
- OASIS WSBPEL TC Page
- OASIS WSBPEL TC Current Issues List
- Latest OASIS WSBPEL TC specifications
- BPEL4WS 1.1 Specification