300 likes | 532 Views
BPEL Development with ActiveBPEL. Brendan Tansey. What is BPEL?. B usiness P rocess E xecution L anguage for W eb S ervices (BPEL4WS) Web service orchestration language Simple arithmetic and logical operators Lecture on Oct 26 th !. BPEL Development. Requires: BPEL Engine
E N D
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
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)
Finish deployment Change Deployment URL to Match ActiveBPEL Engine installation ‘Binding’ must be set to ‘RPC Encoded’
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://www-128.ibm.com/developerworks/library/specification/ws-bpel/ • More on BPEL: next Tuesday in class