Title: Constructing Business Solutions using Service Component Architecture
1Constructing Business Solutions using Service
Component Architecture
www.oasis-open.org
Mike Edwards IBM Co-chair OASIS SCA Assembly TC
2Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
3What We have Today
- Complexity
- Rigid, brittle architectures
- Inability to evolve
4What we want to get to
- Well-defined interfaces with business-level
semantics - Standardized communication protocols
- Flexible recombination of services to enhance
software flexibility
Service-Oriented Architecture is one of the key
technologies to enable flexibility and reduce
complexity
5The SOA Programming Model
- SOA Programming Model derives its technical
strategy and vision from the basic concept of a
service - A service is an abstraction that encapsulates a
software function. - Developers build services, use services and
develop solutions that aggregate services. - Composition of services into integrated
solutions is a key activity -
- Core Elements
- Service Assembly
- technology- and language- independent
representation of composition of services into
business solutions - Service Components
- technology- and language-independent
representation of service which can be composed
with other services - Service Data Objects
- technology- and language-Independent
representation of data entity that can be passed
between services
6Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
7Service Component Architecture (SCA) Simplified
Programming Model for SOA
- model for
- building service components
- assembling components into applications
- deploying to (distributed) runtime environments
- Service components built from new or existing
code using SOA principles - vendor-neutral supported across the industry
- language-neutral components written using any
language - technology-neutral use any communication
protocols and infrastructure to link components
8SCA assembly
RMI/IIOP
AccountsComposite
External Banking Reference
Payments Component
Payment Service
OrderProcessing Component
Order Processing Service
Java EE
Accounts Ledger Component
BPEL
SOAP/HTTP
Multi-level composition
WarehouseComposite
External Warehouse Reference
Warehouse Broker Component
Mixed - technologies - app locations
Warehouse Component
Warehouse Service
JMS
Shipping Reference
C
9Key benefits of SCA
- Loose Coupling components integrate without need
to know how others are implemented - Flexibility components can easily be replaced by
other components - Services can be easily invoked either
synchronously or asynchronously - Composition of solutions clearly described
- Productivity easier to integrate components to
form composite application - Heterogeneity multiple implementation languages,
communication mechanisms - Declarative application of infrastructure
services - Simplification for all developers, integrators
and application deployers
10SCA What is it NOT
- Does not model individual workflows
- use BPEL or other workflow languages
- Is not Web services
- SCA can use / may use Web services, but can also
build solutions with no Web services content - Is not tied to a specific runtime environment
- distributed, hetergeneous, large, small
- Does not force use of specific programming
languages and technologies - aims to encompass many languages, technologies
11Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
12Bottom-up Composition
- Select a set of existing component
implementations for building the new composite
- Configure the component properties
Composite
Draw internal wires
properties
properties
Wrap the components in a composite and configure
external services/references
Hand off the composite to Deployer
services
references
13Top-down Composition
Properties
Composite
Ref
Start with gathering requirements for the
top-level composite
Service
Ref
Define the services/references and properties for
the composite
Break down the composite into individual
components and wires between them
Recursively break down each component
Hand off the individual component contracts to
developers for implementation
14Heterogeneous Assembly
PHP
BPEL
Java
C
Legacy
Components in the same composite share a common
context for many aspects such as installation,
deployment, security settings, logging behavior,
etc.
15Implementation Reuse By Configuration
Select an existing component implementation
Properties
Configure its behavior (via setting props, refs)
to match the current requirements E.g. Configure
multiple instances of product pricing component,
each with different currency, tax rate, discount
charts, etc.
Services
References
Component
Deploy the component implementation - Multiple
instances of the same implementation may be
running simultaneously
Implementation
- Java
- BPEL
- Composite
16Deployment Flexibility
Deployer chooses and configures communication
mechanisms for services/references without having
to modify the component implementation
WS Clients
SOAP/HTTP WS Binding
Properties
References
Services
ERP Service
JMS Clients
JMS Binding
JCA Binding
17Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
18Component
services
properties
Component
references
Implementation - Java - BPEL -
Composite
- Configured instance of implementation within a
Composite - more than one component can use same
implementation - Provides and consumes services
- Sets implementation properties
- Sets service references by wiring them to
services
19Simple Example
bigbank.accountcomposite
Reference
StockQuote
Service
AccountService
Service
Service
Component
AccountService
AccountService
AccountData
AccountData
Service
Service
Component
Component
20ltcomposite xmlns"http//www.osoa.org/xmlns/sca/1.
0" name"bigbank.accountcomposite"
gt ltcompositegt
ltservice name"AccountService"
promote"AccountServiceComponent"gt
ltinterface.java interface"services.account.Accoun
tService"/gt ltbinding.ws
port"http//www.example.org/AccountService
wsdl.endpoint(AccountService/AccountServiceSO
AP)"/gt lt/servicegt
ltcomponent name"AccountServiceComponent"gt
ltimplementation.java class"services.account.
AccountServiceImpl"/gt ltreference
name"StockQuoteService"/gt ltreference
name"AccountDataService"
target"AccountDataServiceComponent/AccountDataSer
vice"/gt ltproperty name"currency"gtEUROlt/pr
opertygt lt/componentgt
bigbank.accountcomposite
StockQuote
Reference
Reference
StockQuote
StockQuote
Service
Service
ltcomponent name"AccountDataServiceComponent"gt
ltimplementation.bpel processQName"/gt
ltservice name"AccountDataService"gt
ltinterface.java interface"services.accountdat
a.AccountDataService"/gt lt/servicegt
lt/componentgt
AccountService
Service
Component
AccountService
AccountData
Service
Component
ltreference nameStockQuoteService"
promote"AccountServiceComponent/StockQuoteService
"gt ltinterface.java interface"services.sto
ckquote.StockQuoteService"/gt ltbinding.ws
port"http//example.org/StockQuoteService
wsdl.endpoint(StockQuoteService/StockQuoteServ
iceSOAP)"/gt lt/referencegt
21Java Implementation Example Service Interface
Interface is callable remotely eg. as a Web
service
package org.example.services.account _at_Remotable
public interface AccountService public
AccountReport getAccountReport(String
customerID)
22Java Implementation Example (1)
package org.example.services.account import
org.osoa.sca.annotations. _at_Service(interfaces
AccountService.class) public class
AccountServiceImpl implements AccountService
private String currency "USD" private
AccountDataService accountDataService
private StockQuoteService stockQuoteService
public AccountServiceImpl(
_at_Property("currency") String currency,
_at_Reference("accountDataService")
AccountDataService dataService,
_at_Reference("stockQuoteService") StockQuoteService
stockService) this.currency
currency this.accountDataService
dataService this.stockQuoteService
stockService
Annotation for the service offered by this class
Constructor with annotations for injected
property and references
23Java Implementation Example (2)
public AccountReport
getAccountReport(int customerID)
throws AccountDataUnavailableException
AccountReport accountReport
accountDataService.getAccountReport(customerID)
ListltStockgt stocks
accountReport.getStocks()
ListltStockValuesgt stockValues
stockQuoteService.getValues( stocks, currency
) accountReport.setStockValues(
stockValues ) return
accountReport // end class
Get the basic account report using the account
data service
Obtain up to date stock values using the stock
quote service
Update the account report with the latest stock
values
24Features of SCA Composites
- Distributed
- each component can exist on a different
system/process in a network - Heterogeneous
- assemblies can contain components of mixed
implementation types - Recursive or Nested
- component in a composite can itself be
implemented as a composite - Model existing applications/systems
- either as components or as composites
- Declarative application of infrastructure
services - keep APIs out of the business logic
- philosophy for component implementation
25SCA Separation of Concerns
- SCA Components Composites
- define business logic
- describe structure of business solution
- Components and composition separated from
infrastructure - Communication mechanisms SCA Bindings
- Infrastructure facilities SCA Policy
26Policies and Infrastructure Capabilities
- Infrastructure has many configurable capabilities
- Security Authentication and Authorization
- Security Privacy, Encryption, Non-Repudiation
- Transactions, Reliable messaging, etc.
- Complex sets of configurations across multiple
domains of concern - SCA abstracts out complexity with a declarative
model - no implementation code impact
- simplify usage via declarative policy intents
- simple to apply, modify
- complex details held in PolicySets
27Attaching Intents, mapping to PolicySets
Composite
Binding
Web Services JCA JMS
Component
service
reference
ltPolicySetgt
intents
_at_providesconfidentiality,integrity,exactlyOnce
confidentiality
locate
Intents
Intents
integrity
Interaction Policy
Interaction Policy
Intents
exactlyOnce
_at_BindingsWebServices
Implementation Policy
Policies
- Intents attach to SCA elements
- PolicySets declare what QoS intents they provide
- and which Bindings they are for
- Intents index into a PolicySet for each Binding
WS-Policy
28Associating Policies with SCA Components
- Intents and/or policySets can be associated with
any SCA component - At deployment time intents map to Policies
contained in policySets - Examples attaching intents
Confidentiality applied to any use of the service
- ltservice name"AccountService promoteAccountSer
viceComponent - requires"scaconfidentiality"gt
- ltinterface.java interface"services.account.Acc
ountService"/gt - ltbinding.ws port"http//www.bigbank.com/Accoun
tService - wsdl.endpoint(AccountService/AccountServiceS
OAP)"/gt - lt/servicegt
- ltreference name"StockQuoteService
- promoteAccountServiceComponent/
stockQuoteServicegt - ltinterface.java interface"services.stockquote.
StockQuoteService"/gt - ltbinding.ws port"http//www.quickstockquote.co
m/StockQuoteService - wsdl.endpoint(StockQuoteService/StockQuoteSe
rviceSOAP) - requiresscaconfidentiality/gt
- lt/referencegt
Confidentiality applied to Web service binding
29Abstract policy declaration
Developer
Deployer
SCA Assembly
SCA Assembly
2
1
Policy Administrator
3
4
5
Repository
0
SCA Runtime
SCA policySets
Registry
0. Policy Administrator authors SCA policySets
with concrete policies 1. Developer specifies
intents on SCA assembly 2. Developer hands over
SCA assembly to Deployer 3. Deployer configures
SCA assembly by assigning SCA policySets (could
be automated) 4. Deployer deploys configured SCA
Assembly to SCA Runtime 5. Deployer updates
Registry
30(No Transcript)
31Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
32SCA Technology
How do I define, configure and assemble
components to create composites? ? SCA Assembly
Spec
How do I define, use and administer policies for
non-functional aspects (QoS, etc)? ? SCA Policy
Framework Spec
Composite
SOAP/ HTTP
Component
JMS
JCA
How do I configure SCA services/references to use
SOAP/HTTP or JMS or JCA, ? SCA WS Binding Spec,
How do I develop SCA components in BPEL? Or in
Java? Or C, PHP, ? SCA xxx Client Impl Spec
33The SCA Specifications
Assembly
Implementation Languages
Policy Framework
Bindings
Java
JEE
Security
Web services
Spring
BPEL
RM
JMS
C
Transactions
JCA
34Agenda
- Some business context
- SCA and SOA
- SCA scenarios
- SCA in action
- SCA specifications
- SCA standardization in OASIS
35Time Line Summary
Other Standards Bodies
1Q07
2007
2Q07
2Q06
4Q04
3Q05
Further complementary incubation
Finalization of further SCA Specs
SCA V0.95
SCA V1.0
SCA V0.9
SDO V1
SDO V2.01
SDO V2
SDO V2.1
Nov 2005
July 2006
Press Announcement of Project Launch
New Partners Announced
March 2007
SDO TC
Specs 1.0 Submission for Standardization
SCA TCs
System Vendors
Early Adopters
Adoption
ISVs Customer Value
36Standardization
- OASIS guides standardization of SCA SDO
Specifications in the OpenCSA Member Section - www.oasis-opencsa.org
- SCA SDO specifications originated in the Open
SOA collaboration - www.osoa.org
- Member Section Structure
- 6 SCA Technical Committees (TCs) to address one
or more Specifications - 1 SDO Technical Committee
- SDO V2.1 for Java will be completed in the JCP as
JSR235
37Possible Future work
- C language specification
- COBOL language specification
- REST binding(s)
- JSON, ATOM,
38Can I use SCA today?
- Open source projects
- Apache Tuscany
- http//cwiki.apache.org/TUSCANY/
- Fabric3
- http//fabric3.codehaus.org/
- Eclipse SOA Tools Project
- http//www.eclipse.org/stp/
- Commercial products
- http//www.osoa.org/display/Main/ImplementationEx
amplesandTools
39Summary
- SCA
- how to build composite service applications
- spans implementation communication technologies
- Leverages existing services standards