• Like
Oracle
Upcoming SlideShare
Loading in...5
×
Uploaded on

 

More in: Business , Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,194
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
42
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1.  
  • 2. BPEL: Building Standards-Based Business Processes with Web Services Session id: 40024
  • 3. Web Services Meet Business Processes Web Service 1 Web Service 2 Web Service 3 Web Service 4 Web Service 5 Web Service n
  • 4. Example Problem Space Client PO Service Credit Service Inventory Service Consolidate Results Purchase Order Credit Check Reserve Inventory Credit Response Inventory Response Invoice
  • 5. Business Process Challenges
    • Coordinate asynchronous communication between services
    • Correlate message exchanges between parties
    • Implement parallel processing of activities
    • . . .
    • Manipulate/transform data between partner interactions
    • Support for long running business transactions and activities
    • Provide consistent exception handling
    • . . .
  • 6. Recent History of Business Process Standards 2000/05 XLang (Microsoft) 2001/03 BPML (Intallio et al) 2001/05 WSFL (IBM) 2001/06 BPSS (ebXML) 2002/03 BPEL4WS 1.0 (IBM, Microsoft) BPEL4WS 1.1 (OASIS) 2002/06 2003/01 WS-Choreography (W3C) 2003/04 WSCI (Sun et al) WSCL (HP) 2002/08
  • 7. Orchestration vs Choreography
    • Orchestration
      • An executable business process describing a flow from the perspective and under control of a single endpoint (commonly: Workflow)
    • Choreography
      • The observable public exchange of messages, rules of interaction and agreements between two or more business process endpoints
  • 8. Sample Business Process: Purchase Order Sample Purchase Order Purchase Order Request Purchase Order Acknowledgement Purchase Order Response Business “A” Business “ B”
  • 9. From a Choreography Perspective PO Request PO Acknowledgement PO Response Choreography – The observable public exchange of messages Public Process Business A Business B Send PO Receive PO Ack Receive PO Response Receive PO Send PO Ack Send PO Response
  • 10. From an Orchestration Perspective Send PO Receive PO Ack Receive PO Response Transform Transform From ERP To ERP PO Request PO Acknowledgement PO Response Orchestration – A private executable business process Private Process Business A BPEL Workflow
  • 11. Orchestration and Choreography Together Send PO Receive PO Ack Receive PO Response Transform Transform Business A BPEL Workflow PO Request PO Acknowledgement PO Response Generate BPEL Template Generate BPEL Template Receive PO Send PO Ack Receive PO Response Transform Transform Business B BPEL Workflow Two BPEL workflow templates reflecting a business agreement Business B Business Analyst Tool Business A
  • 12. Business Process Execution Language for Web Services
    • Version 1.0 released by IBM, Microsoft and BEA in August 2002
      • Accompanied by WS-Coordination, WS-Transaction which remain unsubmitted to standards bodies
    • 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)
    • Unprecendented industry consensus
      • IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …
  • 13. Value Proposition
    • Portable business processes
      • Built on top of an interoperable infrastructure of Web services
    • Industry wide language for business processes
      • Common skill set and language for developers
    • Choice of process engines
      • Standards lead to competitive offerings
  • 14. Standards Building Blocks of BPEL Description HTTP,IIOP, JMS, SMTP Transport XML Message SOAP WSDL UDDI Discovery Transactions Coordination WS-Security WS-Reliability Quality of Service Business Processes Context Description Management Orchestration - BPEL4WS Choreography - CDL4WS
  • 15. BPEL Depends on WSDL and WSDL Extensions Service Implementation Definition Service Interface Definition Service Port Binding Port types define Operations Message Type
  • 16. BPEL Scenario Structure <process> <!– Definition and roles of process participants --> <partnerLinks> ... </partnerLinks> <!- Data/state used within the process --> <variables> ... </variables> <!- Properties that enable conversations --> <correlationSets> ... </correlationSets> <!- Exception handling --> <faultHandlers> ... </faultHandlers> <!- Error recovery – undoing actions --> <compensationHandlers> ... </compensationHandlers> <!- Concurrent events with process itself --> <eventHandlers> ... </eventHandlers> <!- Business process flow --> (activities)* </process>
  • 17. BPEL Activities
    • Primitive Activities
    • <invoke>
    • <receive>
    • <assign>
    • <reply>
    • <throw>
    • <terminate>
    • <wait>
    • Structured Activities
    • <sequence>
    • <switch>
    • <pick>
    • <flow>
    • <link>
    • <while>
    • <scope>
  • 18. 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
    Credit Service Partner 2 Inventory Service Partner 3 Partner 1 (the process) Purchase Service
  • 19. Partners in BPEL <partnerLinks> <partnerLink name=“customer&quot; serviceLinkType=“lns:purchasePLT” myRole=“purchaseService”/> <partnerLink name= “ inventoryChecker ” serviceLinkType= “ lns:inventoryPLT ” myRole=“inventoryRequestor” partnerRole=“inventoryService”/> <partnerLink name=“creditChecker” serviceLinkType=“lns:creditPLT” myRole=“creditRequestor” partnerRole=“creditService”/> </partnerLinks> <plt:partnerLinkType name= “ purchasePLT”> <plt:role name= “ purchaseService”> <plt:portType name= “ tns:purchasePT”/> </plt:role> </plt:partnerLinkType> Purchase Process WSDL: BPEL: <portType name= “ purchasePT”> < operation name = &quot; sendPurchase &quot; > </operation> </portType> Purchase Process PortType:
  • 20. Variables
    • Messages sent and received from partners
      • Persisted for long running interactions
      • Defined in WSDL types and messages
    Customer Service Process <variable> <activity> <activity> Persist Persist/ Retrieve Customer Service Persist/ Retrieve Persist/ Retrieve <variable> <A> <B>
  • 21. Variables in BPEL <variables> <variable name=“PO” messageType=“lns:POMessage”/> <variable name=“Invoice” messageType=“lns:InvMessage”/> <variable name=“POFault” messageType=“lns:orderFaultType”/> </variables> <message name=“POMessage”> <part name=“customerInfo” type=“sns:customerInfo”/> <part name=“purchaseOrder” type=“sns:purchaseOrder”/> </message> <message name=&quot;InvMessage&quot;> <part name=“IVC” type=“sns:Invoice”/> </message> <message name=“orderFaultType”> <part name=“problemInfo” type=“xsd:string”/> </message> Purchase Process WSDL: BPEL:
  • 22. How is Data Manipulation Done?
    • Using <assign> and <copy> , data can be copied and manipulated between variables
    • <copy> supports XPath queries to sub-select data
    <assign> <copy> <from variable=&quot;PO&quot; part=&quot;customerInfo&quot;/> <to variable=“creditRequest” part=&quot;customerInfo&quot;/> </copy> </assign>
  • 23. Simple Activities
    • Receive
      • Wait for a partner inbound message
      • Can be the instantiator of the business process
    • Reply
      • Synchronous response to a receive activity
      • Response to the inbound receive from a partner
    • Invoke
      • Issue a request synchronously *or* asynchronously
    • Pick
      • Specify an inbound set of messages
      • Can be the instantiator of the business process
      • Activity completes when one of the messages arrives
  • 24. Simple Activities Combined with Structured Activities Invoke <InventoryService> Invoke <CreditService> Reply <Invoice> Receive <PO> <sequence> <flow> </sequence>
  • 25. Sample Activities in BPEL <sequence> <receive partnerLink=“customer” portType=“lns:purchaseOrderPT&quot; operation=“sendPurchaseOrder” variable=“PO” createInstance=&quot;yes&quot; /> <flow> <invoke partnerLink=“inventoryChecker” portType=“lns:inventoryPT” operation=&quot;checkINV&quot; inputVariable=&quot;inventoryRequest&quot; outputVariable=&quot;inventoryResponse&quot; /> <invoke partnerLink=&quot;creditChecker&quot; portType=“lns:creditPT&quot; operation=&quot;checkCRED&quot; inputVariable=&quot;creditRequest&quot; outputVariable=&quot;creditResponse&quot; /> </flow> ... <reply partnerLink=“customer” portType=“lns:purchaseOrderPT” operation=“sendPurchaseOrder” variable=“invoice&quot;/> </sequence>
  • 26. Links – Control Flow <flow> <links> <link name=&quot;XtoY&quot;/> <link name=&quot;CtoD&quot;/> </links> <sequence name=&quot;X&quot;> <source linkName=&quot;XtoY&quot;/> <invoke name=&quot;A&quot; .../> <invoke name=&quot;B&quot; .../> </sequence> <sequence name&quot;Y&quot;> <target linkName=&quot;XtoY&quot;/> <receive name=&quot;C&quot;/> <source linkName=&quot;CtoD&quot;/> </receive> <invoke name=&quot;E&quot; .../> </sequence> <invoke partnerLink=&quot;D&quot;> <target linkName=&quot;CtoD&quot;/> </invoke> </flow> <flow> </flow> <Y> <X> <link CtoD> <link XtoY> <C> <E> <A> <B> <D>
  • 27. Correlation Customer
    • SendPurchase
    • ProcessPurchaseResponse
    PO Correlation: < PO_CustId = 10> <PO_OrdId = 100> POResponse Correlations: < PO_CustId = 10> <PO_OrdId = 100> <Inv_VendId = 20> <Inv_InvId = 200> Seller
    • AsynchPurchase
    • AsynchPurchaseResponse
    initiate=yes initiate=yes pattern=out initiate=no pattern=out initiate=yes initiate=yes initiate=no
  • 28. Correlations in BPEL <correlationSets> <correlationSet name= &quot; POCorr &quot; properties=&quot;cor:custId cor:ordId&quot;/> <correlationSet name= &quot; InvoiceCorr &quot; properties= &quot; cor:vendId cor:invId &quot; /> </correlationSets> ... <receive partnerLink=“Customer” portType= &quot; SP:PurchaseOrderPT &quot; operation= &quot; AsynchPurchase &quot; variable= &quot; PO &quot; > <correlations> <correlation set= &quot; POCorr &quot; initiate= &quot; yes &quot; > </correlations> </receive> ... <invoke partnerLink=“Customer” portType= &quot; SP:CustomerPT &quot; operation= “ ProcessPurchaseResponse &quot; inputVariable= &quot; POResponse &quot; > <correlations> <correlation set= &quot; POCorr &quot; initiate= &quot; no &quot; pattern= &quot; out &quot; > <correlation set= &quot; InvoiceCorr &quot; initiate= &quot; yes &quot; pattern= &quot; out &quot; > </correlations> </invoke> ...
  • 29. Scopes in BPEL
    • Provide a shared context for subset of activities
    • Can contain
      • fault handlers
      • event handlers,
      • compensation handler variables
      • correlation sets
    • Can serialize concurrent access to variables
    <scope variableAccessSerializable=&quot;yes|no“ ...> <variables> </variables> <correlationSets>? ... </correlationSets> <faultHandlers> </faultHandlers> <compensationHandler>? ... </compensationHandler> <eventHandlers> </eventHandlers> ( activities)* </scope>
  • 30. Long Running Transactions and Compensation <scope> </scope>
    • ReserveInventory
    • CancelReserveInv
    InventoryService
    • CheckCredit
    • ChargeHoldFee
    • CancelHoldFee
    CreditService Undo Reserve Inventory Undo Charge Hold Fee
  • 31. Compensation Handlers in BPEL <scope> <compensationHandler> <invoke partnerLink= &quot; Seller &quot; portType= &quot; SP:Purchasing &quot; operation= &quot; CancelPurchase &quot; inputVariable=&quot;getResponse&quot; outputVariable=&quot;getConfirmation&quot;> <correlations> <correlation set=&quot;PurchaseOrder&quot; pattern=&quot;out&quot;/> </correlations> </invoke> </compensationHandler> <invoke partnerLink=&quot;Seller&quot; portType=&quot;SP:Purchasing&quot; operation=&quot;SyncPurchase&quot; inputVariable=&quot;sendPO&quot; outputVariable=&quot;getResponse&quot;> <correlations> <correlation set=&quot;PurchaseOrder&quot; initiate=“yes” pattern=&quot;out&quot;/> </correlations> </invoke> </scope>
  • 32. Exception Handling in BPEL
    • <faultHandlers> catch exception
      • Based on WSDL port defining fault
    • <faultHandlers> can perform activities upon invocation
    <faultHandlers> <catch faultName=&quot;lns:cannotCompleteOrder&quot; faultVariable=&quot;POFault&quot;> <reply partnerLink=&quot;customer&quot; portType=&quot;lns:purchaseOrderPT&quot; operation=&quot;sendPurchaseOrder&quot; variable=&quot;POFault&quot; faultName=&quot;cannotCompleteOrder&quot;/> </catch> </faultHandlers>
  • 33. Just Show Me How to Do it! . . .
    • Compile
    • Package
    • Deploy
    Partner WSDL 1 Process WSDL Partner WSDL n BPEL Scenario <process> <partners> <variables> <sequence> <flow> </sequence> </process> Application Server BPEL Runtime Compiled BPEL Scenario
  • 34. 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
  • 35. What Happened to Java?
    • JSR 207 - Process Definition Language for Java
    • Make business processes natural for Java programmers
    Application Server Servlet EJB Based on JSR 207 Session at JavaOne 2003 Messaging Transactions Pooling Naming Security Process Definition for Java
  • 36. What Happened to J2EE?
    • JSR 208 – Java Business Integration
    • Make business processes a first class citizen in J2EE containers
    Based on JSR 208 Session at JavaOne 2003 . . . Routing Engine Transform Engine BPEL Engine Normalized Message Bus JSR 208 Binding SPI . . . Binding Framework JSR 208 Machine SPI EDI JCA Web Services JMS
  • 37. Oracle’s Strategy
    • Oracle Application Server Containers for J2EE 10 g
      • BPEL runtime
    • Oracle JDeveloper 10 g
      • BPEL design time
    • Oracle Application Server ProcessConnect 10 g
      • Web service, B2B and EAI integration
  • 38. Remember BPEL Does Not Solve “World Hunger”
    • No data transformation
    • No data translation (EDI, binary formats …)
    • No human workflow
    • No trading partner agreements
    • Silent on existing business protocols (ebXML, RosettaNet …)
    • Silent on non Web service interactions (e.g. java to java)
    • . . .
  • 39. But Remember: People Are Trying to Solve “World Hunger”
    • W3C: WS-Choreography
    • Spec: WS-Transaction
    • Spec: WS-Coordination
    • Spec: WS-Composite Application Framework
    • OASIS: WS-Reliability
    • Spec: ReliableMessaging
    • Spec: WS-Addressing
    • OASIS: WS-Security
  • 40. Parting Thoughts
    • Business process portability?
      • Java/J2EE is portable across application servers
      • BPEL is portable independent of Java
    • Programming language in XML?
      • Vendors, big and small, are busy building design times and modelers…
    • Is BPEL in 2003/2004 J2EE in 1998?
      • Much missing but compelling foundation
  • 41.