SlideShare uma empresa Scribd logo
1 de 30
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

• 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
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

• RDF Triple-Store Plugin
• LexEVS Plugin
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
• OSGi?
Resources


http://informatics.mayo.edu/cts2/framework/example-plugin-tutorial/


http://informatics.mayo.edu/cts2/framework/installation/


http://informatics.mayo.edu/cts2/framework/create-a-plugin/
Questions?

Mais conteúdo relacionado

Mais procurados

Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a ServiceAndrew Solomon
 
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security GuideShawn Wells
 
Building Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 ASBuilding Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 ASKasun Gajasinghe
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseAidas Dragūnas
 
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016Alvaro Sanchez-Mariscal
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your dataNeev Technologies
 
Java DataBase Connectivity -JDBC Part-1
Java DataBase Connectivity -JDBC Part-1Java DataBase Connectivity -JDBC Part-1
Java DataBase Connectivity -JDBC Part-1Pranil Dukare
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringarSqueed
 
Robe - A brand new robe for Dropwizard
Robe - A brand new robe for DropwizardRobe - A brand new robe for Dropwizard
Robe - A brand new robe for DropwizardSeray Uzgur
 
Should i break it?
Should i break it?Should i break it?
Should i break it?Gal Marder
 
Liquibase for java developers
Liquibase for java developersLiquibase for java developers
Liquibase for java developersIllia Seleznov
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupRudy De Busscher
 
Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data basesRoman Uholnikov
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the starsStrannik_2013
 

Mais procurados (20)

Liquibase
LiquibaseLiquibase
Liquibase
 
Database versioning with liquibase
Database versioning with liquibaseDatabase versioning with liquibase
Database versioning with liquibase
 
Database Change Management as a Service
Database Change Management as a ServiceDatabase Change Management as a Service
Database Change Management as a Service
 
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
2012-10-16 Mil-OSS Working Group: Introduction to SCAP Security Guide
 
Building Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 ASBuilding Services with WSO2 Microservices framework for Java and WSO2 AS
Building Services with WSO2 Microservices framework for Java and WSO2 AS
 
Database change management with Liquibase
Database change management with LiquibaseDatabase change management with Liquibase
Database change management with Liquibase
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With Liquibase
 
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
Efficient HTTP applications on the JVM with Ratpack - Voxxed Days Berlin 2016
 
Liquibase
LiquibaseLiquibase
Liquibase
 
Liquibase – a time machine for your data
Liquibase – a time machine for your dataLiquibase – a time machine for your data
Liquibase – a time machine for your data
 
Java DataBase Connectivity -JDBC Part-1
Java DataBase Connectivity -JDBC Part-1Java DataBase Connectivity -JDBC Part-1
Java DataBase Connectivity -JDBC Part-1
 
Liquibase få kontroll på dina databasförändringar
Liquibase   få kontroll på dina databasförändringarLiquibase   få kontroll på dina databasförändringar
Liquibase få kontroll på dina databasförändringar
 
Robe - A brand new robe for Dropwizard
Robe - A brand new robe for DropwizardRobe - A brand new robe for Dropwizard
Robe - A brand new robe for Dropwizard
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
 
Should i break it?
Should i break it?Should i break it?
Should i break it?
 
Gradle - Build System
Gradle - Build SystemGradle - Build System
Gradle - Build System
 
Liquibase for java developers
Liquibase for java developersLiquibase for java developers
Liquibase for java developers
 
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application StartupHow Class Data Sharing Can Speed up Your Jakarta EE Application Startup
How Class Data Sharing Can Speed up Your Jakarta EE Application Startup
 
Liquibase migration for data bases
Liquibase migration for data basesLiquibase migration for data bases
Liquibase migration for data bases
 
Git.From thorns to the stars
Git.From thorns to the starsGit.From thorns to the stars
Git.From thorns to the stars
 

Semelhante a CTS2 Development Framework

Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in developmentMartin Toshev
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixPeter Nazarov
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesMarcel Offermans
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC vipin kumar
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)Prateek Chauhan
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with SpringSam Brannen
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian EcosystemAlex Henderson
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2Long Nguyen
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesVagif Abilov
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 
DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014scolestock
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack SummitMiguel Zuniga
 
WebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAWebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAmfrancis
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSAmazon Web Services
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSam Brannen
 

Semelhante a CTS2 Development Framework (20)

Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
Sitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helixSitecore development approach evolution – destination helix
Sitecore development approach evolution – destination helix
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
Dependencies, dependencies, dependencies
Dependencies, dependencies, dependenciesDependencies, dependencies, dependencies
Dependencies, dependencies, dependencies
 
Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC  Cloud compiler - Minor Project by students of CBPGEC
Cloud compiler - Minor Project by students of CBPGEC
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)
 
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
 
Developing for the Atlassian Ecosystem
Developing for the Atlassian EcosystemDeveloping for the Atlassian Ecosystem
Developing for the Atlassian Ecosystem
 
Struts 2-overview2
Struts 2-overview2Struts 2-overview2
Struts 2-overview2
 
SOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class LibrariesSOLID Programming with Portable Class Libraries
SOLID Programming with Portable Class Libraries
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014DevOps with Elastic Beanstalk - TCCC-2014
DevOps with Elastic Beanstalk - TCCC-2014
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Protractor survival guide
Protractor survival guideProtractor survival guide
Protractor survival guide
 
WebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEAWebLogic Event Server - Alexandre Alves, BEA
WebLogic Event Server - Alexandre Alves, BEA
 
Foresight
ForesightForesight
Foresight
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Spring Framework 3.2 - What's New
Spring Framework 3.2 - What's NewSpring Framework 3.2 - What's New
Spring Framework 3.2 - What's New
 

Último

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 

Último (20)

Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 

CTS2 Development Framework

  • 2. Schedule • What is it? • Why a framework? • What does this do for me? • Plugins • Implementations available now • CTS2 Compliance in two Java classes
  • 3. CTS2 Development Framework • Under development by Mayo Clinic • A Framework for creating CTS2 implementations • Uses Model View Controller (MVC) architectural pattern
  • 4. 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, …)
  • 5. CTS2 Development Framework • Can be used to (continued) • Implement new views (21090, cRDF, …) • Extend the controller with business rules and workflow constraints
  • 6. CTS2 Development Framework “Model” Component • Transforms View (CTS2 PIM) structures into state (aka “backing store”) • Enforces post-conditions • May also enforce some invariants
  • 7. CTS2 Development Framework “View” Component • Implements the static portion of the CTS2 model • CodeSystemCatalogEntry, … • (Indirectly) enforces some invariants
  • 8. CTS2 Development Framework “Controller” Component • Implements the behavioral portion of the CTS2 model • Accepts events • Validates invariants • Enforces preconditions
  • 9. Why a Development Framework? • CTS2 isn‟t one implementation of the spec, it (may be) many. • Different use-cases demand different implementations.
  • 10. Why a Development Framework? • One CTS2 implementation probably can‟t, most likely shouldn‟t, and certainly doesn‟t need to implement all of CTS2
  • 11. 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.
  • 12. 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!
  • 13. 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.
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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.
  • 19. 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.
  • 20. 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 • …
  • 21. 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.
  • 22. 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
  • 23. Implemented Plugins • eXist XML Database Plugin: • http://informatics.mayo.edu/exist/cts2/rest/codesystems • NCBO Bioportal Wrapper • http://informatics.mayo.edu/cts2/rest/codesystems
  • 24. Implemented Plugins • eXist XML Database Plugin: • Based on the eXist XML Database • Supports: • READ • QUERY • MAINTENANCE
  • 25. Implemented Plugins • NCBO Bioportal Wrapper • A Wrapper around the NCBO Bioportal REST Service • Supports: • READ • QUERY
  • 26. Planned Plugins • RDF Triple-Store Plugin • LexEVS Plugin
  • 27. A Service Plugin in two classes • http://informatics.mayo.edu/cts2/framework /example-plugin-tutorial/
  • 28. 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 • OSGi?