Top Banner
CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview
29

CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Mar 28, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 DEVELOPMENT FRAMEWORK

CTS2 Overview

Page 2: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Schedule• What is it?

• Why a framework?

• What does this do for me?

• Plugins

• Implementations available now

• CTS2 Compliance in two Java classes

Page 3: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 Development Framework

• Under development by Mayo Clinic

• A Framework for creating CTS2 implementations

• Uses Model View Controller (MVC) architectural pattern

Page 4: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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, …)

Page 5: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 Development Framework

• Can be used to (continued)• Implement new views (21090,

cRDF, …)• Extend the controller with

business rules and workflow constraints

Page 6: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 Development Framework“Model” Component

• Transforms View (CTS2 PIM) structures into state (aka “backing store”)• Enforces post-conditions• May also enforce some invariants

Page 7: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 Development Framework“View” Component

• Implements the static portion of the CTS2 model• CodeSystemCatalogEntry, …• (Indirectly) enforces some

invariants

Page 8: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

CTS2 Development Framework“Controller” Component

• Implements the behavioral portion of the CTS2 model• Accepts events• Validates invariants• Enforces preconditions

Page 9: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Why a Development Framework?

• CTS2 isn’t one implementation of the spec, it (may be) many.

• Different use-cases demand different implementations.

Page 10: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Why a Development Framework?

• One CTS2 implementation probably can’t, most likely shouldn’t, and certainly doesn’t need to implement all of CTS2

Page 11: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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.

Page 12: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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!

Page 13: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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.

Page 14: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

Page 15: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

Page 16: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

Page 17: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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.

Page 18: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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.

Page 19: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

• …

Page 20: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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.

Page 21: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

Page 22: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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)

Page 23: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Implemented Plugins

• eXist XML Database Plugin:• Based on the eXist XML Database• Supports:

• READ• QUERY• MAINTENANCE

Page 24: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Implemented Plugins

• NCBO Bioportal Wrapper• A Wrapper around the NCBO Bioportal REST

Service• Supports:

• READ• QUERY

Page 25: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Planned Plugins

• Several… ongoing and expanding

Page 27: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

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

Page 29: CTS2 DEVELOPMENT FRAMEWORK CTS2 Overview. Schedule What is it? Why a framework? What does this do for me? Plugins Implementations available now CTS2 Compliance.

Questions?