BPEL.ppt

advertisement
Session id: 40024
BPEL: Building StandardsBased Business Processes with
Web Services
Nickolas Kavantzas
Principal Member, Technical Staff
Oracle Application Server 10g, Orchestration
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 Services Meet Business
Processes
Web
Service 1
Web
Service 4
Web
Service 2
Web
Service 5
Web
Service 3
Web
Service n
Example Problem Space
Credit
Service
Purchase
Invoice
Order
Client
Consolidate
Results
PO Service
Inventory
Service
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
 ...
Recent History of
Business Process Standards
BPML
BPSS
WSCI
WS-Choreography
(Intallio et al)
(ebXML)
(Sun et al)
(W3C)
2000/05 2001/03 2001/05 2001/06 2002/03 2002/06 2002/08 2003/01 2003/04
XLang
WSFL
WSCL
BPEL4WS 1.0
BPEL4WS 1.1
(Microsoft)
(IBM)
(HP)
(IBM, Microsoft)
(OASIS)
Orchestration vs.
Choreography
Orchestration
 Private process
 Steps of an executable
workflow
 Process controlled by
one party
Business
Process
Choreography
 Public (abstract) process
 Sequence of observable
messages
 Conversation made up of
equals
Business
Process 1
1. CheckInv
Business
Process 2
2. Available
?
Derivation from Chris Peltz of HP JavaOne 2003 presentation
3. Place Order
?
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)
• Amazing industry “consensus” in the last 6 months
•
IBM, Microsoft, Oracle, Sun, BEA, SAP, Siebel …
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
Standards Building Blocks of
BPEL
Processes
BPEL4WS
Reliable
Messaging
Security
Transactions
Coordination
Quality
of Service
UDDI
Discovery
WSDL
Description
SOAP
XML,Encoding
HTTP,IIOP, JMS, SMTP
Messaging
Transport
BPEL Depends on WSDL and
WSDL Extensions
Service
Implementation
Definition
Service
Port
Binding
Service
Interface
Definition
Port types define Operations
Message
Type
BPEL Scenario Structure
<process>
<!– Definition and roles of process participants -->
<partners> ... </partners>
<!- 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>
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
Partner 2
Partner 3
Credit
Service
Inventory
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>
Purchase Process WSDL:
Purchase Process PortType:
<slt:serviceLinkType name=“purchaseSLT”>
<slt:role name=“purchaseService”>
<slt:portType name=“tns:purchasePT”/>
</slt:role>
</slt:serviceLinkType>
<portType name=“purchasePT”>
<operation name="sendPurchase">
</operation>
</portType>
Variables
 Messages sent and received from partners
–
–
Persisted for long running interactions
Defined in WSDL types and messages
Process
Customer
Service
<variable> <activity> <activity> <variable>
<A>
Persist
Persist/
Retrieve
<B>
Persist/
Retrieve
Persist/
Retrieve
Customer
Service
Variables in BPEL
BPEL:
<variables>
<variable name=“PO” messageType=“lns:POMessage”/>
<variable name=“Invoice” messageType=“lns:InvMessage”/>
<variable name=“POFault” messageType=“lns:orderFaultType”/>
</variables>
Purchase Process WSDL:
<message name=“POMessage”>
<part name=“customerInfo” type=“sns:customerInfo”/>
<part name=“purchaseOrder” type=“sns:purchaseOrder”/>
</message>
<message name="InvMessage">
<part name=“IVC” type=“sns:Invoice”/>
</message>
<message name=“orderFaultType”>
<part name=“problemInfo” type=“xsd:string”/>
</message>
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="PO" part="customerInfo"/>
<to variable=“creditRequest” part="customerInfo"/>
</copy>
</assign>
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
Simple Activities Combined
with Structured Activities
Receive <PO>
Invoke <InventoryService>
Invoke <CreditService>
Reply <Invoice>
<sequence>
<flow>
</sequence>
Sample Activities in BPEL
<sequence>
<receive partner=“customer” portType=“lns:purchaseOrderPT"
operation=“sendPurchaseOrder” variable=“PO”
createInstance="yes" />
<flow>
<invoke partner=“inventoryChecker” portType=“lns:inventoryPT”
operation="checkINV" inputVariable="inventoryRequest"
outputVariable="inventoryResponse" />
<invoke partner="creditChecker" portType=“lns:creditPT"
operation="checkCRED" inputVariable="creditRequest"
outputVariable="creditResponse" />
</flow>
...
<reply partner=“customer” portType=“lns:purchaseOrderPT”
operation=“sendPurchaseOrder” variable=“invoice"/>
</sequence>
Links – Control Flow
<flow>
<links>
<link name="XtoY"/>
<link name="CtoD"/>
</links>
<sequence name="X">
<source linkName="XtoY"/>
<invoke name="A" .../>
<invoke name="B" .../>
</sequence>
<sequence name"Y">
<target linkName="XtoY"/>
<receive name="C"/>
<source linkName="CtoD"/>
</receive>
<invoke name="E" .../>
</sequence>
<invoke partner="D">
<target linkName="CtoD"/>
</invoke>
</flow>
<flow>
<X>
<A>
<link XtoY>
<B>
<Y>
<link CtoD>
<C>
<E>
<D>
</flow>
Correlation
PO
initiate=yes
Correlation:
<PO_CustId = 10>
<PO_OrdId = 100>
Customer
Seller
• SendPurchase
• ProcessPurchaseResponse
initiate=yes
• AsynchPurchase
POResponse
• AsynchPurchaseResponse
initiate=no
Correlations:
<PO_CustId = 10>
<PO_OrdId = 100>
initiate=yes
<Inv_VendId = 20>
<Inv_InvId = 200> initiate=yes pattern=out
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
 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
variableAccessSerializable="yes|no“
...>
<variables>
</variables>
<correlationSets>? ...
</correlationSets>
<faultHandlers>
</faultHandlers>
<compensationHandler>? ...
</compensationHandler>
<eventHandlers>
</eventHandlers>
(activities)*
</scope>
Long Running Transactions
and Compensation
<scope>
Charge
Hold Fee
Undo
CreditService
• CheckCredit
• ChargeHoldFee
• CancelHoldFee
InventoryService
Reserve
Inventory Undo
</scope>
• ReserveInventory
• CancelReserveInv
Compensation Handlers
in BPEL
<scope>
<compensationHandler>
<invoke partner="Seller" portType="SP:Purchasing"
operation="CancelPurchase"
inputVariable="getResponse"
outputVariable="getConfirmation">
<correlations>
<correlation set="PurchaseOrder" pattern="out"/>
</correlations>
</invoke>
</compensationHandler>
<invoke partner="Seller" portType="SP:Purchasing"
operation="SyncPurchase"
inputVariable="sendPO"
outputVariable="getResponse">
<correlations>
<correlation set="PurchaseOrder" initiate=“yes” pattern="out"/>
</correlations>
</invoke>
</scope>
Exception Handling in BPEL
 <faultHandlers> catch exception
Based on WSDL port defining fault
 <faultHandlers> can perform activities upon
invocation
–
<faultHandlers>
<catch faultName="lns:cannotCompleteOrder"
faultVariable="POFault">
<reply partner="customer"
portType="lns:purchaseOrderPT"
operation="sendPurchaseOrder"
variable="POFault"
faultName="cannotCompleteOrder"/>
</catch>
</faultHandlers>
Just Show Me How to Do it!
Process
WSDL
Partner
WSDL 1
...
Partner
WSDL n
BPEL Scenario
<process>
<partners>
<variables>
<sequence>
<flow>
</sequence>
</process>
1. Compile
2. Package
3. Deploy
Compiled
BPEL Scenario
BPEL Runtime
Application
Server
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
Building a BPEL Scenario
What Happened to Java?
 JSR 207 - Process Definition Language for
Java
 Make business processes natural for Java
programmers
Process Definition for Java
Servlet
Transactions Messaging
EJB
Security
Naming
Application Server
Based on JSR 207 Session at JavaOne 2003
Pooling
What Happened to J2EE?
 JSR 208 – Java Business Integration
 Make business processes a first class citizen
in J2EE containers
BPEL
Engine
Transform
Engine
Routing
Engine
JSR 208
Machine SPI
...
Normalized
Message Bus
Binding Framework
EDI
JCA
Based on JSR 208 Session at JavaOne 2003
Web
Services
JMS
...
JSR 208
Binding SPI
Oracle’s Strategy
 Oracle Application Server Containers for J2EE
– BPEL runtime
 Oracle JDeveloper
– BPEL design time
 Oracle Application Server Integration
– Web service, B2B and EAI integration
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)
 ...
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
…
Parting Thoughts
 Business process portability?
–
–
Java/J2EE is portable across application servers
BPEL is portable independent of Java
 Programming language in XML?
–
–
Does this hurt?
Vendors, big and small, are busy building
modellers…
 Is BPEL in 2003/2004 J2EE in 1998?
–
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
 Recommended demos and/or hands-on labs
–
–
DemoGrounds: See the Web Services Booth
Hands On: Developing and Deploying Enterprise Web Services
with Oracle Application Server 10g
 See Your Business in Our Software
–
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.
 Relevant web sites to visit for more information
–
http://otn.oracle.com/tech/webservices
Reminder –
please complete the
OracleWorld session survey
Session Id : 40024
Thank you.
otn.oracle.com
Join Over 3,000,000 Developers!
Free Technical Advice
Free Software Downloads
http://otn.oracle.com
 Develop your career with Oracle’s experts
–
Web services, Forms Upgrade to the Web,
TopLink, Business Intelligence, Integration,
J2EE, Linux
 Connect with your peers
 Sign up at
http://otn.oracle.com/events/otnworkshop
QUESTIONS
ANSWERS
Download