16
Curation Tool June 11, 2009

Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

Embed Size (px)

Citation preview

Page 1: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

Curation ToolCuration Tool

June 11, 2009

Page 2: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

2

Curation ToolCuration Tool

• Overview• Architecture• Implementation• Dependencies• Futures

Page 3: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

3

Curation Tool - OverviewCuration Tool - Overview

• caDSR content curation (create, edit)• Establish associations between metadata and

ontology’s (vocabularies)• Attach reference documentation to the metadata• Search metadata• Support metadata reuse among the community• Provide subject independent customizable

application of metadata• Support all members of the community, e.g. form

designers, modelers, curators, etc• Maintain the metadata integrity consistent with

business rules and workflow

Page 4: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

4

Curation Tool - OverviewCuration Tool - Overview

• Stakeholders:– Form Designers– Modelers– Developers– Analysts– Clinicians– Statisticians– Researchers– Curators– caBIG– NCI

Page 5: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

5

Curation Tool - ArchitectureCuration Tool - Architecture

• Technologies– Java 1.5– Javascript– HTML 4– JDBC– EVS 4.2

Page 6: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

6

Curation Tool - ArchitectureCuration Tool - Architecture

• JSP / HTMLView

• JBossController

• Java 1.5Application

• Class, InterfaceModel

• JDBC, PL/SQL, ANSI SQLDatabase

• Oracle 10gPersist

Page 7: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

7

Curation Tool - ArchitectureCuration Tool - Architecture

• Auto-deploy– Deployable via Anthill– Ant –DPROP.FILE=… build-all deploy

• SCM– CVS– .cvsignore for all transient files– One file, no duplicates, e.g. template.web.xml vs. web.xml

• All files placed in deployment-artifacts• Production deployment artifacts

– Accessible via links in email from Anthill– Files hosted on GForge for distribution– URL references to GForge hosting for Wiki, Download, etc

Page 8: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

8

Curation Tool - ArchitectureCuration Tool - Architecture

tool name

• CURATION• SENTINEL• …

property• URL• EMAIL• …

value• https://cdecurate...•[email protected]• …

…• …• …• …

Tool Options Table

• Tool options table hosts configuration values beyond 3rd party requirements, e.g. XML

• Dynamic– Values are read as needed – user sees changes in real time– Values cached when new session created – user must close

window– Values never cached with application – requires restart of

JBoss

Page 9: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

9

Curation Tool - ArchitectureCuration Tool - Architecture

• SQL script updates/sets tool option values– Updates limited to CURATION tool name

• SQL may check database schema during deployment

– E.g. When a new column is added to a table/view a SELECT using the column name will throw an error if the database is not updated before deploying the tool

• SQL may *never* alter schema• SQL may perform data migration• Must be coordinated and negotiated with caDSR

database deployment scripts

Page 10: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

10

Curation Tool - ImplementationCuration Tool - Implementation

• Project Structure– Conf

Configuration files, e.g. XML, which require value substitution during build and deployment

– Db-sqlSQL scripts which are run during build and deployment or as part of a manual process

– DocPatterned after phases in development lifecycle with the addition of “Administration” for all documentation specific to NCI policies and processes and not directly pertinent to the product features

• Administration• Construction• Elaboration• Inception• Transition

– LibJAR files needed for building the project *but* not included in the deployment, e.g. ojdbc14.jar is deployment on Jboss and not packaged in project WAR but must be present to compile and build the WAR, allows for the separation of the build machine and the deployment target machine

Page 11: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

11

Curation Tool - ImplementationCuration Tool - Implementation

• Project Structure– Scripts

Console scripts to manage temporary file system space, e.g. Ref Doc Upload and browsing

– SrcJava source, more details follow

– WebRootThe deployed cdecurate.war content

• Css• Html• Images• Js• Jsp• Meta-inf• Web-inf

– Lib– Tld

Page 12: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

12

Curation Tool - ImplementationCuration Tool - Implementation

• Packages– gov.nih.nci.cadsr.cdecurate.database

Database access used by Alt Names/Defs– gov.nih.nci.cadsr.cdecurate.datalov

Common database attribute definitions– gov.nih.nci.cadsr.cdecurate.test

Test wrappers– gov.nih.nci.cadsr.cdecurate.tool

Primary source– gov.nih.nci.cadsr.cdecurate.tool.tags

Tag support for JSP– gov.nih.nci.cadsr.cdecurate.ui

UI for Alt Names/Defs– gov.nih.nci.cadsr.cdecurate.utl

Internal utility support

Page 13: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

13

Curation Tool - ImplementationCuration Tool - Implementation

• Packages– gov.nih.nci.cadsr.persist.*

A collection of classes intended to be packaged and shared as services across all caDSR tools.

• Logging– Cdecurate_log.txt

Haphazard use of fatal(), error(), etcSpecific to gov.nih.nci.cadsr.cdecurate…

– Server.logContains all 3rd party messages, e.g. Hibernate, Jboss, etc

Page 14: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

14

Curation Tool - ImplementationCuration Tool - Implementation

• One of the oldest tools– Changes in technology– Diverse programming staff– Not “clean”

• Evolution– Mixes Procedural and OO– Strategy to move logical units into discrete components– Publish components as services– Different parts of the code are in different stages of

evolution• Originally deployed under Tomcat (pre Jboss)• Extends HttpServlet

– gov.nih.nci.cadsr.cdecurate.tool.NCICurationServlet.java

Page 15: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

15

Curation Tool - DependenciesCuration Tool - Dependencies

• EVS– Specific Vocabularies defined in tool options– Currently uses the 4.2 remote client API– Adopter can remove dependency by populating concept

table and removing EVSAPI.URL from tool options– Some additional code changes may be required – never

tested by QA• Admin Tool

– Curation Tool does not curate (create, edit) CS, CSI, LOV, etc, must be done in Admin Tool

Page 16: Curation Tool June 11, 2009. Curation Tool Overview Architecture Implementation Dependencies Futures 2

16

Curation Tool - FuturesCuration Tool - Futures

• Move Admin Tool features to Curation Tool• Allow metadata attributes to be optional

– Implement data validation rules per Workflow Status• Interface with Object Cart to replace “Append”• Implement Customizable Download (Export)• Implement Object Compare, e.g. VD 1 to VD 2, etc• Move Ref Doc attachments out of Oracle to file system• Update UI for consistency and to minimize mouse clicks and

scrolling• Reduce server requests

– e.g. change Search For to swap <div> for criteria• Upgrade Tech Stack• Move to Struts• Move PL/SQL procedures to Java• Move some Javascript to Java• Move some embedded Java to tags