how ion uses virgo - eclipse · broker gateway process builder* ... dispatcher pi? pi! ci! ci? ......
TRANSCRIPT
Template V.5, June 13, 2011
Disclaimer
This document reflects the direction Infor may take with regard to the specific product(s) described in this document, all of which is subject to change by Infor in its sole discretion, with or without notice to you. This document is not a commitment to you in any way and you should not rely on this document or any of its content in making any decision. Infor is not committing to develop or deliver anything described herein.
Copyright © 2011 Infor. All rights reserved.
Template V.17, July 29, 2011
Overview
Virgo 2.1.0.RELEASE Adoption
ION Runtime Development – The Numbers
ION Runtime Development Cycle
Stack Comparison Virgo 2.1.0.RELEASE vs. ION Runtime
How we use OSGi
How we use Eclipse
The Infor ION Case
Architecture
Future Thoughts, Feedback, Wishes Copyright © 2011 Infor. All rights reserved. 3
Template V.17, July 29, 2011
Virgo 2.1.0.RELEASE Adoption
From Equinox 3.5 to Virgo 2.1.0.RELEASE using Kernel only
Added a Lightweight (Secured) Web Server
Added Windows Service / Linux Daemon for startup
Added Spring Integration Limited, due to inherent “static” context model
Modified Virgo Kernel Stack Replaced Spring 3.0.0 with 3.0.5 for Spring Integration
Added a Watched Repository Folder for Dynamic Database Vendor plugins with plan files
Integrations with JDBC, Web Services (SOAP, REST), JMS, JCA, XMPP, File system
Copyright © 2011 Infor. All rights reserved. 4
Template V.17, July 29, 2011
ION Runtime Development Cycle
Copyright © 2011 Infor. All rights reserved. 5
deploys successful builds Bundles Features
Bundles Features
check out Bundles Features
Target Platform & Container Definition
Assemblies successful builds
check in/out
Bundles Features
downloads
Target Platform & Container Definition
Runtime Container
kernel
Template V.17, July 29, 2011
Stack Comparison Virgo 2.1.0.RELEASE vs. ION Runtime
Copyright © 2011 Infor. All rights reserved. 6
ION Runtime 10.0
"Virgo 2.1"
Spring 3.0.5 Spring DM 1.2.1 Equinox 3.6
LogBack 0.9.24
ION Broker
Service Factory
ION Connect Engines
Adapters 2.1 Confirm BOD Management 2.1
Process 2.1
Infor OSGi Core
Hibernate 3.3
Lightweight HTTP(S) Server
Spring Integration 2.0.3
Virgo Management
Micro Services Factory
Content Based Router Transformer
Broker Process
ActiveMQ 5.3
Configuration
Template V.17, July 29, 2011
OSGi
Spring DM bundles preference "Let Spring do the repeating work for you"
Whiteboard Pattern "Everyting is a service"
Micro Services "Static vs. Dynamic Spring Contexts: Singletons vs Prototypes" Extracted Configuration object (also prototype) Prototypes currently require container restart Note on OSGi bundle replacement...
Maven vs. Bundles & Features Hybrid development model: Bundles & Features are Maven projects
Compile & generate "OSGi-ish" artifacts using transitive dependencies Build on central build server/slaves and local development systems Using Maven plugin extension model to generate Bundles & Features
Copyright © 2011 Infor. All rights reserved. 7
Template V.17, July 29, 2011
The Infor ION Case Broker Process Model
Copyright © 2011 Infor. All rights reserved. 8
T1
RL
CBR1 Queue Channel CBR1
Queue Channel T1
Outbound Adapter A1
Inbound Adapter
2
Queue Channel A1
Queue Channel T2
Queue Channel A2
Outbound Adapter A2 “A processes always
starts with a queue”
“An Outbound Adapter transacAon always begins from a
queue channel”
“A Content Based Router always ends in a transacAon over (one or more) queue
channel(s)”
T2
“A Transformer always ends in a transacAon over
(one or more) queue channel(s)”
“The Recipient List always ends in a
transacAon over (one or more) queue channel(s)”
“Each Element has a queue channel
upfront with its name (from-‐right-‐to-‐leJ)”
"From Singletons to Prototypes with Transactions"
Queue Channel E1 Inbound
Adapter 1
Engine Adapter E1 Engine Endpoint
Template V.17, July 29, 2011
Micro Service Factory
Micro Service Factory
Copyright © 2011 Infor. All rights reserved. 9
Bundle Definitions
Broker Gateway
Broker Process Builder
WHITEBOARD
Configuration Builder
request for instanceID
service reference to instanceID
service reference to instanceID
requests for instanceID
exists?
return service refs
yes
no
return service refs
BundleA service(s)
BundleB service(s)
BundleA1 service(s)
Bundle service(s)
Bundle service(s)
BundleB1 service(s)
request for instanceID
instantiate
delegate configuration builds
broker process model
"Prototypes as Services"
Template V.17, July 29, 2011
Configura)on Builder Feature
Gateway Feature
Broker Gateway
Process Builder Feature
Features Design Element Base Feature
Adapter Element Features
Process Element Feature
Process/Adapter Element(s)
WHITEBOARD
Micro Service Feature
service event
listener
IConfigListener
ecx
Configuration Builder
configuration-i process/adapter element-i
Desk
Web Service
IProcessBuilder
Broker Object Model
Service Base
“WF, EM, CBM”-Features
Container Common Feature (Virgo Etc.)
Recipient List
Element Base
IProcessBuilder
IConfig{Filter-i} Configuration
Service Factory
Model Builder
IMessageSubscription
IAdapter IAdapterMonitor IAdapterTypePropertyProvider IAdapterTypeConnecAonValidator IMessageSubscripAon IReceiver{Filter-‐i} IConfig{Filter-‐i} IConfigListener
Interfaces-{*}
Adapter Elements (e.g. JDBC, LN, etc.)
Queue Channel Transformer
CBR
IRecipientListBuilder.build
IAdapterMonitor{*} IAdapterTypePropertyProvider{*} IAdapterTypeConnectionValidator{*} IAdapter{*}
transitiveness
10
Dispatcher
Pi? Pi! Ci? Ci!
IRecipientListBuilder
IConfigurationBuilder
Process Builder
IConfigurationBuilder.build
Template V.17, July 29, 2011
Remainder of ION Runtime Features
Copyright © 2011 Infor. All rights reserved. 11
Base Element Feature (Hibernate) Persistency, Spring IntegraAon, Spring 3.0.5, JMS, AcAveMQ, XML tooling, etc.
enhanced logging
ION Monitoring, Lightweight webserver
Template V.17, July 29, 2011
Lightweight (Secured) Web Server
Web server that doesn’t involve application descriptors, servlet container, etc.
Based on JRE’s internal HTTP(S) Server
Wrapped as Spring DM Bundle
Exposing JAX-WS based web services through WSDL
Using self signed SSL certificates: only pipe security
Seamless integration with .NET WCF
Using Mutual Authentication based on SSL certificates
Silent securing .NET 2 OSGi container
Independent of platform (Windows/Linux) for Virgo Copyright © 2011 Infor. All rights reserved. 12
Template V.17, July 29, 2011
Eclipse
Using Spring Source Toolsuite (STS) latest version Run/Test/Debug Virgo Server internally in Eclipse environment
Using "External Launcher" with Maven All builds require to run & test headlessly on Jenkins as well
Maven Builds Features Spring DM (OSGi) Bundles Custom Maven plugins generates feature.xml, Custom Maven plugin generates Manifest (using BND tool) Target Platform, fully feature based (update site ready) Container Assembly, merging Virgo essentials with Target Platform
No M2Eclipse Need to run on Jenkins
Copyright © 2011 Infor. All rights reserved. 13
Template V.17, July 29, 2011
Feedback
Steep learning curve
Headless Integration Test framework required
Automatic detection of deadlocks rocks!
Using modified User Region: Virgo Plan Pipeline Resolver is too slow "Any hints"?
Copyright © 2011 Infor. All rights reserved. 14
Template V.17, July 29, 2011
Whishes
User Regions like Plan Files: Version ranges configured
Plan file Loading sequence instead of alphabetically
Plan files still required: "Import Bundle" statement
Dependency tooling would be great to generate overview pictures
Eclipse + Maven3.0/Tycho + Jenkins to work with Artifactory/Nexus
Copyright © 2011 Infor. All rights reserved. 15