# Notes:

## Example Model file to be provided to all presenters

## Analytic Services -- how much detail are we going to get into

# Welcome and Introductions

## Boot Camp Overview, Audience Interview, Learning Objectives

# Core Infrastructure

## Overview of the Core Infrastructure Program Area

# Metadata Reuse

## Why Metadata Reuse is important / Benefits of Metadata Reuse

## 2 ways to re-use caDSR metadata:

### Run Round-trip in SIW to identify existing CDEs (entire caDSR or project specific)?

### Search caDSR for existing metadata and add tagged values in UML Model

#### Use the UML Model Browser to search for existing classes and make yours match (write down Public ID and Version)

#### Browse CDE Browser to look in caDSR for CDEs (may not be part of a model yet)

#### Search Curation Tool for Object Classes -- Get Associated

#### Search EVS for concepts

## \[EXERCISE\]: use the UML Model Browser to search for existing metadata to use as tags in our sample UML model (Record Public ID and Version -- regardless of how you found it)

# Modeling your Application, Data or Service 

## Overview of Phase 1 in the caCORE Build Process Diagram

## Why Modeling is important / Benefits of Modeling

## Start with an Existing Model

## Creating your UML Model for caBIG Compatibility

### Package Structure (Logical View)

#### Object Model

#### Data Model

### Inheritance and Multiplicity

### Logical (Object) Model

#### Package Structure

##### Naming Conventions (gov.nih. nci.project.domain)

##### ValueDomains package

###### Adding Java Wrapper classes in appropriate package (no need to add attributes)

#### Naming

##### Classes 

##### Attributes

##### Associations

#### Data Types

##### List of supported data types

##### How to request new

#### Creating classes and Attributes \[EXERCISE\]

##### Naming conventions

##### Adding classes

###### Do not use Notes section because it can collide with "documentation" tag

##### Adding attributes to classes

###### Do not use Notes section because it can collide with "description" tag

##### Adding data types to attributes

###### Only java primitives or java wrapper class 

###### Type in java primitive or unqualified wrapper class; using drop down list can cause problems

###### Do not use ... link

##### Adding tags for definitions for classes and attributes (CADSR_Description is new tagged value for all definitions)

###### 255 character max per tag (2000 character total)-- add up to 8 tags for definition (CADSR_Description\[2\], etc)

##### UML notations ignored by SIW/UML Model Loader

###### Stereotypes (other than enumeration; see below)

###### Attribute multiplicity (use -1 to represent many)

###### Options in Class and Attribute Details pages

####### Scope

####### Abstract class

####### Cardinality (always use -1 to represent many)

####### Etc.

###### Operations in classes

#### Add Value Domains (including Permissible Values) as Stereotyped Classes \[EXERCISE\]

##### Create/Name a stereotyped class (enumeration or CADSR Value Domain)

###### Add tags (Done in SIW now)

####### CADSR_ValueDomainDefinition

####### CADSR_ValueDomainDatatype

####### CADSR_ValueDomainType

####### CADSR_ConceptualDomainPublicID

####### CADSR_ConceptualDomainVersion

####### Describe how to find conceptual domain for a VD

###### Add permissible values for Enumerated VDs

####### Add attribute

####### Add "description" tag

####### Map each attribute to one or more EVS concepts

####### Attribute name = value

####### Concept name(s) = value meaning

####### Concept definition(s) = value meaning description

####### Using the "no concept" concept 

#### Curating Enumerated Value Domains in caDSR (using Curation tool) -- point to 1063 or contact a curator to do this BEFORE model is annotated/loaded

# Validate your Logical (Object) Model

## Why Validating your Object Model is important / Benefits of validation

## Export your UML Logical View Package (contains an Object Model right now) for use with Code Gen

## Run Code Gen on the XMI File (validation step for caCORE Compliance?)

# Create a Data Model 

### Why Create a Data Model / Benefits of Creating a Data Model

### Required for SDK only; ignored by SIW/UML Model Loader

### Input high-level points from Wendy's Document

### Adding tables

### Adding columns

### Export the UML Model Logical View Package (both Object and Data Models) for caAdapter

#### Export from Logical View

#### Use EA defaults

#### Include diagrams

#### Use XMI 1.1, UML 1.3 format

#### Use roundtrip format

# caAdapter

## Why Object Relational Mapping is important / Benefits of Object Relational Mapping

## Use the XMI file (both Object and Data Model) to create the Object Relationship Mapping

## Import the caAdapter XMI file back into EA

## Verify the caAdapter Tags 

## Export the Logical View for SIW

# Semantically Annotating Your UML Model in SIW

## Overview of Phase 2 (Semantic Integration)

### Explain the iterative nature of the process

## Why Semantic Annotation is important / Benefits of Semantic Annotation

## Using the Semantic Integration Workbench 3.2

### Purpose of the SIW

### User Modes

#### Mode 1: Review Un-annotated XMI file

##### Why

###### Use SIW to annotate new Value Domains (already named in Object Model)

##### How

#### Mode 2: Perform XMI Roundtrip (Optional -- for loading a new version of an old model)

##### Why

##### When

##### How

#### Mode 3: Run Semantic Connector

##### Why

##### When

##### How

#### Mode 4: Curate XMI file

##### Why

##### When: Never, for EVS team use only

#### Mode 5: Review Annotated Model

##### Why

##### When

###### To reuse CDEs BEFORE sending to EVS team

###### To review fully annotated XMI file returned from EVS team

##### How

###### How to review model errors/warnings

###### How to change concept mappings

###### How to map concepts to associations

###### How to use Preferences

###### How to use Validate Concepts

###### How to use Defaults (package filters only)

### SIW Preferences

### Validating Concepts

### Tips and Tricks for the SIW

### How UML Model Loader Works 

#### How the Loader creates CDEs

##### How are concept codes interpreted

##### How are data types interpreted

##### How mapped Value Domains are interpreted

##### How mapped CDEs are interpreted

##### How inherited attributes are interpreted

#### How the Loader creates new Value Domains

#### Shortcomings

##### Cannot reload a Value Domain

##### Cannot map to retired CDEs

##### Cannot map to existing permissible values that do not have concepts (3.2.1.3 -- "Permissible Values without concepts can now be marked as human reviewed")

# Transforming your UML Model into Metadata

## Why transforming your UML Model is important / Benefits of transforming your UML Model

## Filling out the UML Model submission form

### Where to find submission form

### Curation Account and Curriculum

#### Curator account

#### Coursework completed

### Model Review Options

#### Editing First Pass XMI file

#### Reviewing XMI file before submitting

### Contacts

### Project Information

#### Context

#### Project Description

#### Folder Name

##### What are containers

##### Why do you use them

#### Project Name

##### Describe Classification Scheme (NOTE TO DIANNE: maybe we should discuss versioning here???)

#### Subproject Name

##### Describe CSI Alias

##### Grouping Packages

#### Package Names

##### Describe CSI package 

#### Project Version

##### Retire previous version?

##### Classification Scheme version vs. CDE version (NOTE TO DIANNE: if we keep the versioning section we can move this to that section)

#### Project Workflow Status

##### Project "released"; CDEs "draft/new"

#### Excluding packages from loading

##### To avoid reloading parts of the model that don't change

##### To avoid reloading Value Domains

#### URL to Project HTML documentation

##### How to create

##### Where to keep this document

### Miscellaneous

#### Modeling tool used

#### SIW release used

#### API generator used

## Viewing your model metadata once it's loaded into Sandbox

### CDE Browser and UML Model Browser URLS

### Check for:

#### Container, CS, CSI and packages all exist as expected in browser tree

#### One CDE for each class attribute, including inherited attributes

#### Classes and attributes mapped to EVS concepts created/reused appropriate DEC, OC, Property

#### Class attributes mapped to CDEs reused CDEs properly

#### Class attributes mapped to Value Domains reused VD properly

#### New Value Domains created with all permissible values

#### Permissible Values are mapped to concepts

### CDE Browser

#### Viewing tree

#### Viewing CDEs, Object Classes, DECs and Properties

#### Viewing Value Domains and permissible values

#### Viewing generalizations

#### Viewing associations

### UML Model Browser

#### Viewing tree

#### Viewing classes and attributes

#### Viewing CDEs

#### Viewing Object Classes, generalizations and associations

# SDK Code Generation

## Why Code Generation is important / Benefits of Code Generation

## How code generation fits into model registration

### The SAME model must be used to create APIs as is registered into the caDSR

### Process workflow is iterative

#### Every time UML model changes, the API must be updated and the metadata must be updated

#### Process when UML Model changes while annotating metadata

##### Import current metadata annotations into UML Model

###### Do NOT include caAdapter annotations in this import, as caAdapter will not work on XMI file that contains caAdapter annotations

##### Make changes to UML Model

##### Export to XMI file

###### Continue with metadata annotation

###### Rerun through caAdapter

###### Rerun SDK code generator to ensure your change is compatible with SDK

#### Process when UML Model changes while running caAdapter or SDK code generator

##### Make changes to UML model containing all metadata annotations, but no caAdapter annotations

##### Export to XMI file

###### Rerun through caAdapter 

###### Rerun SDK on resulting caAdapter changes

###### Check in SIW for missing annotations

## Using SDK Code Gen to generate java APIs (as a .war file)

## Run Code Gen \[EXERCISE\]

# Compatibility Review Process

## Why Compatibility is important / Benefits of Compatibility

## VCDE & Architecture Workspace Compatibility Reviews

# Common Securities Module (CSM)

## Why CSM is important / Benefits of CSM

## Overview of CSM

## Deploying Authentication, Authorization, and User Provisioning

## Adding Security to a Grid Service \[EXERCISE\]

# Common Logging Module (CLM)

## Why CLM is important / Benefits of CLM

## Overview of CLM

## Adding Logging to a Grid Service \[EXERCISE\]

# Creating a Node on the Grid

## Why Creating a Node is important / Benefits of Creating a Node on the grid

## Introduce Toolkit -- Beginners

## Introduce Toolkit -- Advanced Users

## Questions and Best Practices