Design Guide
Author: Scott Oster and Calixto Melean
More information can be found in the following related document:
Introduce Documentation
| |
|
|
| |
Contents |
|
| |
|
|
Introduction
Overview
The purpose of this document is to describe the design of support for leveraging ISO 21090 datatypes in caGrid via the Introduce-based service development process.
Purpose
The purpose of this document is to describe the architecture of the Introduce Extension for adding ISO 21090 Datatypes to an Introduce Service. The information in this document is to help developers interested in extending or modifying the extension.
Background Information
Introduce Extension Framework

The Introduce Extension framework provides many styles of extensions; service, authorization, deployment, data type discovery, graphical component etc (see extensions). These extensions are implemented to add custom functionality to the Introduce framework or the services that the framework can create. Extensions are added to the toolkit in the form of extension plug-ins, which the toolkit will then be able to expose to the user. To provide an extension to Introduce, the extension provider must implement or extend the appropriate classes for the style of extension they wish to provide, and must fill out the extension XML configuration document. Once this extension is implemented and configured it can be placed in the extensions directory of Introduce. This directory has a common library (lib) area that enables it to avoid using custom class loaders for each extension.
The "Data Type Discovery Extension" styles provide a way to customize the way new datatypes get added, by a developer, to a particular service. As such, they exist as extensions within Introduce's Modification Viewer, and not in a particular service; datatypes added by an extension are no different than those added and configured manually by a developer. The NamespaceTypeDiscoveryComponent is a base Class provided by Introduce for such extensions.
ISO 21090 Common Project
An independent software project will be developed by a cross-project team, in support of the following:
- Java Beans for Localization
- Serialization support for to/from those Beans to standard ISO XSD
- Hibernate support for ORM mapping those Beans to database
A software distribution consisting of documentation, jar files, XSDs, and configuration files will be provided.
Relevant Requirements
- The canonical ISO 21090 data type schema and single NCI localization must be easily added to an introduce service
- Use of the common-project-provided beans must be easy to leverage instead of defaulting to Axis-generated beans for those schemas
- Use of the common-project-provided serialization framework must be easily configured
- The extension should support easily supporting new versions of the common project
Assumptions
- The common project XSDs, Java Beans, and Serialization Framework are sufficient for service developers
- The separate support for use of SDK-generated ISO libraries in use for Data Service support is mutually exclusive with this support. That is, it will be used if a Data Service is being developed, and not otherwise. As such, project-specific ISO localizations aren't supported out of the box by this extension.
Implementation
Overview
The support for adding the XML Schemas, Java Beans, and configuring the serialization between the two is easily added to Introduce via the Datatype Discovery Panel Extension Point. A single component, org.cagrid.iso21090.portal.discovery.ISO21090TypeSelectionComponent, can be added to the "Add/Remove" Types menu in the Introduce Modification Viewer by a new extension that can be installed into Introduce. This extension is called "ISO21090-discovery" and its formal extension description can be seen in Appendix A.
Graphical Use
The extension is trivial to use, in that it completely automates the process of adding the XSDs, jars, and configuring the serialization of the types. The user interface is shown below, hooked into the Introduce Types panel.

Clicking the "Add" button, will add the two XML Schemas (the main XSD and NCI localization), add the common project jar files, and configure the types in the XML Schemas to use the common-project JAXB Serialization Framework. Once added, the two Namespaces will show up in the "Imported Data Types" tree on the left of Introduce, and clicking on a particular element will show the serialization details configured, as shown below.

Installation
The project currently is developed in an ISO21090 incubator project in the caGrid community project's environment. It is currently configured to link against the caGrid 1.3 release. The project is called iso21090IntroduceExtensions and follows the typical caGrid project pattern of providing an "installIntroduceExtensions" ant task that will deploy the extension to Introduce (via the CAGRID_HOME environment variable). It also will be uploaded to the Introduce Update Site, and can be automatically added to an Introduce installation via software updates.
Appendix A - Extension Description
<ns1:ExtensionDescription xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.3" xmlns:ns1="gme://gov.nih.nci.cagrid.introduce/1/Extension" extensionType="DISCOVERY"> <ns1:DiscoveryExtensionDescription displayName="ISO21090" name="ISO21090-discovery"> <ns1:DiscoveryPanelExtension>org.cagrid.iso21090.portal.discovery.ISO21090TypeSelectionComponent</ns1:DiscoveryPanelExtension> <ns1:Properties> <ns1:Property key="ISO21090_DATATYPES_FILENAME" displayName="ISO 21090 Datatypes Schema Filename" description="The name of the file containing the ISO 21090 datatypes" value="ISO_datatypes_Narrative.xsd"/> <ns1:Property key="ISO21090_EXTENSION_NAMESPACE" displayName="ISO 21090 Datatypes NCI Extension Namespace" description="The ISO 21090 NCI Extension Namespace" value="http://iso21090.nci.nih.gov"/> <ns1:Property key="ISO21090_EXTENSION_PACKAGE" displayName="ISO 21090 Datatypes NCI Extension Java Package" description="The Java package name to use for the ISO 21090 NCI Extension Namespace" value="org.iso._21090"/> <ns1:Property key="ISO21090_EXTENSION_FILENAME" displayName="ISO 21090 Datatypes NCI Extension Schema Filename" description="The name of the file containing the ISO 21090 datatypes NCI extensions" value="ISO_extensions.xsd"/> </ns1:Properties> </ns1:DiscoveryExtensionDescription> </ns1:ExtensionDescription>





