Professional Documents
Culture Documents
Mike Lehmann
Principal Product Manager, Oracle Application Server 10g, Orchestration
BPEL?
B E E P L E? B E E P E L L? B I P P L E?
Web Service 2
Web Service 5
Web Service 3
Web Service n
Credit Service
Purchase Invoice Order
Consolidate Results
Client
PO Service
Inventory Service
BPSS
(ebXML)
WSCI
(Sun et al)
WS-Choreography
(W3C)
XLang
(Microsoft)
WSFL
(IBM)
WSCL
(HP)
BPEL4WS 1.0
(IBM, Microsoft)
BPEL4WS 1.1
(OASIS)
Choreography Public (abstract) process Sequence of observable messages Conversation made up of equals
Business Process 1 1. CheckInv 2. Available Business Process 2
?
Derivation from Chris Peltz of HP JavaOne 2003 presentation
3. Place Order
Version 1.1 submitted to OASIS April 2003 XML language for describing business processes based on Web services
Convergence of XLANG (Microsoft) and WSFL (IBM) IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel
Value Proposition
Portable business processes
Built on top of an interoperable infrastructure of Web services Common skill set and language for developers Standards lead to competitive offerings
Port
Type
BPEL Activities
Primitive Activities <invoke> <receive> <assign> <reply> <throw> <terminate> <wait> Structured Activities <sequence> <switch> <pick> <flow> <link> <while> <scope>
Partners
Declare the Web services and roles used by the process Tied to WSDL of the process itself and the participating Web services by service link types
Partner 1
(the process)
Purchase Service
Partners in BPEL
BPEL:
<partners> <partner name=customer" serviceLinkType=lns:purchaseSLT myRole=purchaseService/> <partner name=inventoryChecker serviceLinkType=lns:inventorySLT myRole=inventoryRequestor partnerRole=inventoryService/> <partner name=creditChecker serviceLinkType=lns:creditSLT myRole=creditRequestor partnerRole=creditService/> </partners>
Variables
Messages sent and received from partners
Persisted for long running interactions Defined in WSDL types and messages
Process
Customer Service
<A>
Persist/ Retrieve
<B>
Persist/ Retrieve Persist/ Retrieve
Customer Service
Persist
Variables in BPEL
BPEL:
<variables> <variable name=PO messageType=lns:POMessage/> <variable name=Invoice messageType=lns:InvMessage/> <variable name=POFault messageType=lns:orderFaultType/> </variables>
Simple Activities
Receive
Wait for a partner inbound message Can be the instantiator of the business process Synchronous response to a receive activity Response to the inbound receive from a partner Issue a request synchronously *or* asynchronously Specify an inbound set of messages Can be the instantiator of the business process Activity completes when one of the messages arrives
Reply
Invoke
Pick
Invoke <InventoryService>
Invoke <CreditService>
<flow>
Reply <Invoice>
</sequence>
<link CtoD>
Correlation
PO
initiate=yes
initiate=yes
Customer
SendPurchase ProcessPurchaseResponse
Seller
AsynchPurchase
AsynchPurchaseResponse
initiate=no initiate=yes
initiate=no pattern=out
Correlations in BPEL
<correlationSets> <correlationSet name="POCorr" properties="cor:custId cor:ordId"/> <correlationSet name="InvoiceCorr" properties="cor:vendId cor:invId"/> </correlationSets> ... <receive partner=Customer portType="SP:PurchaseOrderPT" operation="AsynchPurchase" variable="PO"> <correlations> <correlation set="POCorr" initiate="yes"> </correlations> </receive> ... <invoke partner=Customer portType="SP:CustomerPT" operation=ProcessPurchaseResponse" inputVariable="POResponse"> <correlations> <correlation set="POCorr" initiate="no" pattern="out"> <correlation set="InvoiceCorr" initiate="yes" pattern="out"> </correlations> </invoke> ...
Scopes in BPEL
<scope
variableAccessSerializable="yes|no
...>
<variables> </variables> <correlationSets>? ... </correlationSets> <faultHandlers> </faultHandlers> <compensationHandler>? ... </compensationHandler> <eventHandlers> </eventHandlers> (activities)*
</scope>
Undo
<faultHandlers> <catch faultName="lns:cannotCompleteOrder" faultVariable="POFault"> <reply partner="customer" portType="lns:purchaseOrderPT" operation="sendPurchaseOrder" variable="POFault" faultName="cannotCompleteOrder"/> </catch> </faultHandlers>
BPEL Scenario
<process> <partners> <variables> <sequence> <flow> </sequence> </process>
...
Partner WSDL n
Tooling Requirements
IDE build your Web services WSDL authoring model your interfaces Schema authoring model your messages Process modeling model your orchestration Packaging and deployment Debugging Monitoring Analyzing
D E M O N S T R A T I O N
EJB
Naming Pooling
Application Server
Based on JSR 207 Session at JavaOne 2003
Normalized Message Bus Binding Framework EDI JCA Web Services JMS JSR 208 Binding SPI
...
Oracles Strategy
Oracle Application Server Containers for J2EE BPEL runtime Oracle JDeveloper BPEL design time Oracle Application Server Integration Web service, B2B and EAI integration
...
Parting Thoughts
Business process portability?
Does this hurt? Vendors, big and small, are busy building modellers
Much missing but compelling foundation
Next Steps.
Recommended sessions
36811 - Application Integration using Web Services 40053 - Develop, Deploy, and Manage Web Services with Oracle Application Server 10g DemoGrounds: See the Web Services Booth Hands On: Developing and Deploying Enterprise Web Services with Oracle Application Server 10g Visit the DEMOgrounds for a customized architectural review, see a customized demo with Solutions Factory, or receive a personalized proposal. Visit the DEMOgrounds for more information. http://otn.oracle.com/tech/webservices
otn.oracle.com
Web services, Forms Upgrade to the Web, TopLink, Business Intelligence, Integration, J2EE, Linux
QUESTIONS ANSWERS