Using state-engine-as-sca-component-final

  • 2,436 views
Uploaded on

Integrate a state engine (Apache Commons SCXML) as a Spring Component in Oracle SOA Suite 11g. It shows some "advanced" use cases for the Spring Component in SOA Suite 11g.

Integrate a state engine (Apache Commons SCXML) as a Spring Component in Oracle SOA Suite 11g. It shows some "advanced" use cases for the Spring Component in SOA Suite 11g.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,436
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
35
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Hier könnte eine Kopfzeile stehen 24.09.10 Hier könnte eine Fusszeile stehen Ihr müsst nicht alle Punkt aufzählen. Vielleicht der Hinweis, CH-Unternehmen mit 13 Standorten in D-A-CH, Anzahl Mitarbeiter und das wir finanziell unabhängig sind.

Transcript

  • 1. Using State-Engine as an SCA Spring component in SOA Suite 11g OOW 2010 Guido Schmutz, Technology Manager / Partner Trivadis AG 23.09.2010, San Francisco
  • 2. Introduction
    • Guido Schmutz
      • Working for Trivadis for more than 13 years
        • leading and independent IT service company operating in Germany, Austria and Switzerland
      • Oracle ACE Director for Fusion Middleware and SOA
      • Co-Author of different books
      • Consultant, Trainer Software Architect for Java, Oracle, SOA and EDA
      • More than 20 years of software development experience
      • Contact: [email_address]
      • Blog: http://guidoschmutz.wordpress.com/
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 3. About Trivadis
    • Swiss IT consulting company
      • 13 locations in Switzerland, Germany and Austria
      • ~ 540 employees
    • Key figures 2008
      • Services for more than 650 clients in over 1‘600 projects
      • Over 150 service level agreements
      • More than 5‘000 training participants
      • Research and development budget: CHF 6.0 Mio. / EUR 3.6 Mio.
  • 4. 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 ;-)
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 5. 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
  • 6. Summary
    • There can be issues with the classloader
    • Make sure that you test what you want to integrate right upfront
    • 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 Lessons learnt: Do not create sexy and fancy abstracts just to get accepted to OOW ;-) Or make sure before that it‘s somehow achievable....
  • 7. 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
  • 8. Agenda
    • Spring Component of SOA Suite 11g
      • Introduction
      • Hello World
      • “ Advanced” Use Cases
    • State Machine and Apache Commons SCXML
      • What are State Machines
      • What is Apache Commons SCXML
    SOA Suite 11g Spring Component / Apache Commons SCXML Data are always part of the game.
  • 9. SOA Suite 11gR1 PS2 Architecture Oracle Restricted and Confidential Unified Runtime BPMN Policy Manager Optimized binding Human Workflow (+AMX, AG, Orgn) Business Rules Oracle Service Bus Common JCA-based connectivity infrastructure Repository EM console +BPMN Screens BAM B2B Mediator Workspace Process Portal (WC spaces) MS Office BPM Studio (with Business and IT views) Shared BPMN Model Business View BPA BPMN 2.0, BPEL Rich End User Interaction Web based customization Process Composer BPEL Process Analytics Proc Cubes Spring
  • 10. 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
  • 11. Agenda
    • Spring Component of SOA Suite 11g
      • Introduction
      • Hello World
      • “ Advanced” Use Cases
    • State Machine and Apache Commons SCXML
      • What are State Machines
      • What is Apache Commons SCXML
    SOA Suite 11g Spring Component / Apache Commons SCXML Data are always part of the game.
  • 12. Hello World – Step 1 The HelloWorldImpl POJO used inside a Spring component SOA Suite 11g Spring Component / Apache Commons SCXML Lessons learnt: Make sure to compile classes before wiring!
  • 13. Hello World – Step 2
    • Add the GreetingProvider strategy interface to provide an extended greeting message
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 14. Hello World – Step 3
    • Implement the GreetingProvider as a separate Spring component and wire it to the HelloWorld component
  • 15. 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
  • 16. <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
  • 17. <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
  • 18. 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 2 nd 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
  • 19. Agenda
    • Spring Component of SOA Suite 11g
      • Introduction
      • Hello World
      • “ Advanced” Use Cases
    • State Machine and Apache Commons SCXML
      • What are State Machines
      • What is Apache Commons SCXML
    SOA Suite 11g Spring Component / Apache Commons SCXML Data are always part of the game.
  • 20. Use Case 1: Accessing the Spring Context
    • Use Case : Want to access/lookup another bean from the spring context
    • Idea: Implement the Lifecycle Interface
    SOA Suite 11g Spring Component / Apache Commons SCXML Lessons learnt: Only a BeanFactory and not an ApplicationContext is created!
  • 21. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML Lessons learnt: Classloader is not my friend!
  • 22. 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
  • 23. 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“
    SOA Suite 11g Spring Component / Apache Commons SCXML Lessons learnt: „ free-floating“ Spring bean (timerFactory) is not initialized! it need to referenced from a bean which is externalized as a service!
  • 24. 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
  • 25. 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
  • 26. 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
  • 27. Agenda
    • Spring Component of SOA Suite 11g
      • Introduction
      • Hello World
      • “ Advanced” Use Cases
    • State Machine and Apache Commons SCXML
      • What is a State Machine
      • What is Apache Commons SCXML
    SOA Suite 11g Spring Component / Apache Commons SCXML Data are always part of the game.
  • 28. Indroduction
    • A state describes the condition of an object at a given point in its lifetime
    • &quot;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&quot; [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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 29. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 30. Building Blocks
    • Start and End States
    • State Actions
    • Transitions
    • Self Transitions
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 31. Building Blocks
    • Compound States
    • History State
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 32. Building Blocks
    • Concurrent Blocks
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 33. Agenda
    • Spring Component of SOA Suite 11g
      • Introduction
      • Hello World
      • “ Advanced” Use Cases
    • State Machine and Apache Commons SCXML
      • What is a State Machine
      • What is Apache Commons SCXML
    SOA Suite 11g Spring Component / Apache Commons SCXML Data are always part of the game.
  • 34. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 35. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 36. 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 &quot;standard actions&quot; defined by the SCXML specification are
      • <var>, <assign>, <log>, <send>, <cancel>, <if>, <elseif>, <else> .
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 37. State Actions SOA Suite 11g Spring Component / Apache Commons SCXML
  • 38. Transitions (simple, condition, self) SOA Suite 11g Spring Component / Apache Commons SCXML
  • 39. Parallel States SOA Suite 11g Spring Component / Apache Commons SCXML
  • 40. Timeout with Custom Action
    • SCXML can be extended with custom action
      • Used for timeout transitions
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 41. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 42. 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
    SOA Suite 11g Spring Component / Apache Commons SCXML
  • 43. Thank you! ODTUG 2010 Guido Schmutz, Technology Manager / Partner Trivadis AG 29.6.2010, Washington