http://www.di.unipi.it/~bruni
Object
2
marted 13 dicembre 2011
3
marted 13 dicembre 2011
BPEL
4
marted 13 dicembre 2011
Business process
execution language
Also known as
Web Services Business Process Execution Language
(WS-BPEL)
and also as
Business Process Execution Language for Web Services
(BPEL4WS)
is a standard executable language for orchestrating the use
of Web Service within business processes:
import / export information, remote invocation, correlation,
fault handling, compensation
5
Origins
A long time ago in a galaxy far,
far away....
WEB
SERVICES
6
marted 13 dicembre 2011
Web services
Web services fix a standard for interoperability
between heterogeneous, loosely coupled, remote
software applications
(separately developed, running on different platforms)
over (not only) the HTTP protocol
Informally:
web services are for software
what web sites are for human
7
marted 13 dicembre 2011
WS basics
Services must be made available on the web
(need a server)
Services must be advertised over the web
(need some repositories)
Service repositories must be queried
(need service description)
Services must be invoked
(need standard communication format)
8
marted 13 dicembre 2011
XMLification
WSFL, BPEL, ...
UDDI
Service composition
Service discovery
Service publication
WSDL
Service description
SOAP
Network
9
WS-*
10
marted 13 dicembre 2011
Messaging Specifications
SOAP 1.1
! Web Service Distributed Management: Management Using ! Web Service Distributed Management: Management Of
1.1
BPMI.org
Final Draft
WS-Addressing Core
Security
WS-Eventing
WS-Enumeration
Metadata Specifications
WS-Policy
WS-PolicyAssertions
WS-PolicyAttachment
WS-Discovery
WS-MetadataExchange
Universal Description, Discovery and Integration
Web Service Description Language 1.1
1.1
OASIS
Committee Draft
Universal Description,
Discovery and Integration (UDDI)
WS-Security:
SAML Token Profile
2.0
W3C
Candidate Recommendation
2.0
W3C Working Draft
1.1
OASIS
Public Review Draft
WS-Atomic Transaction
WS-Federation
WS-ServiceGroup (WSRF)
1.2
OASIS
Working Draft
WS-ResourceProperties
1.2
OASIS
Working Draft
1.0
Arjuna Technologies, Fujitsu, IONA, Oracle
and Sun Microsystems
Committee Draft
WS-Coordination
Framework (WS-CF)
1.0 Arjuna Technologies, Fujitsu, IONA,
Oracle and Sun Microsystems
Committee Draft
WS-SecureConversation
WS-ResourceLifetime
1.2
OASIS
Working Draft
WS-Transfer
W3C
Recommendation
Metadata
Reliability
WS-ServiceGroup
WS-ResourceProperties
WS-ResourceLifetime
Management Specifications
Management Using Web Services
Service Modeling Language
SOAP
Messaging Specifications
Transaction Specifications
WS-Business Activity
" WS-Notification is a
WS-Notification
1.3
OASIS
OASIS-Standard
WS-Enumeration
" WS-BrokeredNotification
WS-BrokeredNotification
1.3
OASIS
OASIS-Standard
a general SOAP-based
protocol for enumerating
a sequence of XML
elements that is suitable
for traversing logs, message
queues, or other linear
information models.
" WS-BaseNotification
WS-BaseNotification
1.3
OASIS
OASIS-Standard
WS-Topics
1.3
OASIS
OASIS-Standard
WS-Eventing
W3C
Public Draft
WS-Addressing WSDL
Binding
1.0
W3C
Candidate Recommendation
provides transport-neutral
mechanisms to address
Web services and messages.
This specification defines
XML elements to identify
Web service endpoints and
to secure end-to-end
endpoint identification in
messages.
WS-Addressing Core
1.0
W3C
Recommendation
WS-Addressing
SOAP Binding
SOAP
1.2
W3C
Recommendation
1.0
W3C
Recommendation
SOAP Message
Transmission Optimization
Mechanism (MTOM)
1.0 W3C
Recommendation
Transmission
Optimization
Mechanism
describes an
abstract feature for
optimizing the
transmission and/or
wire format of a
SOAP message.
SOAP
1.1
W3C
Note
WS-Atomic Transaction
WS-Coordination
WS-Composite Application Framework
WS-Transaction Management
WS-Context
WS-Coordination Framework
Presentation Specifications
Web Services for Remote Portlets
Standards Bodies
Messaging
WS-BaseFaults
1.0
WS-I
Working Draft
Resource Specifications
1.0
WS-I
Final Specification
Reliable Asynchronous
Messaging Profile (RAMP)
WS-Reliability
WS-Management
W3C
W3C Member Submission
! WS-Transfer describes a general SOAP-based protocol for
Conformance Claim
Attachment Mechanism (CCAM)
WS-SecureConversation
Reliability Specifications
WS-Transfer
Resource Representation
SOAP Header Block (RRSHB)
WS-Transaction
Management (WS-TXM)
WS-Federation
WS-Context (WS-CTX)
WS-Trust
WS-SecurityPolicy
WS-ReliableMessaging
1.1
OASIS
Public Review Draft
WS-Composite Application
Framework (WS-CAF)
1.0
IBM, Microsoft, BEA Systems,
RSA Security, and VeriSign
Initial Draft
WS-Security: X.509
Certificate Token Profile
1.1
W3C
Note
1.1
OASIS
Committee Draft
WS-Trust
1.0
Microsoft, IBM, OASIS
Working Draft
WS-Security:
Kerberos Binding
1.1
OASIS
OASIS-Standard
WS-Reliability
3.0.2
OASIS
OASIS-Standard
1.2
OASIS
Working Draft
Metadata
1.1
BEA Systems, Computer Associates,
IBM, Microsoft, SAP, Sun Microsystems and
webMethods
Public Draft
1.1
OASIS
Public Review Draft
Messaging
WS-MetadataExchange
WS-Reliable Messaging
Policy Assertion (WS-RM Policy)
WS-BaseFaults (WSRF)
1.1
OASIS
Working Draft
Security
1.1
OASIS
Public Review Draft
WS-Business Activity
WS-Security:
Username Token Profile
Messaging
Reliability
1.0
WS-I
Final Specification
WS-Security:
SOAP Message Security
WS-Discovery
1.2
W3C
W3C Member Submission
1.2
OASIS
OASIS-Standard
Basic Profile
WS-PolicyAttachment
WS-Security
Simple SOAP
Binding Profile
Web Services
Resource Framework (WSRF)
1.1
OASIS
Working Draft
Security
WS-Coordination
Security
1.1
OASIS
Committee Draft
1.1
IBM, Microsoft,
RSA Security, VeriSign
Public Draft
1.1
OASIS
OASIS-Standard
Messaging
WS-SecurityPolicy
WS-Security
WS-ReliableMessaging
Secur.
1.1
BEA Systems,
IBM, Microsoft, SAP
Public Draft
1.5
W3C
Working Draft
Security Specifications
Transaction
1.0
WS-I
Final Specification
WS-PolicyAssertions
WS-Policy
Transaction
Attachments Profile
Resource
Specifications
Meta
Transaction
Specifications
Resource
Security Specifications
Security
Reliability
Specifications
Reliability
Metadata Specifications
Metadata
2.0
WS-I
Working Group Draft
Reliab.
Basic Profile
Metadata
WS-BrokeredNotification
2.0
OASIS
Committee Draft
WS-BaseNotification
WS-Topics
2.0
Final
1.0
OASIS
OASIS-Standard
WS-Notification
Messaging
1.0
OASIS
OASIS-Standard
WS-Management
Messaging
Basic Profile
1.2
WS-I
Working Group Draft
Management Of
Web Services (WSDM-MOWS)
Transaction
implementation guidelines for how related set of nonproprietary Web Service specifications should be used
together for best interoperability.
1.0 W3C
Working Draft
SOAP 1.2
Security
WS-Choreography Model
Overview
Presentation
Specifications
Mess.
1.1
WS-I
Final Specification
Management Specifications
Resource
Basic Profile
Security
Interoperability
Issues
XML Specifications
" XML Extensible Markup
XML 1.1
1.1
W3C
Recommendation
Language is a pared-down
version of SGML, designed
especially for Web
documents. It allows one to
create own customized tags,
enabling the definition,
transmission, validation, and
interpretation of data
between applications and
between organizations.
XML 1.0
1.0
W3C
Recommendation
Language is a pared-down
version of SGML, designed
especially for Web
documents. It allows one to
create own customized tags,
enabling the definition,
transmission, validation, and
interpretation of data
between applications and
between organizations.
Namespaces in XML
1.1
W3C
Recommendation
11
marted 13 dicembre 2011
XML Schema
1.1
W3C
Working Draft
This poster is not to be reproduced or transmitted in any form or for any purpose without the express permission of innoQ Deutschland GmbH. Copyright
Dependencies
innoQ Deutschland GmbH. All Rights Reserved. The poster may also contain references to other company, organisation, brand and product names. These company, organisation, brand and product names are used herein for identification purposes only and may be the trademarks of their respective owners.
Birth of BPEL
IBM was pushing for a standard called WSFL
Microsoft was pushing for a technology called XLANG
Intalio was pushing for BPML
IBM and Microsoft merged their efforts and pushed together
for BPEL (a hybrid WSFL+XLANG)
and BPEL was soon widely adopted
12
marted 13 dicembre 2011
Life of BPEL
BPEL4WS 1.0 (2002) by BEA, IBM, Microsoft
SAP + Siebel joined the effort
BPEL 1.1 (2003)
submitted to OASIS
Adobe + HP + NEC + Oracle + Sun + many more joined
WS-BPEL 2.0 (2005)
13
marted 13 dicembre 2011
14
marted 13 dicembre 2011
15
marted 13 dicembre 2011
BPELexample.xml
Page 1 of 2
BPELexample.xml
Page 2
48
1
!
!
!
!
49
50
2
3
4
5
<documentation xml:lang="EN">
A simple example of a WS-BPEL process for handling a purchase order.
</documentation>
51
52
53
54
6
7
8
!
9
!
10
!
11
!
12
<partnerLinks>
<partnerLink name="purchasing" partnerLinkType="lns:purchasingLT"
myRole="purchaseService" />
<partnerLink name="invoicing" partnerLinkType="lns:invoicingLT"
myRole="invoiceRequester" partnerRole="invoiceService" />
<partnerLink name="shipping" partnerLinkType="lns:shippingLT"
myRole="shippingRequester" partnerRole="shippingService" />
<partnerLink name="scheduling" partnerLinkType="lns:schedulingLT"
partnerRole="schedulingService" />
</partnerLinks>
!
55
56
57
58
59
60
61
62
!
63
13
14
15
16
17
!
18
19
20
<variables>
<variable name="PO" messageType="lns:POMessage" />
<variable name="Invoice" messageType="lns:InvMessage" />
<variable name="shippingRequest"
messageType="lns:shippingRequestMessage" />
<variable name="shippingInfo" messageType="lns:shippingInfoMessage" />
<variable name="shippingSchedule" messageType="lns:scheduleMessage" />
</variables>
64
65
66
67
!
68
69
70
71
21
22
23
!
24
!
!
25
26
<faultHandlers>
<catch faultName="lns:cannotCompleteOrder" faultVariable="POFault"
faultMessageType="lns:orderFaultType">
<reply partnerLink="purchasing" portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder" variable="POFault"
faultName="cannotCompleteOrder" />
</catch>
</faultHandlers>
72
73
74
75
!
76
77
78
!
27
28
29
!
30
31
<sequence>
<receive partnerLink="purchasing" portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder" variable="PO" createInstance="yes">
<documentation>Receive Purchase Order</documentation>
</receive>
79
80
81
82
83
!
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<flow>
<documentation>
A parallel flow to handle shipping, invoicing and scheduling
</documentation>
<links>
<link name="ship-to-invoice" />
<link name="ship-to-scheduling" />
</links>
<sequence>
<assign>
<copy>
<from>$PO.customerInfo</from>
<to>$shippingRequest.customerInfo</to>
</copy>
</assign>
<invoke partnerLink="shipping" portType="lns:shippingPT"
!
!
84
85
86
87
88
89
90
91
92
93
!
94
95
96
16
operation="requestShipping" inputVariable="shippingRequest"
outputVariable="shippingInfo">
<documentation>Decide On Shipper</documentation>
<sources>
<source linkName="ship-to-invoice" />
</sources>
</invoke>
<receive partnerLink="shipping" portType="lns:shippingCallbackPT"
operation="sendSchedule" variable="shippingSchedule">
<documentation>Arrange Logistics</documentation>
<sources>
<source linkName="ship-to-scheduling" />
</sources>
</receive>
</sequence>
<sequence>
<invoke partnerLink="invoicing" portType="lns:computePricePT"
operation="initiatePriceCalculation" inputVariable="PO">
<documentation>
Initial Price Calculation
</documentation>
</invoke>
<invoke partnerLink="invoicing" portType="lns:computePricePT"
operation="sendShippingPrice" inputVariable="shippingInfo">
<documentation>
Complete Price Calculation
</documentation>
<targets>
<target linkName="ship-to-invoice" />
</targets>
</invoke>
<receive partnerLink="invoicing" portType="lns:invoiceCallbackPT"
operation="sendInvoice" variable="Invoice" />
</sequence>
<sequence>
<invoke partnerLink="scheduling" portType="lns:schedulingPT"
operation="requestProductionScheduling" inputVariable="PO">
<documentation>
Initiate Production Scheduling
</documentation>
</invoke>
<invoke partnerLink="scheduling" portType="lns:schedulingPT"
operation="sendShippingSchedule" inputVariable="shippingSchedule">
<documentation>
Complete Production Scheduling
</documentation>
<targets>
<target linkName="ship-to-scheduling" />
</targets>
</invoke>
</sequence>
</flow>
<reply partnerLink="purchasing" portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder" variable="Invoice">
<documentation>Invoice Processing</documentation>
</reply>
</sequence>
</process>
A syntax called
semantics
Learning BPEL by looking at XML documents
is like
learning Petri nets by looking at PNML documents
or similar to
learning Java by looking at the bytecode
17
marted 13 dicembre 2011
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
PNMLnet.xml
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
18
226
227
228
229
230
231
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Page 3 of 4
<transition id="t3">
<name>
<text>t3</text>
<graphics>
<offset x="240" y="320"/>
</graphics>
</name>
<graphics>
<position x="240" y="280"/>
<dimension x="40" y="40"/>
</graphics>
<toolspecific tool="WoPeD" version="1.0">
<time>0</time>
<timeUnit>1</timeUnit>
<orientation>1</orientation>
</toolspecific>
</transition>
<transition id="t2">
<name>
<text>t2</text>
<graphics>
<offset x="240" y="220"/>
</graphics>
</name>
<graphics>
<position x="240" y="180"/>
<dimension x="40" y="40"/>
</graphics>
<toolspecific tool="WoPeD" version="1.0">
<time>0</time>
<timeUnit>1</timeUnit>
<orientation>1</orientation>
</toolspecific>
</transition>
<transition id="t1">
<name>
<text>t1</text>
<graphics>
<offset x="120" y="270"/>
</graphics>
</name>
<graphics>
<position x="120" y="230"/>
<dimension x="40" y="40"/>
</graphics>
<toolspecific tool="WoPeD" version="1.0">
<time>0</time>
<timeUnit>1</timeUnit>
<orientation>1</orientation>
</toolspecific>
</transition>
<transition id="t4">
<name>
<text>t4</text>
<graphics>
<offset x="360" y="270"/>
</graphics>
</name>
<graphics>
<position x="360" y="230"/>
<dimension x="40" y="40"/>
</graphics>
<toolspecific tool="WoPeD" version="1.0">
<time>0</time>
<timeUnit>1</timeUnit>
<orientation>1</orientation>
</toolspecific>
</transition>
<transition id="t5">
<name>
<text>t5</text>
<graphics>
<offset x="240" y="150"/>
</graphics>
</name>
<graphics>
<position x="240" y="110"/>
PNMLnet.xml
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<arc id="a1" source="p1" target="t1">
<inscription>
<text>1</text>
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<arc id="a2" source="t1" target="p2">
<inscription>
<text>1</text>
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<arc id="a5" source="p2" target="t2">
<inscription>
<text>1</text>
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<arc id="a6" source="t2" target="p3">
<inscription>
<text>1</text>
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<arc id="a18" source="t4" target="p6">
<inscription>
<text>1</text>
</inscription>
<graphics/>
<toolspecific tool="WoPeD" version="1.0">
<probability>1.0</probability>
<displayProbabilityOn>false</displayProbabilityOn>
<displayProbabilityPosition x="500.0" y="0.0"/>
</toolspecific>
</arc>
<toolspecific tool="WoPeD" version="1.0">
<bounds>
<position x="11" y="33"/>
<dimension x="755" y="490"/>
</bounds>
<treeWidth>2</treeWidth>
<verticalLayout>false</verticalLayout>
<resources/>
<simulations/>
<partnerLinks/>
<variables/>
</toolspecific>
</net>
</pnml>
A matter
of
abstraction
!"#$%&'"%$
!"#$%"()&*"%
!"#$%&'#$()#*&+,(-%$.&-$/#$(00#*#1$/2$&$3#/$%#*4,.#5$,-$&$
!"#$%&'"%$
!"#$%"()&*"%
'&.",-#67-1#*%+&-1&/8#$0(*'&+
A technology should never become THE model
<operation name = "CheckAvailability">
(though it can serve
as a= "CheckInDate"/>
source of inspiration)
< input message
!"#$%&'#$()#*&+,(-%$.&-$/#$(00#*#1$/2$&$3#/$%#
)&0#1+232"$+'#"445)6"%).&$#7$)&0#%8+#
in the /2$%)#.,02,-9$&88$+"#$-##1#1$%2-+&.+,.$1#+&,8%$:()#*&+,(-$
near future (in training
technical personnel)
'&.",-#67-1#*%+&-1&/8#$0(*'&+
+&#$%"&'"('$#.D+(#"&#C&%+(&+%#4(.%.6.5#
-&'#5$,-)7+$&-1$(7+)7+$)&*&'#+#*%;
XML
SOAP
WSDL
UDDI
http://www.w3.org/XML/
http://www.w3.org/TR/soap/
http://www.w3.org/TR/wsdl20/
http://www.uddi.org/
5"67&
-..;%$,#03&4<=+>7
marted 13 dicembre 2011
19
/2$%)#.,02,-9$&88$+"#$-##1#1$%2-+&.+,.$1#+&,8%$:()
BPEL guidelines
21
marted 13 dicembre 2011
Structured control vs
free flow
BPEL4WS should provide
both hierarchical and graph-like control regimes,
and allow their usage to be blended
as seamlessly as possible.
22
marted 13 dicembre 2011
23
marted 13 dicembre 2011
Correlation
BPEL4WS should support an
identification mechanism for process instances
that allows the definition of instance identifiers
at the application message level.
Instance identifiers should be partner defined
and may change over time.
24
marted 13 dicembre 2011
Transactions
BPEL4WS should define a long-running transaction model
that is based on practically proven techniques
like compensation actions and scoping
to support failure recovery for parts of
long-running business processes.
25
marted 13 dicembre 2011
Abstract vs executable
BPEL4WS should define a set of Web service orchestration
concepts that are meant to be used in common by both
the external (abstract) and
internal (executable) views of a business process.
Such a business process defines the behavior of a single
autonomous entity, typically operating in interaction with
other similar peer entities.
It is recognized that each usage pattern (i.e. abstract
view and executable view) will require a few specialized
extensions, but these extensions are to be kept to a
minimum and tested against requirements
26
marted 13 dicembre 2011
WSDL preliminaries
27
marted 13 dicembre 2011
Service
A service can be thought of as a container
for a set of (logically related) operations
that are made available via web-based protocols
Roughly: a remote object
28
marted 13 dicembre 2011
PortType / Interface
The <portType> element,
renamed to <interface> in WSDL 2.0,
defines a web service,
the operations that can be performed,
and the messages that are used to perform the operation.
Roughly: a remote (abstract) class
29
marted 13 dicembre 2011
Operation
Each operation can be thought of as
a method or function call in some programming language.
Four kinds of operations
(one-way, request-response, notification, solicit-response)
Three kinds of parameters/arguments
(input, output, fault)
(not all combinations allowed)
Roughly: a remote (abstract) method
30
marted 13 dicembre 2011
Port / Endpoint
The <port> element,
renamed to <endpoint> in WSDL 2.0,
declares the address of a web service.
It typicaIly involves a name, a binding and a URL
31
marted 13 dicembre 2011
Binding
32
marted 13 dicembre 2011
33
marted 13 dicembre 2011
PurchaseExample.wsdl
1
2
3
!
4
!
5
!
6
7
8
9
10
!
11
!
12
13
14
!
15
!
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
!
33
34
Page 1 of 2
PurchaseExample.wsdl
35
36
37
38
39
40
41
!
42
43
<wsdl:types>
<xsd:schema
targetNamespace="http://
www.fluidimagination.com/sams/productType.wsdl"
xmlns:xsd="http://www.w3.org/2001/
XMLSchema">
<xsd:complexType name="scannerType">
<xsd:all>
<xsd:element name="upc"
type="upcType"/>
<xsd:element name="isbn"
type="isbnType"/>
</xsd:all>
</xsd:complexType>
<xsd:simpleType name="upcType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{12}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="isbnType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="([0-9]- ){10}"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
<!-- Adding a message that has two addresses -->
<wsdl:message name="purchaseMessage">
<wsdl:part name="productCode"
element="tns:scannerType"/>
</wsdl:message>
<!--create a port type with one operation -->
!
44
45
46
47
48
49
50
51
!
52
53
!
54
55
56
57
58
59
60
34
marted 13 dicembre 2011
Page 2 of
<wsdl:portType name="purchaseType">
<wsdl:operation name="purchaseOperation">
<wsdl:input name="tns:purchaseMessage"/>
</wsdl:operation>
</wsdl:portType>
<!--Bind the message to SOAP using HTTP -->
<wsdl:binding name="purchaseBinding"
type="tns:purchaseType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/
http"/>
<wsdl:operation name="tns:purchaseOperation">
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<!--Bind the message to SOAP over SMTP -->
<wsdl:binding name="purchaseBindingSMTP"
type="tns:purchaseType">
<soap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/
smtp"/>
<wsdl:operation name="tns:purchaseOperation">
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
</wsdl:definitions>
BPEL ingredients
(material partly stolen from Antonio Brogis slides
on Software Services, thanks!)
35
marted 13 dicembre 2011
BPEL ingredients
Data flow
(scoped variables)
Partner links and Message correlation
Message flow
(one-way, request-response, notify, solicit-response)
Control flow
(structured activities and synchronization links)
Handling events, faults, compensations
36
marted 13 dicembre 2011
Variable
Variables can be defined (within a local scope)
The activity <assign> can be used to copy data
(messages, part of messages, service references)
between variables
<assign>
<copy>
<from variable="PO" part="customerInfo"/>
<to variable="shippingRequest" part="customerInfo"/>
</copy>
</assign>
37
marted 13 dicembre 2011
Partner Link
A partner is a service that the process invokes,
or a client that invokes the process
A BPEL process interacts with a partner using a
<partnerLink> a (typed) connector
that the process offers to/requires from its partner
(to be declared in the BPEL document)
<partnerLinks>
<partnerLink name="shipping"
partnerLinkType="lns:shippingLT"
myRole="shippingRequester"
partnerRole="shippingService"/>
...
</partnerLinks>
38
Stateless services,
stateful processes
When a message for (WS-BPEL) service arrives,
it must be delivered either to a new
or to an existing instance of the process
Stateful business processes are instantiated to act
according to interaction history
Messages should not only be delivered to the correct port,
but also to the correct instance of the business process
that provides that port
39
marted 13 dicembre 2011
Message correlation
Message correlation is the way to tie together
messages coming from different communications
A correlation set is a set properties such that
all messages having the same values of all properties
are part of the same interaction
The partner that first fixes the values of the properties
in the correlation set is the initiator of the exchange,
the other partners are called the followers
40
marted 13 dicembre 2011
Message flow
Basic activities are available
to send and receive messages to partners
Activity <invoke>: asynchronous (one-way) or
synchronous (request-response)
Activity <receive>: a request from a partner to execute
one of the (WSDL) operations implemented by the process
Activity <reply>: to return the result of a <receive>d
synchronous request-response operation
41
marted 13 dicembre 2011
Invoke
Needed information: the <partnerLink>,
the WSDL <portType> of the service to be invoked, and
the name and parameters of the <operation>
<invoke partnerLink="shipping"
portType="lns:shippingPT"
operation="requestShipping"
inputVariable="shippingRequest"
outputVariable="shippingInfo">
<source linkName="ship-to-invoice"/>
</invoke>
42
marted 13 dicembre 2011
Receive
Needed information: the <partnerLink>,
the WSDL <portType> of the exposed service, and
a <variable> where to copy the parameters of the
<operation>
<receive partnerLink="purchasing"
portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder"
variable="PO">
</receive>
43
marted 13 dicembre 2011
Reply
A process can <reply> to a message it <receive>d
<reply partnerLink="purchasing"
portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder"
variable="Invoice" />
45
marted 13 dicembre 2011
Structured activities
only one branch
is selected
Link
A <link> expresses synchronisation dependencies
among activities in a process
Each <link> has a name,
one source activity, one target activity, and
it may be associated with a transition condition
(a predicate to be evaluated when the source activity ends)
47
marted 13 dicembre 2011
Join condition
Any activity that is the target of one or more links
may have an explicit <joinCondition>,
(a predicate on the status values of the incoming links,
to be evaluated once all such values have been determined)
otherwise the implicit join condition is the OR
If the <joinCondition> evaluates:
TRUE the activity can be executed,
FALSE a <joinFailure> fault may be thrown
(depending on the <suppressJoinFailure> flag
48
marted 13 dicembre 2011
Scope
A scope provides fault and compensation handling
capabilities to the activities nested within it
A <scope> activity consists of:
a primary activity,
a set of (optional) fault handlers,
a single (optional) compensation handlers,
a set of (optional) event handlers
(executed concurrently with the process,
they enable a scope to react to messages and alarm events)
49
marted 13 dicembre 2011
Chun Ouyang1 , Eric Verbeek2 , Wil M.P. van der Aalst2,1 , Stephen Breutel1 ,
Marlon Dumas1 , and Arthur H.M. ter Hofstede1
1
Formal semantics of
control flow in BPEL
Abstract. Web service composition refers to the creation of new (Web) services by combination of
functionality provided by existing ones. This paradigm has gained significant attention in the Web
services community and is seen as a pillar for building service-oriented applications. A number of
domain-specific languages for service composition have been proposed with consensus being formed
around a process-oriented language known as WS-BPEL (or BPEL). The kernel of BPEL consists
of simple communication primitives that may be combined using control-flow constructs expressing
sequence, branching, parallelism, synchronisation, etc. As a result, BPEL process definitions lend
themselves to static flow-based analysis techniques. This report aims at validating the feasibility of
using Petri nets for static analysis of BPEL processes. We present a comprehensive and rigorously
defined mapping of BPEL constructs into Petri net structures. This leads to the implementation
of a tool which operates by translating BPEL processes into Petri nets and exploiting existing
Petri net analysis techniques. The tool performs two useful types of static checks and extracts
meta-data to optimise dynamic resource management.
Keywords: Business process modelling, Web services, BPEL, tool-based verification, Petri nets.
Introduction
Motivation
BPEL specification:
rigourous XML syntax
English prose semantics (of apparent clarity)
Consequences:
inconsistencies, ambiguities, incompleteness
try to google for WS BPEL issues list, e.g.
Issue 32 Link Semantics in Event Handlers (resolved)
Issue 39 Inconsistent syntax for query attribute values in spec examples (resolved)
...
Issue 42 Need for Formalism (resolved) YES
51
marted 13 dicembre 2011
Approaches
Promela (SPIN)
Process algebras
Abstract State Machines
Automata
Weakest preconditions / strongest postconditions
Axiomatic semantics
Petri nets
52
marted 13 dicembre 2011
Goal
Unveil ambiguities in BPEL specification
(reported to BPEL standardization committee)
Complete formalization of all control-flow constructs
Checking for unreachable activities
Checking for potential conflicting message receipt actions
Determining which messages can be eventually consumed
53
marted 13 dicembre 2011
lting
in ambiguities
and contradictions
inwill
thebe
wording
ofbecause
the BPEL
specification
[5].
Fo
<flow
name="FL"
suppressJoinFailure="yes">
e execution
of
this
process,
either
A1
or
A2
skipped
these
two
activities
are
Flow
<links>
sation
effort,
some
of
these
issues
were
reported
and
discussed
in
the
BPEL
different
of a switch and in any execution of a switch only one branch is
taken.standard
Thus,
<linkbranches
name="x1"/>
<link
name="x2"/>
changes
to the
proposed,
albeit
yetthat
adopt
e and
two</links>
control
links
x1 orspecifications
x2 will carry awording
negative have
token.been
On the
other hand,
we not
assume
Switch
<switch
name="SW">
ondition
attached to activity A3 (denoted by keyword AND) evaluates to true if and only if
.
<case>
shilst
x1 and
x2control
carry
positive
values. Hence,
this joinhave
condition
always evaluate
to
false
and t
Link
<invoke
name="A1">
the
flow constructs
of BPEL
beenwill
designed
inControl
a way
to
ensure
<source
linkName="x1"/>
</sources>
<sources>
A3 is always
skipped
(i.e.
it is unreachable).
5
ess execution
</invoke> can deadlock , some combinations of structured activities (in particular
</case>
with<process
control
links can lead to situations where some activities are unreachable.
Consi
name="unreachableTask"
<otherwise>
FL
targetNamespace="http://samples.otn.com"
<invoke name="A2">
ess definition
in<source
Fig. linkName="x2"/>
1 where both </sources>
the XML code and aLegend:
graphical representation are pr
suppressJoinFailure="yes"
<sources>
xmlns:tns="http://samples.otn.com"
SWbecause
</invoke>
xmlns:services="http://services.otn.com"
execution
of this process, either A1 or A2 will be skipped
these two activi
Basic
Activity
xmlns="http://schemas.xmlsoap.org/ws/2003/03/businessprocess/">
</otherwise>
<flow
name="FL"
suppressJoinFailure="yes">
ifferent
branches
of a switch and in any execution of a switch
c1 onlyc2one branch is taken
</switch>
Flow
<links>
name = "A3">
<link name="x1"/>
two<invoke
control
links x1 or x2 will carry a negative token. On the other hand, we assum
<targets>
<link name="x2"/>
A1
A2
<joinCondition>
</links>
ndition
attached
to
activity
A3
(denoted
by
keyword
AND)
to
true
if
and
Switch evaluates
bpws:getLinkStatus(x1)
and bpws:getLinkStatus(x2)
<switch
name="SW">
x1
<case>
</joinCondition>
x1 and
x2 name="A1">
carry positive values. Hence, this join condition
will
always evaluate to fa
Control
Link
<invoke
<target linkName="x1"/>
AND A3
<source linkName="x1"/>
</sources>
<sources>
is always
skipped
(i.e.
it
is
unreachable).
<target
linkName="x2"/>
</invoke>
x2
</targets>
</case>
</invoke>
<otherwise>
FL
<process
name="unreachableTask"
<invoke
name="A2">
</flow>
targetNamespace="http://samples.otn.com"
<sources> <source linkName="x2"/> </sources>
</process>
SW
Legend:
</invoke>
suppressJoinFailure="yes"
</otherwise>
xmlns:tns="http://samples.otn.com"
c1
c2
</switch>
xmlns:services="http://services.otn.com"
Basic Activity
<invoke
name
=
"A3">
Fig.
1.
Example
of
a
BPEL
process
with
an
unreachable
activity.
xmlns="http://schemas.xmlsoap.org/ws/2003/03/businessprocess/">
<targets>
<flow
name="FL" suppressJoinFailure="yes">
A1
A2
<joinCondition>
Flow
<links>
bpws:getLinkStatus(x1) and bpws:getLinkStatus(x2)
x1
<link
name="x1"/>
</joinCondition>
ble scopes
are not covered in this paper since they are not a control-flow
construct a
<link
name="x2"/>
<target
linkName="x1"/>
AND
A3
<target linkName="x2"/>
</links>
he <switch
scope
of this work. Instead, serializable scopes are fundamentally
related to data ma
x2 Switch
</targets>
name="SW">
</invoke>
<case>
h it has
not name="A1">
been formally proved that BPEL processes are deadlock-free,
to the best of ou
</flow>
Control
Link
<invoke
54
</process>
<source linkName="x1"/>
</sources>
<sources>
ple
of
a
deadlocking
BPEL
process
has been put forward. Also, Kiepuszewski et al.
marted 13
dicembre
2011
</invoke>
Basic activity X
rX
to_skip X Y
sX
"skip"
X
started
cX
skippedX
ready
55
completed
fX finished
Sequence A;B
We show the binary version,
but it can be generalized to
an arbitrary number of
activities
rX
sX
rA
<sequence
name="X">
activity A
activity B
</sequence>
fA
rB
B
fB
cX
56
marted 13 dicembre 2011
fX
Flow A|B
rX
X
We show the binary version,
but it can be generalized to
sX
an arbitrary number of
activities
rA
<sequence
name="X">
activity A
activity B
</sequence>
fA
rX
sX
<flow
name="X">
activity A
activity B
</flow>
rB
rA
A
fB
fA
rB
cX
fB
57
marted 13 dicembre 2011
fX
( b ) flow
fX
fX
flow
( c ) switch
While z do A
rX
sX
rB
fB
"~z"
<while name="X">
<condition>
z
</condition>
activity A
</while>
"z"
rA
A
fA
cX
cX
fX
sX
e2
rX
58
fX
Switch (z1)A,(z2)B
rX
We show theXbinary
version, but it can be <switch name="X">
sX
<case>
generalized
to
<condition>
"z1"
an arbitrary number of
z1
</condition>
activities
rB
rA
>
activity A
rA
rB
B
Y
59
just decorations
Y
Y fX
b ) flow
sX
"~z1 z2"
fA
X
V
</case>
A
B
In blue:
<case>
<condition>
alternative
flow
fB
fA
z2
to skip activities
</condition>
activity B
(also needed for links)
</case>
cX
</switch>
rX
cX
fX
( c ) switch
fB
fB
fX
Pick (e1)A,(e2)B
( b ) flow
<onMessage e1>
activity A
In blue:
</onMessage>
alternative flow
<onAlarm e2>
to skip activities
activity B
(also needed for links)
</onAlarm>
</pick>
e2
e1
rA
fA
60
rB
cX
just decorations
Y
sX
rX
cX
fX
fB
to_skip X Y
ready
sX
started
Skip
path
"skip"
Regular
flow
completed
cX
skippedX
61
fX finished
cking
g post-conditions
pre-conditions
fororactivities.
evaluating
The
post-conditions
skip path is used
for activitie
to facili
and skip
mapping
will be described
of controlinlinks,
Sect. which
3.2. Note
will that
be described
the to skip
in Sect.
3.2
ces
twoare
patterns
respectively
(a letter
decorated
Y and by
its two
upside-down
patterns image)
(a lettersoYthat
andt
2,
behiding
graphically
the subnet
identified.
enclosed
In Fig.
in the
2, hiding
box labeled
the subnet
x yields
enclosed
an absti
ng
phicforrepresentation
activities.
This
of
will
the
mapping
be
used
in
for
the
activities.
rest
of
the
This
paper.
will
be
u
The token arrives
either here...
to_skip X Y
rX
... or here
to_skip X Y
sX
"skip"
"skip"
cX
skippedX
(but not both)
62
marted 13 dicembre 2011
fX
sX
cX
skippedX
rX
fX
Sequence + skip
rX
to_skipX Y
rX
X
sX
sX
"skip"
.
..
X1
X
Skip
f
path
Y
X1
Xn
fX1
rX2
X2
skippingX I
Y
.
..
rXn
X1
rX1
.
..
..
.
.
..
Y
Y
subactivities
X.
marted 13 dicembreof
2011
"skip_fin"
skipped X
fXn
cX
uence
rXn
Xn
cX
fX
fX2
63
fX
Regular
flow
Non-sequence + skip
rX
to_skipX Y
sX
"skip"
.
..
rX1
X1
skippingX I
Xn
fX1
fXn
Regular
flow
skippin
.
.
.
.
..
"skip_fin"
cX
Y
rXn
.
..
skipped X
"ski
.
..
Skip
path
to_ski
64
fX
"skip_fi
65
marted 13 dicembre 2011
..
.
..
.
<target
</targets>
</activityX>
rX
in
LX
in
lst 1
lsf 1in
in
lst m
in
lsf m
..
.
jctX
jcfX
cX
sX
"sjf"
..
.
LX
lst out
1
lsf out
1
transition conditions
(true / false)
tc nout
linkname=" Xinm">
lst out
n
lsf nout
in
[note] lsin
j is the status of control link Xj ,
where j=1, 2, ... , m.
marted 13 dicembre 2011
out
tc 1out
..
.
<activityX suppressJoinFailure="yes">
<sources>
<source linkname="Xout
1 ">
<transitionCondition>
tc out
1
</transitionCondition>
</source>
67
fX
to_skipX Y
.
.
.
join condition false
jctX
jcfX
sX
jcvX
in
LX
cX
"skip"
...
...
out
LX
...
...
fX
skippedX
68
marted 13 dicembre 2011
..
.
lsf out
1
lsf out
n
choice between the normal behaviour (Fig. 7 (a) and Fig. 8 (a)) and t
(Fig.Fig.
7 (b)
and Fig.
8 (b)),
the environment
a token
in eit
and
8 (b)),
because
thebecause
environment
puts a tokenputs
in either
place
rx
X1
.
.
.. .
.
cX
..
.
Xn
Lout
X
...
...
fX
..
.
fX2
fX1
fX1
rX2
rX2
I
X2
skipping
X
..
.
rXn
..
.
Xn
fXn
cX
out
...
lsf out
n
...
..
.
lsf out
1
"skip_fin"
rXn
fXn
"skip_fin"
skippedXfX
..
.
Xn
...
...
skippedX
69
..
.
Lout
X
lsf out
n
fX
X2
fX2
cX
Lout
X
lsf 1
( a ) normal behaviour
( a ) normal behaviour
marted 13 dicembre 2011
skippingX I
rX1
X1
..
.
fXn
"sjf_fin"
..
.
rXn
..
.
.
.
.
Xn
fX2
X2
rX1
X1
..
.
rX2
X2 X
to_f
.
.
.
rX2
in
LX
"skip"
..
.
fX1
jcfX
fX1
..
.
in
LX
sX
jcvXsX
..
.
fX2
rXn
fXn
cX
lsf out
1
.
.
"skip"
rX
rX1
X1
fX
n"
rX1
jcfX
jctX
Y
Y
in
LX
"sjf"
.
jcvX.
.
jcfX
jctX
sX
sX
jf"
.
.
.
to_skipXrX
.
.
.
jctX
to_skipX
rX
rX
lsf out
n
fX
( b ) skipping behaviour
( b ) skipping behavio
lsf out
n
Non-sequence
activity
with
f control links
r
r
X
skippedX
to_skipX Y
jctX
..
.
"sjf_fin"
..
.
.
"skip" ..
fXn
cX
X1
..
.
Xn
lsf out
n
cX
"skip_fin"
( b ) skipping behaviour
Lout
X
..
.
fX
rX1 Lout
X
skippingX I
skippedX
..
.
sX
...
..
.
fX1
..
.
..
.
..
.
.
.
.
Xnout
lsf
1
..
.
( a ) normal behaviour
fX1 . . .
..
.
Xn
f.X.1 .
..
.
.
.
.
X
lsf out
1 n
lsf out
n
cX
...
lsf out
1
...
lsf out
n
..
.
fX
...
jcvX
rXn
..
.
..
.
X1
in
L
"skip_fin" X
rXn
X1
rX
..
.
..
.
to_fX
Lout
XY
rX1
jcfX
rX1
..
.
..
.
..
.
..
.
cX
fin"
sX
..
.
..
.
..
.
fXn
.
.
Lin
X
.
"sjf" ..
skippingX. I
Xn
jcfX
fX1
jctX
to_skipX Y
.
.
X1
rXn
o_fX.
rX1
"skip"
Lin
X
rX
..
.
..
.
jcfX
jctX
sX
sX
"sjf"
..
Fig. 7. A non-sequence structured activity
with control links.
.
( a ) normal behaviour
marted 13 dicembre 2011
skippedX
70
fX
fX
( b ) skipping behaviour
Basic Activity
As an example, Figure 9 depicts the mapping of the BPEL process shown in Fig
Flow
r FL
Switch
sFL
Control Link
r SW
"c1"
SW
A2
sA1
A2
A1
cA1
x1
x2
AND
an unreachable activity.
rA2
tcx2
cA2
A3
fA1
lstx2
sA2
A1
c2
c1
rA1
"~c1 c2"
v
FL
sSW
fA2
tc x1
"tt"
lsfx2
lstx1
cSW
rA3
sA3
"tf"
A3
jcfA3
cA3
fA3
fSW
"ff"
"ft"
lsfx1
jctA3
cFL
fFL
Scope
Remind that a scope has a primary activity, and optionally:
a set of fault handlers,
a set of event handlers, and
one compensation handler.
To deal with them, four flags are attached to a scope:
to_continue (no exception, execution is in progress)
to_stop (an error occurred, activities need to stop)
snapshot (successfully completed, uncompensated)
no_snapshot (no compensation needed)
In the following, we just sketch the handling of faults
72
marted 13 dicembre 2011
dler associated
the scope
not included.
exception
occurs.
Scope
pped
(upon thewith
occurrence
ofistransition
skipAssume
fin orthat
sjf no
fin),
the status
indicating
status
of to continue
its snapshot
normal performance
(i.e. the Finally,
execution
of Qs
main
activ
cope snapshot
for Q during
(place no
)
will
be
recorded.
faults
may
occur
du
Q
completion of
of scope
activity
a snapshot
is preserved
scope
Q. to
Next,
consider
case
erformance
Q, A,
causing
the status
of Q to for
change
from
continue
to tothe
stop.
e Q further
(see Fig.in10(a))
or the case of suppressing a join failure for Q (see Fig. 10(b)). On
bed
Sect. 3.5.
been skipped (upon the occurrence of transition skip fin or sjf fin), the status in
rQ
nce of a scope snapshot
for Q (place no snapshotQ ) will be recorded.rQFinally, faults may
Y
Q continue to
normal performance of Qscope Q, causing .the
status
of
Q
to
change
from
to
. jctQ
be described further
.
sQ
sQ in Sect. 3.5.
Scope
"skip"
C to_continueQ
fA
"sjf"
"sjf_fin"
Lin
Q
rA
A
Y
( a ) skipping behaviour
cQ
10.fQ A
!
no_snapshotQFig.
( a ) skipping behaviour
fQ
cQ
snapshotQ
..
scope
with
its main activity.
snapshot
no_snapshotQ
Q
73
..
fQ
:)
Handlers
no_snapshotQ !
snapshotQ
out
LX
A
C to_
...
lsf out
1
..
fA
. X to_
...
lsf out
n
"sjf_fin"
X to_stopQ
:)
skipped Q
fA
rA
:)
fQ
:)
"skip_fin"
no_snapshotQ !
C to_continueQ
X to_stopQ
..
.
cQ
to_fQ
..
.
skippingQ
Cs to_continueQ
fA
cQ
..
.
jcfQ
X to_stopQ
rQ
rA
.
jctQ
. to_f
. Q
sQ
"sjf"
..
.
rA
Lin
Q
rQ
to_skipQ Y
jcfQ
snapshotQ
Faults
BPEL defines three kinds of faults:
application faults (also service faults)
generated by invoked services
process-defined faults
generated by a <throw> activity
system faults
generated by the process engine, such as join failures
it is never possible to run more than one fault handler for
the same scope, under any circumstances
74
marted 13 dicembre 2011
Some assumptions
It is not shown entirely here, but the scope is encoded in
such a way that when the token is in to_stop
(instead of to_continue)
all active activities in the scope are by-passed:
they will be terminated reaching their finished state
We do not show the case of a fault occurred during the
faulty mode of a scope (it is handled by the parent scope)
Control links are only allowed to leave the boundary of a
fault handler: we do not show dead-path elimination for them
75
marted 13 dicembre 2011
cfX
n
X
rX
rX
jcfX
"sjf" LinX
to_stopQ
jcfX
"sjf"
LinX
sX
to_stopQ
to_continueQ to_continueQ
C
tc out
jcfX
"ignore"LinX
to_stopQ
"ignore"
sX
sX
"bypass"
out
lst
tc out
lst out
lsf out
lsf out
LX
fX
( a ) suppressJoinFailure
= yes
( a ) suppressJoinFailure
= yes
to_continueQ
C
cX
cX
out
"bypass"
cX
cX
fX
rX
rX
jct X
jct X
sX
"bypass"
jct X
ct X
ignore join-failure
when to_stop
lst out
tc out
tc out
lsf out
out
out
LX
fX
76
LX
fX
( b ) suppressJoinFailure
= no
( b ) suppressJoinFailure
=
C
to_continue Q
sQ
to_invoke FH
rA
"efault"
invokedFH
activityA
</scope>
fA
rHF
HF
to_stop Q
fHF
cQ
FH
fQ
:)
77
! no_snapshot Q
snapshot Q
! no_snapshot Q
:)
fQ
snapshot Q
rQ
fault due to
throw activity
.
.
.
rA
C
rthrow
to_invokeFH
<activityA>
..
.
sthrow
invokedFH t
..
.
fA
HFt
fHFt
FHt
no_snapshot Q
cQ
fQ
:)
78
marted 13 dicembre 2011
cthrow
fthrow
rHFt
throw
<throw faultName="fault"/>
</activityA>
</scope>
sQ
.
.
.
<scope name="Q">
<faultHandlers>
<catch faultName="fault">
activityHF t
</catch>
</faultHandlers>
snapshot Q
sQ
.
.
.
rA
rX
..
.
to_invokeFH
<activityX suppressJoinFailure="no">
<targets>
<joinCondition>
invokedFH
X
jf
"ejoinf "
..
.
jf
>
jct X
jcfX
sX
X
cX
..
.
</joinCondition>
<target linkname=
</targets>
</activityX>
fault due to
join-failure
<scope name="Q">
<faultHandlers>
<catch faultname="bpws: joinFailure">
activity HF jf
</catch>
</faultHandlers>
<activityA>
rQ
..
.
rHF
jf
fX
</activityA>
</scope>
fHF
.
.
.
HFjf
fA
jf
fQ
:)
79
cQ
Expressiveness...
not in the formal sense
(w.r.t. WF patterns)
80
marted 13 dicembre 2011
Structural Patterns
Pattern 10 (Arbitrary Cycles)
Cancellation Patterns
Pattern 19 (Cancel Activity)
Pattern 16 (Deferred
Choice)
Pattern 17 (Interleaved
Parallel Routing)
Pattern 18 (Milestone)
24
standard
BPEL XLANG WSFL BPML WSCI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/
+/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+/
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Conclusion
83
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
84
marted 13 dicembre 2011
Conclusion
We have overviewed the iceberg tip of
business process management
more notation, theory, technology,
tools, methodology, encoding,
validation, verification, research
lie down there,
more or less deep,
below the surface...
...for all of us to explore
85
marted 13 dicembre 2011