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.
WordPress Websites for Engineers: Elevate Your Brand
Using state-engine-as-sca-component-final
1. Using State-Engine as an SCA Spring component in SOA Suite 11g DOAG Konferenz 2010 Guido Schmutz Technology Manager Oracle ACE Director for FMW & SOA 17.11.2010, Nürnberg
2. SOA Suite 11g Spring Component / Apache Commons SCXML 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: guido.schmutz@trivadis.com Blog: http://guidoschmutz.wordpress.com/
10. Research and development budget: CHF 5.0 / EUR 3.3 mio.CUSTOMER BUSINESS INTEGRATION SERVICES IT SOLUTIONS, SERVICES, & PRODUCTS Businessdepartments Enterprise Content Management Business Intelligence InfrastructureEngineering ApplicationDevelopment Training Managed Services Business Integration Services ITdepartments Integration, Application Performance Management, Security TECHNOLOGIESOracle, Microsoft, IBM, Open Source
11.
12.
13.
14.
15.
16. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
17. 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 Features States and transitions Data Model Executable content External communications module History Using State-Engine as an SCA Spring component in SOA Suite 11g
18. What is 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>. Using State-Engine as an SCA Spring component in SOA Suite 11g
19. 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! Using State-Engine as an SCA Spring component in SOA Suite 11g
20. 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 agenda slightly and I will present some interesting use cases with the Spring Component in SOA Suite 11g Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: Do not create sexy and fancy abstracts just to get accepted to a conference ;-) Or make sure before that it‘s somehow achievable....
21. Agenda Data are always part of the game. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
22. SOA Suite 11gR1 PS2 Architecture BPMN 2.0, BPEL Shared BPMN Model Web based customization BPA Rich End User Interaction Business View MS Office Workspace Process Portal (WC spaces) Process Composer BPM Studio (with Business and IT views) Human Workflow (+AMX, AG, Orgn) Business Rules Mediator BPMN BPEL Spring B2B Unified Runtime Process Analytics Policy Manager Common JCA-based connectivity infrastructure BAM Optimized binding Oracle Service Bus Proc Cubes EM console +BPMN Screens Repository 12 Oracle Restricted and Confidential
23. 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 implemented in Java and 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
24. Agenda Data are always part of the game. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
25. The HelloWorldImpl POJO used inside a Spring component Hello World – Step 1 Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: Make sure to compile classes before wiring!
26. Hello World – Step 2 Add the GreetingProvider strategy interface to provide an extended greeting message Using State-Engine as an SCA Spring component in SOA Suite 11g
27. Hello World – Step 3 Implement the GreetingProvider as a separate Spring component and wire it to the HelloWorld component Same type
28. 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
29. <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) Using State-Engine as an SCA Spring component in SOA Suite 11g
30. <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) Using State-Engine as an SCA Spring component in SOA Suite 11g
31. Different granularities of componentization Single SCA-level component / one spring bean Single SCA-level component /multiple spring beans Multiple SCA-level Spring components SCA Spring Component and Meditor component Using State-Engine as an SCA Spring component in SOA Suite 11g
32. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
33. Agenda Data are always part of the game. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
34. Use Case 1: Accessing the Spring Context Use Case: Want to access/lookup another bean from the spring context Idea: Implement the Lifecycle Interface Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: Only a BeanFactory and not an ApplicationContext is created!
35. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: Classloader is not my friend!
36. Use Case 3: Executing Task asynchronously Use Case: Want to execute a possible long running Java method asynchronously Idea: use the Spring TaskExecutor abstraction Using State-Engine as an SCA Spring component in SOA Suite 11g
37. 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“ Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: „free-floating“ Spring bean (timerFactory) is not initialized! need to be referenced from a bean which is externalized as a service!
38. Use Case 5: Schedule Job torun 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
39. 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 ! Using State-Engine as an SCA Spring component in SOA Suite 11g
40. Use Case 7: JMX managed beans Use Case: Want to change the properties of a Spring bean at runtime Idea: use the Spring JMX abstraction to externalize a Spring bean as an MBean Using State-Engine as an SCA Spring component in SOA Suite 11g Lessons learnt: Only a BeanFactory and not an ApplicationContext is created!
41. 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’llfind more informationabout SOA Suite: Using State-Engine as an SCA Spring component in SOA Suite 11g
42. Agenda Data are always part of the game. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
43. Indroduction 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
44. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
45. Building Blocks Start and End States State Actions Transitions Self Transitions Using State-Engine as an SCA Spring component in SOA Suite 11g
46. Building Blocks Compound States History State Using State-Engine as an SCA Spring component in SOA Suite 11g
48. Agenda Data are always part of the game. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
49. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
50. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
51. 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>. Using State-Engine as an SCA Spring component in SOA Suite 11g
52. State Actions Using State-Engine as an SCA Spring component in SOA Suite 11g
55. Timeout with Custom Action SCXML can be extended with custom action Used for timeout transitions Using State-Engine as an SCA Spring component in SOA Suite 11g
56. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
57. 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 Using State-Engine as an SCA Spring component in SOA Suite 11g
58. Thank you! ODTUG 2010 Guido Schmutz,Technology Manager / Partner Trivadis AG 29.6.2010, Washington
Editor's Notes
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.