Creating an RAD Authoratative Data Environment

90
1 Data Sharing Architecture Art Nicewick

description

Sharing data in agencies can be a burden, with users placing data on numerous desktop packages, the idea of sharing becomes impossible. However, new RAD tools allow quick web applications to be developed to replace the Excel, MSAcces, and Filemaker data stores, with real , controlled authoritative database integration. This presentation defines both the problem space, and the proposed solution. See www.data4USA.com for more information

Transcript of Creating an RAD Authoratative Data Environment

Page 1: Creating an RAD Authoratative Data Environment

1

Data Sharing Architecture

Art Nicewick

Page 2: Creating an RAD Authoratative Data Environment

2

3/6/2009 12:46:08 PM

Page 3: Creating an RAD Authoratative Data Environment

3

Origins of data sharing architecture Initiative (November 2007)

I need a database, to share education programs and I have a MAC

Greg, can Art help Kim?

Art, help Kim?,

Hmm, Filemaker is not SQL Compliant, and MSAccess does not run on the MAC,

We need something better.

O.K., What should we do?

Page 4: Creating an RAD Authoratative Data Environment

4

3 Areas of Data Integration• Collect

– Bring data in to

structured format

• Share – Define\Reference

Authoritative Data

• Disseminate – Make data

available to users

TMSRaisersEdge

FMS

IRIS

COEIRIMS

Vista

AI

Empl

GalleryData

$

$ GalleryData

Te

xt

12

34

5

Bar graph

DataCollection

Data Sharing Dessemination

Page 5: Creating an RAD Authoratative Data Environment

5

Questions this presentation tries to answer?

TMSRaisersEdge

FMS

IRIS

COEIRIMS

Vista

AI

Empl

GalleryData

$

DataCollection

• What problem is being addressed by a web database

• When should Filemaker or MSAccess be used to address this problem

• When should Metastorm be used to address this Problem

• Why was PHPRunner selected for the web database front end

• How is the PHPRunner architecture to fullfull the requirement that there will be little to none application code in the implementation (allowing allowing it to be easily ported to a new application (DCLPA used as example).

Page 6: Creating an RAD Authoratative Data Environment

6

[ Missing Gap]Need to have customized department systems

that reference authoritative data

Types of Gallery Data sharingWord Docs

ExcelOne user at a time, not shared

MSAccessFilemaker

Isolated non-integrated database (Stand-alone) shared between a handful of users, Highly customized

Raisers EdgeTMS

Many users shared, expensive, little-customization

InternetIntranet

Enterprise-wide and beyond.

Systems integrated to authoritative source, shared with many users across departments, customizable

DepartmentalAuthoritative Data Systems

Workflow (IRIS)

Page 7: Creating an RAD Authoratative Data Environment

7

Database ?

• The gallery has two definitions of a database. – MSAccess\Filemaker (Single Platform)

– SQL Server\Postgress (Multiple Platform)

Page 8: Creating an RAD Authoratative Data Environment

8

Pluses and Minus of COTs

• Cots are very inexpensive solution.. However: – They frequently do not have everything you need, and

you cannot easily modify\Extend them– They will not follow any naming standards based on

your organization – The governance of the code\logic\ and schema is

outside of the clients control (Although the Actual data is in their control)

– They cannot “Alone” be used to collect the Gallery’s Data needs – They need to be extended!

Page 9: Creating an RAD Authoratative Data Environment

9

Documentation (UDB)

Project to Define when and how to define different application architectures (Nov, 2007)

Project Folder • \\nga\group\t\TDP\Projects\UDB - User Database Deployment

Documents – Proposed End User Data Architecture Implementations (UDB) 20071129a.doc– Filemaker and SQL Compliant Database(UDB) 20080109c.doc– User Database Prototype and Alpha Five(UDB).doc– End User Database Deployments Summary (UDB) 20071128a.doc

Page 10: Creating an RAD Authoratative Data Environment

10

Fate of UDB project

There was concern at the time, that the UDB approach would cause “End Users” to be involved in the development process and that TDP would be unable to control their development demands.

The contrarian position was that TDP would still be the primary developers for any enterprise component of the architecture (e.g. Data Model) and the proposed solution would eliminate the current practice of users “independently” developing on systems that could not be shared, secured or extended to the enterprise (e.g. Filemaker, MSAccess, …)

These considerations were never resolved and the project was cancelled in February of 2008.

However, the issues still exist, and the proposed architecture is still worth reviewing.

Page 11: Creating an RAD Authoratative Data Environment

11

What is a Database? (Two Views)

010010101001010101010101010101010101010101010100010010010101

Presentation “Front End”

Application“Business Rules”

Database (Storage)

Technologist \ Programmer understanding of the term

Business Analysts \ End User understanding of the term

What is a Database?

Integrated Development

Environment (IDE)“Tools”

IDE + Presentation + Business Rules + Data Storage

TechnologistView

BusinessView

An all-in-one System where I Can save data

(e.g. MSAccess)

Single ProductA part of a

much larger System, used to Store and share

Data (e.g. MSSQL)

Multi-Product

Page 12: Creating an RAD Authoratative Data Environment

12

Examples of “Single” verses “Multi” software applications

Application Front End \ Presentation

Business Rules\ Application

Database Storage Development Environment

Single product Systems

Gallery Archives DB File Maker

Request Management System File Maker

Purchase Card MS Access

Excel Excel

Multi-Product Systems

Asset Inventory MS Access MSSQL MS Access

Employee Database MS Access MSSQL MS Access

Portfolio \Extensis (Service) Web \ Portfolio MSSQL Vendor

Inside.Nga.Gov Web Mason\Perl\CGI PostgresSQL Eclipse

IRIS Web Metastorm MSSQL Metastorm

FMS Java Applet J2EE Oracle OracleForms

TMS Visual Basic Visual Basic MSSQL Visual Basic

Raisers Edge Visual Basic Visual Basic MSSQL Visual Basic

Paper Conservation Web PHP MSSQL PHPRunner

Page 13: Creating an RAD Authoratative Data Environment

13

Where is the Data

• Single version of Truth

Page 14: Creating an RAD Authoratative Data Environment

14

Worst Case

Exhibition Code: 23 = XX

Exhibition Code: 23 = YY

Exhibition Code: 23 = ZZ

Exhibition Code: 21 = ZZExhibition Code: 21 = AA

Exhibition Code: 21 = AA

Exhibition Code: 23 = XX

Exhibition Code: 23 = XX

Exhibition Code: 23 = XX

Exhibition Code: 21 = AA

• Data Everywhere, No single version of truth • How is correct?

Page 15: Creating an RAD Authoratative Data Environment

16

Goal • Single version of truth • Defined Source of Authoritative data

Exhibition Code: 23 = XX

Page 16: Creating an RAD Authoratative Data Environment

18

Not one answer !

• Different users

• Different needs

Page 17: Creating an RAD Authoratative Data Environment

19

Five Strategies

File Maker Application

1

Temp Storage or Local Copy Storage Only

No Data Storage

X

PH

PC

onversion

`

PHPApplciation

File Maker Application

2

Access

Read Only

OPTION 1

OPTION 3

OPTION 4

File Maker

Access

OPTION 2Single UserNon-Authoritative Data

Within Single DepartmentNon-Authoratative

Within Single DepartmentAuthoritative Data

Cross DepartmentsAuthoritative Data

Dept A Dept B

Dept C

Option 5.

Custom (Thin Client)

Option 1.Single User

Option 2.SharedDepartmentData(Fat Client)

Option 3.SharedEnterpriseData (Fat Client)

Option 4. Shared Enterprise Data(Thin Client)

Page 18: Creating an RAD Authoratative Data Environment

20

Attributes Not Displayed in Slides

• Conditions for selecting each deployment

• User responsibility in each deployment

• Number of users estimates for each deployment

• TDP Role in each deployment

• . . .

Proposed End User Data Architecture Implementations (UDB) 20071129a.doc

Page 19: Creating an RAD Authoratative Data Environment

21

Option 1 – Single User • A single user works alone, disconnected from the rest of the world. With there own version of

the data • This is another example of a “Single User” application. Filemaker, Excel and Access also fit into

this category. • A minor improvement, is to allow this “single user” the ability to linked to existing ‘authoritative

source’. This is mostly a “Reporting: feature. For example, Greg and Alan Newman use this method for reporting

Authorization

Optional

One TimeLoad

•Susan’s Pull from IA to Excel•TMS Crystal Reports •Raisers Edge Queries

Page 20: Creating an RAD Authoratative Data Environment

22

Option 2 – Multi-User Departmental Application for Departmental-only Data

• This is a multiple user application. The data in this situation is not ‘authoritative’ to the Gallery and therefore is considered a ‘copy’ of some other data stored as a Gallery resource. This Architecture assume simple business rules, and little to no workflow.

User /Developer

UserUser

AFM AFM AFM

Independent

•Gallery Filemaker Archives •AFM Access database

Page 21: Creating an RAD Authoratative Data Environment

24

Option 3 – Multi-User Departmental Application for Gallery-Wide Data

User

User

AFM

XDO

TMS

IRIS

DAC

RE

IRIMS

Web

Authoritative Source

Other..

Authorization

DataConsistencyVerfication

End UserDeveloper

This architecture attempts to blend the “ease of use” of a “Single product System” with the centralized control of the “Enterprise Database”. This Architecture assumes simple business rules, and little to no workflow.

•Asset Inventory•Scott Steven Employee Database

Page 22: Creating an RAD Authoratative Data Environment

25

Option 4 - Multi-User Gallery-Wide Application for Gallery-Wide Data

TDP

User

XDO

TMS

IRIS

DAC

RE

IRIMS

Authoritative Source

Other..

DPUB

WEB

End UserDeveloper

DataModel

ConvertTo

PHP

Deploy toServer /

Generated from

Data Model

ConsistencyChecking

Authorization User

User

User

User

User

DM

PHPRunner

Overrides

This architecture extends the previous architecture to limit the impact of “Client Maintenance” by using a thin client Web Based Application..

•DCLPA•VDMS•Patch Reporting

Page 23: Creating an RAD Authoratative Data Environment

26

Option 5 - Strategic Applications

TDP

User

XDO

TMS

IRIS

DAC

RE

IRIMS

Authoritative Source

Other..

DPUB

WEB

Developer

ConsistencyChecking

Authorization User

User

User

User

User

TMS\WEB

TRAIN

Other..

iHeat

Web Services , Native AJAX,

Complex application Rules

ComplexCode •IRIS

•Art Extract

Page 24: Creating an RAD Authoratative Data Environment

27

Metastorm

• Not around when UDB study was developed (Dec 2007)

• Today, I would define it as a hybrid of Complex Business Rules and Generated application

Page 25: Creating an RAD Authoratative Data Environment

28

SQL Server Database

Web Browser

Architecture

PHPRunner Application Server (Web Server)

`

Page 26: Creating an RAD Authoratative Data Environment

29

What kind of tool do we need to do this ?

Required:- Must be easy to build – Low Maintenance - Must use database standards - Must have Security - Must have adequate performance

Desired:- We did not need to install it (e.g. Web based)- Was reasonably priced- Will be easy to maintain in the future (Standards based)- We should be able to easily replace it !

Page 27: Creating an RAD Authoratative Data Environment

30

A few options

• MSAccess

• Filemaker

• PHPRunner

• MetaStorm

• Custom Web Develop? (Mason,Perl,CGI)

• Other?

Page 28: Creating an RAD Authoratative Data Environment

31

MSAccess (November 2007)

I need a database, to share education programs and I have a MAC

Will you change to a PC, then we’ll give you Microsoft Access

Hmm, We really cannot ignore the requirement for MACs. For that matter,

expense to install is so high, a web solution would save the gallery the most money.. The

Web should be a requirement.

In that case, “Nevermind”

Page 29: Creating an RAD Authoratative Data Environment

33

Filemaker ! Required:- Must be easy to build – Low Maintenance - Must use database standards - Must have Security - Must have adequate performance

Desired:- We did not need to install it (e.g. Web based)- Was reasonably priced- Will be easy to maintain in the future (Standards based)

How about File Maker to a SQL Database … Isn't that a feature a feature of Filemaker server?

Isn't that called ESS (External Data Sources)?

Page 30: Creating an RAD Authoratative Data Environment

35

Problems With Filemaker• “Filemaker External SQL Sources (ESS) In Depth”

(Filemaker publication) – “Value lists cannot be based on data in an ESS table”

– “in a FileMaker Pro context, date-only or time-only data entry will not be valid” – ESS data in FileMaker Pro has the potential to be slightly out of date – Binary data is not supported by ESS at present – Scrolling operations … can be problematic in large record sets. . . . and will

perform fairly slowl – Sort not performed in database – The ESS feature set is primarily designed to allow FileMaker Pro solutions to

integrate data from SQL-based solutions. ESS is not primarily intended as a means to scale solutions beyond the bounds of a purely FileMaker Pro based solution.

– See: Filemaker and SQL Compliant Database(UDB) 20080109c.doc

“Value lists cannot be based on data in an ESS table”

Means

No field list validation (Dropdown List) from

non-Filemaker authoritative sources!

Or in simple terms

“Can’t validate against to authoritative data”

Page 31: Creating an RAD Authoratative Data Environment

37

Filemaker (My Last Straw)From: John Blakeley [mailto:[email protected]] Sent: Tue 1/8/08 2:27 PM To: Nicewick, Arthur Subject: RE: your post on Filemaker about ODBC conversion errors Hi Arthur Thanks and a happy New Year to you! We gave up on the idea of pulling data from Filemaker using it as a linked server. In the end we scheduled a script to run that exported data on an hourly basis. SQL would then import it. We had to use MS scheduled tasks to open a FM file that would autostart an export script as FM server schedule cannot run scripts that aren't web compatible. Nothing is ever simple in Filemaker! One day...Cheers John Blakeley                         John Blakeley    Mobile: + 64 21 948037 Email: [email protected] Skype: john.blakeley Bayview North Shore New Zealand

“We gave up on the idea of pulling data from Filemaker using it as a linked server”

Page 32: Creating an RAD Authoratative Data Environment

38

Not Filemaker – Then what?

Page 33: Creating an RAD Authoratative Data Environment

39

Prototyped

Typical “Types” of Assets , with issue numbers mapped

“Lookup” provides means to search for Issuance

Page 34: Creating an RAD Authoratative Data Environment

40

Rated the bestEasy to Learn \ Use

Can be extended

Can integrate with Cots Packages

“Open” Architecture

Java Server Faces

\ Netbeans

Ruby on Rails\ Active Scaffold

Alpha Five

Cold Fusion

.NetPHPRunner

Page 35: Creating an RAD Authoratative Data Environment

41

PHPRunner

Required:- Must be easy to build – Low Maintenance - Must use database standards - Must have Security - Must have adequate performance

Desired:- We did not need to install it (e.g. Web based)- Was reasonably priced- Will be easy to maintain in the future (Standards based)

Very little coding

Yes

Pretty good, but we need to make it better

Looks OK, Need testing

Yes

Yes

Standard Industry Language (PHP)

Framework not widespread as we would like

Page 36: Creating an RAD Authoratative Data Environment

43

Framework

PHPRunner Code Generation

CodeGenerator

Access Routine

CodesOverrides ,

Screen Customizations

Templates

CodesOverrides

RelationshipsFramework

Tables

Framework

Relationship

Web Forms

Security / Navigation

DataDefinitions

Custom

Code Changes

Won’t break

by upgrades

Code Changes

Won’t break

by upgrades

Code change

“Might” break by

upgrades.

But the system

will try to

prevent it..

Upgrades willRevert changes

DB Rules

Page 37: Creating an RAD Authoratative Data Environment

48

Charts

Page 38: Creating an RAD Authoratative Data Environment

49

Reports

Page 39: Creating an RAD Authoratative Data Environment

50

Searchable (Advanced and Simple)

Reports, Charts, Tables, …

Page 40: Creating an RAD Authoratative Data Environment

51

End User Reports Creation(Web Based)

• Very Simple

• Version 1 is very limited

• Tightly integrated with Security

• Version 2 expected in the summer

Page 41: Creating an RAD Authoratative Data Environment

52

How about Metastorm

• Workflow Focus • Excellent integration with in-box process • Ideal for “Approval” Processing • Ideal for “Request” processing • Somewhat RAD• No focus Data model • No focus of Data Business Rules • “Probably” ported from non-relational

Page 42: Creating an RAD Authoratative Data Environment

53

Web Database vs Workflow

• PHPRunner (Web Database) has the user create the a normalized database (Modeling Business Rules) , then “Semi-Automatically” creates the User Interface

• Metastorm (Workflow) has the user create a workflow , and then “Semi-Automatically” creates a “deNormalized” (Technical) database behind it

Page 43: Creating an RAD Authoratative Data Environment

54

Metastorm vs Web Database

• PHPRunner is “Only” code development, The tools is run on “Apache\PHP”. Therefore there is no license issues for users (unlimited users)

– PHPRunner toolkit $300 per developer

– Unlimited users – No Additional cost • Metastorm provides both a “Toolkit” and a

“Runtime” environment. The runtime environment cost

– User License $149.88 per named user (not concurrent) – Work Workgroup Server, restricted to a maximum of 250 named users$17,984.89 per

server – The Gallery has purchased 8 developer licenses at ~$2500 each (Need to verify)– Note: I current do not know many users exist in metastorm, We may be required to

purchase more licenses. However, once purchased, a single user license will work with unlimited Workflow task (However, we may need addition servers)

Page 44: Creating an RAD Authoratative Data Environment

55

Replacing Filemaker and MSAccess

• PHPRunner is a Database driven tool and is therefore dependent on a normalized data model. Filemaker and MSAccess are also database driven tools that are also dependent on normalized data models. Therefore, PHPRunner should be ideal for database application migration of systems like “Gallery Archives”.

• Metastorm is “Workflow” focused and does not allow the user to define the database. For pure data storage, it is not a good application. However, For workflow, it is very good.

Page 45: Creating an RAD Authoratative Data Environment

56

PHPRunner

Normalized Data Model - Clean Data Type- Logical Business Modeled Data Model - Data enforced Business Rules - Easy to report

Header(e.g.

Name,

Address)

Child1(e.g. Kids

Names)

Child2(Roles)

Child3(e.g. Cars)

Child1(e.g. Kids

Names)

AdminReference

Tables

Simple CRUD User Interface - Basic Menu - No “Workflow” or “Inbox” - Light integration with Email - Decent report generation

Auto Generated

Page 46: Creating an RAD Authoratative Data Environment

57

Metastorm

KeysAnd

Pointers

Header(e.g.

Name,

Address)

Child1(e.g. Kids

Names)

Child2(Roles)

Child3(e.g. Cars)

Auto Generated

AdminReference

Tables ignore

TempScreenData

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

ignore

ignoreignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

ignore

ignore

ignore

ignore

ignore

Complex Workflow - Great “Inbox”- “Approvals” out of box - Logical Diagramming of Workflow - Tight integration with Email - “Bad” report generation

DeNormalized Data Model - Data not always Types (Integers are character) - Single Logical Table storing parents and children - “Temp” Screen data stored in Database - Fields defined but not used - Admin screen cannot be linked to data model

Page 47: Creating an RAD Authoratative Data Environment

58

Metastorm and Workflow

• RAD\Visual development of Workflow is what Metatstorm is good at!

• A good standard for Workflow application in the Gallery

Page 48: Creating an RAD Authoratative Data Environment

59

Data Model Differences

Header(e.g.

Name,

Address)

Child1(e.g. Kids

Names)

Child2(Roles)

Child3(e.g. Cars)

Child1(e.g. Kids

Names)

Parent

AdminReference

Tables

KeysAnd

Pointers

Header(e.g.

Name,

Address)

Child1(e.g. Kids

Names)

Child2(Roles)

Child3(e.g. Cars)

ignore

TempScreenData

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

ignore

ignoreignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

ignore

ignore

ignore

ignore

ignore

Page 49: Creating an RAD Authoratative Data Environment

61

Classifications

Classification_id int

Name nvarchar(50)

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

Column Name Data Type Allow Nulls

ConservatorsConservator_id

Gallery_id

Comment

isInEmployeeDirectory

LocalVersionOfName

LastUpdateUserName

LastUpdateTime

ExhibitionActivities *ExhibitionActivity_id

SortOrderInReport

Name

RequestReason_id

isOnWorklog

Exhibitions

Exhibition_id int

code nvarchar(50)

Name nvarchar(100)

isMaintainedInTMS bit

Comment nvarchar(MAX)

RequestReason_id int

DropDown_Display_Or... int

Column Name Data Type Allow Nulls

ReportTypeGroupsReportTypeGroup_id

Name

isTechnicalAnalysis

isDetailedExam

isTreatmentProposal

isObjectReport

isOther

LastUpdateUserName

LastUpdateTime

ReportTypes

ReportType_id int

ReportTypeGroup_id int

Name nvarchar(100)

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

isValidWithBulk bit

isValidWithQuick bit

isValidWithMajor bit

isValidWithMinor bit

DropDown_Display_Or... int

Column Name Data Type Allow Nulls

RequestApprovingRolesRequestApprovingRole_id

Request_id

ApprovingRole_id

ApprovingUser_id

Approval_id

Comment

LastUpdateUserName

LastUpdateTime

RequestBulkClassificationCountsRequestBulkClassificationCount_id

Request_id

CountForClassification

Classification_id

isNGA

Comment

RequestReasons *

RequestReason_id

DropDown_Display_Order

Name

Column Name

RequestReportDACsRequestReport_DAC_id

RequestReport_id

DAC_Record_id

Comment

LastUpdateUserName

LastUpdateTime

RequestReportStatusesRequestReportStatus_id

Name

DropDown_Display_Order

ReportType_id

LastUpdateUserName

LastUpdateTime

RequestReportWorkOrdersRequestReport_WorkOrder_id

RequestReport_id

WorkOrder_Line

WorkOrderType_id

LastUpdateUserName

LastUpdateTime

Requests *

Request_id int

EntryShortcutSelect_... int

RequestReason_id int

RequestType_id int

RequestStatus_id int

Requestor_id int

Comment nvarchar(300)

QuickNotes nvarchar(MAX)

RequestDate datetime

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

Exhibition_id int

ExhibitionActivity_id int

ExhibitionOtherActivit... int

EntryShortcutAjax_M... int

Loan_id int

LoanActivity_id int

Column Name Data Type Allow Nulls

RequestStatuses

RequestStatus_id int

Name nvarchar(100)

DropDown_Display_Order int

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

SetToThisWhenFirstReportIs... bit

Column Name Data Type Allow Nulls

RequestTMSObjectsRequestTMSObject_id

Request_id

TMSObject_id

EntryShortcutAjax_TMSObje...

RequestTypeApprovingRolesRequestTypeApprovingRole_id

RequestType_id

ApprovingRole_id

Comment

LastUpdateUserName

LastUpdateTime

WorkOrderTypesWorkOrderType_id

Name

LastUpdateUserName

LastUpdateTime

RequestTypes *

RequestType_id

Name

isMajor

isMinor

isQuick

isLoan

isBulk

isObjectRequired

isMultiObjectsAllowed

isApprovalRequired

DropDown_Display_Order

LastUpdateUserName

Column Name

RequestReports *

RequestReport_id int

Request_id int

ReportType_id int

StartedDate datetime

EndedDate datetime

Conservator_id int

Description nvarchar(MAX)

User_id int

RequestReportStatus_id int

AnalogImageLocation_id int

IncludeInFinalObjectR... bit

Report nvarchar(MAX)

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

RequestTMSObject_id int

Attachment nvarchar(MAX)

Image nvarchar(MAX)

RequestNonTMSObjec... int

Column Name Data Type Allow Nulls

RequestReportTechnicalInfosRequestReport_id

TechnicalNotes

BetaRadiograph

XRayFluorescenceSpectroscopy

InfraredSpectroscopy

MicroFadometer

FourierTransformInfraredSpectroscopy

FluorescenceSpectroscopy

ColorSpectroscopy

None

Other

OtherDescription

Loans

Loan_id int

Name nvarchar(50)

DropDown_Display_Order int

Comment nvarchar(MAX)

RequestReason_id int

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

Column Name Data Type Allow Nulls

LoanActivities

LoanActivity_id int

Name nvarchar(50)

Comment nvarchar(MAX)

LastUpdateUserName nvarchar(50)

LastUpdateTime datetime

RequestReason_id int

Column Name Data Type Allow Nulls

RequestTypeReasons *RequestTypeReasons_id

RequestType_id

RequestReason_id

RequestReportAttachments *RequestReportAttachment_id

RequestReport_id

FileName

Comment

RequestNonTMSObjects *RequestNonTMSObject_id

Name

NGAContactGallery_id

Request_id

RequestReports

RequestReport_id

Request_id

ReportType_id

StartedDate

EndedDate

Conservator_id

Description

User_id

RequestReportStatus_id

AnalogImageLocation_id

IncludeInFinalObjectReport

Report

LastUpdateUserName

LastUpdateTime

RequestTMSObject_id

Attachment

Image

RequestNonTMSObject_id

Column Name

RequestReportDACs

RequestReport_DAC_id

RequestReport_id

DAC_Record_id

Comment

LastUpdateUserName

LastUpdateTime

Column NameRequestReportAttachments

RequestReportAttachment_id

RequestReport_id

FileName

Comment

Column Name

RequestNonTMSObjects

RequestNonTMSObject_id

Name

NGAContactGallery_id

Request_id

Column NameRequestBulkClassificationCounts

RequestBulkClassificationCount_id

Request_id

CountForClassification

Classification_id

isNGA

Comment

Column Name

RequestApprovingRoles

RequestApprovingRole_id

Request_id

ApprovingRole_id

ApprovingUser_id

Approval_id

Comment

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportWorkOrders

RequestReport_WorkOrder_id

RequestReport_id

WorkOrder_Line

WorkOrderType_id

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportTechnicalInfos

RequestReport_id

TechnicalNotes

BetaRadiograph

XRayFluorescenceSpectroscopy

InfraredSpectroscopy

MicroFadometer

FourierTransformInfraredSpectroscopy

FluorescenceSpectroscopy

ColorSpectroscopy

None

Other

OtherDescription

Column Name

RequestTMSObjects

RequestTMSObject_id

Request_id

TMSObject_id

EntryShortcutAjax_TMSObject_id

Column Name

Requests

Request_id

EntryShortcutSelect_MajorTMSObj...

RequestReason_id

RequestType_id

RequestStatus_id

Requestor_id

Comment

QuickNotes

RequestDate

LastUpdateUserName

LastUpdateTime

Exhibition_id

ExhibitionActivity_id

ExhibitionOtherActivity_id

EntryShortcutAjax_MajorTMSObje...

Loan_id

LoanActivity_id

Column Name

PHPRunner (DCLPA) Data Model

Page 50: Creating an RAD Authoratative Data Environment

62

RequestReports

RequestReport_id

Request_id

ReportType_id

StartedDate

EndedDate

Conservator_id

Description

User_id

RequestReportStatus_id

AnalogImageLocation_id

IncludeInFinalObjectReport

Report

LastUpdateUserName

LastUpdateTime

RequestTMSObject_id

Attachment

Image

RequestNonTMSObject_id

Column Name

RequestReportDACs

RequestReport_DAC_id

RequestReport_id

DAC_Record_id

Comment

LastUpdateUserName

LastUpdateTime

Column NameRequestReportAttachments

RequestReportAttachment_id

RequestReport_id

FileName

Comment

Column Name

RequestNonTMSObjects

RequestNonTMSObject_id

Name

NGAContactGallery_id

Request_id

Column NameRequestBulkClassificationCounts

RequestBulkClassificationCount_id

Request_id

CountForClassification

Classification_id

isNGA

Comment

Column Name

RequestApprovingRoles

RequestApprovingRole_id

Request_id

ApprovingRole_id

ApprovingUser_id

Approval_id

Comment

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportWorkOrders

RequestReport_WorkOrder_id

RequestReport_id

WorkOrder_Line

WorkOrderType_id

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportTechnicalInfos

RequestReport_id

TechnicalNotes

BetaRadiograph

XRayFluorescenceSpectroscopy

InfraredSpectroscopy

MicroFadometer

FourierTransformInfraredSpectroscopy

FluorescenceSpectroscopy

ColorSpectroscopy

None

Other

OtherDescription

Column Name

RequestTMSObjects

RequestTMSObject_id

Request_id

TMSObject_id

EntryShortcutAjax_TMSObject_id

Column Name

Requests

Request_id

EntryShortcutSelect_MajorTMSObj...

RequestReason_id

RequestType_id

RequestStatus_id

Requestor_id

Comment

QuickNotes

RequestDate

LastUpdateUserName

LastUpdateTime

Exhibition_id

ExhibitionActivity_id

ExhibitionOtherActivity_id

EntryShortcutAjax_MajorTMSObje...

Loan_id

LoanActivity_id

Column Name

PHPRunner (DCLPA)

Key tables Data Model

Page 51: Creating an RAD Authoratative Data Environment

63

PHPRunner Actual Data

Normalized means the new child tables can be added or deleted, with little impact On the rest of the database, also unlimited child tables can be added

RequestReport

RequestReport

Workorders

Requests

Page 52: Creating an RAD Authoratative Data Environment

64

PHPRunner

• Focus on “Data Model” in database and not in “Application Logic” – Example

• DCLPA – Lines of PHP code [~75 lines]• DCLPA – Custom HTML [~86 lines]• Tables 40 tables • Database Stored Procedure Code [~250 lines]

Designed to be easily replaceable with new “user Interface” tool (if desired)

Page 53: Creating an RAD Authoratative Data Environment

65

IRIS Data Model

eEvent (

eFolderID nvarchar (31) NOT NULL , eEventID int NOT NULL , eVersion int NULL , ePriority smallint NULL , eEventTime datetime NULL , eEntryTime datetime NULL , eDeadline datetime NULL , eMapName nvarchar (31) NULL , eFromStage nvarchar (31) NULL , eActionName nvarchar (31) NULL , eToStage nvarchar (31) NULL , eUserName nvarchar (100) NULL , eFlagName nvarchar (63) NULL , eFlagFolder nvarchar (31) NULL , eAlertMessage nvarchar (250) NULL , eNotes ntext NULL

eFolder (

eFolderID nvarchar (31) NOT NULL , eParent nvarchar (31) NULL , eFolderName nvarchar (31) NULL , eStageName nvarchar (31) NULL , eMapName nvarchar (31) NULL , eServerName nvarchar (31) NULL , eCategory nvarchar (31) NULL , eOriginator nvarchar (100) NULL , eSubject nvarchar (250) NULL , eArchived smallint NULL , ePriority smallint NULL , eActionCount int NULL , eCreationTime datetime NULL , eEntryTime datetime NULL , eUpdated datetime NULL , eDeadline datetime NULL , eActionTime datetime NULL , eActionName nvarchar (31) NULL , eActionUser nvarchar (100) NULL , eFragmentStack ntext NULL

Deliverables (

Id int IDENTITY (1, 1) NOT NULL , Name nvarchar (250) NOT NULL , Cost int NOT NULL

Line_Items (

EFOLDERID nvarchar (31) NOT NULL , AO_AccNum nvarchar (250) NULL , AO_Artist nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Complete_Total money NULL , AO_DateNeeded datetime NULL , AO_Deliverables nvarchar (250) NULL , AO_Description ntext NULL , AO_DexNum nvarchar (250) NULL , AO_Dimensions nvarchar (250) NULL , AO_ExistingAssets ntext NULL , AO_Height int NULL , AO_Id nvarchar (250) NULL , AO_Info ntext NULL , AO_Lecture smallint NULL , AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets ntext NULL , AO_NonNGAObj smallint NULL , AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , AO_Status nvarchar (250) NULL , AO_Title nvarchar (250) NULL , AO_Total money NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , checkDeliverables smallint NULL , DeliverablesAmount int NULL , destinationFolderId nvarchar (250) NULL , destinationFolderName nvarchar (250) NULL , Difference_Total money NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , EP_Complete_Total money NULL , EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType nvarchar (250) NULL , EP_ExistingAssets ntext NULL , EP_Fax nvarchar (250) NULL , EP_Info ntext NULL , EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location nvarchar (250) NULL , EP_NewAssets ntext NULL , EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , EP_PhotographicCost money NULL , EP_Prepress smallint NULL , EP_ProductionJournal ntext NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Total money NULL , EP_VisualReference smallint NULL , EP_Web smallint NULL , Line_Item_Total money NULL , memAssignments ntext NULL , msg nvarchar (250) NULL , NAO_ArtTreatment smallint NULL , NAO_Complete_Total money NULL , NAO_DateNeeded datetime NULL , NAO_Deliverables nvarchar (250) NULL , NAO_Description ntext NULL , NAO_Dimensions nvarchar (250) NULL , NAO_ExistingAssets ntext NULL , NAO_Height int NULL , NAO_ID nvarchar (250) NULL , NAO_Info ntext NULL , NAO_Lecture smallint NULL , NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets ntext NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost money NULL , NAO_Prepress smallint NULL , NAO_ProductionJournal ntext NULL , NAO_Quantity int NULL , NAO_Source nvarchar (250) NULL , NAO_SpecialDeliveryInstructions ntext NULL , NAO_Total money NULL , NAO_VisualReference smallint NULL , NAO_Web smallint NULL , NAO_Width int NULL , nextStage nvarchar (250) NULL , O_ArtTreatment smallint NULL , O_Complete_Total money NULL , O_DateNeeded datetime NULL , O_Deliverables nvarchar (250) NULL , O_Description ntext NULL , O_ExistingAssets ntext NULL , O_Height int NULL , O_Info ntext NULL , O_Lecture smallint NULL , O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , O_NewAssets ntext NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions ntext NULL , O_Total money NULL , O_VisualReference smallint NULL , O_Web smallint NULL , O_Width int NULL , old_parent nvarchar (250) NULL , old_parent_foldername nvarchar (250) NULL , Old_Total money NULL , prnt nvarchar (250) NULL , prntFolderName nvarchar (250) NULL , ProductionStartDate datetime NULL , Requestor nvarchar (250) NULL , result nvarchar (250) NULL , resultCount int NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , tmpPrnt nvarchar (250) NULL , txtUrgent nvarchar (250) NULL , type nvarchar (250) NULL , urgent smallint NULL , WO_initiator nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , newPhotography smallint NULL , AO_Other smallint NULL , AO_Unknown smallint NULL , AO_AssetName nvarchar (250) NULL , AO_EAStatus nvarchar (250) NULL , AO_FileName nvarchar (250) NULL , NAO_AssetName nvarchar (250) NULL , NAO_EAStatus nvarchar (250) NULL , NAO_FileName nvarchar (250) NULL , NAO_Other smallint NULL , NAO_Unknown smallint NULL , O_Other smallint NULL , O_Unknown smallint NULL , Deliverables nvarchar (250) NULL , Quantity int NULL

Projects (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (400) NOT NULL

Requestors (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (250) NOT NULL , Office varchar (150) NULL , Phone varchar (50) NULL , eName varchar (150) NULL

Work_Order (

EFOLDERID nvarchar (31) NOT NULL , Account nvarchar (250) NULL , AO_AccNum nvarchar (250) NULL , AO_Artist nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Complete_Total money NULL , AO_DateNeeded datetime NULL , AO_Deliverables nvarchar (250) NULL , AO_Description ntext NULL , AO_DexNum nvarchar (250) NULL , AO_Dimensions nvarchar (250) NULL , AO_Duty1 nvarchar (250) NULL , AO_Duty2 nvarchar (250) NULL , AO_ExistingAssets nvarchar (250) NULL , AO_Height int NULL , AO_Id nvarchar (250) NULL , AO_Lecture smallint NULL , AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets nvarchar (250) NULL , AO_NonNGAObj smallint NULL , AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , AO_Staff1 nvarchar (250) NULL , AO_Staff2 nvarchar (250) NULL , AO_Status nvarchar (250) NULL , AO_Status1 nvarchar (250) NULL , AO_Status2 nvarchar (250) NULL , AO_Studio1 nvarchar (250) NULL , AO_Studio2 nvarchar (250) NULL , AO_Title nvarchar (250) NULL , AO_Total money NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , BriefDescription ntext NULL , checkDeliverables smallint NULL , Code nvarchar (250) NULL , Comments ntext NULL , CostAdjustments float NULL , DateBilled datetime NULL , DateDelivered datetime NULL , DateNeeded datetime NULL , DateSubmitted datetime NULL , DeliverablesAmount int NULL , DeliveryMedia nvarchar (250) NULL , DivisionCenter nvarchar (250) NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EmailAddress nvarchar (250) NULL , EmailMessage ntext NULL , EmailSubject nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , EP_Complete_Total money NULL , EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType nvarchar (250) NULL , EP_ExistingAssets nvarchar (250) NULL , EP_Fax nvarchar (250) NULL , EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location nvarchar (250) NULL , EP_NewAssets nvarchar (250) NULL , EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , EP_PhotographicCost money NULL , EP_Prepress smallint NULL , EP_ProductionJournal ntext NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Total money NULL , EP_VisualReference smallint NULL , EP_Web smallint NULL , FundSource nvarchar (250) NULL , initStatus nvarchar (250) NULL , Instructions ntext NULL , LineItems nvarchar (250) NULL , mediaPrice money NULL , NAO_ArtTreatment smallint NULL , NAO_Complete_Total money NULL , NAO_DateNeeded datetime NULL , NAO_Deliverables nvarchar (250) NULL , NAO_Description ntext NULL , NAO_Dimensions nvarchar (250) NULL , NAO_ExistingAssets nvarchar (250) NULL , NAO_Height int NULL , NAO_ID nvarchar (250) NULL , NAO_Lecture smallint NULL , NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets nvarchar (250) NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost money NULL , NAO_Prepress smallint NULL , NAO_ProductionJournal ntext NULL , NAO_Quantity int NULL , NAO_Source nvarchar (250) NULL , NAO_SpecialDeliveryInstructions ntext NULL , NAO_Total money NULL , NAO_VisualReference smallint NULL , NAO_Web smallint NULL , NAO_Width int NULL , nextStage nvarchar (250) NULL , O_ArtTreatment smallint NULL , O_Complete_Total money NULL , O_DateNeeded datetime NULL , O_Deliverables nvarchar (250) NULL , O_Description ntext NULL , O_ExistingAssets nvarchar (250) NULL , O_Height int NULL , O_Lecture smallint NULL , O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , O_NewAssets nvarchar (250) NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions ntext NULL , O_Total money NULL , O_VisualReference smallint NULL , O_Web smallint NULL , O_Width int NULL , OrderCloseDate datetime NULL , OrderStatus nvarchar (250) NULL , OrderTotal float NULL , p_Total money NULL , prntFolderName nvarchar (250) NULL , ProductionJournal ntext NULL , ProjID nvarchar (250) NULL , ProjNum nvarchar (250) NULL , PurchasingCategories nvarchar (250) NULL , RecipientName nvarchar (250) NULL , RecipientOffice nvarchar (250) NULL , RecipientPhone nvarchar (250) NULL , RequestorName nvarchar (250) NULL , RequestorOffice nvarchar (250) NULL , RequestorPhone nvarchar (250) NULL , Result nvarchar (250) NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , Temp1 nvarchar (250) NULL , tempUrgent smallint NULL , test nvarchar (250) NULL , Type nvarchar (250) NULL , urgent smallint NULL , UserName nvarchar (250) NULL , UserType nvarchar (250) NULL , VenueCode nvarchar (250) NULL , VisualServiceContractNum nvarchar (250) NULL , WO_initiator nvarchar (250) NULL , WOTotal float NULL , OfficePhone nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , AO_Other smallint NULL , AO_Unknown smallint NULL , FiscalYear nvarchar (250) NULL , NAO_Other smallint NULL , NAO_Unknown smallint NULL , O_Other smallint NULL , O_Unknown smallint NULL , PayerDepartment nvarchar (250) NULL , USSGL nvarchar (250) NULL , DateDeliveryFinalized datetime NULL , DateSentPicked datetime NULL , countChildren int NULL

The Metastorm Data Model is Generated to Support the Workflow Diagrams.

It is not a logical Representation of Data Business Rules

Workflow Diagramming is Where Metastorm Excels

Page 54: Creating an RAD Authoratative Data Environment

66

IRIS Data Model

eEvent (

eFolderID nvarchar (31) NOT NULL , eEventID int NOT NULL , eVersion int NULL , ePriority smallint NULL , eEventTime datetime NULL , eEntryTime datetime NULL , eDeadline datetime NULL , eMapName nvarchar (31) NULL , eFromStage nvarchar (31) NULL , eActionName nvarchar (31) NULL , eToStage nvarchar (31) NULL , eUserName nvarchar (100) NULL , eFlagName nvarchar (63) NULL , eFlagFolder nvarchar (31) NULL , eAlertMessage nvarchar (250) NULL , eNotes ntext NULL

eFolder (

eFolderID nvarchar (31) NOT NULL , eParent nvarchar (31) NULL , eFolderName nvarchar (31) NULL , eStageName nvarchar (31) NULL , eMapName nvarchar (31) NULL , eServerName nvarchar (31) NULL , eCategory nvarchar (31) NULL , eOriginator nvarchar (100) NULL , eSubject nvarchar (250) NULL , eArchived smallint NULL , ePriority smallint NULL , eActionCount int NULL , eCreationTime datetime NULL , eEntryTime datetime NULL , eUpdated datetime NULL , eDeadline datetime NULL , eActionTime datetime NULL , eActionName nvarchar (31) NULL , eActionUser nvarchar (100) NULL , eFragmentStack ntext NULL

Deliverables (

Id int IDENTITY (1, 1) NOT NULL , Name nvarchar (250) NOT NULL , Cost int NOT NULL

Line_Items (

EFOLDERID nvarchar (31) NOT NULL , AO_AccNum nvarchar (250) NULL , AO_Artist nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Complete_Total money NULL , AO_DateNeeded datetime NULL , AO_Deliverables nvarchar (250) NULL , AO_Description ntext NULL , AO_DexNum nvarchar (250) NULL , AO_Dimensions nvarchar (250) NULL , AO_ExistingAssets ntext NULL , AO_Height int NULL , AO_Id nvarchar (250) NULL , AO_Info ntext NULL , AO_Lecture smallint NULL , AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets ntext NULL , AO_NonNGAObj smallint NULL , AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , AO_Status nvarchar (250) NULL , AO_Title nvarchar (250) NULL , AO_Total money NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , checkDeliverables smallint NULL , DeliverablesAmount int NULL , destinationFolderId nvarchar (250) NULL , destinationFolderName nvarchar (250) NULL , Difference_Total money NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , EP_Complete_Total money NULL , EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType nvarchar (250) NULL , EP_ExistingAssets ntext NULL , EP_Fax nvarchar (250) NULL , EP_Info ntext NULL , EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location nvarchar (250) NULL , EP_NewAssets ntext NULL , EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , EP_PhotographicCost money NULL , EP_Prepress smallint NULL , EP_ProductionJournal ntext NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Total money NULL , EP_VisualReference smallint NULL , EP_Web smallint NULL , Line_Item_Total money NULL , memAssignments ntext NULL , msg nvarchar (250) NULL , NAO_ArtTreatment smallint NULL , NAO_Complete_Total money NULL , NAO_DateNeeded datetime NULL , NAO_Deliverables nvarchar (250) NULL , NAO_Description ntext NULL , NAO_Dimensions nvarchar (250) NULL , NAO_ExistingAssets ntext NULL , NAO_Height int NULL , NAO_ID nvarchar (250) NULL , NAO_Info ntext NULL , NAO_Lecture smallint NULL , NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets ntext NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost money NULL , NAO_Prepress smallint NULL , NAO_ProductionJournal ntext NULL , NAO_Quantity int NULL , NAO_Source nvarchar (250) NULL , NAO_SpecialDeliveryInstructions ntext NULL , NAO_Total money NULL , NAO_VisualReference smallint NULL , NAO_Web smallint NULL , NAO_Width int NULL , nextStage nvarchar (250) NULL , O_ArtTreatment smallint NULL , O_Complete_Total money NULL , O_DateNeeded datetime NULL , O_Deliverables nvarchar (250) NULL , O_Description ntext NULL , O_ExistingAssets ntext NULL , O_Height int NULL , O_Info ntext NULL , O_Lecture smallint NULL , O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , O_NewAssets ntext NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions ntext NULL , O_Total money NULL , O_VisualReference smallint NULL , O_Web smallint NULL , O_Width int NULL , old_parent nvarchar (250) NULL , old_parent_foldername nvarchar (250) NULL , Old_Total money NULL , prnt nvarchar (250) NULL , prntFolderName nvarchar (250) NULL , ProductionStartDate datetime NULL , Requestor nvarchar (250) NULL , result nvarchar (250) NULL , resultCount int NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , tmpPrnt nvarchar (250) NULL , txtUrgent nvarchar (250) NULL , type nvarchar (250) NULL , urgent smallint NULL , WO_initiator nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , newPhotography smallint NULL , AO_Other smallint NULL , AO_Unknown smallint NULL , AO_AssetName nvarchar (250) NULL , AO_EAStatus nvarchar (250) NULL , AO_FileName nvarchar (250) NULL , NAO_AssetName nvarchar (250) NULL , NAO_EAStatus nvarchar (250) NULL , NAO_FileName nvarchar (250) NULL , NAO_Other smallint NULL , NAO_Unknown smallint NULL , O_Other smallint NULL , O_Unknown smallint NULL , Deliverables nvarchar (250) NULL , Quantity int NULL

Projects (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (400) NOT NULL

Requestors (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (250) NOT NULL , Office varchar (150) NULL , Phone varchar (50) NULL , eName varchar (150) NULL

Work_Order (

EFOLDERID nvarchar (31) NOT NULL , Account nvarchar (250) NULL , AO_AccNum nvarchar (250) NULL , AO_Artist nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Complete_Total money NULL , AO_DateNeeded datetime NULL , AO_Deliverables nvarchar (250) NULL , AO_Description ntext NULL , AO_DexNum nvarchar (250) NULL , AO_Dimensions nvarchar (250) NULL , AO_Duty1 nvarchar (250) NULL , AO_Duty2 nvarchar (250) NULL , AO_ExistingAssets nvarchar (250) NULL , AO_Height int NULL , AO_Id nvarchar (250) NULL , AO_Lecture smallint NULL , AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets nvarchar (250) NULL , AO_NonNGAObj smallint NULL , AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , AO_Staff1 nvarchar (250) NULL , AO_Staff2 nvarchar (250) NULL , AO_Status nvarchar (250) NULL , AO_Status1 nvarchar (250) NULL , AO_Status2 nvarchar (250) NULL , AO_Studio1 nvarchar (250) NULL , AO_Studio2 nvarchar (250) NULL , AO_Title nvarchar (250) NULL , AO_Total money NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , BriefDescription ntext NULL , checkDeliverables smallint NULL , Code nvarchar (250) NULL , Comments ntext NULL , CostAdjustments float NULL , DateBilled datetime NULL , DateDelivered datetime NULL , DateNeeded datetime NULL , DateSubmitted datetime NULL , DeliverablesAmount int NULL , DeliveryMedia nvarchar (250) NULL , DivisionCenter nvarchar (250) NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EmailAddress nvarchar (250) NULL , EmailMessage ntext NULL , EmailSubject nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , EP_Complete_Total money NULL , EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType nvarchar (250) NULL , EP_ExistingAssets nvarchar (250) NULL , EP_Fax nvarchar (250) NULL , EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location nvarchar (250) NULL , EP_NewAssets nvarchar (250) NULL , EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , EP_PhotographicCost money NULL , EP_Prepress smallint NULL , EP_ProductionJournal ntext NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Total money NULL , EP_VisualReference smallint NULL , EP_Web smallint NULL , FundSource nvarchar (250) NULL , initStatus nvarchar (250) NULL , Instructions ntext NULL , LineItems nvarchar (250) NULL , mediaPrice money NULL , NAO_ArtTreatment smallint NULL , NAO_Complete_Total money NULL , NAO_DateNeeded datetime NULL , NAO_Deliverables nvarchar (250) NULL , NAO_Description ntext NULL , NAO_Dimensions nvarchar (250) NULL , NAO_ExistingAssets nvarchar (250) NULL , NAO_Height int NULL , NAO_ID nvarchar (250) NULL , NAO_Lecture smallint NULL , NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets nvarchar (250) NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost money NULL , NAO_Prepress smallint NULL , NAO_ProductionJournal ntext NULL , NAO_Quantity int NULL , NAO_Source nvarchar (250) NULL , NAO_SpecialDeliveryInstructions ntext NULL , NAO_Total money NULL , NAO_VisualReference smallint NULL , NAO_Web smallint NULL , NAO_Width int NULL , nextStage nvarchar (250) NULL , O_ArtTreatment smallint NULL , O_Complete_Total money NULL , O_DateNeeded datetime NULL , O_Deliverables nvarchar (250) NULL , O_Description ntext NULL , O_ExistingAssets nvarchar (250) NULL , O_Height int NULL , O_Lecture smallint NULL , O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , O_NewAssets nvarchar (250) NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions ntext NULL , O_Total money NULL , O_VisualReference smallint NULL , O_Web smallint NULL , O_Width int NULL , OrderCloseDate datetime NULL , OrderStatus nvarchar (250) NULL , OrderTotal float NULL , p_Total money NULL , prntFolderName nvarchar (250) NULL , ProductionJournal ntext NULL , ProjID nvarchar (250) NULL , ProjNum nvarchar (250) NULL , PurchasingCategories nvarchar (250) NULL , RecipientName nvarchar (250) NULL , RecipientOffice nvarchar (250) NULL , RecipientPhone nvarchar (250) NULL , RequestorName nvarchar (250) NULL , RequestorOffice nvarchar (250) NULL , RequestorPhone nvarchar (250) NULL , Result nvarchar (250) NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , Temp1 nvarchar (250) NULL , tempUrgent smallint NULL , test nvarchar (250) NULL , Type nvarchar (250) NULL , urgent smallint NULL , UserName nvarchar (250) NULL , UserType nvarchar (250) NULL , VenueCode nvarchar (250) NULL , VisualServiceContractNum nvarchar (250) NULL , WO_initiator nvarchar (250) NULL , WOTotal float NULL , OfficePhone nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , AO_Other smallint NULL , AO_Unknown smallint NULL , FiscalYear nvarchar (250) NULL , NAO_Other smallint NULL , NAO_Unknown smallint NULL , O_Other smallint NULL , O_Unknown smallint NULL , PayerDepartment nvarchar (250) NULL , USSGL nvarchar (250) NULL , DateDeliveryFinalized datetime NULL , DateSentPicked datetime NULL , countChildren int NULL

Database Enforce integrityNot used (Possible?)

Page 55: Creating an RAD Authoratative Data Environment

67

IRIS Data Model

Events

Where type =

“Event”

eEvent (

eFolderID nvarchar (31) NOT NULL , eEventID int NOT NULL , eVersion int NULL , ePriority smallint NULL , eEventTime datetime NULL , eEntryTime datetime NULL , eDeadline datetime NULL , eMapName nvarchar (31) NULL , eFromStage nvarchar (31) NULL , eActionName nvarchar (31) NULL , eToStage nvarchar (31) NULL , eUserName nvarchar (100) NULL , eFlagName nvarchar (63) NULL , eFlagFolder nvarchar (31) NULL , eAlertMessage nvarchar (250) NULL , eNotes ntext NULL

eFolder (

eFolderID nvarchar (31) NOT NULL , eParent nvarchar (31) NULL , eFolderName nvarchar (31) NULL , eStageName nvarchar (31) NULL , eMapName nvarchar (31) NULL , eServerName nvarchar (31) NULL , eCategory nvarchar (31) NULL , eOriginator nvarchar (100) NULL , eSubject nvarchar (250) NULL , eArchived smallint NULL , ePriority smallint NULL , eActionCount int NULL , eCreationTime datetime NULL , eEntryTime datetime NULL , eUpdated datetime NULL , eDeadline datetime NULL , eActionTime datetime NULL , eActionName nvarchar (31) NULL , eActionUser nvarchar (100) NULL , eFragmentStack ntext NULL

Deliverables (

Id int IDENTITY (1, 1) NOT NULL , Name nvarchar (250) NOT NULL , Cost int NOT NULL

Line_Items (

EFOLDERID nvarchar (31) NOT NULL , AO_AccNum nvarchar (250) NULL , AO_Artist nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Complete_Total money NULL , AO_DateNeeded datetime NULL , AO_Deliverables nvarchar (250) NULL , AO_Description ntext NULL , AO_DexNum nvarchar (250) NULL , AO_Dimensions nvarchar (250) NULL , AO_ExistingAssets ntext NULL , AO_Height int NULL , AO_Id nvarchar (250) NULL , AO_Info ntext NULL , AO_Lecture smallint NULL , AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets ntext NULL , AO_NonNGAObj smallint NULL , AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , AO_Status nvarchar (250) NULL , AO_Title nvarchar (250) NULL , AO_Total money NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , checkDeliverables smallint NULL , DeliverablesAmount int NULL , destinationFolderId nvarchar (250) NULL , destinationFolderName nvarchar (250) NULL , Difference_Total money NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , EP_Complete_Total money NULL , EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType nvarchar (250) NULL , EP_ExistingAssets ntext NULL , EP_Fax nvarchar (250) NULL , EP_Info ntext NULL , EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location nvarchar (250) NULL , EP_NewAssets ntext NULL , EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , EP_PhotographicCost money NULL , EP_Prepress smallint NULL , EP_ProductionJournal ntext NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Total money NULL , EP_VisualReference smallint NULL , EP_Web smallint NULL , Line_Item_Total money NULL , memAssignments ntext NULL , msg nvarchar (250) NULL , NAO_ArtTreatment smallint NULL , NAO_Complete_Total money NULL , NAO_DateNeeded datetime NULL , NAO_Deliverables nvarchar (250) NULL , NAO_Description ntext NULL , NAO_Dimensions nvarchar (250) NULL , NAO_ExistingAssets ntext NULL , NAO_Height int NULL , NAO_ID nvarchar (250) NULL , NAO_Info ntext NULL , NAO_Lecture smallint NULL , NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets ntext NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost money NULL , NAO_Prepress smallint NULL , NAO_ProductionJournal ntext NULL , NAO_Quantity int NULL , NAO_Source nvarchar (250) NULL , NAO_SpecialDeliveryInstructions ntext NULL , NAO_Total money NULL , NAO_VisualReference smallint NULL , NAO_Web smallint NULL , NAO_Width int NULL , nextStage nvarchar (250) NULL , O_ArtTreatment smallint NULL , O_Complete_Total money NULL , O_DateNeeded datetime NULL , O_Deliverables nvarchar (250) NULL , O_Description ntext NULL , O_ExistingAssets ntext NULL , O_Height int NULL , O_Info ntext NULL , O_Lecture smallint NULL , O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , O_NewAssets ntext NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions ntext NULL , O_Total money NULL , O_VisualReference smallint NULL , O_Web smallint NULL , O_Width int NULL , old_parent nvarchar (250) NULL , old_parent_foldername nvarchar (250) NULL , Old_Total money NULL , prnt nvarchar (250) NULL , prntFolderName nvarchar (250) NULL , ProductionStartDate datetime NULL , Requestor nvarchar (250) NULL , result nvarchar (250) NULL , resultCount int NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , tmpPrnt nvarchar (250) NULL , txtUrgent nvarchar (250) NULL , type nvarchar (250) NULL , urgent smallint NULL , WO_initiator nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , newPhotography smallint NULL , AO_Other smallint NULL , AO_Unknown smallint NULL , AO_AssetName nvarchar (250) NULL , AO_EAStatus nvarchar (250) NULL , AO_FileName nvarchar (250) NULL , NAO_AssetName nvarchar (250) NULL , NAO_EAStatus nvarchar (250) NULL , NAO_FileName nvarchar (250) NULL , NAO_Other smallint NULL , NAO_Unknown smallint NULL , O_Other smallint NULL , O_Unknown smallint NULL , Deliverables nvarchar (250) NULL , Quantity int NULL

Projects (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (400) NOT NULL

Requestors (

Id int IDENTITY (1, 1) NOT NULL , Name varchar (250) NOT NULL , Office varchar (150) NULL , Phone varchar (50) NULL , eName varchar (150) NULL

Work_Order (

EFOLDERID nvarchar (31) NOT NULL , Account nvarchar (250) NULL , Assignee1 nvarchar (250) NULL , Assignee2 nvarchar (250) NULL , BriefDescription ntext NULL , checkDeliverables smallint NULL , Code nvarchar (250) NULL , Comments ntext NULL , CostAdjustments float NULL , DateBilled datetime NULL , DateDelivered datetime NULL , DateNeeded datetime NULL , DateSubmitted datetime NULL , DeliverablesAmount int NULL , DeliveryMedia nvarchar (250) NULL , DivisionCenter nvarchar (250) NULL , Duty1 nvarchar (250) NULL , Duty2 nvarchar (250) NULL , EmailAddress nvarchar (250) NULL , EmailMessage ntext NULL , EmailSubject nvarchar (250) NULL , FundSource nvarchar (250) NULL , initStatus nvarchar (250) NULL , Instructions ntext NULL , LineItems nvarchar (250) NULL , mediaPrice money NULL , nextStage nvarchar (250) NULL , OrderCloseDate datetime NULL , OrderStatus nvarchar (250) NULL , OrderTotal float NULL , p_Total money NULL , prntFolderName nvarchar (250) NULL , ProductionJournal ntext NULL , ProjID nvarchar (250) NULL , ProjNum nvarchar (250) NULL , PurchasingCategories nvarchar (250) NULL , RecipientName nvarchar (250) NULL , RecipientOffice nvarchar (250) NULL , RecipientPhone nvarchar (250) NULL , RequestorName nvarchar (250) NULL , RequestorOffice nvarchar (250) NULL , RequestorPhone nvarchar (250) NULL , Result nvarchar (250) NULL , Staff1 nvarchar (250) NULL , Staff2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status1 nvarchar (250) NULL , Status2 nvarchar (250) NULL , Studio1 nvarchar (250) NULL , Studio2 nvarchar (250) NULL , Temp1 nvarchar (250) NULL , tempUrgent smallint NULL , test nvarchar (250) NULL , Type nvarchar (250) NULL , urgent smallint NULL , UserName nvarchar (250) NULL , UserType nvarchar (250) NULL , VenueCode nvarchar (250) NULL , VisualServiceContractNum nvarchar (250) NULL , WO_initiator nvarchar (250) NULL , WOTotal float NULL , OfficePhone nvarchar (250) NULL , WorkOrderApproved nvarchar (250) NULL , FiscalYear nvarchar (250) NULL , PayerDepartment nvarchar (250) NULL , USSGL nvarchar (250) NULL , DateDeliveryFinalized datetime NULL , DateSentPicked datetime NULL , countChildren int NULL

Art Object

Where type =

“Art”

Non Art Object

Where type =

“Non Art”

O = Other

Where type =

“Other”

Art Object

Info

Event info

Event info

NonArt

Other

IRISFolder ID

ArtObject Event

NonArt Other

Other ignore

TempScreenData

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

Art Object

Info

Event info ignore

ignoreignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore

ignore ignore

ignore

ignore

ignore

ignore

ignore

Page 56: Creating an RAD Authoratative Data Environment

68

Why Normalize

• 1. To free the collection from undesirable inserts, update and deletion dependencies;

• 2. To reduce the need for restructuring as new types of data are introduced

• 3. To be more informative to users; • 4. To make simplify query statistics

E.F. Codd, "Further Normalization of the Data Base Relational Model"

Page 57: Creating an RAD Authoratative Data Environment

69

Normalization (Date & Codd)

First Normal Form: Create separate tables for each group of related data and identify each row with a unique column or set of columns (the primary key). I.e. Use Codes not Values

Second Normal Form: Remove subsets of data that apply to multiple rows of a table and place them in separate tables and create relationships between these new tables and their predecessors through the use of foreign keys. I.e. Store one “logical” table per “Table”

Third Normal Form:Remove columns that are not dependent upon the primary key. I.e. Do not store data that is not related to key

Page 58: Creating an RAD Authoratative Data Environment

70

Metastorm Actual Table (Imaging_Services_LI)

Logical Header Table info (2NF)

Logical Art Table Info (2NF)

Work OrderLines

LogicalNon ArtData (2NF)

Miscellaneous Data (Not Shown in this sample)

Values Not Codes(1NF issue)

Logical Event Line

Page 59: Creating an RAD Authoratative Data Environment

71

Metastorm

Note: These are problems with the Metastorm architecture, The Metatstorm developer needs to work within these confines.

Key Take Away:

MetaStorm is very good for workflow, BUT, not it is not architected well for data management

Page 60: Creating an RAD Authoratative Data Environment

72

Normalizing IRIS• Complex set of views created to make

IRIS “Look” as if it was Normalized • Stored in Separate Database • Cannot be used for update • Performance issues make these not

feasible with complex joins

Deliverables

Projects

Requestors

Workflow events

For header

Workflow events

for lines

Lines with

common info

Lines for other

request

Lines for nonart request

Lines for Event

request

Lines for Art

request

Headers for

Imaging Request

Page 61: Creating an RAD Authoratative Data Environment

73

Documentation (DIR)

• Project Folder – \\nga\group\T\TDP\Projects\DIR- DIV Images Request System

• Documents – Converting Metastorm Schema in a Reportable ERD model (DIR)-

20070919a 1 1.doc

Page 62: Creating an RAD Authoratative Data Environment

74

SQL Server Database

Web Browser

Architecture

PHPRunner Application Server (Web Server)

`

Page 63: Creating an RAD Authoratative Data Environment

76

Screen Customization

Very hard to say “no” since, it so easy … However,I really demand a very good reason, and prefer

To avoid this . . .

Lots of this, can cause serious maintenance issues

Override eventsOverride events can be added in define locations

This little block of code says 1. Prompt user message to load approvals 2. If selected, Call database routine to do it

The goal is to keep the maximum amount of code in the database, in case we want to a new frond end .Making it “upgrade” or “migration” proof

Page 64: Creating an RAD Authoratative Data Environment

77

Business Modeling through Data Model

• Define Relationships Between Data

Parent

Eye Color: Bwn

Child

PrimaryHome

ChildChild

Page 65: Creating an RAD Authoratative Data Environment

78

SQL Server Database

Web Browser

Architecture

PHPRunner Application Server (Web Server)

`

Page 66: Creating an RAD Authoratative Data Environment

79

DCLPA (July 2008)The current Filemaker database on

the MAC is having lots of problems, I need help

Lets help them

This sounds like an opportunity to test out the

ideas I have to fix the Gallery's Data Problems. Lets do it

O.K. Sounds Feasible

This will help Conservation figure out how we do things… Were on board!

Greg and Art, Can you Help us

Page 67: Creating an RAD Authoratative Data Environment

80

DCLPA (July 2008)

I need a database, to share education programs and I have a MAC

Will you change to a PC, then we’ll give you Microsoft Access

Hmm, We really cannot ignore the requirement for MACs. For that matter,

expense to install is so high, a web solution would save the gallery the most money.. The

Web should be a requirement.

In that case, “Nevermind”

Page 68: Creating an RAD Authoratative Data Environment

81

DCL-PA Database

• Existing Filemaker Database deemed inappropriate

• TDP brought in to DCL-PA to address storage of filemaker application issues

• TDP was also simultaneously undertaking an Data Quality (DQ) initiative to connect system to authoritative sources.

• DCL-PA was in a good position to leverage both initiatives

• DCL-PA was adopted as DQ Candidate

Page 69: Creating an RAD Authoratative Data Environment

83

Data Model Iterations

Type of Work

Type of Work Name

Major?

Type_of_work_ind

Event Group

Conservators

Request

Request Events

Request_id

Event_id

Started_on

Completed_on

Conservator_id

Description

BT_Image_Workorder_line_id

DT_Image_Workorder_line_id

AT_Image_Workorder_line_id

Extensis_Image_Pointer

Request_id

Request_event_status_id

Request_status_id

Object_id

Description

Conservator_id

Gallery_id (Badge number)

Name

Analog Image Locations

Name

Analog_Image_location_id

Events

Name

Event_id

Event_Group_id

Event_Group_id

NameRequestEvent_id

Analog_Image_location_id

TMS (External)

Object_id

IRIS (External)

WorkOrder_Line_ID

Request Event Statuses

Name

Request_event_status_id

Event_Group_id

Employees (External)

Gallery_id

Request Status Request_status_id

Name

Request_date

Requestor_id

Requestors Requestor_id

Gallery_id (Badge number)

NameType_of_work_ind

Type_of_work_ind

CommentDCL Paper Portfolio Images

Extensis_Image_Pointer

Type of Work

Event Group

Conservators

Request

Request Events

Request_id

Event_id

Started_on_Datetime

Completed_on_Datetime

Conservator_id

Description

BT_Image_Workorder_line_id

DT_Image_Workorder_line_id

AT_Image_Workorder_line_id

Comment

Request_id

Request_event_status_id

Request_status_id

Object_id

Short Description

Conservator_id

Gallery_id (Badge number)

Name

Analog Image Locations Analog_Image_location_id

Events

Event Name

Event_id

Event_Group_id

Event_Group_id

Event Group NameRequestEvent_id

Analog_Image_location_id

TMS (External)

Object_id

IRIS (External)

WorkOrder_Line_ID

Request Event Statuses

Status Name

Request_event_status_id

Event_Group_id

Employees (External)

Gallery_id

Request Status

Request_status_id

Name

Request_datetime

Requestor_id

Requestors Requestor_id

Gallery_id (Badge number)

Request Status Name

ClassificationAccession #ArtistTitleDate/PeriodMediumPaper/Support(s)Mark(s)Inscription(s)DimensionsDonorCollectionLoan Dates

Requestor NamePhone Number

Requestor Name

ClassificationAccession #ArtistTitleDate/PeriodMediumPaper/Support(s)Mark(s)Inscription(s)DimensionsDonorCollectionLoan Dates

Long Description

Event Name

Analog Location Name

Status Name

Name

Analog Location NameGallery Name

Gallery Name

Gallery Name

Event Group Name

Type_of_work_ind

Type of Work Name

Major?

Type_of_work_ind Type of Work Name

Type_of_work_ind

Location Code – translated to general code

Location Code – translated to general code

DCL Paper Portfolio Images Extensis_Image_Pointer

Extensis_Image_Pointer

AnalogImageLocationsAnalogImageLocation_id

Name

LastUpdateUserName

LastUpdateTime

RequestReportsRequestReport_id

Request_id

ReportType_id

StartedDate

EndedDate

Conservator_id

Description

User_id

RequestReportStatus_id

AnalogImageLocation_id

IncludeInFinalObjectReport

Report

LastUpdateUserName

LastUpdateTime RequestReportStatusesRequestReportStatus_id

Name

DropDown_Display_Order

ReportType_id

LastUpdateUserName

RequestStatusesRequestStatus_id

Name

DropDown_Display_Order

LastUpdateUserName

LastUpdateTime

UsersUser_id

Username

Password

email

LastUpdateUserN...

LastUpdateTime

WorkOrderTypesWorkOrderType_id

Name

LastUpdateUserName

LastUpdateTime

RequestReportWorkOrdersRequestReport_WorkOrder_id

RequestReport_id

WorkOrder_Line

WorkOrderType_id

LastUpdateUserName

LastUpdateTime

RequestsRequest_id

TMSObject_id

RequestReason_id

RequestType_id

RequestStatus_id

Requestor_id

Comments

QuickNotes

RequestDate

LastUpdateUserName

LastUpdateTime

Exhibition_id

ExhibitionActivity_id

RequestorsRequestor_id

Gallery_id

Comments

isInEmployeeDirectory

LocalVersionOfName

Classification_id

LastUpdateUserName

LastUpdateTime

test_id

---> TMS

---> ASD. Employee Table

---> IRIS Line

----> ASD Employee

ReportTypesReportType_id

ReportTypeGroup_id

Name

LastUpdateUserName

LastUpdateTime

ReportTypeGroupsReportTypeGrou...

Name

isTechnicalAnalysis

isDetailedExam

ConservatorsConservator_id

Gallery_id

Comments

isInEmployeeDirectory

LocalVersionOfName

LastUpdateUserName

LastUpdateTime

RequestReportDACsRequestReport_DAC_id

RequestReport_id

DAC_Record_id

Comments

LastUpdateUserName

LastUpdateTime

XRFStatusesXRFStatus_id

Name

LastUpdateUserName

LastUpdateTime

RequestTypesRequestType_id

Name

isMajor

isMinor

LastUpdateUserName

LastUpdateTime

isQuick

isBulk

ApprovingUsersApprovingUser_id

User_id

Name

LastUpdateUserName

LastUpdateTimeApprovals

Approval_id

Name

isApproved

LastUpdateUserName

LastUpdateTime

ApprovingRolesApprovingRole_id

Name

LastUpdateUserName

LastUpdateTime

ApprovingUserRolesApprovingUserRole_id

ApprovingUser_id

ApprovingRole_id

Comments

LastUpdateUserName

LastUpdateTime

RequestApprovingRolesRequestApprovingRole_id

Request_id

ApprovingRole_id

ApprovingUser_id

Approval_id

Comments

LastUpdateUserName

LastUpdateTime

RequestTypeApprovingRolesRequestTypeApprovingRole_id

RequestType_id

ApprovingRole_id

Comments

LastUpdateUserName

LastUpdateTime

---> Portfolio (DCL-PA)

Refined the data model as we to envision how use cases would work with it !

Page 70: Creating an RAD Authoratative Data Environment

84

RequestReports

RequestReport_id

Request_id

ReportType_id

StartedDate

EndedDate

Conservator_id

Description

User_id

RequestReportStatus_id

AnalogImageLocation_id

IncludeInFinalObjectReport

Report

LastUpdateUserName

LastUpdateTime

RequestTMSObject_id

Attachment

Image

RequestNonTMSObject_id

Column Name

RequestReportDACs

RequestReport_DAC_id

RequestReport_id

DAC_Record_id

Comment

LastUpdateUserName

LastUpdateTime

Column NameRequestReportAttachments

RequestReportAttachment_id

RequestReport_id

FileName

Comment

Column Name

RequestNonTMSObjects

RequestNonTMSObject_id

Name

NGAContactGallery_id

Request_id

Column NameRequestBulkClassificationCounts

RequestBulkClassificationCount_id

Request_id

CountForClassification

Classification_id

isNGA

Comment

Column Name

RequestApprovingRoles

RequestApprovingRole_id

Request_id

ApprovingRole_id

ApprovingUser_id

Approval_id

Comment

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportWorkOrders

RequestReport_WorkOrder_id

RequestReport_id

WorkOrder_Line

WorkOrderType_id

LastUpdateUserName

LastUpdateTime

Column Name

RequestReportTechnicalInfos

RequestReport_id

TechnicalNotes

BetaRadiograph

XRayFluorescenceSpectroscopy

InfraredSpectroscopy

MicroFadometer

FourierTransformInfraredSpectroscopy

FluorescenceSpectroscopy

ColorSpectroscopy

None

Other

OtherDescription

Column Name

RequestTMSObjects

RequestTMSObject_id

Request_id

TMSObject_id

EntryShortcutAjax_TMSObject_id

Column Name

Requests

Request_id

EntryShortcutSelect_MajorTMSObj...

RequestReason_id

RequestType_id

RequestStatus_id

Requestor_id

Comment

QuickNotes

RequestDate

LastUpdateUserName

LastUpdateTime

Exhibition_id

ExhibitionActivity_id

ExhibitionOtherActivity_id

EntryShortcutAjax_MajorTMSObje...

Loan_id

LoanActivity_id

Column NameSimplified Data Model

Page 71: Creating an RAD Authoratative Data Environment

85

Request

Non TMS Object Request

Reports

Tallies (Bulk Counts)

Approvals

Report related Report

Tech Info

Report related IRIS

Work Orders

Report related Portfolio

Images (DAC)

Report related attachements

TMS Object

Simplified Data ModelRequest to fix paper

Request id: 1Date: 1/1/90

3 XX Y ApprovedX Approved

Deputy Approved10 Papers

10 Prints

Examination

Tech Notes For exam

Work Order 10Work Order 10

Image ID: 16Image ID: 16

Excel SpreadsheetExcel

Spreadsheet

NonNGA Item 3NonNGA Item 5

NGA Item 2NGA Item 1

Treatment

Tech Notes For exam Work Order 10Work Order 23

Image ID: 16Image ID: 14 PDF

Page 72: Creating an RAD Authoratative Data Environment

86

Request

Non TMS Object Request

Reports

Tallies (Bulk Counts)

Approvals

Report related Report

Tech Info

Report related IRIS

Work Orders

Report related Portfolio

Images (DAC)

Report related attachements

TMS Object

Request

Request Reports

Tallies (Bulk Counts)

Report related Report

Tech Info

Report related IRIS

Work Orders

Report related Portfolio

Images (DAC)

Report related attachements

TMS Object /

NonTMS Object

Recent Changes

Page 73: Creating an RAD Authoratative Data Environment

87

SQL Server Database

Web Browser

Architecture

PHPRunner Application Server (Web Server)

`

Page 74: Creating an RAD Authoratative Data Environment

88

Rapid application developmentFrom Wikipedia

• Rapid application development is a software development methodology, which involves iterative development and the construction of prototypes. It is a merger of various structured techniques, especially the data driven Information Engineering with prototyping techniques to accelerate software systems development.

• RAD calls for the interactive use of structured techniques and prototyping to define user's requirements and design the final system. Using structured techniques the developer first builds preliminary data models and business process models of the business requirements. Prototyping then helps the analyst and users to verify those requirements and to formally refine the data and process models. The cycle of models, then prototypes, then models, then prototypes and so forth on, ultimately results in a combined business requirements and technical design statement to be used for constructing new systems.

The speed and agility of the RAD tools, allows the communication of the design process to also take place In the “Prototype” instead of only the “Design Document”.

“If a picture is worth a thousand words, a prototype is worth a thousand Pictures” - Anonymous TEXT TEXT+DIAGRAMS (MODELS, UML,DFD,…)TEXT+DIAGRAMS + PROTOTYPES

Page 75: Creating an RAD Authoratative Data Environment

89

The Big Question ?

• Will the “Prototype” ever be good enough to become a real “applications”?

Then this Prototype model become “real” powerful

• Historically “No”

• What’s new?

• Dynamic Languages PHP, Ruby, JavaScript and relational database are now making it possible (and inexpensive)

Page 76: Creating an RAD Authoratative Data Environment

90

RAD\Prototype Development

Verify With User

Collect user Requirements

DevelopInitial

Design

Develop/Update

Prototype

Collect\Document changes

User Approved System

Page 77: Creating an RAD Authoratative Data Environment

91

PHPRunner (step 1)Map relationships between tables

Page 78: Creating an RAD Authoratative Data Environment

92

All the web pages in the application

Page 79: Creating an RAD Authoratative Data Environment

93Web Pages related to structure

Of request

Data Model

Request

Non TMS Object Request

Reports

Tallies (Bulk Counts)

Approvals

Report related Report

Tech Info

Report related IRIS

Work Orders

Report related Portfolio

Images (DAC)

Report related attachements

TMS Object

Where did “Work Log” come from?Why doesn't “Request” point to “Request Classification count?”

User Interface Model

Page 80: Creating an RAD Authoratative Data Environment

94

User Interface Model

Page 81: Creating an RAD Authoratative Data Environment

95

User Interface Model“Request” and “Work Logs” both store data in the same place (Request Table), they as are only different in which tables are Linked to them, what appears on there screens and processing rules.

RequestAKA “Treatment Reports” : Reports Allowed : Object Required : Bulk counts not allowed : Have linked Object Report : Approvals (Major Only)

Work Logs : Do not contains reports : Allow for Tallies : Object Optional : No Approvals : Simple and Freeform

Request

Page 82: Creating an RAD Authoratative Data Environment

96

Links to Authoritative Sources

Portfolio

IRIS

EmployeeDatabase

TMS Public Data Extract

TMS

Nightly Rebuild

Page 83: Creating an RAD Authoratative Data Environment

97

Data Sharing “vwRmt”

Create view [dbo].[vwRmtEmployee] as (SELECT [ID#] . . .

,[RestrictAlpha] ,[PayPlan] ,[Sponsor] ,[Super#]from NGA-LANDESK.Employee.dbo.[T-Employees]where [LastName] is not null

Page 84: Creating an RAD Authoratative Data Environment

98

Documentation

Project Folder •\\nga\group\T\TDP\Projects\PCD - Paper Conservation Database

Keys Documents

•General Design - Draft (PCD) 20090327a.doc•DCL-PA Database 2.ppt

Page 85: Creating an RAD Authoratative Data Environment

99

Future Features

• Tabs between children in table

• More links to Reports

• WebCast for training

• Single Signon Integration

• Web Reporting

• Audit Trail

• Mail and Public folders

Page 86: Creating an RAD Authoratative Data Environment

100

Tricks

• Triggers to allow multiple selection features • Cascading Drop Down to Emulate Field existence • DB Constraints formatted as error messages• JavaScript as column values • Other . . .

Page 87: Creating an RAD Authoratative Data Environment

101

Toolkit Problems

• Multiple Fields to perform different types of selects

• Only 2-Level Hierarchy supported

• UI customizations might be lost during regeneration

Page 88: Creating an RAD Authoratative Data Environment

102

IssuesMajor IssuesMajor Issues • Maintenance

– Bugs, Enhancements, Upgrades, Reports– What if the toolkit can’t do it ! (Limitations/Tricks)– Generated code issues (re-customizations)– Dependence on toolkit (Double edge sword)

Other IssuesOther Issues • Performance

– Network, Query, Concurrency, Scalability

• Misc– Security, Upload File Placement, – Editing Capabilities (i.e.Spellcheck), – Search (Attachments), Audit Trail, Delete Logic

Page 89: Creating an RAD Authoratative Data Environment

103

Other Issues

• Scope• Production Planning • Testing and QA• Data Conversion • Procedures and documentation• Web Reports • Iterations and upgrades • Integration with existing processes

Page 90: Creating an RAD Authoratative Data Environment

104

End of Main Presentation

• Questions