Sie sind auf Seite 1von 43

 

Using State-Engine as an SCA Spring


 
 component in SOA Suite 11g

DOAG Konferenz 2010

Guido Schmutz
Technology Manager, Trivadis AG

17.11.2010, Nürnberg

Basel Bern Lausanne Zurich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg Munich Stuttgart Vienna
© 2010
Trivadis facts & figures
 §11 Trivadis locations with more than
540 employees
§Financially independent and
CUSTOMER
sustainably profitable
BUSINESS INTEGRATION SERVICES
§Key figures 2009
Business IT SOLUTIONS, SERVICES, & PRODUCTS
departments
Business Intelligence
Enterprise Content Management
Revenue CHF 100 / EUR
66 mio.

Infrastructure
Services for more than 650
Application Development clients in over 1‘600
Engineering
projects
Business Integration Services
Training Managed Services Over 160 Service Level
IT Agreements
departments
Integration, Application Performance
Management, Security
More than 5'000 training
participants
TECHNOLOGIES
Oracle, Microsoft, IBM, Open Source Research and
development budget:
CHF 5.0 / EUR 3.3 mio.

§
2 Trivadis – the company © 2010
Why we are special


Customer-specific §offers substantiated techniques and skills as well as self-developed


solution competence and approaches
vendor independence §guarantees repeatable quality and a safe execution

Technology competence §offers more than 15 years of expertise in Oracle, Microsoft, IBM, and
open source
§has its own Technology Center and strives for technological excellence

Solution and integration §has a wide and cross-sectoral customer basis and more than 1600
expertise projects every year
§Combines technological expertise with an understanding of the
specific business needs of the client

Support for the entire IT §has a modular portfolio of services for the entire IT project lifecycle
project lifecycle §provides the appropriate combination of solutions and services for
every „level of maturity“

3 Trivadis – the company © 2010


Idea for this session


Test what you can really to with the Spring Component


 A bit more than just another HelloWorld sample


 Test Drive it with a more complex use case
Integrate an existing implemementation (Apache Commons SCXML
library) into SOA Suite as an Spring Component
 By that show that a state engine offers another (sometimes better?)
approach for documenting (business) processes
Just a Proof of Concept for myself !!

Have a „sexy“ presentation topic for OOW 2010 and DOAG 2010;-)

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Result


Not successfull !

Issues with the classloader when trying to initiate the Commons


SCXML (ClassNotFoundException)!

I‘m talking to the Oracle Development to see how to solve that!


SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Summary


There can be issues with the classloader


Make sure that you test what you want to integrate right upfront

Lessons learnt: Do not create sexy and fancy abstracts just to



get accepted to DOAG ;-) Or make sure before that it‘s somehow
achievable....

So this is it !???

Of course not, just changed my topic slightly and I will present
some interesting use cases with the Spring Component in SOA
Suite 11g and in a 2nd part the Apache Commons SCXML
library!

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


SOA Suite 11g Spring Component

Apache Commons SCXML

OOW 2010

Guido Schmutz,
Technology Manager / Oracle
ACE Director

Partner Trivadis AG

23.09.2010, San Francisco

Basel · Baden · Bern · Lausanne · Zürich · Düsseldorf · Frankfurt/M. · Freiburg i. Br. · Hamburg · München · Stuttgart · Wien
© 2010
Agenda


§ Spring Component of SOA Suite 11g


 Introduction
 Hello World
 “Advanced” Use Cases
§ State Machine and Apache Commons
SCXML
 What are State Machines
Data are always
 What is Apache Commons SCXML
part of the game.
§
§
§

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


SOA

Suite 11gR1 PS2 Architecture

BPMN 2.0,
Shared BPMN
BPEL
Model
BPA Web based customization
Rich End User Interaction

C u s to m e r

N o t if y D o w n lo a d
C u st o m er User Vid eo S al es Re p

C r e a t e a n d P ro c e s s W ai t C a ll
S u b m it O rd e r P a y m e n t 3 da y s C u s t o m e r

C op y to
S3

Business Workspace Process Portal MS Office


View
(WC spaces)

BPM Studio Process Composer


(with Business and IT
views)

E
P
B
L M
N
P
B W
m
H
o
n
a
u M
rkflw
X
AO
,G
(+
g) R
e B
sin
u
l to
r M
ia
d
e g S
rin
p
B2B
Unified Runtime
Process Common JCA-based connectivity infrastructure Policy Manager
Analytics Optimized
binding
BAM Oracle Service Bus
Proc Cubes

EM console
+BPMN Screens
Repositor
y
Oracle Restricted and Confidential © 2010
The Spring component


„Officially“ introduced with SOA Suite 11g PS2


Allows to publish Java Interfaces implemented by Spring beans as


a service that can be used inside a composite application


By that

 part of the logic required in a SOA composite can be easily


implemented in Java an used like any other service component
 a Spring Ban can be reused within the composite and even outside
the composite either as an EJB or as a Web Service
Additionally the Java beans in the Spring Context component can

call services exposed by other Service components and Adapter


bindings
 Java bean can retrieve records from a database table using the DB
adapter

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Agenda


§ Spring Component of SOA Suite 11g


 Introduction
 Hello World
 “Advanced” Use Cases
§ State Machine and Apache Commons
SCXML
 What are State Machines
Data are always
 What is Apache Commons SCXML
part of the game.
§
§
§

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Hello World – Step 1


The HelloWorldImpl POJO used inside a Spring component

Lessons learnt: Make sure to compile classes before wiring!


SOA Suite 11g Spring Component / Apache Commons SCXML © 2010
Hello World – Step 2


Add the GreetingProvider strategy interface to provide an


extended greeting message

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Hello World – Step 3


Implement the GreetingProvider as a


separate Spring component and wire it to
the HelloWorld component

© 2010
Hello World – Step 4


Implement the GreetingProvider as a Mediator component and


wire it to the HelloWorld component

Lessons learnt: if you delete a wire, the <sca:reference> element


is also removed

© 2010
<sca:service> Element


Declares a Spring bean that SCA exposes as a service


Takes the following attributes


 Name
§ the name of the service (required)
 Type
§ The fully qualified Java type of the Java class to be exposed as an
SCA service (required)
 Target
§ The bean to be exposed as a service (required)

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


<sca:reference> Element


Declares a Spring bean representing an SCA service external to the


Spring application context


Takes the follwing attributes

 Name
§ The name of the reference (required)
 Type
§ The fully-qualified Java type of the interface or class representing the
remote service (required)
 Default
§ The target bean for the reference if none is specified (optional)

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Callback


 the concept of callbacks does not exist in the spring framework


For Oracle SOA Suite a callback is specified as a 2nd port type for

interface.wsdl or a 2nd Java name for interface.java


The spring metadata has only sca:services and sca:references and no

way to specify a callback


To design a callback with spring, you must provide sca:services and

sca:references with a specific name


 create a sca:service and sca:reference using naming conventions
of someService and someServiceCallback
 Oracle SOA Suite recognizes this convention and creates a callback

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Agenda


§ Spring Component of SOA Suite 11g


 Introduction
 Hello World
 “Advanced” Use Cases
§ State Machine and Apache Commons
SCXML
 What are State Machines
Data are always
 What is Apache Commons SCXML
part of the game.
§
§
§
§

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Use Case 1: Accessing the Spring Context


Use Case: Want to access/lookup another bean from the spring


context
Idea: Implement the Lifecycle Interface

Lessons learnt: Only a BeanFactory and not an ApplicationContext


is created!
SOA Suite 11g Spring Component / Apache Commons SCXML © 2010
Use Case 2: Groovy Script


Use Case: Want to use the Spring Dynamic Language Support to


execute a Groovy Script


Idea: use the <lang:groovy> tag and reference the script and

put the external libraries in SCA-INF/lib of the SOA project


Lessons learnt: Classloader is not my friend!


SOA Suite 11g Spring Component / Apache Commons SCXML © 2010
Use Case 3: Executing Task asynchronously


Use Case: Want to execute a possible long running Java method


asynchronously
Idea: use the Spring TaskExecutor abstraction

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Use Case 4: Schedule a Job


Use Case: Want to Schedule a job/task/service to run repeatedly


Idea: use a Timer to schedule the call of a „service references“


Lessons learnt: „free-floating“ Spring bean (timerFactory) is not initialized!


it need to referenced from a bean which is externalized as a service!
SOA Suite 11g Spring Component / Apache Commons SCXML © 2010
Use Case 5: Schedule Job to
run

delayed
Use Case: Want to schedule a method/service to run delayed

Idea: use a Timer and schedule the call of a „service references“


through a service call

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Use Case 6: Caching


Use Case: Want to cache some information and access it in a next


request
Idea: use a Map and store the information in there

Could be further extended by using Oracle Coherence to get


access to the Grid !


SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Summary


Spring Component is a very nice and long awaited feature!


Uses cases for it are endless….. Just presented some use cases to

whet your appetite!


Only use the Spring Component if there is no out-of-the-box feature

offered by SOA Suite itself


Make sure that your external library works before you invest too

much time!
Actual books where you’ll
find more information
about SOA Suite:

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Agenda


§ Spring Component of SOA Suite 11g


 Introduction
 Hello World
 “Advanced” Use Cases
§ State Machine and Apache Commons
SCXML
 What is a State Machine
Data are always
 What is Apache Commons SCXML
part of the game.
§
§
§

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Introduction


§ A state describes the condition of an object at a given point in its


lifetime
 "A state is a condition or situation during the life of an object during
which it satisfies some condition, performs some activity, or waits for
some event"
[Booch et al. (1999) UML Language User Guide, p291]
§ A state diagram describes all possible states of an object & the
paths to get from one state to another when an external event is
received
§

28 Trivadis – the company © 2010


What is a state machine ?


§ A state machine diagram models the behaviour of a single


object/system
§ specifies the sequence of events that an object/system goes
through during its lifetime in response to events

29 Trivadis – the company © 2010


Building Blocks


§ Start and End States § Transitions


§ §
§ §
§ §
§ State Actions § Self Transitions

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Building Blocks


§ Compound States § History State

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Building Blocks
  

§ Concurrent Blocks

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


Agenda


§ Spring Component of SOA Suite 11g


 Introduction
 Hello World
 “Advanced” Use Cases
§ State Machine and Apache Commons
SCXML
 What is a State Machine
Data are always
 What is Apache Commons SCXML
part of the game.
§
§
§

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


What is State Chart XML (SCXML)


§ Generic and environment agnostic markup language for state


machine definition
 W3C Working Draft (13 May 2010)
 http://www.w3.org/TR/scxml/
§ Based on UML 2.0 and Harel State transition tables

34 Trivadis – the company © 2010


SCXML features


§ States and transitions


 Composite, Orthogonal and Final
 Events, guards and targets
§ Data Model
 Pluggable data representation and expression language
§ Executable content
 On entry, exit or transition
 Extensible
§ External communications module
 Send, cancel
 Invoke, Finalize
§ History

35 Trivadis – the company © 2010


Apache Commons SCXML


§ http://commons.apache.org/scxml/
§ Implements State Chart XML (SCXML)
§ The only Java engine which implements SCXML (as far as I know)

§ The "standard actions" defined by the SCXML specification are


 <var>, <assign>, <log>, <send>, <cancel>, <if>,
<elseif>, <else>.
 © 2010
36 Trivadis – the company
State Actions


stm state-action

Initial

first

+ entry / log entering


+ exit / log exiting

to.next

next

Final

37 Trivadis – the company © 2010


stm transitions

Transitions (simple, condition, self) Initial


file.received
[counter < 4]
main

to.processing
[counter >= 4]

processing

Final

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


stm parallel

parallel

Parallel States
[para-1]

para11 para12
to.para12


Initial [para-2]

para21 para22
to.para22

Synch

SOA Suite 11g Spring Component / Apache Commons SCXML © 2010


stm timeout

Timeout with Custom Action Initial

 timeout
start-state [after expired
2sec]

§ SCXML can be extended with


to.next to.start
custom action
 Used for timeout transitions next

40 Trivadis – the company © 2010


Send action


§ <send> can used to send events and data to external systems,


including external SCXML Interpreters, or to raise events in the
current SCXML session
§ stm send-internal

Initial

main

+ entry / signal event "to.processing"

to.processing error.send.targetunavailable

processing
Error

Final

41 Trivadis – the company © 2010


Using SCXML in a SOA


§ Implemented a Spring Wrapper around Commons SCXML


§ Exposed a Web Service interface through Spring-WS
§ Created Publisher compontents to publish/signal events via Event
Delivery Network (EDN) or Web Services

cmp SOA-State-Engine

EDNPublisher
signal
StateEngine
createInstance listener

send
triggerEvent

WebServ icePublisher
signal

42 Trivadis – the company © 2010


   Trivadis @ DOAG: 3th floor


?
www.trivadis.com

Basel Bern Lausanne Zurich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg Munich Stuttgart Vienna
© 2010