SOA Using OpenESB, BPEL and NetBeans Sridhar Reddy Technology Evangelist Sun Microsystems, Inc. [1]1
Goal Learn how to build reusable services and orchestrate them as a Composite Service using Open SOA Platform
[2]
Agenda • Services And Composite Applications • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB
• What NEXT
[3]
Agenda • Services / Composite Applications • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[4]
Wikipedia definition of Service • A well known term • In the context of Enterprise architecture, Serviceorientation, and Service-oriented architecture, the term service refers to a discretely defined set of contiguous and autonomous business or technical functionality • OASIS (organization) defines service as "a mechanism to enable access to one or more capabilities, where the access is provided using a prescribed interface and is exercised consistent with constraints and policies as specified by the service description [5]
SOA • Service oriented Architecture; It is a software architectural style for creating and using business processes, packaged as services • SOA separates functions into distinct units (services), which can be distributed over a network and can be combined and reused to create business applications. These services communicate with each other by passing data from one service to another, or by coordinating an activity between two or more services
[reference wikipedia] [6]
Web Service • No single definition could nail down what a Web service is! • Generally speaking, it is an industry pattern where remote services are accessed using protocols HTTP & SOAP and using the interface definition language WSDL
[7]
Traditional Application Development • Point technologies, products, and APIs > For example: EJB, Spring, Hibernate, JSF,
Servlets, Struts, etc.
• Lots of glue written by developers to integrate and make these services reusable > Inflexible, since their designs didn't account for it > At best, requires a great deal of expertise & time
[8]
Composite Applications • A way to compose applications from reusable parts • Composite applications employ SOA principles > Features exposed as Web services > Standards-based interaction between
services > Are themselves composable
[9]
Are Services always Web services ? • No there are a lot of different software services. Services are implemented in one or more of the following ways > Enterprise JavaBeans™ (EJB™) technology > BPEL, XSLT, SQL > Business rules > Mainframe transaction > EDI transform > Humans (yes, really!) >…
• Although web services paradigm seem to have caught on a lot in the industry
[10]
So, a Web services Stack Sufficient ? • May be, if all services have Web services endpoints • In order to create a Composite Service that includes non-web service based service the following are needed > An Orchestration tool (BPEL) > An Open Standard (JBI) > An Open Platform(Open ESB)
[11]
Composition of Services Airline Reservation
Incomeplete Itinary
Complete Itiniary
Airline ?
Airline Reserved Timeout Cancel
Hotel Reserved Timeout Cancel
Car Reservation
Car ?
Car Reserved Timeout Cancel
Hotel ?
Hotel Reservation [12]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[13]
SOA • To achieve the goals of SOA, we must have the capability of > Composing services > Exposing these services > Clubbing services; one or more services are
used together > Coordination of services; few services may interact with each other in a bigger composite service > Orchestration of services
• In the rest of the presentation we will see how we can achieve that! [14]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • GlassFish ESB .next
[15]
Business Process Execution Language • SOA needs a
tool (language) that helps in
> Composition of services: Developers should be able to
implement a defined service. > Coordination of services: Developers should have the easy capability to coordinate different services. > Orchestration of services: Developers need easy mechanisms to implement the orchestration of their composed services, > For composing synchronous and/or asynchronous services. > For Error handling > For Compensation > Other general programming constructs: SOA implementation tools also need advanced level of programming capabilities > Concurrent execution > Conditional repeated executions > Decision gates and so on. [16]
Why BPEL? • All the capabilities we just talked about are provided by BPEL. • BPEL is a Oasis standard backed by industry leaders • BPEL is based on WSDL specification • BPEL is a declarative language.
[17]
Business Process does... • Coordinate asynchronous • Manipulate/transfor communication between m data between services partner interactions • Correlate message • universal data exchanges between parties model for message • Support for long running exchange business activities
[18]
Business Process does... • Exception handling • Implement parallel processing of • Implement activities compensation logic (Undo operations) • Implement asynchronous event handling • Implement concurrent event handling • Implement event handling with timeouts [19]
BPEL Document Structure <process> <partnerLinks> ...
... ... ... ... <eventHandlers> ... (activities)* [20]
BPEL Activities Basic Activities •
Structured Activities •
• •
• <while> •
• •
• •
• <wait> • <empty>
• • <sequence>
• <exit>
• <scope>
[21]
BPEL: Basic Activities • > To invoke a one-way or request/response
operation on a portType offered by a partner
• > To do a blocking wait for a matching message to
arrive > Can be the instantiator of the business process
• > To send a message in reply to a message that was
received through a
> The combination of a and a
forms a request-response operation on the WSDL portType for the process
[22]
BPEL: Structured Activities • <sequence> > Perform activities in sequential order
• > Perform activities in parallel
• > Conditional choice of activities
• <scope> > Enclose multiple activities in a single scope [23]
Example Business Process Receive
Invoke
Invoke
Reply
<sequence>
[24]
Sample Activities in BPEL <sequence> ...
[25]
BPEL: Relationship to Partners WSDL Partner Service
Partner Service Partner Service Orchestrating Process (BPEL)
Partner Service
[26]
BPEL Contd.. • BPEL is key to implementing SOA > > > >
Conversational Mostly Async XML Document-based Orchestrated
• It is no wonder that BPEL has become the language of choice for SOA.
[27]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[28]
Loan Processing Demo – Using BPEL orchestration and Open ESB components
[29]
Introduction Contd. Home loan approval process User sends loan application form
Approval process receives message
Invokes credit check service
Credit check service Credit check process receives message Responds with information of credit worthiness
Invokes home appraisal service Receives price evaluation service response
Qualifies for loan?
File write
Home appraisal service Home appraisal process receives message Asynchronously responds the result of price evaluation
Invoke loan approval response service
[30]
Demo Introduction
• “Client” sends loan application to Loan Service • Loan Service checks the credit worthiness of the applicant by calling Credit Check Service • Loan Service then calls Home Appraisal Service to appraise the home price • If both Credit Check Service and Home Appraisal Service, send an approval, Loan Service approves the loan and sends a message for the Client [31]
Credit check service Credit check service
Credit check process receives message
Responds with information of credit worthiness
• Creating the Credit Check Service • Uses Synchronous request-reply pattern > Dotted line
represents the synchronous response
• Responds with a Approved or Denied message based on contents of the request [32]
Home appraisal service
Home appraisal service Home appraisal process receives message
Asynchronously responds the result of price evaluation
• Creating Home Appraisal Service • Uses Asynchronous request-reply pattern. • Enhancing the Loan Service to call the Home Appraisal Service. [33]
Loan Approval service Home loan approval process Approval process receives message
Invokes credit check service
Invokes home appraisal service Receives price evaluation service response
Qualifies for loan?
Invoke loan approval response service
• Creating a simple version of Loan Service • Accepts request from client • Employs the Credit Check Service • Responds to the client by writing the loan approval or denial message to a file [34]
Summary – putting it all together Home loan approval process User sends loan application form
Approval process receives message
Invokes credit check service
Credit check service Credit check process receives message Responds with information of credit worthiness
Invokes home appraisal service Receives price evaluation service response
Qualifies for loan?
File write
Home appraisal service Home appraisal process receives message Asynchronously responds the result of price evaluation
Invoke loan approval response service
[35]
Demo now.. • Lets dig into the code, tools, runtimes • LAB-5510: > Orchestration of Web Services using WS-BPEL
[36]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[37]
Java Business Integration (JBI) • We talked about how BPEL fits into the building blocks of SOA. What about exposing of services and the details of invoking other services • Services can be exposed via different protocols which immediately means > System needs to be able to receive messages on a whole slew of protocols > System needs to be able to invoke on a whole slew of protocols • It is a good architecture to separate out the service from the details of how it may be exposed now or in future. • We will see how JBI fits in here. [38]
What Is JBI? • Java Business Integration • Standard “meta-container” for integrated services • Provides for plug-in: > Service Engines (SE): business logic > Binding Components: communications protocols • Standard deployment model • Loose coupling via WSDL message exchanges between WSDL described Services [39]
Various services and protocols Orchestration (BPEL)
Transformation (XSLT)
WSDL
WSDL
J2EE Platform
Normalized Message Router
WSDL
WS-I Basic SOAP
WSDL
WSDL
AS2
JMS
JBI Core Services
System Management
WSDL
J2EE Platform [40]
Service Provider Self Description Components register the services they provide
Orchestration Transformation J2EE Platform (BPEL) (XSLT) WSDL
WSDL
Normalized Message Router
WSDL
WS-I Basic SOAP
WSDL
WSDL
AS2
JMS
JBI Core Services
System Management
WSDL
J2EE Platform [41]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[42]
What is Open ESB? • Project Open ESB provides an Enterprise Service Bus (ESB) runtime using Java Business Integration as the foundation > This allows easy integration of web services
to create loosely coupled enterprise class composite applications. • It also provides various tools for the development, deployment, and management of composite applications
[43]
Open ESB Architecture
[44]
Open ESB Components Service Engines > > > > > > >
BPEL SE XSLT SE JavaEE SE IEP SE ETL SE SQL SE Workflow SE
Binding Comps > > > > > > > > > > >
MQSeries BC HL7 BC SAP BC SMTP BC HTTP BC JMS BC File BC CICS BC DCOM BC CORBA BC ...
Other > > > >
Clustering CASA JBI Mock WSIT Tech
In Progress > > > > >
CAM Aspect SE Encoding SE Rules SE Scripting SE [45]
Open Source Projects for SOA on java.net > Open ESB > Umbrella Project for all Open ESB Projects ( http://open-esb.org/) > Contains Web Applications, JBI Core runtime, Multi App Server support
> Open JBI Components > Sub Project of Open ESB > Contains all the JBI compliant components > So far contains about 40 components; more are being added > Although Sun is a major contributor, many others are contributing quite a bit – about 12 or so are non-Sun contribution
> Project Mural > Project to develop community-driven solutions for master data management (https://mural.dev.java.net/). [46]
Project Open ESB Over 600 members and 600,000 downloads Best SOA tools via Netbeans CDDL license – Free to download and free to deploy Close to 40 components http://open-esb.org
[47]
Agenda • Composite Applications / Services • Building Blocks of SOA > BPEL > SOA Demo > JBI > Open ESB • What NEXT
[48]
Introducing Project Fuji – Do more with Less • Bigger standards – OSGi, JBI, WS- *, Java EE • More Flexibility – languages, tooling, deployment env • More Choices – Modular, get what you want • Interoperability between OSGi and JBI based services • Less code – less framework and plumbing code. Configuration Vs coding • Loose Coupling – Pluggable architecture • Inherently scalable
http://fuji.dev.java.net/
[49]
Introducing Open ESB V3 • Core runtime – Fuji • Continuum of strength of Open ESB V2 > Moving forward the vibrant ecosystem of
Open ESB V2
• Container Neutral ESB > Deploy on any OSGi compliant
container., aka GlassFish V3
• Driven by YOU - COMMUNITY http://open-esb.org
[50]
Introducing GlassFish ESB http://glassfishesb.org
• GlassFish ESB = Open ESB + GlassFish + ... • Lightweight and agile ESB for GlassFish •
[51]
Getting Involved > Visit - http://glassfihesb.org, http://fuji.dev.java.net, http://open-esb.org > Easy to join
>
>
> > >
> Sign a Contributor Agreement and join many of the efforts at Open ESB Check out forums and aliases at > http://open-esb.org > https://open-jbi-components.dev.java.net/ Partners or contributors may get featured on open-esb.org site. > https://open-esb.dev.java.net/Partners.html > https://open-esb.dev.java.net/CommunityPartnerDirectory.html Download > https://open-esb.dev.java.net/Downloads_OpenESB_Addons_NB6.html Components Documentation, demos,... > https://open-esb.dev.java.net/Components.html Components Source code [52]
Mural - Data Services for SOA and Web 2.0 - Open Source face of Master Data Management - Single View of data from multiple sources http://mural.dev.java.net
GlassFish ESB - Service-Oriented integration platform - Lightweight and flexible - Built on open standards - OSGi, JBI - Loosely coupled, inherently scalable http://glassfishesb.org
COMMUNITY CONTRIBUTION
'GlassFish ESB' and Mural Portal
Open Source MURAL OPEN ESB Project Metro OPEN DS
Business Activity Monitoring COMPLEX EVENT PROCESSING | BUSINESS DASHBOARDS
Master Data Management Single Entity View | Data Integration | Data Quality | Master Index
Business Process Management ORCHESTRATION
NETBEANS GLASSFISH
Enterprise Service Bus PLUGGABLE | MEDIATION | ADAPTERS | ROUTING | TRANSFORMATION MESSAGE SERVER
Infrastructure
|
APPLICATION SERVER
|
DIRECTORY SERVER
|
SINGLE SIGN-ON [53]
GlassFish ESB, Project Fuji, Open ESB v3 ●
●
●
Introducing Project Fuji, a lightweight SOA runtime that can be deployed on any OSGi complaint container Project Open ESB V3 – Container-neutral ESB, continuation of Open ESB V2 and much more that leverages Project Fuji Introducing GlassFish ESB, the next generation lightweight, agile, flexible SOA platform > Fuji – core runtime > Open ESB V3 + GlassFish – Production Supported ESB
platform > Preview is available for download at http://www.glassfishesb.org
[54]
Resources: • • • •
http://glassfihesb.org http://fuji.dev.java.net http://open-esb.org Check out forums and aliases at > http://open-esb.org > https://open-jbi-components.dev.java.net/
• Partners or contributors may get featured on openesb.org site. > https://open-esb.dev.java.net/Partners.html > https://open-esb.dev.java.net/CommunityPartnerDirectory.html
• http://www.netbeans.org/kb/trails/soa.html • http://developers.sun.com/learning/javaoneonline
[55]
SOA Using OpenESB, BPEL and NetBeans Sridhar Reddy [email protected] Sun Microsystems, Inc. 56 [56]
Sessions and Activities at JavaOne • Hands on Labs > LAB 5530 - Building Secure, Reliable, Transactional SOA Applications Using Open ESB, Tue, 6PM- 7.30PM > LAB 5540LT - Query Continuous Data streams Using OpenESB's Intelligent Event Processor, Wed, 9.30AM to 11.30AM > LAB 5500 - Dynamic Service Composition with OpenESB: Compose a JavaOne℠ Conference Survey/Poll Application, Analyze Live Data, and Generate Real-Time Poll Reports, Thu, 2.50PM to 4.50PM > LAB 5510 - Orchestration of Web Services, Using WS-BPEL, Fri 10.50AM to 12.50PM > BOFs > BOF 6586 - Java™ Business Integration 2.0, Wed, 6.30-7.20PM > BOF 6211 - Transactions and Java™ Business Integration (JBI): More Than Java Message Service (JMS), Wed, 7.30 - 8.20PM [57]