BPEL Development with ActiveBPEL

egyptiannorweiganInternet and Web Development

Oct 31, 2013 (3 years and 7 months ago)

79 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


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

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/l
ibrary/specification/ws
-
bpel/


More on BPEL: next Tuesday
in class