ActiveBPEL

advertisement
BPEL Development
with ActiveBPEL
Brendan Tansey
What is BPEL?
• Business Process Execution
Language for Web Services
(BPEL4WS)
• Web service orchestration
language
• Simple arithmetic and logical
operators
• Lecture on Oct 26th!
BPEL Development
• Requires:
– BPEL Engine
– BPEL Developer (or text editor,
for the masochistic)
• BPEL Engine
–
–
–
–
Executes BPEL processes
IBM BPWS4J
ActiveBPEL Engine
Installation notes on Wiki
BPEL Developer
• Oracle BPEL Designer
– Oracle BPEL Process Manager
(OC4J, JBOSS, BEA WebLogic)
•
•
•
•
Eclipse BPEL Project
Parasoft BPEL Maestro
Intalio Designer
Many others
ActiveBPEL Designer
•
•
•
•
•
Construct graphical workflows
Assist with WSDL creation
Simulate workflow execution
Prepare service for deployment
Deploy service to ActiveBPEL
server
• Eclipse-based
• Makes your life easier
ActiveBPEL Designer Cons
• Windows-only
–
–
–
–
Windows lab in CSC 1-67
Go to CSC 1-43 to get an account
Install onto network drive
Make workspace on network
drive
• Quirky
– Hence, presentation
ActiveBPEL Designer Demo
• Create a simple web service
that adds 4 input numbers
• Uses an existing web service
– Takes 4 numbers as input
{a,b,c,d}
– Returns two sums as output
{a+b, c+d}
• Create client for service
Live Demo! (with slides)
Using an external web
service to add four numbers
Create project/BPEL
Add external web references
Create sequence
• Drag ‘Sequence’ from palette
• In sequence, insert “Operation
Wizard”
• Follow wizard instructions,
creating a new WSDL file in
your current project
• Refresh project so new WSDL
is visible
Create service instance
• Force first element of sequence
to create a new instance
Using external services
• Add WSDLs as imports
Using external services
• Create input and output
variables for services
Create assignment activity
• Assign our service’s input to
input for other service
Invoke web service
• Create invoke activity with
Operation Wizard
• Select local copy of remote
WSDL (can’t use remote copy –
buggy)
• Choose port type and
operation
• Create new PLT
• Add to existing WSDL (buggy)
Assign service output
• Use built-in arithmetic
operator
Simulating execution
Providing sample input
Error!
• Need to initialize complex types before using
• Initialize with literals.
<in0 xmlns="" xmlns:def="http://siffleur.cs.ualberta.ca:9999/axis/services/AddFunction1Service"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="def:Complex">
<i xmlns:tns="Sum4WSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:double">0.0</i>
<r xmlns:tns="Sum4WSDL" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xsd:double">0.0</r>
</in0>
•
•
•
•
Red = Invoked service’s namespace
Green = Your service’s namespace
Yellow = Variable type & element types
Magenta = Variable structure
Creating complex responses
<?xml version="1.0" encoding="UTF-8"?>
<ns1:addComplexReturn xmlns:ns1="urn:BeanService">
<i>4.2</i>
<r>5.7</r>
</ns1:addComplexReturn>
Successful simulation
Can now
examine output
variable
Deploying your service
• The ActiveBPEL Engine
requires that all services are
packaged into .bpr files.
– These packages need deployment
descriptors and manifests
• These files need to be placed in
the Tomcat/bpr directory
• Or, deployed through
ActiveBPEL Designer (easiest)
Creating a Deployment Descriptor
Finish deployment
‘Binding’ must be set
to ‘RPC Encoded’
Change Deployment URL to
Match ActiveBPEL Engine
installation
Creating a client
• See sample code on Wiki
• String endpoint = URL of
service
• URL can be found in Axis
servlet
• call.setOperationName(new
QName(“”,”<processName>”);
• <processName> from BPEL
Admin Console
Engine admin client
• http://siffleur.cs.ualberta.ca:9999/active-bpel/
• Can conflict with other Tomcat
applications. Errors in the
admin client are likely caused
by this.
• Can view process graph for
deployed services online
Tips
• If working from home,
authenticate to
access.cs.ualberta.ca to access
non-standard remote ports.
• When creating an ‘invoke’
activity, copy remote WSDL to
local project in order to use it.
Local copy also needs to be
added to web references.
More tips
• ‘Invoke’ creation wizard is
buggy. If you can’t select your
WSDL, click ‘Create new …’
then back to ‘Use existing …’.
• Remember the ‘…’ when
creating static endpoints.
• There is more than one way to
accomplish most things in
ActiveBPEL.
Yet more tips
• If an import isn’t being read
correctly, remove it and re-add
it.
• If properties give errors when
they should work, check
imports, then re-select each
value
References
• ActiveBPEL documentation:
http://www.activebpel.org/docs/index.html
• BPEL v1.1 Specifications:
http://www128.ibm.com/developerworks/l
ibrary/specification/ws-bpel/
• More on BPEL: next Tuesday in
class
Download