Presentation on theme: "CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance."— Presentation transcript:
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 APIs) 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 isnt one implementation of the spec, it (may be) many. Different use-cases demand different implementations.
Why a Development Framework? One CTS2 implementation probably cant, most likely shouldnt, and certainly doesnt need to implement all of CTS2
Why a Development Framework? CTS2 is large but very modular. You dont want to support/maintain what you dont 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 dont 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 DOESNT 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/Implementation s)http://informatics.mayo.edu/cts2/index.php/Implementation s
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
A Service Plugin in two classes http://informatics.mayo.edu/cts2/framework /example-plugin-tutorial/ 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