290 likes | 499 Views
CTS2 Overview. CTS2 Development Framework. Schedule. What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance in two Java classes. CTS2 Development Framework. Under development by Mayo Clinic
E N D
CTS2 Overview CTS2 Development Framework
Schedule • What is it? • Why a framework? • What does this do for me? • Plugins • Implementations available now • CTS2 Compliance in two Java classes
CTS2 Development Framework • Under development by Mayo Clinic • A Framework for creating CTS2 implementations • Uses Model View Controller (MVC) architectural pattern
CTS2 Development Framework • A MVC architecture that is compliant with the CTS2 API specification • Can be used to • Implement against different back ends (e.g. RDF, SQL, existing terminology structures or API’s) • Specify and/or create different import and export maps (IHTSDO, OWL, …)
CTS2 Development Framework • Can be used to (continued) • Implement new views (21090, cRDF, …) • Extend the controller with business rules and workflow constraints
CTS2 Development Framework“Model” Component • Transforms View (CTS2 PIM) structures into state (aka “backing store”) • Enforces post-conditions • May also enforce some invariants
CTS2 Development Framework“View” Component • Implements the static portion of the CTS2 model • CodeSystemCatalogEntry, … • (Indirectly) enforces some invariants
CTS2 Development Framework“Controller” Component • Implements the behavioral portion of the CTS2 model • Accepts events • Validates invariants • Enforces preconditions
Why a Development Framework? • CTS2 isn’t one implementation of the spec, it (may be) many. • Different use-cases demand different implementations.
Why a Development Framework? • One CTS2 implementation probably can’t, most likely shouldn’t, and certainly doesn’t need to implement all of CTS2
Why a Development Framework? • CTS2 is large but very modular. You don’t want to support/maintain what you don’t need. • CTS2 is a specification but you may need more – extensions may be needed. • Persistence back-ends are different.
What does this do for me? • Most web apps contain lots of boilerplate code – accepting HTTP requests, error handling, admin interfaces… etc. • We don’t want CTS2 implementers writing boilerplate code!
What does this do for me? • Defines the CTS PIM interfaces in the code. This is what implementers will implement. • Using these interfaces, the Development Framework will expose the implementation as HTTP REST (current), SOAP (planned)… etc. -- all using the same implementation.
What does this do for me? • Development tools provide • REST HTTP URL bindings • CTS2 model as Java Beans • CTS2 REST client • Various Builder pattern query building objects • Plugin admin structure
What DOESN’T this do for me? • Store content in a database/filesystem/triplestore • Read content from a persistence store • Tell you what your persistence store should be
CTS2 Implementations as Plugins • Actual implementations are bundled together as a “plugin” to the framework. • Each plugin has its own classpath • May be implemented in Java, Groovy, Scala, Clojure… • Build support provided for Gradle and Maven
CTS2 Implementations as Plugins Wait… is this OSGi? Yes – the Plugin Framework is powered by Apache Felix. Any valid OSGi bundle is a valid CTS2 Development Framework plugin.
CTS2 Implementations as Plugins Is this OSGi (cont.)? OSGi allows you to use off-the-shelf OSGi components and tools, along with custom created bundles.
What can a Plugin do? • Connect to a SQL database • Connect to a triple store • Read from a file system • Aggregate two or more existing CTS2 services • …
Plugin Behavior • Plugins may be • Activated • Deactivated • Removed • Uploaded • Discovered and Queried Plugins are hot-swappable. Changing plugins does NOT mean you must restart your container.
Plugin API • An admin API for plugin management is provided. The API is REST based • Easy to hook into CI Servers to run integration tests
Implemented Plugins • eXist XML Database Plugin: • http://informatics.mayo.edu/exist/cts2/rest/codesystems • NCBO Bioportal Wrapper • http://informatics.mayo.edu/cts2/rest/codesystems • Others… (http://informatics.mayo.edu/cts2/index.php/Implementations)
Implemented Plugins • eXist XML Database Plugin: • Based on the eXist XML Database • Supports: • READ • QUERY • MAINTENANCE
Implemented Plugins • NCBO Bioportal Wrapper • A Wrapper around the NCBO Bioportal REST Service • Supports: • READ • QUERY
Planned Plugins • Several… ongoing and expanding
A Service Plugin in two classes • http://informatics.mayo.edu/cts2/framework/example-plugin-tutorial/
Next steps • Solidify Development Framework Service Interfaces • Add a ‘Compliance Test’ suite • Find common functionality and include it with the Development Framework • Add SOAP endpoint? • Allow ‘View’ plugins (allow for custom representations like CSV, text, Excel, etc…) • Loader Plugins
Resources Info: http://informatics.mayo.edu/cts2/ http://informatics.mayo.edu/cts2/framework/ Code: https://github.com/cts2