Data Sharing Architecture




                                   1
                       Art Nicewick
3/6/2009 12:46:08 PM




                       2
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?           3
3 Areas of Data Integration
• Collect
                                  Data                                   Data
  – Bring data in to            Collection                              Sharing   Dessemination
    structured format
• Share                       IRIS         TMS
                                                      Raisers
                                                       Edge
                                                                          $             Gallery
                                                                                         Data


  – DefineReference                                            IRIMS
                                     COE           FMS

    Authoritative Data   AI
                                                         $

                                           Vista

• Disseminate                  Empl




                                                                                     Text
                                                                                                              5
                                                                                                          4
                                                                                                      3
                                                                                                  2
                                                                                             1



  – Make data                                                                               Bar graph


    available to users                      Gallery
                                             Data




                                                                                                                  4
Questions this presentation
                              tries to answer?
         Data                                  • What problem is being addressed by a web database
       Collection
                                               • When should Filemaker or MSAccess be used to
                                               address this problem
                             Raisers
     IRIS         TMS
                              Edge             • When should Metastorm be used to address this
            COE           FMS
                                       IRIMS   Problem
AI
                                $

                  Vista                        • Why was PHPRunner selected for the web database
      Empl
                                               front end

                                               • How is the PHPRunner architecture to fullfull the
                   Gallery
                                               requirement that there will be little to none application
                    Data
                                               code in the implementation (allowing allowing it to be
                                               easily ported to a new application (DCLPA used as
                                               example).
                                                                                                           5
Types of Gallery Data sharing
 Word Docs                    One user at a time, not
          Excel               shared

 MSAccess                     Isolated non-integrated database (Stand-
       Filemaker              alone) shared between a handful of users,
                              Highly customized
 Departmental                    Systems integrated to authoritative source,
 Authoritative                [ Missing Gap]
             Need to have customized departmentusers across departments,
                                 shared with many systems
 Data Systems                    customizable
    Workflow (IRIS) that reference authoritative data



Raisers Edge                  Many users shared, expensive, little-
           TMS                customization

 Internet                      Enterprise-wide and beyond.                6
            Intranet
Database ?
• The gallery has two definitions of a
  database.
  – MSAccessFilemaker (Single Platform)

  – SQL ServerPostgress (Multiple Platform)




                                               7
Pluses and Minus of COTs
• Cots are very inexpensive solution.. However:
  – They frequently do not have everything you need, and
    you cannot easily modifyExtend them
  – They will not follow any naming standards based on
    your organization
  – The governance of the codelogic 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!

                                                           8
Documentation (UDB)

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

Project Folder
•   ngagrouptTDPProjectsUDB - 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



                                                                             9
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.                                                          10
What is a Database? (Two Views)
    Technologist  Programmer                                              Business Analysts  End User
     understanding of the term                                              understanding of the term

                                                                                IDE + Presentation +
                                       Integrated                          Business Rules + Data Storage
                                      Development
                                    Environment (IDE)
                                         “Tools”

                                                                                                  An all-in-one
                                                                                                 System where I
                                         Presentation
                                         “Front End”                                             Can save data
                                                                                                (e.g. MSAccess)
                                                     A part of a
                                                                                                  Single Product
                                                   much larger
                                                                                             Business
                                                System, used to                               View
                                         Application
                                                 Store and share
                                      “Business Rules”
                                                        Data
                                                  (e.g. MSSQL)

                                                  Multi-Product

010010101001010101010101010101
                                          Database
                                                            Technologist
                                                               View           What is a
                                          (Storage)
                                                                              Database?
010101010101010100010010010101

                                                                                                            11
Examples of “Single” verses
 “Multi” software applications
Application                     Front End         Business Rules        Database Storage   Development
                                Presentation       Application                               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                MasonPerlCGI         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



                                                                                                            12
Where is the Data
• Single version of Truth




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

       Exhibition Code: 23 = ZZ       Exhibition Code: 23 = XX

                                          Exhibition Code : 21 = AA

  Exhibition Code: 23 = XX
                                        Exhibition Code: 23 = XX
                                Exhibition Code: 23 = XX
Exhibition Code : 23 = YY
                                  Exhibition Code : 21 = AA


 Exhibition Code: 21 = AA
                             Exhibition Code: 21 = ZZ

                                                                   14
Data Duplication (or Silos)
                           Who is the authoritative source ?


                                           I have the
                                          Latest Phone
                                            Numbers

                            I have an                               I have the
      I need an            old Phone #                             latest phone
         Arts                in my file                              numbers
       Phone #
                                                             A
                                                           X8 rt
                                                             00
                                                               0




                                                                                 A
                   Art                                                        X6 rt
                       6                                                        54
                  X654                                     A
                                                         X8 rt
                                                                                   5
                                                           000




Keeping local copies of data caused obvious problems. Manual
Synchronization process are difficult to maintain.                                     15
Goal
•   Single version of truth
•   Defined Source of Authoritative data




                Exhibition Code: 23 = XX




                                           16
Using Authoritative Source
                                                          Authoritative Source




                                                                            I have the
I need an                                                                  latest phone
   Arts                                                                      numbers
 Phone #




                                                               Official Phone Book




Using a single source for the data, provides all the systems with the latest up
to data information                                                             17
Not one answer !
• Different users
• Different needs




                             18
Option 4.
                                                   Five Strategies
 Option 3.
 Shared                                                                                                                                                   Shared
 Enterprise                                                                                                                                               Enterprise
 Data (Fat Client)                                                                                                                                        Data
                                                 OPTION 3        Within Single Department
                                                                     Authoritative Data
                                                                                                                                                          (Thin Client)


                                                                                                                                                                                               Option 5.
                                File Maker
                                Application
                                     1
                                                                                                                                                                                               Custom

                                                                                                         X                                                                                     (Thin
                                       Temp Storage or Local
                                        Copy Storage Only



                                                                                                                                                                                               Client)


                                                                                            Conversion
                                                                                              PHP
                                                                                                                   No Data
                                                                                                                   Storage




                                                                                                           PHP
                                                                                                         Applciation

               Dept C

Option 1.                                                                                                          OPTION 4
            OPTION 1                                                                                                                        OPTION 2
Single
                            Single User                                                                                                                Within Single Department


                                                                                                                                                                                              Option 2.
                        Non-Authoritative Data                                                                         Cross Departments                  Non-Authoratative
                                                                                                                       Authoritative Data
                                                                                                                                                                                  Read Only


User                                                                                                                                                         Access                           Shared
                                                                                                                                                    File

                         Access
                                                                                                                                                   Maker
                                                                                                                                                                                              Department
                        File Maker
                                                                                                                                                                                              Data
                                                               Dept A                                                             Dept B
                        Application
                             2
                                                                                                               `
                                                                                                                                                                                              (Fat Client)
                                                                                                                                                                                                    19
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

                                                                     20
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




                                                    One Time
                                                      Load
                                                            Optional




•Susan’s Pull from IA to Excel
•TMS Crystal Reports                                                                                         21
•Raisers Edge Queries
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.



                                     Independent




          User                        User /                       User
                                    Developer



       AFM                             AFM                       AFM


•Gallery Filemaker Archives                                                              22
•AFM Access database
Option 2 – Multi-User Departmental Application
               for Departmental-only Data
      •    This is a multiple user application. The data in this Access Databases is not
           ‘authoritative’ to the Gallery and therefore is considered a ‘copy’ of some
           other data stored as a Gallery resource. However, the accessed “read-only’
           Central data is Authoratative. This Architecture assume simple business
           rules, and little to no workflow.
                                          Linked to Authoritative Source
                              Authorization

                                                        Read Only
                                                          (RO)
                                                                    User




                                                            (RO)

                                                 (RO)




                                      User /                         User
                                     Developer


•Old patch reporting Model                                                            23
Option 3 – Multi-User Departmental
           Application for Gallery-Wide Data
   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.
                                                          Web
                                                                                            XDO

                                               Data                                User
                                            Consistency
                                            Verfication

                                                                Authorization




                                                                                  User
                          Authoritative
                            Source
                         Other ..   IRIMS

                           RE       IRIS
                          DAC       TMS
                                                                                            AFM


                                                                                End User
                                                                                Developer




•Asset Inventory                                                                                  24
•Scott Steven Employee Database
Option 4 - Multi-User Gallery-Wide
            Application for Gallery-Wide Data
        This architecture extends the previous architecture to limit the impact of
        “Client Maintenance” by using a thin client Web Based Application..

                                                                                           User
                                        Consistency
                                         Checking


                                                                                                  XDO
                                                                   Authorization           User




                     Authoritative                                                         User
                       Source
                    Other ..   IRIMS                                                 WEB
                     RE        IRIS
                     DAC       TMS
                                                                                           User




                                                  TDP                                             DPUB
                                                                                           User
                                                                           Convert
                                                       Deploy to             To
                                                       Server /             PHP
                                                      Generated
                       End User                          from                              User
                       Developer
                                                      Data Model
•DCLPA                                 Data                           PHP

•VDMS                                  Model
                                                                     Runner                              25
                        DM                            Overrides
•Patch Reporting
Option 5 - Strategic Applications
                                      Consistency                                       User
                                       Checking


                                                                                               XDO
                                                                  Authorization         User
                 Authoritative
                   Source
                Other ..   IRIMS
                 RE         IRIS                                                        User
                 DAC       TMS
                                                                                  WEB

               TMSWEB     Other ..

                TRAIN       iHeat                                                       User




                                                                                               DPUB
                                                                                        User


                             Developer


                  Complex                             Web Services ,                    User
                                                       Native AJAX ,
•IRIS              Code                                  Complex                               26
•Art Extract                                   TDP   application Rules
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




                                            27
Architecture

       Web Browser
                           `




PHPRunner Application Server
      (Web Server)




    SQL Server Database


                               28
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 !

                                                             29
A few options
•   MSAccess
•   Filemaker
•   PHPRunner
•   MetaStorm
•   Custom Web Develop? (Mason,Perl,CGI)
•   Other?


                                           30
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


                   In that case, “Nevermind”


     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.
                                                      31
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)


                                                             32
Filemaker !
Required:
- Must be easy to build – Low Maintenance
- Must use database standards
- Must have Security
- Must have adequate performance
      How about File Maker to a SQL Database …
    Isn't that a feature a feature of Filemaker server?
Desired: that called ESS (External Data Sources)?
      Isn't
- We did not need to install it (e.g. Web based)
- Was reasonably priced
- Will be easy to maintain in the future (Standards based)


                                                             33
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



                                                                                          34
Problems With Filemaker
• “Filemaker External SQL Sources (ESS) In Depth”
   (Filemaker publication)
  – “Value lists cannot be based on data in an ESS table”
                 “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”
                                          Means
  – ESS data in FileMaker Pro has the potential to be slightly out of date
  – Binary data is not supported by ESS at present
                      No field list validation (Dropdown List) from
  – Scrolling operations … can be problematic in large record sets. . . . and will
    perform fairly slowl non-Filemaker authoritative sources!
  – Sort not performed in database
  – The ESS feature set is primarily designed to termsFileMaker Pro solutions to
                                    Or in simple allow
    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.
                        “Can’t validate against to authoritative data”
  –   See: Filemaker and SQL Compliant Database(UDB) 20080109c.doc



                                                                                          35
Filemaker (My Last Straw)
From: John Blakeley [mailto:john@fbsl.co.nz]
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: john@fbsl.co.nz
Skype: john.blakeley
 Bayview
North Shore
New Zealand
                                                                                        36
Filemaker (My Last Straw)
From: John Blakeley [mailto:john@fbsl.co.nz]
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
      “We gave up on the idea of pulling data
John Blakeley

John from Filemaker using it as a linked server”
     Blakeley Mobile: + 64 21 948037
Email: john@fbsl.co.nz
Skype: john.blakeley
Bayview
North Shore
New Zealand
                                                                                        37
Not Filemaker – Then what?




                             38
Prototyped


                            Typical “Types” of Assets , with issue numbers
                            mapped




“Lookup” provides means to search for Issuance




                                                                             39
Rated the best
                                 Easy to Learn  Use
                                  Can be extended
                          Can integrate with Cots Packages
                                 “Open” Architecture




            Java Server      Ruby on Rails     Alpha          Cold
                                                                      .Net
PHPRunner      Faces        Active Scaffold   Five          Fusion
             Netbeans




                                                                             40
PHPRunner
Required:
- Must be easy to build – Low Maintenance Very little coding
- Must use database standards Yes
- Must have Security Pretty good, but we need to make it better
- Must have adequate performance Looks OK, Need testing
Desired:
- We did not need to install it (e.g. Web based) Yes
- Was reasonably priced Yes
- Will be easy to maintain in the future (Standards based)
                                  Standard Industry Language (PHP)

                                  Framework not widespread as we would
                                                                  41
                                  like
es
     PHPRunner Code Generation
                          e
                               ang
                            Ch reak
                        od n’t b des
                       C o       a
                         W upgr
                          by                     Data
                                     DB        Definitions
                                    Rules

                                                                  Security /
             s
         n ge                                                     Navigation
    C ha ak
  de ’t bre des
Co on ra
                                                              Framework
                                                             Relationship
  W upg                                                                     Custom
   by                                                        Framework
                                             Code
                                                                Tables     Web
       Relationships                        Generator                      Forms
                                                             Framework Upgra
                                                                         Reve des will
                                                                             rt cha
                     ge                                         Codes              nges
                 chan by
           Code break
                                                               Overrides

               t”
          “Migh rades.                        Codes
              upg     t em                  Overrides ,
                  B ut t
                         he sy
                               s                              Access Routine
                            y to
                     will tr it..          Screen
                            nt
                     preve              Customizations
                                                                                     42
                                            Templates
es
     PHPRunner Code Generation
                          e
                               ang
                            Ch reak
                        od n’t b des
                       C o       a
                         W upgr
                          by                     Data
                                     DB        Definitions
                                    Rules

                                                                  Security /
             s
         n ge                                                     Navigation
    C ha ak
  de ’t bre des
Co on ra
                                                              Framework
                                                             Relationship
  W upg                                                                     Custom
   by                                                        Framework
                                             Code
                                                                Tables     Web
       Relationships                        Generator                      Forms
                                                             Framework Upgra
                                                                         Reve des will
                                                                             rt cha
                     ge                                         Codes              nges
                 chan by
           Code break
                                                               Overrides

               t”
          “Migh rades.                        Codes
              upg     t em                  Overrides ,
                  B ut t
                         he sy
                               s                              Access Routine
                            y to
                     will tr it..          Screen
                            nt
                     preve              Customizations
                                                                                     43
                                            Templates
UI Templates  Layouts




                         44
UI Styles




            45
UI Templates  Layouts




                         46
Field Name and Column Order




                              47
Charts




         48
Reports




          49
Searchable (Advanced and Simple)




         Reports, Charts, Tables, …   50
End User Reports Creation
             (Web Based)
•   Very Simple
•   Version 1 is very limited
•   Tightly integrated with Security
•   Version 2 expected in the summer




                                       51
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
                                                52
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
                                          53
Metastorm vs Web Database
•       PHPRunner is “Only” code development, The
        tools is run on “ApachePHP”. 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)



                                                                                              54
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.
                                                      55
PHPRunner
               Normalized Data Model
                                                         Simple CRUD User Interface
- Clean Data Type
                                                        - Basic Menu
- Logical Business Modeled Data Model
                                                        - No “Workflow” or “Inbox”
- Data enforced Business Rules
                                                        - Light integration with Email
- Easy to report
                                                        - Decent report generation

                  Header
                     (e.g.                    Auto
                    Name,
                   Address )
                                            Generated



                                        Admin
 Child1                        Child3   Reference
                   Child2                Tables
(e.g. Child1
      Kids         (Roles )     (e.g.
Names) Kids
  (e.g.                         Cars)
   Names)



                                                                                         56
Metastorm
       Complex Workflow                                 DeNormalized Data Model
- Great “Inbox”                              - Data not always Types (Integers are character )
- “Approvals” out of box                     - Single Logical Table storing parents and children
- Logical Diagramming of Workflow            - “Temp” Screen data stored in Database
- Tight integration with Email               - Fields defined but not used
- “Bad” report generation                    - Admin screen cannot be linked to data model


                                                      Keys      Header
                                                                  (e.g.     Child1       Child2    Child3     Temp
                                                       And       Name,      (e.g. Kids              (e.g.     Screen
                                                                                         (Roles)
                                                     Pointers   Address )    Names)                 Cars)      Data

                                      Auto                                   ignore      ignore    ignore    ignore
                                    Generated
                                                                 ignore                  ignore    ignore    ignore

                                                                 ignore                   ignore   ignore    ignore

                                                                 ignore      ignore                ignore    ignore

                                                                 ignore      ignore      ignore              ignore
                                        Admin
                                       Reference
                                        Tables                   ignore      ignore      ignore              ignore

                                                                             ignore      ignore     ignore   ignore

                                                                 ignore                  ignore    ignore    ignore

                                                                                                             57
Metastorm and Workflow
• RADVisual development of Workflow is what
  Metatstorm is good at!
• A good standard for Workflow application in the Gallery




                                                            58
Data Model Differences
                                                  Keys    Header
                                                            (e.g.     Child1       Child2    Child3   Temp
                                                   And
                Header                                     Name,
                                                 Pointers Address )
                                                                      (e.g. Kids
                                                                      Names)
                                                                                   (Roles)   (e.g.
                                                                                             Cars)
                                                                                                      Screen
                                                                                                       Data
                  (e.g.
                 Name,                                                 ignore      ignore    ignore   ignore
                Address )
                                                            ignore                 ignore    ignore   ignore

                 Parent                                     ignore                  ignore   ignore   ignore

                                                            ignore     ignore                ignore   ignore

                                     Admin                  ignore     ignore      ignore             ignore
                                     Reference
 Child1         Child2      Child3
                                      Tables                                                          ignore
(e.g. Child1
      Kids      (Roles )     (e.g.                          ignore     ignore      ignore

Names ) Kids                 Cars)
  (e.g.
                                                                       ignore      ignore    ignore   ignore
   Names)

                                                            ignore                 ignore    ignore   ignore




                                                                                                        59
PHPRunner (DCLPA) Data Model                                                                                                           RequestStatuses                                                                                                                     RequestBulkClassificationCounts
                                           Exhibitions                                                                                                                           Column Name                   Data Type          Allow Nulls                                                            RequestBulkClassificationCount_id                                           Classifications
                                                      Column Name                 Data Type    Allow Nulls
                                                                                                                                                                       RequestStatus_id                  int                                                                                             Request_id                                                                               Column Name                  Data Type          Allow Nulls
                                               Exhibition_id               int
                                                                                                                                                                       Name                              nvarchar(100)                                                                                   CountForClassification                                                           Classification_id             int
                                               code                        nvarchar(50)
                                                                                                                                                                       DropDown_Display_Order            int                                                                                             Classification_id                                                                Name                          nvarchar(50)
                                               Name                        nvarchar(100)
                                                                                                                                                                       LastUpdateUserName                nvarchar(50)                                                                                    isNGA                                                                            LastUpdateUserName            nvarchar(50)
                                               isMaintainedInTMS           bit
                                                                                                                                                                       LastUpdateTime                    datetime                                                                                        Comment                                                                          LastUpdateTime                datetime
                                               Comment                     nvarchar(MAX)
                                                                                                                                                                       SetToThisWhenFirstReportIs...     bit
                                               RequestReason_id            int
                                               DropDown_Display_Or...      int




                                                                                                                                                                                                                                                Requests *                                                                                                                            Loans
                                                                                                                                                                                                                                                                                                                                                                                                     Column Name                    Data Type         Allow Nulls
                                                                                                                                                                                                                                                        Column Name                    Data Type        Allow Nulls
                                                                                                                                                                                                                                                                                                                                                                                              Loan_id                         int
                                                                                                                                                                                                                                                   Request_id                    int
                                                                                                                                                                                                                                                                                                                                                                                              Name                            nvarchar(50)
                                                                                                                                                                                                                                                   EntryShortcutSelect_...       int
                                                                                                                                                                                                                                                                                                                                                                                              DropDown_Display_Order          int
                                                                                                                                                                                                                                                   RequestReason_id              int
                                                                                                                       RequestTMSObjects                                                                                                                                                                                                    RequestNonTMSObjects *                            Comment                         nvarchar(MAX)
                                                                                                                                                                                                                                                   RequestType_id                int
                                                                                                                           RequestTMSObject_id                                                                                                                                                                                                  RequestNonTMSObject_id
                                                                                                                                                                                                                                                   RequestStatus_id              int                                                                                                          RequestReason_id                int
                                                                                                                           Request_id                                                     ExhibitionActivities *                                                                                                                                Name
                                    RequestReportDACs                                                                                                                                          ExhibitionActivity_id                               Requestor_id                  int
                                                                                                                                                                                                                                                                                                                                                NGAContactGallery_id
                                                                                                                                                                                                                                                                                                                                                                                              LastUpdateUserName              nvarchar(50)
                                                                                                                           TMSObject_id                                                                                                                                                                                                                                                       LastUpdateTime                  datetime
                                            RequestReport_DAC_id                                                                                                                                                                                   Comment                       nvarchar(300)
                                                                                                                                                                                               SortOrderInReport                                                                                                                                Request_id
                                            RequestReport_id                                                               EntryShortcutAjax_TMSObje...
                                                                                                                                                                                               Name                                                QuickNotes                    nvarchar(MAX)
                                            DAC_Record_id                                                                                                                                                                                          RequestDate                   datetime
                                                                                                                                                                                               RequestReason_id
                                            Comment                                                                                                                                                                                                LastUpdateUserName            nvarchar(50)
                                                                                                                                                                                               isOnWorklog
                                            LastUpdateUserName                                                                                                                                                                                     LastUpdateTime                datetime
                                            LastUpdateTime
                                                                                                                                                                                                                                                                                                                                                                         LoanActivities
                                                                                                       RequestReports *                                                                                                                            Exhibition_id                 int
                                                                                                                                                                                                                                                                                                                                                                                   Column Name                 Data Type            Allow Nulls
                                                                                                                  Column Name                   Data Type          Allow Nulls                                                                     ExhibitionActivity_id         int
                                                                                                                                                                                                                                                                                                                                                                            LoanActivity_id              int
                                                                                                             RequestReport_id             int                                                                                                      ExhibitionOtherActivit...     int
                                                                                                                                                                                                                                                                                                                                                                            Name                         nvarchar(50)
                                                                                                             Request_id                   int                                                                                                      EntryShortcutAjax_M...        int
                                   RequestReportWorkOrders                                                                                                                                                                                                                                                                                                                  Comment                      nvarchar(MAX)
                                                                                                             ReportType_id                int                                                                                                      Loan_id                       int
                                           RequestReport_WorkOrder_id                                                                                                                           RequestReportTechnicalInfos                                                                                                                                                 LastUpdateUserName           nvarchar(50)
                                                                                                             StartedDate                  datetime                                                                                                 LoanActivity_id               int
                                           RequestReport_id                                                                                                                                            RequestReport_id                                                                                                                                                     LastUpdateTime               datetime
                                                                                                             EndedDate                    datetime
                                           WorkOrder_Line                                                                                                                                              TechnicalNotes                                                                                                                                                       RequestReason_id             int
                                                                                                             Conservator_id               int
                                           WorkOrderType_id                                                                                                                                            BetaRadiograph
                                                                                                             Description                  nvarchar(MAX)
                                           LastUpdateUserName                                                                                                                                          XRayFluorescenceSpectroscopy
                                                                                                             User_id                      int
                                           LastUpdateTime                                                                                                                                              InfraredSpectroscopy                                                                                                                                                 RequestApprovingRoles
                                                                                                             RequestReportStatus_id       int
                                                                                                                                                                                                       MicroFadometer                                                                                                                                                              RequestApprovingRole_id
                                                                                                             AnalogImageLocation_id       int
                                                                                                                                                                                                       FourierTransformInfraredSpectroscopy                                                                                                                                        Request_id
                                                                                                             IncludeInFinalObjectR...     bit                                                                                                                                                                    RequestTypes *
                                                                                                                                                                                                       FluorescenceSpectroscopy                                                                                                           Column Name                              ApprovingRole_id
                                                                                                             Report                       nvarchar(MAX)                                                                                                RequestReasons *                                                                                                            ApprovingUser_id
                                                                                                                                                                                                       ColorSpectroscopy                                                                                               RequestType_id
                                                                                                             LastUpdateUserName           nvarchar(50)                                                                                                                         Column Name
                                                                                                                                                                                                       None                                                                                                            Name                                                        Approval_id
                                                                                                             LastUpdateTime               datetime                                                                                                           RequestReason_id
WorkOrderTypes                                    RequestReportAttachments *                                                                                                                           Other                                                                                                           isMajor                                                     Comment
                                                                                                             RequestTMSObject_id          int                                                                                                                DropDown_Display_Order
  WorkOrderType_id                                      RequestReportAttachment_id                                                                                                                     OtherDescription                                                                                                isMinor                                                     LastUpdateUserName
                                                                                                             Attachment                   nvarchar(MAX)                                                                                                      Name
  Name                                                  RequestReport_id                                                                                                                                                                                                                                               isQuick                                                     LastUpdateTime
                                                                                                             Image                        nvarchar(MAX)
  LastUpdateUserName                                    FileName                                                                                                                                                                                                                                                       isLoan
                                                                                                             RequestNonTMSObjec...        int
  LastUpdateTime                                        Comment                                                                                                                                                                                                                                                        isBulk
                                                                                                                                                                                                                                                                                                                       isObjectRequired
                                                                                                                                                                                                                                                                                                                       isMultiObjectsAllowed                             RequestTypeApprovingRoles
                                                                                                                                                                                                                                                                                                                                                                            RequestTypeApprovingRole_id
                                                                                                                                                                                                                                                                                                                       isApprovalRequired
                                                                                                                                                                                                                                                                                                                                                                            RequestType_id
                                                                                                                                                                                                                                                                                                                       DropDown_Display_Order
                                                                                                                                                                                                                                                                                                                                                                            ApprovingRole_id
                                                                                                                                                                                                                                                                                                                       LastUpdateUserName
                       ReportTypes                                                                                                                                                                        Conservators                                                                                                                                                      Comment
                                Column Name                    Data Type         Allow Nulls                                                          RequestReportStatuses                                     Conservator_id                                                                                                                                              LastUpdateUserName
                         ReportType_id                 int                                               ReportTypeGroups                                   RequestReportStatus_id                              Gallery_id                                                                                                                                                  LastUpdateTime
                         ReportTypeGroup_id            int                                                    ReportTypeGroup_id                            Name                                                Comment
                         Name                          nvarchar(100)                                          Name                                          DropDown_Display_Order                              isInEmployeeDirectory
                                                                                                              isTechnicalAnalysis
                                                                                                                                                                                                                                                                                          RequestTypeReasons *
                         LastUpdateUserName            nvarchar(50)                                                                                         ReportType_id                                       LocalVersionOfName                                                              RequestTypeReasons_id
                         LastUpdateTime                datetime                                               isDetailedExam                                LastUpdateUserName                                  LastUpdateUserName                                                              RequestType_id
                         isValidWithBulk               bit                                                    isTreatmentProposal                           LastUpdateTime                                      LastUpdateTime                                                                  RequestReason_id
                         isValidWithQuick              bit                                                    isObjectReport

                         isValidWithMajor              bit                                                    isOther

                         isValidWithMinor              bit                                                    LastUpdateUserName


                                                                                                                                                                                                                                                                                                                                                                                                                           60
                         DropDown_Display_Or...        int                                                    LastUpdateTime
PHPRunner (DCLPA) Data Model                                                                                                                                 Requests

                                                                                                                                                                   RequestStatusesRequest_id
                                                                                                                                                                                                                 Column Name
                                                                                                                                                                                                                                                                                                    RequestBulkClassificationCounts
                                            Exhibitions                                                                                                                             Column Name                  Data Type          Allow Nulls                                                          RequestBulkClassificationCount_id                                           Classifications
                                                       Column Name                 Data Type      Allow Nulls
                                                                                                                                                                          RequestStatus_id
                                                                                                                                                                                             EntryShortcutSelect_MajorTMSObj...
                                                                                                                                                                                                     int                                                                                                                                                                                          Column Name                  Data Type          Allow Nulls
                                                                                                                                                                                                                                                                                                         Request_id
                                                Exhibition_id               int
                                                                                                                                                                          Name               RequestReason_id
                                                                                                                                                                                                    nvarchar(100)                                                                                        CountForClassification                                                           Classification_id             int
                                                code                        nvarchar(50)
                                                                                                                                                                          DropDown_Display_Order           int                                                                                           Classification_id                                                                Name                          nvarchar(50)
                                                Name                        nvarchar(100)                                                                                                    RequestType_id
                                                                                                                                                                          LastUpdateUserName               nvarchar(50)                                                                                  isNGA                                                                            LastUpdateUserName            nvarchar(50)
                                                isMaintainedInTMS           bit
                                                                                                                                                                          LastUpdateTime
                                                                                                                                                                                             RequestStatus_id
                                                                                                                                                                                                    datetime                                                                                             Comment                                                                          LastUpdateTime                datetime
                                                Comment                     nvarchar(MAX)
                                                                                                                                                                                             Requestor_id
                                                                                                                                                                          SetToThisWhenFirstReportIs... bit
                                                RequestReason_id            int
                                                DropDown_Display_Or...      int                                                                                                              Comment
                                                                                                                                                                                             QuickNotes
                                                                                                                                                                                             RequestDate
                                                                                                                                                                                             LastUpdateUserName                                   Requests *                                                                                                                          Loans
                                                                                                                                                                                                                                                                                                                                                                                                     Column Name                    Data Type         Allow Nulls
                                                                                                                                                                                                                                                          Column Name                  Data Type        Allow Nulls
                                                                                                                                                                                             LastUpdateTime                                                                                                                                                                                   Loan_id                         int
                                                                                                                                                                                                                                                     Request_id                  int
                                                                                                                                                                                             Exhibition_id                                                                                                                                                                                    Name                            nvarchar(50)
                                                                                                                                                                                                                                                     EntryShortcutSelect_...     int
                                                                                                                                                                                                                                                                                                                                                                                              DropDown_Display_Order          int
                                                                                                                                                                                                                                                     RequestReason_id            int
                                                                                                                          RequestTMSObjects                                                  ExhibitionActivity_id                                                                                                                          RequestNonTMSObjects *                            Comment                         nvarchar(MAX)
                                                                                                                                                                                                                                                     RequestType_id              int
                                                                                                                                                                                                                                                                                                                                                RequestNonTMSObject_id
                                                                                                                              RequestTMSObject_id                                             ExhibitionOtherActivity_id                             RequestStatus_id            int                                                                                                          RequestReason_id                int
                                                                                                                              Request_id                                                     ExhibitionActivities *                                                                                                                             Name
                                     RequestReportDACs                                                                                                                                        EntryShortcutAjax_MajorTMSObje...
                                                                                                                                                                                                ExhibitionActivity_id                                Requestor_id                int
                                                                                                                                                                                                                                                                                                                                                NGAContactGallery_id
                                                                                                                                                                                                                                                                                                                                                                                              LastUpdateUserName              nvarchar(50)
                                                                                                                              TMSObject_id                                                                                                                                                                                                                                                    LastUpdateTime                  datetime
                                             RequestReport_DAC_id                                                                                                                                                                                    Comment                     nvarchar(300)
                                                                                                                              EntryShortcutAjax_TMSObje...                                   Loan_id
                                                                                                                                                                                               SortOrderInReport                                                                                                                                Request_id
                                             RequestReport_id                                                                                                                                                                                        QuickNotes                  nvarchar(MAX)
                                                                                                                                                                                                  Name
                                             DAC_Record_id                                                                                                                                   LoanActivity_id                                         RequestDate                 datetime
                                                                                                                                                                                                  RequestReason_id
                                             Comment                                                                                                                                                                                                 LastUpdateUserName          nvarchar(50)
                                                                                                                                                                                                  isOnWorklog
                                             LastUpdateUserName                                                                                                                                                                                      LastUpdateTime              datetime
                                             LastUpdateTime
                                                                                                                                                                                                                                                                                                                                                                         LoanActivities
                                                                                                          RequestReports *                                                                                                                           Exhibition_id               int
                                                                                                                                                                                                                                                                                                                                                                                   Column Name                 Data Type            Allow Nulls
                                                                                                                     Column Name                   Data Type          Allow Nulls                                                                    ExhibitionActivity_id       int
                                                                                                                                                                                                                                                                                                                                                                            LoanActivity_id              int
                                                                                                                RequestReport_id             int                                                                                                     ExhibitionOtherActivit...   int
                                                                                                                                                                                                                                                                                                                                                                            Name                         nvarchar(50)
                                                                                                                Request_id                   int                                                                                                     EntryShortcutAjax_M...      int

         RequestNonTMSObjects
                                    RequestReportWorkOrders
                                                                                           RequestTMSObjects
                                                                                                   ReportType_id                             int                                RequestReports                                                                                                                                                                         RequestApprovingRoles
                                                                                                                                                                                                                                                                                                                                                                         Comment   nvarchar(MAX)
                      RequestReport_WorkOrder_id                                                                                                                                                   RequestReportTechnicalInfos
                                                                                                                                                                                                        Column Name
                                                                                                                                                                                                                                                     Loan_id
                                                                                                                                                                                                                                                                         RequestBulkClassificationCounts
                                                                                                                                                                                                                                                                            int
                                                                                                                                                                                                                                                                                                                                                                            LastUpdateUserName           nvarchar(50)
                                                                                                                                                                                                                                                                                                                                                                                                                 Column Name
                                                                                                                StartedDate                  datetime                                                                                                LoanActivity_id             int
                       Column Name
                                 RequestReport_id                                                               Column Name                                                                              RequestReport_id                                                                                   Column Name                                                     LastUpdateTime               datetime
                                                                                                                EndedDate                    datetime
                              WorkOrder_Line                                                                                                                                           RequestReport_id                                                                                                                                                                      RequestApprovingRole_id
               RequestNonTMSObject_id                                                           RequestTMSObject_id
                                                                                                         Conservator_id                      int
                                                                                                                                                                                                TechnicalNotes
                                                                                                                                                                                                                                                                                 RequestBulkClassificationCount_id
                                                                                                                                                                                                                                                                                                                                                                            RequestReason_id int
                                            WorkOrderType_id                                                                                                                           Request_id BetaRadiograph                                                                                                                                                              Request_id
               Name                                                                             Request_id
                                                                                                         Description                         nvarchar(MAX)
                                                                                                                                                                                                                                                                                 Request_id
                                            LastUpdateUserName                                                                                                                                           XRayFluorescenceSpectroscopy
                                                                                                                User_id                      int                                       ReportType_id                                                                                                                                                                         ApprovingRole_id
               NGAContactGallery_id
                                LastUpdateTime                                                  TMSObject_id                                                                                             InfraredSpectroscopy                                                    CountForClassification                                                                     RequestApprovingRoles
                                                                                                                RequestReportStatus_id       int
                                                                                                                                                                                       StartedDate
                                                                                                                                                                                                 MicroFadometer                                                                                                                                                              ApprovingUser_id
                                                                                                                                                                                                                                                                                                                                                                               RequestApprovingRole_id
               Request_id                                                                       EntryShortcutAjax_TMSObject_id
                                                                                                          AnalogImageLocation_id int                                                                                                                                             Classification_id                                                                              Request_id
                                                                                                                IncludeInFinalObjectR...     bit                                       EndedDate FourierTransformInfraredSpectroscopy                                                                            RequestTypes *                                               Approval_id
                                                                                                                                                                                                         FluorescenceSpectroscopy                                      isNGA                                                              Column Name                              ApprovingRole_id
                                                                                                                Report                       nvarchar(MAX)                             Conservator_id                                                    RequestReasons *                                                                                                     Comment
                                                                                                                                                                                                                                                                                                                                                                                ApprovingUser_id
                                                                                                                                                                                                         ColorSpectroscopy                                                                                             RequestType_id
                                                                                                                LastUpdateUserName           nvarchar(50)                                                                                                              Comment
                                                                                                                                                                                                                                                                    Column Name
                                                                                                                                                                                       Description None                                                                                                                Name                                                   LastUpdateUserName
                                                                                                                                                                                                                                                                                                                                                                                Approval_id
                                                                                                                LastUpdateTime               datetime                                                                                                          RequestReason_id
WorkOrderTypes                                     RequestReportAttachments *                                                                                                                            Other                                                                                                         isMajor                                                     Comment
                                                                                                                RequestTMSObject_id          int                                       User_id                                                                 DropDown_Display_Order                                                                                         LastUpdateTime
  WorkOrderType_id                                       RequestReportAttachment_id                                                                                                                      OtherDescription                                                                                              isMinor                                                     LastUpdateUserName
                                                                                                                Attachment                   nvarchar(MAX)                             RequestReportStatus_id                                                  Name
  Name                                                   RequestReport_id                                                                                                                                                                                                                                              isQuick                                                     LastUpdateTime
                                                                                                                Image                        nvarchar(MAX)
                                                         FileName
  LastUpdateUserName
                                                                                                                RequestNonTMSObjec...        int
                                                                                                                                                                                       AnalogImageLocation_id                                                                                                          isLoan
  LastUpdateTime                                         Comment                                                                                                                                                                                                                                                       isBulk
                                                                                                                                                                                       IncludeInFinalObjectReport
RequestReportTechnicalInfos                                                                                                                                                                                                                                                                                            isObjectRequired
                                                                                                                                                                                       Report                                                                                                                          isMultiObjectsAllowed                             RequestTypeApprovingRoles
                        Column Name                                                                                                                                                                                                                                                                                                                                         RequestTypeApprovingRole_id
                                                                                                                                                                                       LastUpdateUserName                                                                                                              isApprovalRequired
     RequestReport_id                                                                                                                                                                                                                                                                                                  DropDown_Display_Order
                                                                                                                                                                                                                                                                                                                                                                            RequestType_id
                                                                                                                                                                                       LastUpdateTime                                                                                                                                                                       ApprovingRole_id
     TechnicalNotes                                                                                                                                                                                                                                                                                                    LastUpdateUserName
                  ReportTypes                                                                                                                                                                Conservators
                                                                                                                                                                                  RequestTMSObject_id                                                                                                                                                                       Comment
     BetaRadiograph                                                                                                                                      RequestReportStatuses
                        Column Name
                    ReportType_id                       int
                                                                Data Type         Allow Nulls
                                                                                                            ReportTypeGroups                                RequestReportStatus_idAttachment
                                                                                                                                                                                                Conservator_id
                                                                                                                                                                                                                                                                                                                                                             RequestReportWorkOrders
                                                                                                                                                                                                                                                                                                                                                                    LastUpdateUserName

     XRayFluorescenceSpectroscopy                                                                                                                                                               Gallery_id                                                                                                                                                                  LastUpdateTime
                                                                                                                 ReportTypeGroup_id                            Name                    Image                                                                                                                                                                                                         Column Name
     InfraredSpectroscopy
                          ReportTypeGroup_id            int
                                                                                           RequestReportDACs                                                                                                      Comment
                     Name                               nvarchar(100)                               Name
                                                                                                                    Column Name
                                                                                                                                                               DropDown_Display_Order
                                                                                                                                                                                       RequestNonTMSObject_id
                                                                                                                                                                                                                  isInEmployeeDirectory                                  RequestReportAttachments
                                                                                                                                                                                                                                                                              RequestTypeReasons *                                                                RequestReport_WorkOrder_id
     MicroFadometer       LastUpdateUserName            nvarchar(50)                                             isTechnicalAnalysis                           ReportType_id                                      LocalVersionOfName
                                                                                                         isDetailedExam
                                                                                                                                                                                                                                                                                                Column Name
                                                                                                                                                                                                                                                                                                RequestTypeReasons_id                                             RequestReport_id
                          LastUpdateTime                datetime                                RequestReport_DAC_id                                           LastUpdateUserName                                 LastUpdateUserName
     FourierTransformInfraredSpectroscopy                                                                        isTreatmentProposal
                                                                                                                                                                                                                                                                                                RequestType_id
                                                                                                                                                                                                                                                                                 RequestReportAttachment_id                                                       WorkOrder_Line
                          isValidWithBulk               bit                                                                                                    LastUpdateTime                                     LastUpdateTime
                                                                                                RequestReport_id                                                                                                                                                                                RequestReason_id
     FluorescenceSpectroscopy
                    isValidWithQuick                    bit                                                      isObjectReport
                                                                                                                                                                                                                                                                                 RequestReport_id                                                                 WorkOrderType_id
                                                                                                DAC_Record_id
                                                                                                         isOther
     ColorSpectroscopy
                     isValidWithMajor                   bit
                                                                                                                                                                                                                                                                                 FileName
                                                                                                                 LastUpdateUserName                                                                                                                                                                                                                               LastUpdateUserName
                          isValidWithMinor              bit                                     Comment
     None                                                                                                                                                                                                                                                                        Comment
                          DropDown_Display_Or...        int                                                      LastUpdateTime                                                                                                                                                                                                                                   LastUpdateTime
                                                                                                LastUpdateUserName
     Other
     OtherDescription
                                                                                                LastUpdateTime                                                                                                                                                                                                                                                                                                             61
Requests
                                                                                                Column Name
                                                                                   Request_id



                       PHPRunner                                                   EntryShortcutSelect_MajorTMSObj...
                                                                                   RequestReason_id
                                                                                   RequestType_id



                         (DCLPA)
                                                                                   RequestStatus_id
                                                                                   Requestor_id
                                                                                   Comment



                      Key tables Data
                                                                                   QuickNotes
                                                                                   RequestDate
                                                                                   LastUpdateUserName




                           Model
                                                                                   LastUpdateTime
                                                                                   Exhibition_id
                                                                                   ExhibitionActivity_id
                                                                                   ExhibitionOtherActivity_id
                                                                                   EntryShortcutAjax_MajorTMSObje...
                                                                                   Loan_id
                                                                                   LoanActivity_id




    RequestNonTMSObjects                  RequestTMSObjects                  RequestReports                                                                        RequestApprovingRoles
                                                                                             Column Name
                                                                                                                        RequestBulkClassificationCounts                                      Column Name
                  Column Name                         Column Name                                                                              Column Name
                                                                               RequestReport_id                                                                         RequestApprovingRole_id
           RequestNonTMSObject_id           RequestTMSObject_id                                                            RequestBulkClassificationCount_id
                                                                               Request_id                                                                               Request_id
           Name                             Request_id                                                                     Request_id
                                                                               ReportType_id                                                                            ApprovingRole_id
           NGAContactGallery_id             TMSObject_id                                                                   CountForClassification
                                                                               StartedDate                                                                              ApprovingUser_id
           Request_id                       EntryShortcutAjax_TMSObject_id                                                 Classification_id
                                                                               EndedDate                                                                                Approval_id
                                                                                                                           isNGA
                                                                               Conservator_id                                                                           Comment
                                                                                                                           Comment
                                                                               Description                                                                              LastUpdateUserName
                                                                               User_id                                                                                  LastUpdateTime
                                                                               RequestReportStatus_id
                                                                               AnalogImageLocation_id
                                                                               IncludeInFinalObjectReport
RequestReportTechnicalInfos
                                                                               Report
                    Column Name
                                                                               LastUpdateUserName
   RequestReport_id
                                                                               LastUpdateTime
   TechnicalNotes
                                                                               RequestTMSObject_id
   BetaRadiograph
                                                                               Attachment                                                                      RequestReportWorkOrders
   XRayFluorescenceSpectroscopy
                                                                               Image                                                                                                  Column Name
   InfraredSpectroscopy                   RequestReportDACs
                                                         Column Name           RequestNonTMSObject_id                   RequestReportAttachments                 RequestReport_WorkOrder_id
   MicroFadometer
                                                                                                                                      Column Name                RequestReport_id
                                            RequestReport_DAC_id
   FourierTransformInfraredSpectroscopy                                                                                    RequestReportAttachment_id            WorkOrder_Line
                                            RequestReport_id
   FluorescenceSpectroscopy                                                                                                RequestReport_id                      WorkOrderType_id
                                            DAC_Record_id
   ColorSpectroscopy                                                                                                       FileName                              LastUpdateUserName
                                            Comment
   None
   Other
                                            LastUpdateUserName
                                                                                                                           Comment                               LastUpdateTime
                                                                                                                                                                                                    62
                                            LastUpdateTime
   OtherDescription
PHPRunner Actual Data                                          Requests




                                                                  Request
                                                                   Report




                                                                 Request
                                                                  Report
                                                                Workorders




Normalized means the new child tables can be added or deleted, with little impact
                                                                              63
On the rest of the database, also unlimited child tables can be added
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)


                                                                                64
IRIS Data Model
Line_Items                            (                               Deliverables                             (
                                                                                                                                                                                                                     The Metastorm Data Model is
                                                                                                                                                                                                                     Generated to Support the Workflow
  EFOLDERID                     nvarchar      (31)    NOT  NULL   ,      Id                        int IDENTITY    (1, 1) NOT NULL ,
  AO_AccNum
  AO_Artist
  AO_ArtTreatment
                                nvarchar
                                nvarchar
                                smallint
                                              (250)
                                              (250)
                                                       NULL
                                                           NULL
                                                           NULL
                                                                  ,
                                                                  ,
                                                                  ,
                                                                         Name
                                                                         Cost
                                                                                                   nvarchar
                                                                                                   int NOT
                                                                                                               (250)      NOT NULL ,
                                                                                                                            NULL              Work_Order                            (
  AO_Complete _Total             money                  NULL      ,                                                                             EFOLDERID                     nvarchar      (31)     NOT  NULL   ,
  AO_DateNeeded                 datetime               NULL       ,                                                                             Account                       nvarchar      (250 )        NULL   ,
  AO_Deliverables               nvarchar      (250)        NULL   ,                                                                             AO_AccNum                     nvarchar      (250 )        NULL   ,
  AO_Description                ntext                  NULL       ,                                                                             AO_Artist                     nvarchar      (250 )        NULL   ,
  AO_DexNum                     nvarchar      (250)        NULL   ,                                                                             AO_ArtTreatment               smallint                NULL       ,
  AO_Dimensions                 nvarchar      (250)        NULL   ,                                                                             AO_Complete _Total             money                   NULL      ,
  AO_ExistingAssets             ntext                  NULL       ,                                                                             AO_DateNeeded                 datetime                NULL       ,




                                                                                                                                                                                                                     Diagrams.
  AO_Height                     int                    NULL       ,                                                                             AO_Deliverables               nvarchar      (250 )        NULL   ,


                                                                      Projects
  AO_Id                         nvarchar      (250)        NULL   ,                                                                             AO_Description                ntext                   NULL       ,
  AO_Info                       ntext                  NULL       ,                                                                             AO_DexNum                     nvarchar      (250 )        NULL   ,
  AO_Lecture                    smallint               NULL       ,                            (                                                AO_Dimensions                 nvarchar      (250 )        NULL   ,
  AO_LightAngle                 nvarchar      (250)        NULL   ,       Id                       int IDENTITY    (1, 1) NOT      NULL ,       AO_Duty1                        nvarchar    (250 )        NULL   ,
  AO_lineItemNum                nvarchar      (250)        NULL   ,       Name                     varchar    (400)       NOT      NULL         AO_Duty2                        nvarchar    (250 )        NULL   ,
  AO_LocalPrinting              smallint               NULL       ,                                                                             AO_ExistingAssets             nvarchar      (250 )        NULL   ,
  AO_NewAssets                  ntext                  NULL       ,                                                                             AO_Height                     int                     NULL       ,
  AO_NonNGAObj                  smallint               NULL       ,                                                                             AO_Id                         nvarchar      (250 )        NULL   ,
  AO_ObjectClass                nvarchar      (250)        NULL   ,                                                                             AO_Lecture                    smallint                NULL       ,
  AO_PhotographicCost           money                  NULL       ,                                                                             AO_LightAngle                 nvarchar      (250 )        NULL   ,
  AO_Prepress                   smallint               NULL       ,                                                                             AO_lineItemNum                nvarchar      (250 )        NULL   ,
  AO_ProductionJournal          ntext                  NULL       ,                                                                             AO_LocalPrinting              smallint                NULL       ,
  AO_Quantity                   int                    NULL       ,                                                                             AO_NewAssets                  nvarchar      (250 )        NULL   ,
  AO_SpecialDeliveryInstructions     ntext             NULL       ,                                                                             AO_NonNGAObj                  smallint                NULL       ,
  AO_Spectrum                   nvarchar      (250)        NULL   ,                                                                             AO_ObjectClass                nvarchar      (250 )        NULL   ,
  AO_Status                     nvarchar      (250)        NULL   ,                                                                             AO_PhotographicCost           money                   NULL       ,
  AO_Title                      nvarchar      (250)        NULL   ,                                                                             AO_Prepress                   smallint                NULL       ,
  AO_Total                      money                  NULL       ,                                                                             AO_ProductionJournal          ntext                   NULL       ,
  AO_TreatmentPhase             nvarchar      (250)        NULL   ,                                                                             AO_Quantity                   int                     NULL       ,
  AO_VisualReference            smallint               NULL       ,                                                                             AO_SpecialDeliveryInstructions     ntext              NULL       ,

                                                                      Requestors
                                                                                                                                                                                                                     It is not a logical Representation of
  AO_Web                        smallint               NULL       ,                                                                             AO_Spectrum                   nvarchar      (250 )        NULL   ,
  AO_Width                      int                    NULL       ,                                    (                                        AO_Staff 1                      nvarchar    (250 )        NULL   ,
  Assignee 1                      nvarchar    (250)        NULL   ,                                                                             AO_Staff 2                      nvarchar    (250 )        NULL   ,
  Assignee 2                      nvarchar    (250)        NULL   ,      Id                        int IDENTITY    (1, 1) NOT      NULL ,       AO_Status                     nvarchar      (250 )        NULL   ,
  checkDeliverables             smallint               NULL       ,      Name                      varchar    (250)       NOT      NULL ,       AO_Status 1                     nvarchar    (250 )        NULL   ,
  DeliverablesAmount            int                    NULL       ,      Office                    varchar    (150)                NULL ,       AO_Status 2                     nvarchar    (250 )        NULL   ,
  destinationFolderId           nvarchar      (250)        NULL   ,      Phone                     varchar    (50)                 NULL ,       AO_Studio 1                     nvarchar    (250 )        NULL   ,
  destinationFolderName         nvarchar      (250)        NULL   ,      eName                     varchar    (150)                NULL         AO_Studio 2                     nvarchar    (250 )        NULL   ,
  Difference _Total              money                  NULL      ,                                                                             AO_Title                      nvarchar      (250 )        NULL   ,
  Duty 1                          nvarchar    (250)        NULL   ,                                                                             AO_Total                      money                   NULL       ,




                                                                                                                                                                                                                     Data Business Rules
  Duty 2                          nvarchar    (250)        NULL   ,                                                                             AO_TreatmentPhase             nvarchar      (250 )        NULL   ,
  EP_AdditionalDetails          ntext                  NULL       ,                                                                             AO_VisualReference            smallint                NULL       ,
  EP_ArtTreatment               smallint               NULL       ,                                                                             AO_Web                        smallint                NULL       ,
  EP_Cell                       nvarchar      (250)        NULL   ,                                                                             AO_Width                      int                     NULL       ,
  EP_Complete _Total             money                  NULL      ,                                                                             Assignee 1                      nvarchar    (250 )        NULL   ,
  EP_Contact                    nvarchar      (250)        NULL   ,                                                                             Assignee 2                      nvarchar    (250 )        NULL   ,
  EP_DateNeeded                 datetime               NULL       ,                                                                             BriefDescription              ntext                   NULL       ,
  EP_Dress
  EP_Email
                                nvarchar
                                nvarchar
                                              (250)
                                              (250)
                                                           NULL
                                                           NULL
                                                                  ,
                                                                  ,   eEvent          (
                                                                                                                                                checkDeliverables
                                                                                                                                                Code
                                                                                                                                                                              smallint
                                                                                                                                                                              nvarchar      (250 )
                                                                                                                                                                                                      NULL
                                                                                                                                                                                                          NULL
                                                                                                                                                                                                                 ,
                                                                                                                                                                                                                 ,
  EP_EventEnd                   datetime               NULL       ,       eFolderID                nvarchar    (31)          NOT NULL     ,     Comments                      ntext                   NULL       ,
  EP_EventName                  nvarchar      (250)        NULL   ,       eEventID                 int                 NOT     NULL       ,     CostAdjustments               float                   NULL       ,
  EP_EventStart                 datetime               NULL       ,       eVersion                 int                         NULL       ,     DateBilled                    datetime                NULL       ,
  EP_EventType                  nvarchar      (250)        NULL   ,       ePriority                smallint                    NULL       ,     DateDelivered                 datetime                NULL       ,
  EP_ExistingAssets             ntext                  NULL       ,       eEventTime               datetime                    NULL       ,     DateNeeded                    datetime                NULL       ,
  EP_Fax                        nvarchar      (250)        NULL   ,       eEntryTime               datetime                    NULL       ,     DateSubmitted                 datetime                NULL       ,
  EP_Info                       ntext                  NULL       ,       eDeadline                datetime                    NULL       ,     DeliverablesAmount            int                     NULL       ,
  EP_Lecture                    smallint               NULL       ,       eMapName                 nvarchar    (31)                NULL   ,     DeliveryMedia                 nvarchar      (250 )        NULL   ,
  EP_lineItemNum                nvarchar      (250)        NULL   ,       eFromStage               nvarchar    (31)                NULL   ,     DivisionCenter                nvarchar      (250 )        NULL   ,
  EP_LocalPrinting              smallint               NULL       ,       eActionName              nvarchar    (31)                NULL   ,     Duty 1                          nvarchar    (250 )        NULL   ,
  EP_Location                   nvarchar      (250)        NULL   ,       eToStage                 nvarchar    (31)                NULL   ,     Duty 2                          nvarchar    (250 )        NULL   ,
  EP_NewAssets                  ntext                  NULL       ,       eUserName                nvarchar    (100)               NULL   ,     EmailAddress                  nvarchar      (250 )        NULL   ,
  EP_PhotographerEnd            datetime               NULL       ,       eFlagName                nvarchar    (63)                NULL   ,     EmailMessage                  ntext                   NULL       ,
  EP_PhotographerStart          datetime               NULL       ,       eFlagFolder              nvarchar    (31)                NULL   ,     EmailSubject                  nvarchar      (250 )        NULL   ,
  EP_PhotographicCost           money                  NULL       ,       eAlertMessage            nvarchar    (250)               NULL   ,     EP_AdditionalDetails          ntext                   NULL       ,
  EP_Prepress                   smallint               NULL       ,       eNotes                   ntext                       NULL             EP_ArtTreatment               smallint                NULL       ,
  EP_ProductionJournal          ntext                  NULL       ,                                                                             EP_Cell                       nvarchar      (250 )        NULL   ,
  EP_SpecialDeliveryInstructions     ntext             NULL       ,                                                                             EP_Complete _Total             money                   NULL      ,
  EP_Total                      money                  NULL       ,                                                                             EP_Contact                    nvarchar      (250 )        NULL   ,
  EP_VisualReference            smallint               NULL       ,                                                                             EP_DateNeeded                 datetime                NULL       ,
  EP_Web                        smallint               NULL       ,                                                                             EP_Dress                      nvarchar      (250 )        NULL   ,
  Line _Item _Total              money                  NULL      ,                                                                             EP_Email                      nvarchar      (250 )        NULL   ,
  memAssignments                ntext                  NULL       ,                                                                             EP_EventEnd                   datetime                NULL       ,
  msg                           nvarchar      (250)        NULL   ,                                                                             EP_EventName                  nvarchar      (250 )        NULL   ,
  NAO _ArtTreatment             smallint               NULL       ,                                                                             EP_EventStart                 datetime                NULL       ,
  NAO _Complete _Total           money                  NULL      ,                                                                             EP_EventType                  nvarchar      (250 )        NULL   ,
  NAO _DateNeeded               datetime               NULL       ,                                                                             EP_ExistingAssets             nvarchar      (250 )        NULL   ,
  NAO _Deliverables             nvarchar      (250)        NULL   ,                                                                             EP_Fax                        nvarchar      (250 )        NULL   ,
  NAO _Description              ntext                  NULL       ,                                                                             EP_Lecture                    smallint                NULL       ,




                                                                                                                                                                                                                           Workflow Diagramming is
  NAO _Dimensions               nvarchar      (250)        NULL   ,                                                                             EP_lineItemNum                nvarchar      (250 )        NULL   ,
  NAO _ExistingAssets           ntext                  NULL       ,                                                                             EP_LocalPrinting              smallint                NULL       ,
  NAO _Height                   int                    NULL       ,                                                                             EP_Location                   nvarchar      (250 )        NULL   ,
  NAO _ID                       nvarchar      (250)        NULL   ,                                                                             EP_NewAssets                  nvarchar      (250 )        NULL   ,
  NAO _Info                     ntext                  NULL       ,                                                                             EP_PhotographerEnd            datetime                NULL       ,
  NAO _Lecture                  smallint               NULL       ,                                                                             EP_PhotographerStart          datetime                NULL       ,


                                                                      eFolder
  NAO _lineItemNum              nvarchar      (250)        NULL   ,                                                                             EP_PhotographicCost           money                   NULL       ,
  NAO _LocalPrinting            smallint               NULL       ,                                                                             EP_Prepress                   smallint                NULL       ,
  NAO _NewAssets                ntext                  NULL       ,                        (                                                    EP_ProductionJournal          ntext                   NULL       ,
  NAO _ObjectType               nvarchar      (250)        NULL   ,                                                                             EP_SpecialDeliveryInstructions     ntext              NULL       ,
                                                                          eFolderID                nvarchar    (31)          NOT NULL     ,
                                                                                                                                                EP_Total                      money                   NULL       ,




                                                                                                                                                                                                                           Where Metastorm Excels
  NAO _PhotographicCost         money                  NULL       ,       eParent                  nvarchar    (31)               NULL    ,
  NAO _Prepress                 smallint               NULL       ,                                                                             EP_VisualReference            smallint                NULL       ,
                                                                          eFolderName              nvarchar    (31)               NULL    ,
  NAO _ProductionJournal        ntext                  NULL       ,       eStageName               nvarchar    (31)               NULL    ,     EP_Web                        smallint                NULL       ,
  NAO _Quantity                 int                    NULL       ,       eMapName                 nvarchar    (31)               NULL    ,     FundSource                    nvarchar      (250 )        NULL   ,
  NAO _Source                   nvarchar      (250)        NULL   ,                                                                             initStatus                    nvarchar      (250 )        NULL   ,
                                                                          eServerName              nvarchar    (31)               NULL    ,
  NAO _SpecialDeliveryInstructions    ntext            NULL       ,                                                                             Instructions                  ntext                   NULL       ,
                                                                          eCategory                nvarchar    (31)               NULL    ,
  NAO _Total                    money                  NULL       ,                                                                             LineItems                     nvarchar      (250 )        NULL   ,
                                                                          eOriginator              nvarchar    (100)              NULL    ,
  NAO _VisualReference          smallint               NULL       ,       eSubject                 nvarchar    (250)              NULL    ,     mediaPrice                    money                   NULL       ,
  NAO _Web                      smallint               NULL       ,       eArchived                smallint                   NULL        ,     NAO _ArtTreatment             smallint                NULL       ,
  NAO _Width                    int                    NULL       ,       ePriority                smallint                   NULL        ,     NAO _Complete _Total           money                   NULL      ,
  nextStage                     nvarchar      (250)        NULL   ,                                                                             NAO _DateNeeded               datetime                NULL       ,
                                                                          eActionCount             int                        NULL        ,
  O_ArtTreatment                smallint               NULL       ,       eCreationTime            datetime                   NULL        ,     NAO _Deliverables             nvarchar      (250 )        NULL   ,
  O_Complete _Total              money                  NULL      ,       eEntryTime               datetime                   NULL        ,     NAO _Description              ntext                   NULL       ,
  O_DateNeeded                  datetime               NULL       ,       eUpdated                 datetime                   NULL        ,     NAO _Dimensions               nvarchar      (250 )        NULL   ,
  O_Deliverables                nvarchar      (250)        NULL   ,                                                                             NAO _ExistingAssets           nvarchar      (250 )        NULL   ,
                                                                          eDeadline                datetime                   NULL        ,
  O_Description                 ntext                  NULL       ,                                                                             NAO _Height                   int                     NULL       ,
                                                                          eActionTime              datetime                   NULL        ,
  O_ExistingAssets              ntext                  NULL       ,                                                                             NAO _ID                       nvarchar      (250 )        NULL   ,
                                                                          eActionName              nvarchar    (31)               NULL    ,
  O_Height                      int                    NULL       ,       eActionUser              nvarchar    (100)              NULL    ,     NAO _Lecture                  smallint                NULL       ,
  O_Info                        ntext                  NULL       ,       eFragmentStack           ntext                      NULL              NAO _lineItemNum              nvarchar      (250 )        NULL   ,
  O_Lecture                     smallint               NULL       ,                                                                             NAO _LocalPrinting            smallint                NULL       ,
  O_lineItemNum                 nvarchar      (250)        NULL   ,                                                                             NAO _NewAssets                nvarchar      (250 )        NULL   ,
  O_LocalPrinting               smallint               NULL       ,                                                                             NAO _ObjectType               nvarchar      (250 )        NULL   ,
  O_NewAssets                   ntext                  NULL       ,                                                                             NAO _PhotographicCost         money                   NULL       ,
  O_PhotographicCost            money                  NULL       ,                                                                             NAO _Prepress                 smallint                NULL       ,
  O_Prepress                    smallint               NULL       ,                                                                             NAO _ProductionJournal        ntext                   NULL       ,
  O_ProductionJournal           ntext                  NULL       ,                                                                             NAO _Quantity                 int                     NULL       ,
  O_Quantity                    int                    NULL       ,                                                                             NAO _Source                   nvarchar      (250 )        NULL   ,
  O_SpecialDeliveryInstructions     ntext              NULL       ,                                                                             NAO _SpecialDeliveryInstructions    ntext             NULL       ,
  O_Total                       money                  NULL       ,                                                                             NAO _Total                    money                   NULL       ,
  O_VisualReference             smallint               NULL       ,                                                                             NAO _VisualReference          smallint                NULL       ,
  O_Web                         smallint               NULL       ,                                                                             NAO _Web                      smallint                NULL       ,
  O_Width                       int                    NULL       ,                                                                             NAO _Width                    int                     NULL       ,
  old _parent                   nvarchar      (250)        NULL   ,                                                                             nextStage                     nvarchar      (250 )        NULL   ,
  old _parent _foldername        nvarchar     (250)        NULL   ,                                                                             O_ArtTreatment                smallint                NULL       ,
  Old _Total                    money                  NULL       ,                                                                             O_Complete _Total              money                   NULL      ,
  prnt                          nvarchar      (250)        NULL   ,                                                                             O_DateNeeded                  datetime                NULL       ,
  prntFolderName                nvarchar      (250)        NULL   ,                                                                             O_Deliverables                nvarchar      (250 )        NULL   ,
  ProductionStartDate           datetime               NULL       ,                                                                             O_Description                 ntext                   NULL       ,
  Requestor                     nvarchar      (250)        NULL   ,                                                                             O_ExistingAssets              nvarchar      (250 )        NULL   ,
  result                        nvarchar      (250)        NULL   ,                                                                             O_Height                      int                     NULL       ,
  resultCount                   int                    NULL       ,                                                                             O_Lecture                     smallint                NULL       ,
  Staff1                          nvarchar    (250)        NULL   ,                                                                             O_lineItemNum                 nvarchar      (250 )        NULL   ,
  Staff2                          nvarchar    (250)        NULL   ,                                                                             O_LocalPrinting               smallint                NULL       ,
  Status                        nvarchar      (250)        NULL   ,                                                                             O_NewAssets                   nvarchar      (250 )        NULL   ,
  Status 1                        nvarchar    (250)        NULL   ,                                                                             O_PhotographicCost            money                   NULL       ,
  Status 2                        nvarchar    (250)        NULL   ,                                                                             O_Prepress                    smallint                NULL       ,
  Studio 1                        nvarchar    (250)        NULL   ,                                                                             O_ProductionJournal           ntext                   NULL       ,
  Studio 2                        nvarchar    (250)        NULL   ,                                                                             O_Quantity                    int                     NULL       ,
  tmpPrnt                       nvarchar      (250)        NULL   ,                                                                             O_SpecialDeliveryInstructions     ntext               NULL       ,
  txtUrgent                     nvarchar      (250)        NULL   ,                                                                             O_Total                       money                   NULL       ,
  type                          nvarchar      (250)        NULL   ,                                                                             O_VisualReference             smallint                NULL       ,
  urgent                        smallint               NULL       ,                                                                             O_Web                         smallint                NULL       ,
  WO_initiator                  nvarchar      (250)        NULL   ,                                                                             O_Width                       int                     NULL       ,
  EP_OfficePhone                nvarchar      (250)        NULL   ,                                                                             OrderCloseDate                datetime                NULL       ,
  WorkOrderApproved             nvarchar      (250)        NULL   ,                                                                             OrderStatus                   nvarchar      (250 )        NULL   ,
  AO_Medium                     nvarchar      (250)        NULL   ,                                                                             OrderTotal                    float                   NULL       ,
  newPhotography                smallint               NULL       ,                                                                             p_Total                       money                   NULL       ,
  AO_Other                      smallint               NULL       ,                                                                             prntFolderName                nvarchar      (250 )        NULL   ,
  AO_Unknown                    smallint               NULL       ,                                                                             ProductionJournal             ntext                   NULL       ,
  AO_AssetName                  nvarchar      (250)        NULL   ,                                                                             ProjID                        nvarchar      (250 )        NULL   ,
  AO_EAStatus                   nvarchar      (250)        NULL   ,                                                                             ProjNum                       nvarchar      (250 )        NULL   ,
  AO_FileName                   nvarchar      (250)        NULL   ,                                                                             PurchasingCategories          nvarchar      (250 )        NULL   ,
  NAO _AssetName                nvarchar      (250)        NULL   ,                                                                             RecipientName                 nvarchar      (250 )        NULL   ,
  NAO _EAStatus                 nvarchar      (250)        NULL   ,                                                                             RecipientOffice               nvarchar      (250 )        NULL   ,
  NAO _FileName                 nvarchar      (250)        NULL   ,                                                                             RecipientPhone                nvarchar      (250 )        NULL   ,
  NAO _Other                    smallint               NULL       ,                                                                             RequestorName                 nvarchar      (250 )        NULL   ,
  NAO _Unknown                  smallint               NULL       ,                                                                             RequestorOffice               nvarchar      (250 )        NULL   ,
  O_Other                       smallint               NULL       ,                                                                             RequestorPhone                nvarchar      (250 )        NULL   ,
  O_Unknown                     smallint               NULL       ,                                                                             Result                        nvarchar      (250 )        NULL   ,
  Deliverables                  nvarchar      (250)        NULL   ,                                                                             Staff 1                         nvarchar    (250 )        NULL   ,
  Quantity                      int                    NULL                                                                                     Staff 2                         nvarchar    (250 )        NULL   ,
                                                                                                                                                Status                        nvarchar      (250 )        NULL   ,
                                                                                                                                                Status 1                        nvarchar    (250 )        NULL   ,
                                                                                                                                                Status 2                        nvarchar    (250 )        NULL   ,
                                                                                                                                                Studio 1                        nvarchar    (250 )        NULL   ,
                                                                                                                                                Studio 2                        nvarchar    (250 )        NULL   ,
                                                                                                                                                Temp 1                          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   ,




                                                                                                                                                                                                                                                             65
                                                                                                                                                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
IRIS Data Model
Line_Items                           (                                       Deliverables                             (
  EFOLDERID                    nvarchar     (31)    NOT  NULL   ,                   Id                   int IDENTITY    (1, 1) N
  AO_AccNum                    nvarchar     (250)        NULL   ,                   Name                 nvarchar    (250)      N
  AO_Artist                    nvarchar     (250)        NULL   ,                   Cost                 int NOT
  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
  AO_Info
  AO_Lecture
  AO_LightAngle
                               nvarchar
                               ntext
                               smallint
                               nvarchar
                                            (250)


                                            (250)
                                                     NULL
                                                     NULL
                                                         NULL


                                                         NULL
                                                                ,
                                                                ,
                                                                ,
                                                                ,
                                                                              Projects               (

                                                                                    Id                   int IDENTITY   (1, 1)
  AO_lineItemNum               nvarchar     (250)        NULL   ,                   Name                 varchar   (400)
  AO_LocalPrinting             smallint              NULL       ,
  AO_NewAssets                 ntext                 NULL       ,
  AO_NonNGAObj                 smallint              NULL       ,

                                                                    Database
  AO_ObjectClass               nvarchar     (250)        NULL   ,
  AO_PhotographicCost          money                 NULL       ,
  AO_Prepress                  smallint              NULL       ,
  AO_ProductionJournal
  AO_Quantity
                               ntext
                               int
  AO_SpecialDeliveryInstructions    ntext
                                                     NULL
                                                     NULL
                                                     NULL
                                                                ,
                                                                ,
                                                                ,
                                                                    Enforce integrity
  AO_Spectrum
  AO_Status
                               nvarchar
                               nvarchar
                                            (250)
                                            (250)
                                                         NULL
                                                         NULL
                                                                ,
                                                                ,   Not used
  AO_Title                     nvarchar     (250)        NULL   ,
  AO_Total
  AO_TreatmentPhase
                               money
                               nvarchar     (250)
                                                     NULL
                                                         NULL
                                                                ,
                                                                ,
                                                                    (Possible?)
  AO_VisualReference           smallint              NULL       ,
  AO_Web
  AO_Width
  Assignee 1
                               smallint
                               int
                                 nvarchar   (250)
                                                     NULL
                                                     NULL
                                                         NULL
                                                                ,
                                                                ,
                                                                ,
                                                                             Requestors                      (

  Assignee 2                     nvarchar   (250)        NULL   ,                   Id                   int IDENTITY    (1, 1) N
  checkDeliverables            smallint              NULL       ,                   Name                 varchar    (250)       N
  DeliverablesAmount           int                   NULL       ,                   Office               varchar    (150)
  destinationFolderId          nvarchar     (250)        NULL   ,                   Phone                varchar    (50)
  destinationFolderName        nvarchar     (250)        NULL   ,                   eName                varchar    (150)
  Difference _Total             money                 NULL      ,
  Duty 1                         nvarchar   (250)        NULL   ,
  Duty 2                         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
  EP_Email
                               nvarchar
                               nvarchar
                                            (250)
                                            (250)
                                                         NULL
                                                         NULL
                                                                ,
                                                                ,             eEvent             (
  EP_EventEnd                  datetime              NULL       ,                   eFolderID            nvarchar     (31)
  EP_EventName                 nvarchar     (250)        NULL   ,                   eEventID             int     66          NOT
  EP_EventStart                datetime              NULL       ,                   eVersion             int
  EP_EventType                 nvarchar     (250)        NULL   ,                   ePriority            smallint
  EP_ExistingAssets            ntext                 NULL       ,                   eEventTime           datetime
Line_Items


                       IRIS Data Model
                                                                                                 (
                                                              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
                                                              AO_Info
                                                              AO_Lecture
                                                                                           nvarchar
                                                                                           ntext
                                                                                           smallint
                                                                                                         (250)
                                                                                                                  NULL
                                                                                                                  NULL
                                                                                                                      NULL   ,
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                                 Art Object
                                                              AO_LightAngle                nvarchar      (250)        NULL   ,
                                                              AO_lineItemNum               nvarchar      (250)        NULL   ,
                                                              AO_LocalPrinting             smallint               NULL       ,
                                                              AO_NewAssets                 ntext                  NULL       ,
                                                              AO_NonNGAObj
                                                              AO_ObjectClass
                                                                                           smallint
                                                                                           nvarchar      (250)
                                                                                                                  NULL
                                                                                                                      NULL
                                                                                                                             ,
                                                                                                                             ,   Where type =
                                                              AO_PhotographicCost          money                  NULL       ,




           Art                   Non
                                                              AO_Prepress                  smallint               NULL       ,
                                                                                                                                     “Art”

  IRIS                                             Temp
                                                              AO_ProductionJournal         ntext                  NULL       ,
                                                              AO_Quantity                  int                    NULL       ,
                                                              AO_SpecialDeliveryInstructions    ntext             NULL       ,
                                                              AO_Spectrum                  nvarchar      (250)        NULL   ,




                     Event
                                                              AO_Status                    nvarchar      (250)        NULL   ,




Folder ID Object                          Other
                                                              AO_Title                     nvarchar      (250)        NULL   ,




                                 Art
                                                              AO_Total                     money                  NULL       ,


                                                   Screen
                                                              AO_TreatmentPhase            nvarchar      (250)        NULL   ,
                                                              AO_VisualReference           smallint               NULL       ,
                                                              AO_Web                       smallint               NULL       ,
                                                              AO_Width                     int                    NULL       ,
                                                              Assignee 1                      nvarchar   (250)        NULL   ,


                                                    Data
                                                              Assignee 2                      nvarchar   (250)        NULL   ,
                                                              checkDeliverables            smallint               NULL       ,
                                                              DeliverablesAmount           int                    NULL       ,
                                                              destinationFolderId          nvarchar      (250)        NULL   ,
                                                              destinationFolderName        nvarchar      (250)        NULL   ,
                                                              Difference _Total             money                  NULL      ,
                                                              Duty 1                          nvarchar   (250)        NULL   ,



            Art
                                                              Duty 2                          nvarchar   (250)        NULL   ,
                                                              EP_AdditionalDetails         ntext                  NULL       ,
                                                              EP_ArtTreatment              smallint               NULL       ,
                                                              EP_Cell                      nvarchar      (250)        NULL   ,




                                                   ignore
                                                              EP_Complete _Total            money                  NULL      ,



           Object
                                                              EP_Contact                   nvarchar      (250)        NULL   ,
                                                              EP_DateNeeded                datetime               NULL       ,



                     ignore      ignore   ignore
                                                              EP_Dress                     nvarchar      (250)        NULL   ,
                                                              EP_Email                     nvarchar      (250)        NULL   ,
                                                              EP_EventEnd                  datetime               NULL       ,



            Info
                                                              EP_EventName                 nvarchar      (250)        NULL   ,
                                                              EP_EventStart                datetime               NULL       ,
                                                              EP_EventType
                                                              EP_ExistingAssets
                                                              EP_Fax
                                                              EP_Info
                                                                                           nvarchar
                                                                                           ntext
                                                                                           nvarchar
                                                                                           ntext
                                                                                                         (250)

                                                                                                         (250)
                                                                                                                  NULL

                                                                                                                  NULL
                                                                                                                      NULL

                                                                                                                      NULL
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                                  Events
                                                              EP_Lecture                   smallint               NULL       ,
                                                              EP_lineItemNum               nvarchar      (250)        NULL   ,
                                                              EP_LocalPrinting             smallint               NULL       ,
                                                              EP_Location
                                                              EP_NewAssets
                                                                                           nvarchar
                                                                                           ntext
                                                                                                         (250)
                                                                                                                  NULL
                                                                                                                      NULL   ,
                                                                                                                             ,   Where type =
           ignore   Event info   ignore            ignore
                                                              EP_PhotographerEnd           datetime               NULL       ,
                                                              EP_PhotographerStart         datetime               NULL       ,
                                                                                                                                   “Event”
                                          ignore
                                                              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   ,

                                                                                                                                  Non Art
                                                   ignore
                                                              NAO_Description               ntext                 NULL       ,



           ignore   Event info
                                                              NAO_Dimensions                nvarchar     (250)        NULL   ,


                                 ignore   ignore
                                                              NAO_ExistingAssets            ntext                 NULL       ,
                                                              NAO_Height                    int                   NULL       ,
                                                              NAO_ID
                                                              NAO_Info
                                                              NAO_Lecture
                                                                                            nvarchar
                                                                                            ntext
                                                                                            smallint
                                                                                                         (250)
                                                                                                                  NULL
                                                                                                                  NULL
                                                                                                                      NULL   ,
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                                  Object
                                                              NAO_lineItemNum               nvarchar     (250)        NULL   ,
                                                              NAO_LocalPrinting             smallint              NULL       ,
                                                              NAO_NewAssets                 ntext                 NULL       ,
                                                              NAO_ObjectType                nvarchar     (250)        NULL   ,
                                                              NAO_PhotographicCost
                                                              NAO_Prepress
                                                                                            money
                                                                                            smallint
                                                                                                                  NULL
                                                                                                                  NULL
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                                 Where type =
                                                              NAO_ProductionJournal         ntext                 NULL       ,
                                                              NAO_Quantity
                                                              NAO_Source
                                                                                            int
                                                                                            nvarchar     (250)
                                                                                                                  NULL
                                                                                                                      NULL
                                                                                                                             ,
                                                                                                                             ,     “Non Art”

                                                   ignore
                                                              NAO_SpecialDeliveryInstructions    ntext            NULL       ,



           ignore    ignore      NonArt
                                                              NAO_Total                     money                 NULL       ,


                                          ignore
                                                              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 = Other
                                                              O_ExistingAssets             ntext                  NULL       ,
                                                              O_Height                     int                    NULL       ,
                                                              O_Info                       ntext                  NULL       ,
                                                              O_Lecture                    smallint               NULL       ,




                                                   ignore
                                                              O_lineItemNum                nvarchar      (250)        NULL   ,
                                                              O_LocalPrinting              smallint               NULL       ,


           ignore    ignore      ignore   Other
                                                              O_NewAssets                  ntext                  NULL       ,
                                                              O_PhotographicCost           money                  NULL       ,
                                                              O_Prepress                   smallint               NULL       ,   Where type =
                                                              O_ProductionJournal          ntext                  NULL       ,
                                                              O_Quantity                   int                    NULL       ,
                                                              O_SpecialDeliveryInstructions
                                                              O_Total
                                                                                               ntext
                                                                                           money
                                                                                                                  NULL
                                                                                                                  NULL
                                                                                                                             ,
                                                                                                                             ,
                                                                                                                                   “Other”
                                                              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   ,




                                                   ignore
                                                              prntFolderName               nvarchar      (250)        NULL   ,



           ignore    ignore      ignore   Other
                                                              ProductionStartDate          datetime               NULL       ,
                                                              Requestor                    nvarchar      (250)        NULL   ,
                                                              result                       nvarchar      (250)        NULL   ,
                                                              resultCount                  int                    NULL       ,
                                                              Staff 1                         nvarchar   (250)        NULL   ,
                                                              Staff 2                         nvarchar   (250)        NULL   ,
                                                              Status                       nvarchar      (250)        NULL   ,
                                                              Status 1                        nvarchar   (250)        NULL   ,


            Art
                                                              Status 2                        nvarchar   (250)        NULL   ,
                                                              Studio 1                        nvarchar   (250)        NULL   ,
                                                              Studio 2                        nvarchar   (250)        NULL   ,
                                                              tmpPrnt                      nvarchar      (250)        NULL   ,



           Object
                                                              txtUrgent                    nvarchar      (250)        NULL   ,
                                                              type                         nvarchar      (250)        NULL   ,
                                                              urgent                       smallint               NULL       ,



                     ignore                        ignore
                                                              WO_initiator                 nvarchar      (250)        NULL   ,
                                                              EP_OfficePhone               nvarchar      (250)        NULL   ,


                                 ignore   ignore
                                                              WorkOrderApproved            nvarchar      (250)        NULL   ,
                                                              AO_Medium                    nvarchar      (250)        NULL   ,
                                                              newPhotography               smallint               NULL       ,
                                                              AO_Other                     smallint               NULL       ,



            Info
                                                              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       ,




                                                   ignore
                                                              O_Other                      smallint               NULL       ,



                                                                                                                                  67
                                                              O_Unknown                    smallint               NULL       ,


                    Event info   ignore   ignore
                                                              Deliverables                 nvarchar      (250)        NULL   ,


          ignore
                                                              Quantity                     int                    NULL
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"


                                                                       68
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

                                                                               69
Metastorm Actual Table (Imaging_Services_LI)
                                                                       Logical Header
                                                                       Table info (2NF)



                                     Logical                   Logical
                                     Art Table Info (2NF)      Event Line




                                                     Values
                               Logical               Not Codes
                               Non Art               (1NF issue)
                               Data (2NF)

                                                             Work Order
                                                               Lines
Miscellaneous Data (Not Shown in this sample)                                    70
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




                                                      71
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
      Projects      Headers
                                      Lines                 Workflow
                      for              with                  events
                    Imaging                                 for lines
                                     common
     Requestors     Request            info


        Workflow
         events      Lines for   Lines for     Lines for     Lines for
       For header      Event        Art          other         nonart
                     request      request       request       request


                                             Deliverables                72
Documentation (DIR)
• Project Folder
  – ngagroupTTDPProjectsDIR- DIV Images Request System



• Documents
  – Converting Metastorm Schema in a Reportable ERD model
    (DIR)-20070919a 1 1.doc




                                                                73
Architecture

       Web Browser
                           `




PHPRunner Application Server
      (Web Server)




    SQL Server Database


                               74
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



                                                         75
Screen Customization




Override events can behard to say “no” since, it so easy … However,
                     Very added in define locations
                       I really demand a very good reason, and prefer
This little block of code says        To avoid this . . .
1. Prompt user message to load approvals
2. If selected, CallLots of this, can cause serious maintenance issues
                      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                                           76
Business Modeling through Data
            Model
• Define Relationships Between Data

                Parent          Primary
               Eye Color: Bwn    Home




               Child
                Child
                 Child



                                          77
Architecture

       Web Browser
                           `




PHPRunner Application Server
      (Web Server)




    SQL Server Database


                               78
DCLPA (July 2008)
  The current Filemaker database on
 the MAC is having lots of problems, I
              need help


         Greg and Art, Can you Help us


          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
                                                          79
                        do things… Were on board!
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


                   In that case, “Nevermind”


     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.
                                                      80
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

                                                  81
Time
• Working with DCLPA to document existing
  processes (~ 1 FTEWeeks)
• Working with DCLPA to defineimprove
  processed and to define the data relationships
  (~ 1-2 FTEWeeks)
• Requirements and Design (~1 week)
• CodingUI (~ 2 FTEWeeks)
• Testing (~ 1 Week)

• Development of ADS Charter (?)

                                                   82
Data Model Iterations
    Refined the data model as we to envision how use cases would work with it !
                                                                                                                                 Request
                                                                                                                                                                                                                    ApprovingUserRoles                           ApprovingRoles
                                                                                                                                                                                                                                                                    ApprovingRole_id
                                                                                                                                   Request_id                                                                           A pprovingUserRole_id                                                                               RequestTypeApprovingRoles
                                                                                                                                                                                                                                                                    Name
                                                                                               Request Status                      Type_of_work_ind
                                                                                                                                                                                                                        A pprovingUser_id
                                                                                                                                                                                                                                                                    LastUpdateUserName
                                                                                                                                                                                                                                                                                                                                 RequestTypeApprovingRole_id
                                                                                                                                                                                                                        A pprovingRole_id                                                                                        RequestType_id
                                                                                                Request_status_id                                                Type of Work                                           Comments                                    LastUpdateTime                                               ApprovingRole_id
                                                                                                                                   Type of Work Name                                                                    LastUpdateUserName                                                                                       Comments
                                                                                                Name                                                              Type_of_work_ind
                                                                                                                                                                                                                        LastUpdateTime                                                                                           LastUpdateUserName
                                                                                                Type_of_work_ind                   Request_status_id              Type of Work Name                                                                                                                                              LastUpdateTime
                                                                                                                                                                                                                                                                                                                                                                                           RequestTypes
                                                                                                                                    Request Status Name           Major?                                                                                                                                                                                                                     RequestType_id
                                                                                                                                                                                                                                                                                                                                                                                             Name
                                                                                                                                    Request_datetime
                                                                                                                                                                                                                                                                                                                                                                                             isMajor
                                                                                               TMS (External)                       Requestor_id
                                                                                                                                                                                                                                                                                  RequestApprovingRoles                                                                                      isMinor
                                                                                                                                                                                                                                                                                       RequestA pprovingRole_id
                                                                                                                                    Requestor Name                                               ApprovingUsers                                                                        Request_id
                                                                                                                                                                                                                                                                                                                                                                                             LastUpdateUserName
                                                                                               Object_id                                                                                                                                                                                                                                                                                     LastUpdateTime
                                                                                                                                    Phone Number                                                   A pprovingUser_id
                                                                                                                                                                                                                                                                                       ApprovingRole_id
                                                                                                                                                                                                   User_id                                                                                                                                                                                   isQuick
                                                                                               Classification                                                                                                                                                                          ApprovingUser_id
                                                                                                                                                                                                   Name                                                                                                                                                                                      isBulk
                                                                                               Accession #                          Object_id                                                                                                                                          Approval_id
                                                                                               Artist                                                                                              LastUpdateUserName
                                                                                                                                                                                                                                                                                       Comments
                                                                                               Title                                Classification                                                 LastUpdateTime
                                                                Requestors                     Date/Period                          Accession #
                                                                                                                                                                                                                                   Approvals                                           LastUpdateUserName
                                                                                                                                                                                                                                         A pproval_id                                  LastUpdateTime
                                                                                               Medium                               Artist
                                 Request                           Requestor_id
                                                                                               Paper/Support(s)                     Title
                                                                                                                                                                 Requestors                                                              Name
                                                                   Gallery_id (Badge number)   Mark(s)                              Date/Period                                                                                          isApproved
Type of Work                       Request_id
                                                                                               Inscription (s)                      Medium
                                                                                                                                                                     Requestor_id
                                                                                                                                                                                                                                         LastUpdateUserName
 Type_of_work_ind                                                  Name                        Dimensions                           Paper/Support(s)                 Gallery_id (Badge number)                                           LastUpdateTime
                                   Type_of_work_ind
                                                                                               Donor                                Mark(s)
 Type of Work Name                                                                             Collection                                                            Requestor Name
                                   Request_status_id                                                                                Inscription(s)
 Major?                                                         Events                         Loan Dates                           Dimensions                       Gallery Name
                                                                                                                                                                                                 Users                                                                     Requests                                                                            XRFStatuses
                                   Request_date                                                                                     Donor                                                                                                                                                                                                                        XRFStatus_id
                                                                                                                                                                                                   User_id                                                                       Request_id
                                                                  Event_id
                                                                                               Location Code – translated           Collection                                                                                   RequestStatuses                                                                                                                 Name
                                   Requestor_id                                                                                     Loan Dates                                                     Username                            RequestStatus_id                          TMSObject_id
                                                                  Name                         to general code                                                   Events                                                                                                                                                                                          LastUpdateUserName
                                                                                                                                                                                                   Password                                                                      RequestReason_id
Request Status                     Object_id                                                                                                                                                       email
                                                                                                                                                                                                                                       Name
                                                                                                                                                                                                                                                                                 RequestType_id                ---> TMS                                          LastUpdateTime
                                                                                                                                    Location Code – translated      Event_id                                                           DropDown_Display_Order
  Request_status_id                Description                    Event_Group_id                                                    to general code                                                LastUpdateUserN...                                                            RequestStatus_id
                                                                                                                                                                                                                                       LastUpdateUserName
                                                                                                                                                                    Event Name                     LastUpdateTime
                                                                                                                                                                                                                                       LastUpdateTime
                                                                                                                                                                                                                                                                                 Requestor_id
  Name
                                                                                                                                    Short Description                                                                                                                            Comments
                                                                Event Group                                                                                         Event_Group_id                                                                                                                                        Requestors
  Type_of_work_ind               Request Events                                                                                                                                                                                                                                  QuickNotes
                                                                                                                                                                                                                                                                                                                            Requestor_id
                                                                  Event_Group_id                                                    Long Description                                                                                                                             RequestDate
                                                                                                                                                                    Event Group Name
                                   RequestEvent_id                                                                                                                                                                                                                               LastUpdateUserName                         Gallery_id                 ---> ASD. Employee Table
                                                                  Name                                                                                                                                                     WorkOrderTypes                                        LastUpdateTime                             Comments

TMS (External)
                                   Request_id
                                                                                                                                 Request Events                  Event Group                                                    WorkOrderType_id                                 Exhibition_id                              isInEmployeeDirectory
                                   Event_id                                                                                                                                                                                                                                      ExhibitionActivity_id                      LocalVersionOfName
                                                                                                                                                                    Event_Group_id                                              Name
  Object _id                                                    Request Event Statuses                                              RequestEvent_id                                                                             LastUpdateUserName                                                                          Classification_id
                                   Request_event_status_id                                                                                                          Event Group Name                                                                                                                                        LastUpdateUserName
                                                                                                                                                                                                                                LastUpdateTime
                                                                  Request_event_status_id                                           Request_id                                                                                                                                                                              LastUpdateTime
                                   Started_on                                                                                                                                                                                                                                                                               test_id
                                                                  Name                                                              Event_id
 IRIS (External)                   Completed_on                                                                                                                  Request Event Statuses                                                                                                                                                                        ReportTypes                              ReportTypeGroups
                                                                  Event_Group_id                                                    Event Name                                                                                                                                                                                                                    ReportType_id                               ReportTypeGrou...
                                   Conservator_id                                                                                                                  Request_event_status_id                             RequestReportWorkOrders
   WorkOrder_Line_ID                                                                           IRIS (External)                      Request_event_status_id                                                               RequestReport_WorkOrder_id
                                                                                                                                                                                                                                                                                                                                                                  ReportTypeGroup_id                          Name
                                   Description                                                                                                                                                                                                                                                                                                                    Name                                        isTechnicalAnalysis
                                                                Conservators                    WorkOrder_Line_ID
                                                                                                                                                                   Status Name                                            RequestReport_id
                                                                                                                                                                                                                                                                                                                                                                  LastUpdateUserName                          isDetailedExam
                                   BT_Image_Workorder_line_id                                                                       Status Name                                                                           WorkOrder_Line
                                                                                                                                                                    Event_Group_id                                                                              ---> IRIS Line                                                                                    LastUpdateTime
                                                                   Conservator_id                                                                                                                                         WorkOrderType_id
 Analog Image Locations            DT_Image_Workorder_line_id                                                                       Started_on_Datetime
                                                                                                                                                                                                                          LastUpdateUserName
                                   AT_Image_Workorder_line_id      Gallery_id (Badge number)
      Analog_Image_location_id                                                                                                      Completed_on_Datetime        Conservators                                             LastUpdateTime                                                                                                                       Conservators
                                   Analog_Image_location_id        Name                                                                                                                                                                                                                RequestReports                                                             Conservator_id
      Name                                                                                                                          Conservator_id                                                                                                                                        RequestReport_id                                                        Gallery_id
                                                                                                                                                                     Conservator_id                                                                                                                                                                                                              ----> ASD Employee
                                   Extensis _Image_Pointer                                      Analog Image Locations              Name
                                                                                                                                                                                                                                                                                          Request_id                                                              Comments
                                                                                                                                                                     Gallery_id (Badge number)                                                                                            ReportType_id                                                           isInEmployeeDirectory
DCL Paper Portfolio Images         Comment                      Employees (External)                  Analog_Image_location_id
                                                                                                                                                                                                                                                                                          StartedDate                                                             LocalVersionOfName
                                                                                                                                   Description                       Name                        RequestReportDACs
 Extensis_Image_Pointer                                          Gallery_id                                                                                                                         RequestReport_DAC_id                                                                  EndedDate                                                               LastUpdateUserName
                                                                                                       Analog Location Name
                                                                                                                                    BT_Image_Workorder_line_id       Gallery Name                                                                                                         Conservator_id                                                          LastUpdateTime
                                                                                                                                                                                                    RequestReport_id
                                                                                                                                   DT_Image_Workorder_line_id                                       DAC_Record_id                  ---> Portfolio (DCL-PA)                                Description
                                                                                                                                                                                                                                                                                          User_id
                                                                                               DCL Paper Portfolio Images                                        Employees (External)               Comments                                                                                                                                                   AnalogImageLocations
                                                                                                                                   AT_Image_Workorder_line_id                                       LastUpdateUserName                                                                    RequestReportStatus_id
                                                                                                                                                                                                                                                                                                                                                                 AnalogImageLocation_id
                                                                                                                                                                                                    LastUpdateTime                                                                        A nalogImageLocation_id
                                                                                                  Extensis _Image_Pointer                                          Gallery_id                                                                                                                                                                                    Name
                                                                                                                                   Analog_Image_location_id                                                                                                                               IncludeInFinalObjectReport
                                                                                                                                                                                                                                                                                                                                                                 LastUpdateUserName
                                                                                                                                                                   Gallery Name                                                                                                           Report
                                                                                                                                                                                                                                                                                                                                                                 LastUpdateTime
                                                                                                                                    Analog Location Name                                                                                                                                  LastUpdateUserName
                                                                                                                                                                                                                                                                                          LastUpdateTime
                                                                                                                                    Extensis _Image_Pointer                                                                                                                                                                                                    RequestReportStatuses
                                                                                                                                                                                                                                                                                                                                                                  RequestReportStatus_id
                                                                                                                                                                                                                                                                                                                                                                  Name
                                                                                                                                                                                                                                                                                                                                                                  DropDown_Display_Order
                                                                                                                                                                                                                                                                                                                                                                  ReportType_id
                                                                                                                                                                                                                                                                                                                                                                  LastUpdateUserName
                                                                                                                                    Comment




                                                                                                                                                                                                                                                                                                                                                                                                              83
Simplified
                                                                               Requests
                                                                                                Column Name
                                                                                   Request_id
                                                                                   EntryShortcutSelect_MajorTMSObj...
                                                                                   RequestReason_id




                 Data
                                                                                   RequestType_id
                                                                                   RequestStatus_id
                                                                                   Requestor_id
                                                                                   Comment




                 Model
                                                                                   QuickNotes
                                                                                   RequestDate
                                                                                   LastUpdateUserName
                                                                                   LastUpdateTime
                                                                                   Exhibition_id
                                                                                   ExhibitionActivity_id
                                                                                   ExhibitionOtherActivity_id
                                                                                   EntryShortcutAjax_MajorTMSObje...
                                                                                   Loan_id
                                                                                   LoanActivity_id




    RequestNonTMSObjects                  RequestTMSObjects                  RequestReports                                                                        RequestApprovingRoles
                                                                                             Column Name
                                                                                                                        RequestBulkClassificationCounts                                      Column Name
                  Column Name                         Column Name                                                                              Column Name
                                                                               RequestReport_id                                                                         RequestApprovingRole_id
           RequestNonTMSObject_id           RequestTMSObject_id                                                            RequestBulkClassificationCount_id
                                                                               Request_id                                                                               Request_id
           Name                             Request_id                                                                     Request_id
                                                                               ReportType_id                                                                            ApprovingRole_id
           NGAContactGallery_id             TMSObject_id                                                                   CountForClassification
                                                                               StartedDate                                                                              ApprovingUser_id
           Request_id                       EntryShortcutAjax_TMSObject_id                                                 Classification_id
                                                                               EndedDate                                                                                Approval_id
                                                                                                                           isNGA
                                                                               Conservator_id                                                                           Comment
                                                                                                                           Comment
                                                                               Description                                                                              LastUpdateUserName
                                                                               User_id                                                                                  LastUpdateTime
                                                                               RequestReportStatus_id
                                                                               AnalogImageLocation_id
                                                                               IncludeInFinalObjectReport
RequestReportTechnicalInfos
                                                                               Report
                    Column Name
                                                                               LastUpdateUserName
   RequestReport_id
                                                                               LastUpdateTime
   TechnicalNotes
                                                                               RequestTMSObject_id
   BetaRadiograph
                                                                               Attachment                                                                      RequestReportWorkOrders
   XRayFluorescenceSpectroscopy
                                                                               Image                                                                                                  Column Name
   InfraredSpectroscopy                   RequestReportDACs
                                                         Column Name           RequestNonTMSObject_id                   RequestReportAttachments                 RequestReport_WorkOrder_id
   MicroFadometer
                                                                                                                                      Column Name                RequestReport_id
                                            RequestReport_DAC_id
   FourierTransformInfraredSpectroscopy                                                                                    RequestReportAttachment_id            WorkOrder_Line
                                            RequestReport_id
   FluorescenceSpectroscopy                                                                                                RequestReport_id                      WorkOrderType_id
                                            DAC_Record_id
   ColorSpectroscopy                                                                                                       FileName                              LastUpdateUserName
                                            Comment
   None
   Other
                                            LastUpdateUserName
                                                                                                                           Comment                               LastUpdateTime
                                                                                                                                                                                                    84
                                            LastUpdateTime
   OtherDescription
Simplified Data Model
                     Request to fix paper
                       Request id: 1
                        Date: 1/1/90
                                              Request


NonNGA Item 3         NGA Item 2                               3 XX               Y Approved
 NonNGA Item 5                                                10 Papers             X Approved
                       NGA Item 1                                10 Prints         Deputy Approved


     Non TMS                                                     Tallies
                        TMS Object             Request                             Approvals
      Object                                                  (Bulk Counts)
                                               Reports

                                             Examination
                                                Treatment



                 Report related             Report related   Report related
                                                                                 Report related
                    Report                      IRIS            Portfolio
                                                                                 attachements
                   Tech Info                 Work Orders     Images (DAC)
                                                                                   Excel
                  Tech Notes                                 Image ID: 16            Excel
                                                                                Spreadsheet
                    Tech Notes         Work Order 10
                   For exam                                    Image ID: 16       Spreadsheet
                                        Work Order 10           Image ID: 16          PDF
                     For exam            Work Order 10           Image ID: 14
                                          Work Order 23
                                                                                                85
Recent Changes

                               Request




     TMS Object
Non TMS /                                        Tallies
                TMS Object      Request                          Approvals
 Object
   NonTMS Object                              (Bulk Counts)
                                Reports




          Report related     Report related   Report related
                                                               Report related
             Report              IRIS           Portfolio
                                                               attachements
            Tech Info        Work Orders      Images (DAC)



                                                                             86
Architecture

       Web Browser
                           `




PHPRunner Application Server
      (Web Server)




    SQL Server Database


                               87
Rapid application development
                          From Wikipedia
• Rapid application development is a software development
  methodology, which involves iterative development and the
  construction of prototypes. theis a merger of various
               The speed and agility of It RAD tools, allows the
  structured techniques, especially the data also take Information
               communication of the design process to driven
               place In the “Prototype” instead of only the “Design
  Engineering with prototyping techniques to accelerate software
               Document”.
  systems development.
• RAD calls for a picture is worth a thousand structured techniques and
               “If the interactive use of words, a prototype
  prototyping is worth a thousand Pictures”
               to define user's requirements and design the final
  system. Using structured techniques the developer first builds
                                             - Anonymous
  preliminary data models and business process models of
               TEXT
  the business requirements. Prototyping then helps the analyst
               TEXT+DIAGRAMS (MODELS, UML,DFD,…)
  and users to verify those requirements and to formally
               TEXT+DIAGRAMS + PROTOTYPES
  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.                                                           88
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)

                                                     89
RADPrototype Development
              Collect user
             Requirements



  Develop
                             Develop/
   Initial                    Update
  Design                     Prototype




                Collect
                                             Verify With
               Document
                                                User
               changes


                             User Approved
                                System

                                                           90
PHPRunner (step 1)
Map relationships between tables




                                   91
All the web pages
 in the application


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




                                                                    Data Model
                                                                       Request




                                      Non TMS                                            Tallies
                                                       TMS Object       Request                          Approvals
                                       Object                                         (Bulk Counts)
                                                                        Reports




                                         Web Pages related to structure
                                                Report related       Report related   Report related          93
                                                 Of request
                                                   Report
                                                  Tech Info
                                                                         IRIS
                                                                      Work Orders
                                                                                         Portfolio
                                                                                      Images (DAC)
                                                                                                       Report related
                                                                                                       attachements
User Interface Model




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




                                                  Request
                                                  AKA “Treatment Reports”
Request                                            : 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
                                                                                 95
Links to Authoritative Sources
                               Portfolio




                              IRIS




                             Employee
                             Database


                   TMS Public Data Extract

                   Nightly Rebuild


                   TMS                       96
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
                                                 97
Documentation
Project Folder
•ngagroupTTDPProjectsPCD - Paper Conservation Database

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




                                                                98
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

                                     99
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 . . .




                                               100
Toolkit Problems
• Multiple Fields to perform different types of
  selects
• Only 2-Level Hierarchy supported
• UI customizations might be lost during
  regeneration




                                             101
Issues
Major 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 Issues
• Performance
  – Network, Query, Concurrency, Scalability
• Misc
  – Security, Upload File Placement,
  – Editing Capabilities (i.e.Spellcheck),
  – Search (Attachments), Audit Trail, Delete Logic
                                                               102
Other Issues
•   Scope
•   Production Planning
•   Testing and QA
•   Data Conversion
•   Procedures and documentation
•   Web Reports
•   Iterations and upgrades
•   Integration with existing processes
                                          103
End of Main Presentation
• Questions




                               104

Creating an RAD Authoratative Data Environment

  • 1.
  • 2.
  • 3.
    Origins of datasharing 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? 3
  • 4.
    3 Areas ofData Integration • Collect Data Data – Bring data in to Collection Sharing Dessemination structured format • Share IRIS TMS Raisers Edge $ Gallery Data – DefineReference IRIMS COE FMS Authoritative Data AI $ Vista • Disseminate Empl Text 5 4 3 2 1 – Make data Bar graph available to users Gallery Data 4
  • 5.
    Questions this presentation tries to answer? Data • What problem is being addressed by a web database Collection • When should Filemaker or MSAccess be used to address this problem Raisers IRIS TMS Edge • When should Metastorm be used to address this COE FMS IRIMS Problem AI $ Vista • Why was PHPRunner selected for the web database Empl front end • How is the PHPRunner architecture to fullfull the Gallery requirement that there will be little to none application Data code in the implementation (allowing allowing it to be easily ported to a new application (DCLPA used as example). 5
  • 6.
    Types of GalleryData sharing Word Docs One user at a time, not Excel shared MSAccess Isolated non-integrated database (Stand- Filemaker alone) shared between a handful of users, Highly customized Departmental Systems integrated to authoritative source, Authoritative [ Missing Gap] Need to have customized departmentusers across departments, shared with many systems Data Systems customizable Workflow (IRIS) that reference authoritative data Raisers Edge Many users shared, expensive, little- TMS customization Internet Enterprise-wide and beyond. 6 Intranet
  • 7.
    Database ? • Thegallery has two definitions of a database. – MSAccessFilemaker (Single Platform) – SQL ServerPostgress (Multiple Platform) 7
  • 8.
    Pluses and Minusof COTs • Cots are very inexpensive solution.. However: – They frequently do not have everything you need, and you cannot easily modifyExtend them – They will not follow any naming standards based on your organization – The governance of the codelogic 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! 8
  • 9.
    Documentation (UDB) Project to Define when and how to define different application architectures (Nov, 2007) Project Folder • ngagrouptTDPProjectsUDB - 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 9
  • 10.
    Fate of UDBproject 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. 10
  • 11.
    What is aDatabase? (Two Views) Technologist Programmer Business Analysts End User understanding of the term understanding of the term IDE + Presentation + Integrated Business Rules + Data Storage Development Environment (IDE) “Tools” An all-in-one System where I Presentation “Front End” Can save data (e.g. MSAccess) A part of a Single Product much larger Business System, used to View Application Store and share “Business Rules” Data (e.g. MSSQL) Multi-Product 010010101001010101010101010101 Database Technologist View What is a (Storage) Database? 010101010101010100010010010101 11
  • 12.
    Examples of “Single”verses “Multi” software applications Application Front End Business Rules Database Storage Development Presentation Application 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 MasonPerlCGI 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 12
  • 13.
    Where is theData • Single version of Truth 13
  • 14.
    Worst Case • Data Everywhere, No single version of truth • How is correct? Exhibition Code: 23 = ZZ Exhibition Code: 23 = XX Exhibition Code : 21 = AA Exhibition Code: 23 = XX Exhibition Code: 23 = XX Exhibition Code: 23 = XX Exhibition Code : 23 = YY Exhibition Code : 21 = AA Exhibition Code: 21 = AA Exhibition Code: 21 = ZZ 14
  • 15.
    Data Duplication (orSilos) Who is the authoritative source ? I have the Latest Phone Numbers I have an I have the I need an old Phone # latest phone Arts in my file numbers Phone # A X8 rt 00 0 A Art X6 rt 6 54 X654 A X8 rt 5 000 Keeping local copies of data caused obvious problems. Manual Synchronization process are difficult to maintain. 15
  • 16.
    Goal • Single version of truth • Defined Source of Authoritative data Exhibition Code: 23 = XX 16
  • 17.
    Using Authoritative Source Authoritative Source I have the I need an latest phone Arts numbers Phone # Official Phone Book Using a single source for the data, provides all the systems with the latest up to data information 17
  • 18.
    Not one answer! • Different users • Different needs 18
  • 19.
    Option 4. Five Strategies Option 3. Shared Shared Enterprise Enterprise Data (Fat Client) Data OPTION 3 Within Single Department Authoritative Data (Thin Client) Option 5. File Maker Application 1 Custom X (Thin Temp Storage or Local Copy Storage Only Client) Conversion PHP No Data Storage PHP Applciation Dept C Option 1. OPTION 4 OPTION 1 OPTION 2 Single Single User Within Single Department Option 2. Non-Authoritative Data Cross Departments Non-Authoratative Authoritative Data Read Only User Access Shared File Access Maker Department File Maker Data Dept A Dept B Application 2 ` (Fat Client) 19
  • 20.
    Attributes Not Displayedin 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 20
  • 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 One Time Load Optional •Susan’s Pull from IA to Excel •TMS Crystal Reports 21 •Raisers Edge Queries
  • 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. Independent User User / User Developer AFM AFM AFM •Gallery Filemaker Archives 22 •AFM Access database
  • 23.
    Option 2 –Multi-User Departmental Application for Departmental-only Data • This is a multiple user application. The data in this Access Databases is not ‘authoritative’ to the Gallery and therefore is considered a ‘copy’ of some other data stored as a Gallery resource. However, the accessed “read-only’ Central data is Authoratative. This Architecture assume simple business rules, and little to no workflow. Linked to Authoritative Source Authorization Read Only (RO) User (RO) (RO) User / User Developer •Old patch reporting Model 23
  • 24.
    Option 3 –Multi-User Departmental Application for Gallery-Wide Data 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. Web XDO Data User Consistency Verfication Authorization User Authoritative Source Other .. IRIMS RE IRIS DAC TMS AFM End User Developer •Asset Inventory 24 •Scott Steven Employee Database
  • 25.
    Option 4 -Multi-User Gallery-Wide Application for Gallery-Wide Data This architecture extends the previous architecture to limit the impact of “Client Maintenance” by using a thin client Web Based Application.. User Consistency Checking XDO Authorization User Authoritative User Source Other .. IRIMS WEB RE IRIS DAC TMS User TDP DPUB User Convert Deploy to To Server / PHP Generated End User from User Developer Data Model •DCLPA Data PHP •VDMS Model Runner 25 DM Overrides •Patch Reporting
  • 26.
    Option 5 -Strategic Applications Consistency User Checking XDO Authorization User Authoritative Source Other .. IRIMS RE IRIS User DAC TMS WEB TMSWEB Other .. TRAIN iHeat User DPUB User Developer Complex Web Services , User Native AJAX , •IRIS Code Complex 26 •Art Extract TDP application Rules
  • 27.
    Metastorm • Not aroundwhen UDB study was developed (Dec 2007) • Today, I would define it as a hybrid of Complex Business Rules and Generated application 27
  • 28.
    Architecture Web Browser ` PHPRunner Application Server (Web Server) SQL Server Database 28
  • 29.
    What kind oftool 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 ! 29
  • 30.
    A few options • MSAccess • Filemaker • PHPRunner • MetaStorm • Custom Web Develop? (Mason,Perl,CGI) • Other? 30
  • 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 In that case, “Nevermind” 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. 31
  • 32.
    Filemaker ! Required: - Mustbe 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) 32
  • 33.
    Filemaker ! Required: - Mustbe easy to build – Low Maintenance - Must use database standards - Must have Security - Must have adequate performance How about File Maker to a SQL Database … Isn't that a feature a feature of Filemaker server? Desired: that called ESS (External Data Sources)? Isn't - We did not need to install it (e.g. Web based) - Was reasonably priced - Will be easy to maintain in the future (Standards based) 33
  • 34.
    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 34
  • 35.
    Problems With Filemaker •“Filemaker External SQL Sources (ESS) In Depth” (Filemaker publication) – “Value lists cannot be based on data in an ESS table” “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” Means – ESS data in FileMaker Pro has the potential to be slightly out of date – Binary data is not supported by ESS at present No field list validation (Dropdown List) from – Scrolling operations … can be problematic in large record sets. . . . and will perform fairly slowl non-Filemaker authoritative sources! – Sort not performed in database – The ESS feature set is primarily designed to termsFileMaker Pro solutions to Or in simple allow 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. “Can’t validate against to authoritative data” – See: Filemaker and SQL Compliant Database(UDB) 20080109c.doc 35
  • 36.
    Filemaker (My LastStraw) From: John Blakeley [mailto:john@fbsl.co.nz] 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: john@fbsl.co.nz Skype: john.blakeley Bayview North Shore New Zealand 36
  • 37.
    Filemaker (My LastStraw) From: John Blakeley [mailto:john@fbsl.co.nz] 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 “We gave up on the idea of pulling data John Blakeley John from Filemaker using it as a linked server” Blakeley Mobile: + 64 21 948037 Email: john@fbsl.co.nz Skype: john.blakeley Bayview North Shore New Zealand 37
  • 38.
    Not Filemaker –Then what? 38
  • 39.
    Prototyped Typical “Types” of Assets , with issue numbers mapped “Lookup” provides means to search for Issuance 39
  • 40.
    Rated the best Easy to Learn Use Can be extended Can integrate with Cots Packages “Open” Architecture Java Server Ruby on Rails Alpha Cold .Net PHPRunner Faces Active Scaffold Five Fusion Netbeans 40
  • 41.
    PHPRunner Required: - Must beeasy to build – Low Maintenance Very little coding - Must use database standards Yes - Must have Security Pretty good, but we need to make it better - Must have adequate performance Looks OK, Need testing Desired: - We did not need to install it (e.g. Web based) Yes - Was reasonably priced Yes - Will be easy to maintain in the future (Standards based) Standard Industry Language (PHP) Framework not widespread as we would 41 like
  • 42.
    es PHPRunner Code Generation e ang Ch reak od n’t b des C o a W upgr by Data DB Definitions Rules Security / s n ge Navigation C ha ak de ’t bre des Co on ra Framework Relationship W upg Custom by Framework Code Tables Web Relationships Generator Forms Framework Upgra Reve des will rt cha ge Codes nges chan by Code break Overrides t” “Migh rades. Codes upg t em Overrides , B ut t he sy s Access Routine y to will tr it.. Screen nt preve Customizations 42 Templates
  • 43.
    es PHPRunner Code Generation e ang Ch reak od n’t b des C o a W upgr by Data DB Definitions Rules Security / s n ge Navigation C ha ak de ’t bre des Co on ra Framework Relationship W upg Custom by Framework Code Tables Web Relationships Generator Forms Framework Upgra Reve des will rt cha ge Codes nges chan by Code break Overrides t” “Migh rades. Codes upg t em Overrides , B ut t he sy s Access Routine y to will tr it.. Screen nt preve Customizations 43 Templates
  • 44.
    UI Templates Layouts 44
  • 45.
  • 46.
    UI Templates Layouts 46
  • 47.
    Field Name andColumn Order 47
  • 48.
  • 49.
  • 50.
    Searchable (Advanced andSimple) Reports, Charts, Tables, … 50
  • 51.
    End User ReportsCreation (Web Based) • Very Simple • Version 1 is very limited • Tightly integrated with Security • Version 2 expected in the summer 51
  • 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 52
  • 53.
    Web Database vsWorkflow • 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 53
  • 54.
    Metastorm vs WebDatabase • PHPRunner is “Only” code development, The tools is run on “ApachePHP”. 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) 54
  • 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. 55
  • 56.
    PHPRunner Normalized Data Model Simple CRUD User Interface - Clean Data Type - Basic Menu - Logical Business Modeled Data Model - No “Workflow” or “Inbox” - Data enforced Business Rules - Light integration with Email - Easy to report - Decent report generation Header (e.g. Auto Name, Address ) Generated Admin Child1 Child3 Reference Child2 Tables (e.g. Child1 Kids (Roles ) (e.g. Names) Kids (e.g. Cars) Names) 56
  • 57.
    Metastorm Complex Workflow DeNormalized Data Model - Great “Inbox” - Data not always Types (Integers are character ) - “Approvals” out of box - Single Logical Table storing parents and children - Logical Diagramming of Workflow - “Temp” Screen data stored in Database - Tight integration with Email - Fields defined but not used - “Bad” report generation - Admin screen cannot be linked to data model Keys Header (e.g. Child1 Child2 Child3 Temp And Name, (e.g. Kids (e.g. Screen (Roles) Pointers Address ) Names) Cars) Data Auto ignore ignore ignore ignore Generated ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore Admin Reference Tables ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore ignore 57
  • 58.
    Metastorm and Workflow •RADVisual development of Workflow is what Metatstorm is good at! • A good standard for Workflow application in the Gallery 58
  • 59.
    Data Model Differences Keys Header (e.g. Child1 Child2 Child3 Temp And Header Name, Pointers Address ) (e.g. Kids Names) (Roles) (e.g. Cars) Screen Data (e.g. Name, ignore ignore ignore ignore Address ) ignore ignore ignore ignore Parent ignore ignore ignore ignore ignore ignore ignore ignore Admin ignore ignore ignore ignore Reference Child1 Child2 Child3 Tables ignore (e.g. Child1 Kids (Roles ) (e.g. ignore ignore ignore Names ) Kids Cars) (e.g. ignore ignore ignore ignore Names) ignore ignore ignore ignore 59
  • 60.
    PHPRunner (DCLPA) DataModel RequestStatuses RequestBulkClassificationCounts Exhibitions Column Name Data Type Allow Nulls RequestBulkClassificationCount_id Classifications Column Name Data Type Allow Nulls RequestStatus_id int Request_id Column Name Data Type Allow Nulls Exhibition_id int Name nvarchar(100) CountForClassification Classification_id int code nvarchar(50) DropDown_Display_Order int Classification_id Name nvarchar(50) Name nvarchar(100) LastUpdateUserName nvarchar(50) isNGA LastUpdateUserName nvarchar(50) isMaintainedInTMS bit LastUpdateTime datetime Comment LastUpdateTime datetime Comment nvarchar(MAX) SetToThisWhenFirstReportIs... bit RequestReason_id int DropDown_Display_Or... int Requests * Loans Column Name Data Type Allow Nulls Column Name Data Type Allow Nulls Loan_id int Request_id int Name nvarchar(50) EntryShortcutSelect_... int DropDown_Display_Order int RequestReason_id int RequestTMSObjects RequestNonTMSObjects * Comment nvarchar(MAX) RequestType_id int RequestTMSObject_id RequestNonTMSObject_id RequestStatus_id int RequestReason_id int Request_id ExhibitionActivities * Name RequestReportDACs ExhibitionActivity_id Requestor_id int NGAContactGallery_id LastUpdateUserName nvarchar(50) TMSObject_id LastUpdateTime datetime RequestReport_DAC_id Comment nvarchar(300) SortOrderInReport Request_id RequestReport_id EntryShortcutAjax_TMSObje... Name QuickNotes nvarchar(MAX) DAC_Record_id RequestDate datetime RequestReason_id Comment LastUpdateUserName nvarchar(50) isOnWorklog LastUpdateUserName LastUpdateTime datetime LastUpdateTime LoanActivities RequestReports * Exhibition_id int Column Name Data Type Allow Nulls Column Name Data Type Allow Nulls ExhibitionActivity_id int LoanActivity_id int RequestReport_id int ExhibitionOtherActivit... int Name nvarchar(50) Request_id int EntryShortcutAjax_M... int RequestReportWorkOrders Comment nvarchar(MAX) ReportType_id int Loan_id int RequestReport_WorkOrder_id RequestReportTechnicalInfos LastUpdateUserName nvarchar(50) StartedDate datetime LoanActivity_id int RequestReport_id RequestReport_id LastUpdateTime datetime EndedDate datetime WorkOrder_Line TechnicalNotes RequestReason_id int Conservator_id int WorkOrderType_id BetaRadiograph Description nvarchar(MAX) LastUpdateUserName XRayFluorescenceSpectroscopy User_id int LastUpdateTime InfraredSpectroscopy RequestApprovingRoles RequestReportStatus_id int MicroFadometer RequestApprovingRole_id AnalogImageLocation_id int FourierTransformInfraredSpectroscopy Request_id IncludeInFinalObjectR... bit RequestTypes * FluorescenceSpectroscopy Column Name ApprovingRole_id Report nvarchar(MAX) RequestReasons * ApprovingUser_id ColorSpectroscopy RequestType_id LastUpdateUserName nvarchar(50) Column Name None Name Approval_id LastUpdateTime datetime RequestReason_id WorkOrderTypes RequestReportAttachments * Other isMajor Comment RequestTMSObject_id int DropDown_Display_Order WorkOrderType_id RequestReportAttachment_id OtherDescription isMinor LastUpdateUserName Attachment nvarchar(MAX) Name Name RequestReport_id isQuick LastUpdateTime Image nvarchar(MAX) LastUpdateUserName FileName isLoan RequestNonTMSObjec... int LastUpdateTime Comment isBulk isObjectRequired isMultiObjectsAllowed RequestTypeApprovingRoles RequestTypeApprovingRole_id isApprovalRequired RequestType_id DropDown_Display_Order ApprovingRole_id LastUpdateUserName ReportTypes Conservators Comment Column Name Data Type Allow Nulls RequestReportStatuses Conservator_id LastUpdateUserName ReportType_id int ReportTypeGroups RequestReportStatus_id Gallery_id LastUpdateTime ReportTypeGroup_id int ReportTypeGroup_id Name Comment Name nvarchar(100) Name DropDown_Display_Order isInEmployeeDirectory isTechnicalAnalysis RequestTypeReasons * LastUpdateUserName nvarchar(50) ReportType_id LocalVersionOfName RequestTypeReasons_id LastUpdateTime datetime isDetailedExam LastUpdateUserName LastUpdateUserName RequestType_id isValidWithBulk bit isTreatmentProposal LastUpdateTime LastUpdateTime RequestReason_id isValidWithQuick bit isObjectReport isValidWithMajor bit isOther isValidWithMinor bit LastUpdateUserName 60 DropDown_Display_Or... int LastUpdateTime
  • 61.
    PHPRunner (DCLPA) DataModel Requests RequestStatusesRequest_id Column Name RequestBulkClassificationCounts Exhibitions Column Name Data Type Allow Nulls RequestBulkClassificationCount_id Classifications Column Name Data Type Allow Nulls RequestStatus_id EntryShortcutSelect_MajorTMSObj... int Column Name Data Type Allow Nulls Request_id Exhibition_id int Name RequestReason_id nvarchar(100) CountForClassification Classification_id int code nvarchar(50) DropDown_Display_Order int Classification_id Name nvarchar(50) Name nvarchar(100) RequestType_id LastUpdateUserName nvarchar(50) isNGA LastUpdateUserName nvarchar(50) isMaintainedInTMS bit LastUpdateTime RequestStatus_id datetime Comment LastUpdateTime datetime Comment nvarchar(MAX) Requestor_id SetToThisWhenFirstReportIs... bit RequestReason_id int DropDown_Display_Or... int Comment QuickNotes RequestDate LastUpdateUserName Requests * Loans Column Name Data Type Allow Nulls Column Name Data Type Allow Nulls LastUpdateTime Loan_id int Request_id int Exhibition_id Name nvarchar(50) EntryShortcutSelect_... int DropDown_Display_Order int RequestReason_id int RequestTMSObjects ExhibitionActivity_id RequestNonTMSObjects * Comment nvarchar(MAX) RequestType_id int RequestNonTMSObject_id RequestTMSObject_id ExhibitionOtherActivity_id RequestStatus_id int RequestReason_id int Request_id ExhibitionActivities * Name RequestReportDACs EntryShortcutAjax_MajorTMSObje... ExhibitionActivity_id Requestor_id int NGAContactGallery_id LastUpdateUserName nvarchar(50) TMSObject_id LastUpdateTime datetime RequestReport_DAC_id Comment nvarchar(300) EntryShortcutAjax_TMSObje... Loan_id SortOrderInReport Request_id RequestReport_id QuickNotes nvarchar(MAX) Name DAC_Record_id LoanActivity_id RequestDate datetime RequestReason_id Comment LastUpdateUserName nvarchar(50) isOnWorklog LastUpdateUserName LastUpdateTime datetime LastUpdateTime LoanActivities RequestReports * Exhibition_id int Column Name Data Type Allow Nulls Column Name Data Type Allow Nulls ExhibitionActivity_id int LoanActivity_id int RequestReport_id int ExhibitionOtherActivit... int Name nvarchar(50) Request_id int EntryShortcutAjax_M... int RequestNonTMSObjects RequestReportWorkOrders RequestTMSObjects ReportType_id int RequestReports RequestApprovingRoles Comment nvarchar(MAX) RequestReport_WorkOrder_id RequestReportTechnicalInfos Column Name Loan_id RequestBulkClassificationCounts int LastUpdateUserName nvarchar(50) Column Name StartedDate datetime LoanActivity_id int Column Name RequestReport_id Column Name RequestReport_id Column Name LastUpdateTime datetime EndedDate datetime WorkOrder_Line RequestReport_id RequestApprovingRole_id RequestNonTMSObject_id RequestTMSObject_id Conservator_id int TechnicalNotes RequestBulkClassificationCount_id RequestReason_id int WorkOrderType_id Request_id BetaRadiograph Request_id Name Request_id Description nvarchar(MAX) Request_id LastUpdateUserName XRayFluorescenceSpectroscopy User_id int ReportType_id ApprovingRole_id NGAContactGallery_id LastUpdateTime TMSObject_id InfraredSpectroscopy CountForClassification RequestApprovingRoles RequestReportStatus_id int StartedDate MicroFadometer ApprovingUser_id RequestApprovingRole_id Request_id EntryShortcutAjax_TMSObject_id AnalogImageLocation_id int Classification_id Request_id IncludeInFinalObjectR... bit EndedDate FourierTransformInfraredSpectroscopy RequestTypes * Approval_id FluorescenceSpectroscopy isNGA Column Name ApprovingRole_id Report nvarchar(MAX) Conservator_id RequestReasons * Comment ApprovingUser_id ColorSpectroscopy RequestType_id LastUpdateUserName nvarchar(50) Comment Column Name Description None Name LastUpdateUserName Approval_id LastUpdateTime datetime RequestReason_id WorkOrderTypes RequestReportAttachments * Other isMajor Comment RequestTMSObject_id int User_id DropDown_Display_Order LastUpdateTime WorkOrderType_id RequestReportAttachment_id OtherDescription isMinor LastUpdateUserName Attachment nvarchar(MAX) RequestReportStatus_id Name Name RequestReport_id isQuick LastUpdateTime Image nvarchar(MAX) FileName LastUpdateUserName RequestNonTMSObjec... int AnalogImageLocation_id isLoan LastUpdateTime Comment isBulk IncludeInFinalObjectReport RequestReportTechnicalInfos isObjectRequired Report isMultiObjectsAllowed RequestTypeApprovingRoles Column Name RequestTypeApprovingRole_id LastUpdateUserName isApprovalRequired RequestReport_id DropDown_Display_Order RequestType_id LastUpdateTime ApprovingRole_id TechnicalNotes LastUpdateUserName ReportTypes Conservators RequestTMSObject_id Comment BetaRadiograph RequestReportStatuses Column Name ReportType_id int Data Type Allow Nulls ReportTypeGroups RequestReportStatus_idAttachment Conservator_id RequestReportWorkOrders LastUpdateUserName XRayFluorescenceSpectroscopy Gallery_id LastUpdateTime ReportTypeGroup_id Name Image Column Name InfraredSpectroscopy ReportTypeGroup_id int RequestReportDACs Comment Name nvarchar(100) Name Column Name DropDown_Display_Order RequestNonTMSObject_id isInEmployeeDirectory RequestReportAttachments RequestTypeReasons * RequestReport_WorkOrder_id MicroFadometer LastUpdateUserName nvarchar(50) isTechnicalAnalysis ReportType_id LocalVersionOfName isDetailedExam Column Name RequestTypeReasons_id RequestReport_id LastUpdateTime datetime RequestReport_DAC_id LastUpdateUserName LastUpdateUserName FourierTransformInfraredSpectroscopy isTreatmentProposal RequestType_id RequestReportAttachment_id WorkOrder_Line isValidWithBulk bit LastUpdateTime LastUpdateTime RequestReport_id RequestReason_id FluorescenceSpectroscopy isValidWithQuick bit isObjectReport RequestReport_id WorkOrderType_id DAC_Record_id isOther ColorSpectroscopy isValidWithMajor bit FileName LastUpdateUserName LastUpdateUserName isValidWithMinor bit Comment None Comment DropDown_Display_Or... int LastUpdateTime LastUpdateTime LastUpdateUserName Other OtherDescription LastUpdateTime 61
  • 62.
    Requests Column Name Request_id PHPRunner EntryShortcutSelect_MajorTMSObj... RequestReason_id RequestType_id (DCLPA) RequestStatus_id Requestor_id Comment Key tables Data QuickNotes RequestDate LastUpdateUserName Model LastUpdateTime Exhibition_id ExhibitionActivity_id ExhibitionOtherActivity_id EntryShortcutAjax_MajorTMSObje... Loan_id LoanActivity_id RequestNonTMSObjects RequestTMSObjects RequestReports RequestApprovingRoles Column Name RequestBulkClassificationCounts Column Name Column Name Column Name Column Name RequestReport_id RequestApprovingRole_id RequestNonTMSObject_id RequestTMSObject_id RequestBulkClassificationCount_id Request_id Request_id Name Request_id Request_id ReportType_id ApprovingRole_id NGAContactGallery_id TMSObject_id CountForClassification StartedDate ApprovingUser_id Request_id EntryShortcutAjax_TMSObject_id Classification_id EndedDate Approval_id isNGA Conservator_id Comment Comment Description LastUpdateUserName User_id LastUpdateTime RequestReportStatus_id AnalogImageLocation_id IncludeInFinalObjectReport RequestReportTechnicalInfos Report Column Name LastUpdateUserName RequestReport_id LastUpdateTime TechnicalNotes RequestTMSObject_id BetaRadiograph Attachment RequestReportWorkOrders XRayFluorescenceSpectroscopy Image Column Name InfraredSpectroscopy RequestReportDACs Column Name RequestNonTMSObject_id RequestReportAttachments RequestReport_WorkOrder_id MicroFadometer Column Name RequestReport_id RequestReport_DAC_id FourierTransformInfraredSpectroscopy RequestReportAttachment_id WorkOrder_Line RequestReport_id FluorescenceSpectroscopy RequestReport_id WorkOrderType_id DAC_Record_id ColorSpectroscopy FileName LastUpdateUserName Comment None Other LastUpdateUserName Comment LastUpdateTime 62 LastUpdateTime OtherDescription
  • 63.
    PHPRunner Actual Data Requests Request Report Request Report Workorders Normalized means the new child tables can be added or deleted, with little impact 63 On the rest of the database, also unlimited child tables can be added
  • 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) 64
  • 65.
    IRIS Data Model Line_Items ( Deliverables ( The Metastorm Data Model is Generated to Support the Workflow EFOLDERID nvarchar (31) NOT NULL , Id int IDENTITY (1, 1) NOT NULL , AO_AccNum AO_Artist AO_ArtTreatment nvarchar nvarchar smallint (250) (250) NULL NULL NULL , , , Name Cost nvarchar int NOT (250) NOT NULL , NULL Work_Order ( AO_Complete _Total money NULL , EFOLDERID nvarchar (31) NOT NULL , AO_DateNeeded datetime NULL , Account nvarchar (250 ) NULL , AO_Deliverables nvarchar (250) NULL , AO_AccNum nvarchar (250 ) NULL , AO_Description ntext NULL , AO_Artist nvarchar (250 ) NULL , AO_DexNum nvarchar (250) NULL , AO_ArtTreatment smallint NULL , AO_Dimensions nvarchar (250) NULL , AO_Complete _Total money NULL , AO_ExistingAssets ntext NULL , AO_DateNeeded datetime NULL , Diagrams. AO_Height int NULL , AO_Deliverables nvarchar (250 ) NULL , Projects AO_Id nvarchar (250) NULL , AO_Description ntext NULL , AO_Info ntext NULL , AO_DexNum nvarchar (250 ) NULL , AO_Lecture smallint NULL , ( AO_Dimensions nvarchar (250 ) NULL , AO_LightAngle nvarchar (250) NULL , Id int IDENTITY (1, 1) NOT NULL , AO_Duty1 nvarchar (250 ) NULL , AO_lineItemNum nvarchar (250) NULL , Name varchar (400) NOT NULL AO_Duty2 nvarchar (250 ) NULL , AO_LocalPrinting smallint NULL , AO_ExistingAssets nvarchar (250 ) NULL , AO_NewAssets ntext NULL , AO_Height int NULL , AO_NonNGAObj smallint NULL , AO_Id nvarchar (250 ) NULL , AO_ObjectClass nvarchar (250) NULL , AO_Lecture smallint NULL , AO_PhotographicCost money NULL , AO_LightAngle nvarchar (250 ) NULL , AO_Prepress smallint NULL , AO_lineItemNum nvarchar (250 ) NULL , AO_ProductionJournal ntext NULL , AO_LocalPrinting smallint NULL , AO_Quantity int NULL , AO_NewAssets nvarchar (250 ) NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_NonNGAObj smallint NULL , AO_Spectrum nvarchar (250) NULL , AO_ObjectClass nvarchar (250 ) NULL , AO_Status nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Title nvarchar (250) NULL , AO_Prepress smallint NULL , AO_Total money NULL , AO_ProductionJournal ntext NULL , AO_TreatmentPhase nvarchar (250) NULL , AO_Quantity int NULL , AO_VisualReference smallint NULL , AO_SpecialDeliveryInstructions ntext NULL , Requestors It is not a logical Representation of AO_Web smallint NULL , AO_Spectrum nvarchar (250 ) NULL , AO_Width int NULL , ( AO_Staff 1 nvarchar (250 ) NULL , Assignee 1 nvarchar (250) NULL , AO_Staff 2 nvarchar (250 ) NULL , Assignee 2 nvarchar (250) NULL , Id int IDENTITY (1, 1) NOT NULL , AO_Status nvarchar (250 ) NULL , checkDeliverables smallint NULL , Name varchar (250) NOT NULL , AO_Status 1 nvarchar (250 ) NULL , DeliverablesAmount int NULL , Office varchar (150) NULL , AO_Status 2 nvarchar (250 ) NULL , destinationFolderId nvarchar (250) NULL , Phone varchar (50) NULL , AO_Studio 1 nvarchar (250 ) NULL , destinationFolderName nvarchar (250) NULL , eName varchar (150) NULL AO_Studio 2 nvarchar (250 ) NULL , Difference _Total money NULL , AO_Title nvarchar (250 ) NULL , Duty 1 nvarchar (250) NULL , AO_Total money NULL , Data Business Rules Duty 2 nvarchar (250) NULL , AO_TreatmentPhase nvarchar (250 ) NULL , EP_AdditionalDetails ntext NULL , AO_VisualReference smallint NULL , EP_ArtTreatment smallint NULL , AO_Web smallint NULL , EP_Cell nvarchar (250) NULL , AO_Width int NULL , EP_Complete _Total money NULL , Assignee 1 nvarchar (250 ) NULL , EP_Contact nvarchar (250) NULL , Assignee 2 nvarchar (250 ) NULL , EP_DateNeeded datetime NULL , BriefDescription ntext NULL , EP_Dress EP_Email nvarchar nvarchar (250) (250) NULL NULL , , eEvent ( checkDeliverables Code smallint nvarchar (250 ) NULL NULL , , EP_EventEnd datetime NULL , eFolderID nvarchar (31) NOT NULL , Comments ntext NULL , EP_EventName nvarchar (250) NULL , eEventID int NOT NULL , CostAdjustments float NULL , EP_EventStart datetime NULL , eVersion int NULL , DateBilled datetime NULL , EP_EventType nvarchar (250) NULL , ePriority smallint NULL , DateDelivered datetime NULL , EP_ExistingAssets ntext NULL , eEventTime datetime NULL , DateNeeded datetime NULL , EP_Fax nvarchar (250) NULL , eEntryTime datetime NULL , DateSubmitted datetime NULL , EP_Info ntext NULL , eDeadline datetime NULL , DeliverablesAmount int NULL , EP_Lecture smallint NULL , eMapName nvarchar (31) NULL , DeliveryMedia nvarchar (250 ) NULL , EP_lineItemNum nvarchar (250) NULL , eFromStage nvarchar (31) NULL , DivisionCenter nvarchar (250 ) NULL , EP_LocalPrinting smallint NULL , eActionName nvarchar (31) NULL , Duty 1 nvarchar (250 ) NULL , EP_Location nvarchar (250) NULL , eToStage nvarchar (31) NULL , Duty 2 nvarchar (250 ) NULL , EP_NewAssets ntext NULL , eUserName nvarchar (100) NULL , EmailAddress nvarchar (250 ) NULL , EP_PhotographerEnd datetime NULL , eFlagName nvarchar (63) NULL , EmailMessage ntext NULL , EP_PhotographerStart datetime NULL , eFlagFolder nvarchar (31) NULL , EmailSubject nvarchar (250 ) NULL , EP_PhotographicCost money NULL , eAlertMessage nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_Prepress smallint NULL , eNotes ntext NULL EP_ArtTreatment smallint NULL , EP_ProductionJournal ntext NULL , EP_Cell nvarchar (250 ) NULL , EP_SpecialDeliveryInstructions ntext NULL , EP_Complete _Total money NULL , EP_Total money NULL , EP_Contact nvarchar (250 ) NULL , EP_VisualReference smallint NULL , EP_DateNeeded datetime NULL , EP_Web smallint NULL , EP_Dress nvarchar (250 ) NULL , Line _Item _Total money NULL , EP_Email nvarchar (250 ) NULL , memAssignments ntext NULL , EP_EventEnd datetime NULL , msg nvarchar (250) NULL , EP_EventName nvarchar (250 ) NULL , NAO _ArtTreatment smallint NULL , EP_EventStart datetime NULL , NAO _Complete _Total money NULL , EP_EventType nvarchar (250 ) NULL , NAO _DateNeeded datetime NULL , EP_ExistingAssets nvarchar (250 ) NULL , NAO _Deliverables nvarchar (250) NULL , EP_Fax nvarchar (250 ) NULL , NAO _Description ntext NULL , EP_Lecture smallint NULL , Workflow Diagramming is NAO _Dimensions nvarchar (250) NULL , EP_lineItemNum nvarchar (250 ) NULL , NAO _ExistingAssets ntext NULL , EP_LocalPrinting smallint NULL , NAO _Height int NULL , EP_Location nvarchar (250 ) NULL , NAO _ID nvarchar (250) NULL , EP_NewAssets nvarchar (250 ) NULL , NAO _Info ntext NULL , EP_PhotographerEnd datetime NULL , NAO _Lecture smallint NULL , EP_PhotographerStart datetime NULL , eFolder NAO _lineItemNum nvarchar (250) NULL , EP_PhotographicCost money NULL , NAO _LocalPrinting smallint NULL , EP_Prepress smallint NULL , NAO _NewAssets ntext NULL , ( EP_ProductionJournal ntext NULL , NAO _ObjectType nvarchar (250) NULL , EP_SpecialDeliveryInstructions ntext NULL , eFolderID nvarchar (31) NOT NULL , EP_Total money NULL , Where Metastorm Excels NAO _PhotographicCost money NULL , eParent nvarchar (31) NULL , NAO _Prepress smallint NULL , EP_VisualReference smallint NULL , eFolderName nvarchar (31) NULL , NAO _ProductionJournal ntext NULL , eStageName nvarchar (31) NULL , EP_Web smallint NULL , NAO _Quantity int NULL , eMapName nvarchar (31) NULL , FundSource nvarchar (250 ) NULL , NAO _Source nvarchar (250) NULL , initStatus nvarchar (250 ) NULL , eServerName nvarchar (31) NULL , NAO _SpecialDeliveryInstructions ntext NULL , Instructions ntext NULL , eCategory nvarchar (31) NULL , NAO _Total money NULL , LineItems nvarchar (250 ) NULL , eOriginator nvarchar (100) NULL , NAO _VisualReference smallint NULL , eSubject nvarchar (250) NULL , mediaPrice money NULL , NAO _Web smallint NULL , eArchived smallint NULL , NAO _ArtTreatment smallint NULL , NAO _Width int NULL , ePriority smallint NULL , NAO _Complete _Total money NULL , nextStage nvarchar (250) NULL , NAO _DateNeeded datetime NULL , eActionCount int NULL , O_ArtTreatment smallint NULL , eCreationTime datetime NULL , NAO _Deliverables nvarchar (250 ) NULL , O_Complete _Total money NULL , eEntryTime datetime NULL , NAO _Description ntext NULL , O_DateNeeded datetime NULL , eUpdated datetime NULL , NAO _Dimensions nvarchar (250 ) NULL , O_Deliverables nvarchar (250) NULL , NAO _ExistingAssets nvarchar (250 ) NULL , eDeadline datetime NULL , O_Description ntext NULL , NAO _Height int NULL , eActionTime datetime NULL , O_ExistingAssets ntext NULL , NAO _ID nvarchar (250 ) NULL , eActionName nvarchar (31) NULL , O_Height int NULL , eActionUser nvarchar (100) NULL , NAO _Lecture smallint NULL , O_Info ntext NULL , eFragmentStack ntext NULL NAO _lineItemNum nvarchar (250 ) NULL , O_Lecture smallint NULL , NAO _LocalPrinting smallint NULL , O_lineItemNum nvarchar (250) NULL , NAO _NewAssets nvarchar (250 ) NULL , O_LocalPrinting smallint NULL , NAO _ObjectType nvarchar (250 ) NULL , O_NewAssets ntext NULL , NAO _PhotographicCost money NULL , O_PhotographicCost money NULL , NAO _Prepress smallint NULL , O_Prepress smallint NULL , NAO _ProductionJournal ntext NULL , O_ProductionJournal ntext NULL , NAO _Quantity int NULL , O_Quantity int NULL , NAO _Source nvarchar (250 ) NULL , O_SpecialDeliveryInstructions ntext NULL , NAO _SpecialDeliveryInstructions ntext NULL , O_Total money NULL , NAO _Total money NULL , O_VisualReference smallint NULL , NAO _VisualReference smallint NULL , O_Web smallint NULL , NAO _Web smallint NULL , O_Width int NULL , NAO _Width int NULL , old _parent nvarchar (250) NULL , nextStage nvarchar (250 ) NULL , old _parent _foldername nvarchar (250) NULL , O_ArtTreatment smallint NULL , Old _Total money NULL , O_Complete _Total money NULL , prnt nvarchar (250) NULL , O_DateNeeded datetime NULL , prntFolderName nvarchar (250) NULL , O_Deliverables nvarchar (250 ) NULL , ProductionStartDate datetime NULL , O_Description ntext NULL , Requestor nvarchar (250) NULL , O_ExistingAssets nvarchar (250 ) NULL , result nvarchar (250) NULL , O_Height int NULL , resultCount int NULL , O_Lecture smallint NULL , Staff1 nvarchar (250) NULL , O_lineItemNum nvarchar (250 ) NULL , Staff2 nvarchar (250) NULL , O_LocalPrinting smallint NULL , Status nvarchar (250) NULL , O_NewAssets nvarchar (250 ) NULL , Status 1 nvarchar (250) NULL , O_PhotographicCost money NULL , Status 2 nvarchar (250) NULL , O_Prepress smallint NULL , Studio 1 nvarchar (250) NULL , O_ProductionJournal ntext NULL , Studio 2 nvarchar (250) NULL , O_Quantity int NULL , tmpPrnt nvarchar (250) NULL , O_SpecialDeliveryInstructions ntext NULL , txtUrgent nvarchar (250) NULL , O_Total money NULL , type nvarchar (250) NULL , O_VisualReference smallint NULL , urgent smallint NULL , O_Web smallint NULL , WO_initiator nvarchar (250) NULL , O_Width int NULL , EP_OfficePhone nvarchar (250) NULL , OrderCloseDate datetime NULL , WorkOrderApproved nvarchar (250) NULL , OrderStatus nvarchar (250 ) NULL , AO_Medium nvarchar (250) NULL , OrderTotal float NULL , newPhotography smallint NULL , p_Total money NULL , AO_Other smallint NULL , prntFolderName nvarchar (250 ) NULL , AO_Unknown smallint NULL , ProductionJournal ntext NULL , AO_AssetName nvarchar (250) NULL , ProjID nvarchar (250 ) NULL , AO_EAStatus nvarchar (250) NULL , ProjNum nvarchar (250 ) NULL , AO_FileName nvarchar (250) NULL , PurchasingCategories nvarchar (250 ) NULL , NAO _AssetName nvarchar (250) NULL , RecipientName nvarchar (250 ) NULL , NAO _EAStatus nvarchar (250) NULL , RecipientOffice nvarchar (250 ) NULL , NAO _FileName nvarchar (250) NULL , RecipientPhone nvarchar (250 ) NULL , NAO _Other smallint NULL , RequestorName nvarchar (250 ) NULL , NAO _Unknown smallint NULL , RequestorOffice nvarchar (250 ) NULL , O_Other smallint NULL , RequestorPhone nvarchar (250 ) NULL , O_Unknown smallint NULL , Result nvarchar (250 ) NULL , Deliverables nvarchar (250) NULL , Staff 1 nvarchar (250 ) NULL , Quantity int NULL Staff 2 nvarchar (250 ) NULL , Status nvarchar (250 ) NULL , Status 1 nvarchar (250 ) NULL , Status 2 nvarchar (250 ) NULL , Studio 1 nvarchar (250 ) NULL , Studio 2 nvarchar (250 ) NULL , Temp 1 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 , 65 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
  • 66.
    IRIS Data Model Line_Items ( Deliverables ( EFOLDERID nvarchar (31) NOT NULL , Id int IDENTITY (1, 1) N AO_AccNum nvarchar (250) NULL , Name nvarchar (250) N AO_Artist nvarchar (250) NULL , Cost int NOT 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 AO_Info AO_Lecture AO_LightAngle nvarchar ntext smallint nvarchar (250) (250) NULL NULL NULL NULL , , , , Projects ( Id int IDENTITY (1, 1) AO_lineItemNum nvarchar (250) NULL , Name varchar (400) AO_LocalPrinting smallint NULL , AO_NewAssets ntext NULL , AO_NonNGAObj smallint NULL , Database AO_ObjectClass nvarchar (250) NULL , AO_PhotographicCost money NULL , AO_Prepress smallint NULL , AO_ProductionJournal AO_Quantity ntext int AO_SpecialDeliveryInstructions ntext NULL NULL NULL , , , Enforce integrity AO_Spectrum AO_Status nvarchar nvarchar (250) (250) NULL NULL , , Not used AO_Title nvarchar (250) NULL , AO_Total AO_TreatmentPhase money nvarchar (250) NULL NULL , , (Possible?) AO_VisualReference smallint NULL , AO_Web AO_Width Assignee 1 smallint int nvarchar (250) NULL NULL NULL , , , Requestors ( Assignee 2 nvarchar (250) NULL , Id int IDENTITY (1, 1) N checkDeliverables smallint NULL , Name varchar (250) N DeliverablesAmount int NULL , Office varchar (150) destinationFolderId nvarchar (250) NULL , Phone varchar (50) destinationFolderName nvarchar (250) NULL , eName varchar (150) Difference _Total money NULL , Duty 1 nvarchar (250) NULL , Duty 2 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 EP_Email nvarchar nvarchar (250) (250) NULL NULL , , eEvent ( EP_EventEnd datetime NULL , eFolderID nvarchar (31) EP_EventName nvarchar (250) NULL , eEventID int 66 NOT EP_EventStart datetime NULL , eVersion int EP_EventType nvarchar (250) NULL , ePriority smallint EP_ExistingAssets ntext NULL , eEventTime datetime
  • 67.
    Line_Items IRIS Data Model ( 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 AO_Info AO_Lecture nvarchar ntext smallint (250) NULL NULL NULL , , , Art Object AO_LightAngle nvarchar (250) NULL , AO_lineItemNum nvarchar (250) NULL , AO_LocalPrinting smallint NULL , AO_NewAssets ntext NULL , AO_NonNGAObj AO_ObjectClass smallint nvarchar (250) NULL NULL , , Where type = AO_PhotographicCost money NULL , Art Non AO_Prepress smallint NULL , “Art” IRIS Temp AO_ProductionJournal ntext NULL , AO_Quantity int NULL , AO_SpecialDeliveryInstructions ntext NULL , AO_Spectrum nvarchar (250) NULL , Event AO_Status nvarchar (250) NULL , Folder ID Object Other AO_Title nvarchar (250) NULL , Art AO_Total money NULL , Screen AO_TreatmentPhase nvarchar (250) NULL , AO_VisualReference smallint NULL , AO_Web smallint NULL , AO_Width int NULL , Assignee 1 nvarchar (250) NULL , Data Assignee 2 nvarchar (250) NULL , checkDeliverables smallint NULL , DeliverablesAmount int NULL , destinationFolderId nvarchar (250) NULL , destinationFolderName nvarchar (250) NULL , Difference _Total money NULL , Duty 1 nvarchar (250) NULL , Art Duty 2 nvarchar (250) NULL , EP_AdditionalDetails ntext NULL , EP_ArtTreatment smallint NULL , EP_Cell nvarchar (250) NULL , ignore EP_Complete _Total money NULL , Object EP_Contact nvarchar (250) NULL , EP_DateNeeded datetime NULL , ignore ignore ignore EP_Dress nvarchar (250) NULL , EP_Email nvarchar (250) NULL , EP_EventEnd datetime NULL , Info EP_EventName nvarchar (250) NULL , EP_EventStart datetime NULL , EP_EventType EP_ExistingAssets EP_Fax EP_Info nvarchar ntext nvarchar ntext (250) (250) NULL NULL NULL NULL , , , , Events EP_Lecture smallint NULL , EP_lineItemNum nvarchar (250) NULL , EP_LocalPrinting smallint NULL , EP_Location EP_NewAssets nvarchar ntext (250) NULL NULL , , Where type = ignore Event info ignore ignore EP_PhotographerEnd datetime NULL , EP_PhotographerStart datetime NULL , “Event” ignore 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 , Non Art ignore NAO_Description ntext NULL , ignore Event info NAO_Dimensions nvarchar (250) NULL , ignore ignore NAO_ExistingAssets ntext NULL , NAO_Height int NULL , NAO_ID NAO_Info NAO_Lecture nvarchar ntext smallint (250) NULL NULL NULL , , , Object NAO_lineItemNum nvarchar (250) NULL , NAO_LocalPrinting smallint NULL , NAO_NewAssets ntext NULL , NAO_ObjectType nvarchar (250) NULL , NAO_PhotographicCost NAO_Prepress money smallint NULL NULL , , Where type = NAO_ProductionJournal ntext NULL , NAO_Quantity NAO_Source int nvarchar (250) NULL NULL , , “Non Art” ignore NAO_SpecialDeliveryInstructions ntext NULL , ignore ignore NonArt NAO_Total money NULL , ignore 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 = Other O_ExistingAssets ntext NULL , O_Height int NULL , O_Info ntext NULL , O_Lecture smallint NULL , ignore O_lineItemNum nvarchar (250) NULL , O_LocalPrinting smallint NULL , ignore ignore ignore Other O_NewAssets ntext NULL , O_PhotographicCost money NULL , O_Prepress smallint NULL , Where type = O_ProductionJournal ntext NULL , O_Quantity int NULL , O_SpecialDeliveryInstructions O_Total ntext money NULL NULL , , “Other” 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 , ignore prntFolderName nvarchar (250) NULL , ignore ignore ignore Other ProductionStartDate datetime NULL , Requestor nvarchar (250) NULL , result nvarchar (250) NULL , resultCount int NULL , Staff 1 nvarchar (250) NULL , Staff 2 nvarchar (250) NULL , Status nvarchar (250) NULL , Status 1 nvarchar (250) NULL , Art Status 2 nvarchar (250) NULL , Studio 1 nvarchar (250) NULL , Studio 2 nvarchar (250) NULL , tmpPrnt nvarchar (250) NULL , Object txtUrgent nvarchar (250) NULL , type nvarchar (250) NULL , urgent smallint NULL , ignore ignore WO_initiator nvarchar (250) NULL , EP_OfficePhone nvarchar (250) NULL , ignore ignore WorkOrderApproved nvarchar (250) NULL , AO_Medium nvarchar (250) NULL , newPhotography smallint NULL , AO_Other smallint NULL , Info 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 , ignore O_Other smallint NULL , 67 O_Unknown smallint NULL , Event info ignore ignore Deliverables nvarchar (250) NULL , ignore Quantity int NULL
  • 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" 68
  • 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 69
  • 70.
    Metastorm Actual Table(Imaging_Services_LI) Logical Header Table info (2NF) Logical Logical Art Table Info (2NF) Event Line Values Logical Not Codes Non Art (1NF issue) Data (2NF) Work Order Lines Miscellaneous Data (Not Shown in this sample) 70
  • 71.
    Metastorm Note: These areproblems 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 71
  • 72.
    Normalizing IRIS • Complexset 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 Projects Headers Lines Workflow for with events Imaging for lines common Requestors Request info Workflow events Lines for Lines for Lines for Lines for For header Event Art other nonart request request request request Deliverables 72
  • 73.
    Documentation (DIR) • ProjectFolder – ngagroupTTDPProjectsDIR- DIV Images Request System • Documents – Converting Metastorm Schema in a Reportable ERD model (DIR)-20070919a 1 1.doc 73
  • 74.
    Architecture Web Browser ` PHPRunner Application Server (Web Server) SQL Server Database 74
  • 75.
    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 75
  • 76.
    Screen Customization Override eventscan behard to say “no” since, it so easy … However, Very added in define locations I really demand a very good reason, and prefer This little block of code says To avoid this . . . 1. Prompt user message to load approvals 2. If selected, CallLots of this, can cause serious maintenance issues 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 76
  • 77.
    Business Modeling throughData Model • Define Relationships Between Data Parent Primary Eye Color: Bwn Home Child Child Child 77
  • 78.
    Architecture Web Browser ` PHPRunner Application Server (Web Server) SQL Server Database 78
  • 79.
    DCLPA (July 2008) The current Filemaker database on the MAC is having lots of problems, I need help Greg and Art, Can you Help us 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 79 do things… Were on board!
  • 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 In that case, “Nevermind” 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. 80
  • 81.
    DCL-PA Database • ExistingFilemaker 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 81
  • 82.
    Time • Working withDCLPA to document existing processes (~ 1 FTEWeeks) • Working with DCLPA to defineimprove processed and to define the data relationships (~ 1-2 FTEWeeks) • Requirements and Design (~1 week) • CodingUI (~ 2 FTEWeeks) • Testing (~ 1 Week) • Development of ADS Charter (?) 82
  • 83.
    Data Model Iterations Refined the data model as we to envision how use cases would work with it ! Request ApprovingUserRoles ApprovingRoles ApprovingRole_id Request_id A pprovingUserRole_id RequestTypeApprovingRoles Name Request Status Type_of_work_ind A pprovingUser_id LastUpdateUserName RequestTypeApprovingRole_id A pprovingRole_id RequestType_id Request_status_id Type of Work Comments LastUpdateTime ApprovingRole_id Type of Work Name LastUpdateUserName Comments Name Type_of_work_ind LastUpdateTime LastUpdateUserName Type_of_work_ind Request_status_id Type of Work Name LastUpdateTime RequestTypes Request Status Name Major? RequestType_id Name Request_datetime isMajor TMS (External) Requestor_id RequestApprovingRoles isMinor RequestA pprovingRole_id Requestor Name ApprovingUsers Request_id LastUpdateUserName Object_id LastUpdateTime Phone Number A pprovingUser_id ApprovingRole_id User_id isQuick Classification ApprovingUser_id Name isBulk Accession # Object_id Approval_id Artist LastUpdateUserName Comments Title Classification LastUpdateTime Requestors Date/Period Accession # Approvals LastUpdateUserName A pproval_id LastUpdateTime Medium Artist Request Requestor_id Paper/Support(s) Title Requestors Name Gallery_id (Badge number) Mark(s) Date/Period isApproved Type of Work Request_id Inscription (s) Medium Requestor_id LastUpdateUserName Type_of_work_ind Name Dimensions Paper/Support(s) Gallery_id (Badge number) LastUpdateTime Type_of_work_ind Donor Mark(s) Type of Work Name Collection Requestor Name Request_status_id Inscription(s) Major? Events Loan Dates Dimensions Gallery Name Users Requests XRFStatuses Request_date Donor XRFStatus_id User_id Request_id Event_id Location Code – translated Collection RequestStatuses Name Requestor_id Loan Dates Username RequestStatus_id TMSObject_id Name to general code Events LastUpdateUserName Password RequestReason_id Request Status Object_id email Name RequestType_id ---> TMS LastUpdateTime Location Code – translated Event_id DropDown_Display_Order Request_status_id Description Event_Group_id to general code LastUpdateUserN... RequestStatus_id LastUpdateUserName Event Name LastUpdateTime LastUpdateTime Requestor_id Name Short Description Comments Event Group Event_Group_id Requestors Type_of_work_ind Request Events QuickNotes Requestor_id Event_Group_id Long Description RequestDate Event Group Name RequestEvent_id LastUpdateUserName Gallery_id ---> ASD. Employee Table Name WorkOrderTypes LastUpdateTime Comments TMS (External) Request_id Request Events Event Group WorkOrderType_id Exhibition_id isInEmployeeDirectory Event_id ExhibitionActivity_id LocalVersionOfName Event_Group_id Name Object _id Request Event Statuses RequestEvent_id LastUpdateUserName Classification_id Request_event_status_id Event Group Name LastUpdateUserName LastUpdateTime Request_event_status_id Request_id LastUpdateTime Started_on test_id Name Event_id IRIS (External) Completed_on Request Event Statuses ReportTypes ReportTypeGroups Event_Group_id Event Name ReportType_id ReportTypeGrou... Conservator_id Request_event_status_id RequestReportWorkOrders WorkOrder_Line_ID IRIS (External) Request_event_status_id RequestReport_WorkOrder_id ReportTypeGroup_id Name Description Name isTechnicalAnalysis Conservators WorkOrder_Line_ID Status Name RequestReport_id LastUpdateUserName isDetailedExam BT_Image_Workorder_line_id Status Name WorkOrder_Line Event_Group_id ---> IRIS Line LastUpdateTime Conservator_id WorkOrderType_id Analog Image Locations DT_Image_Workorder_line_id Started_on_Datetime LastUpdateUserName AT_Image_Workorder_line_id Gallery_id (Badge number) Analog_Image_location_id Completed_on_Datetime Conservators LastUpdateTime Conservators Analog_Image_location_id Name RequestReports Conservator_id Name Conservator_id RequestReport_id Gallery_id Conservator_id ----> ASD Employee Extensis _Image_Pointer Analog Image Locations Name Request_id Comments Gallery_id (Badge number) ReportType_id isInEmployeeDirectory DCL Paper Portfolio Images Comment Employees (External) Analog_Image_location_id StartedDate LocalVersionOfName Description Name RequestReportDACs Extensis_Image_Pointer Gallery_id RequestReport_DAC_id EndedDate LastUpdateUserName Analog Location Name BT_Image_Workorder_line_id Gallery Name Conservator_id LastUpdateTime RequestReport_id DT_Image_Workorder_line_id DAC_Record_id ---> Portfolio (DCL-PA) Description User_id DCL Paper Portfolio Images Employees (External) Comments AnalogImageLocations AT_Image_Workorder_line_id LastUpdateUserName RequestReportStatus_id AnalogImageLocation_id LastUpdateTime A nalogImageLocation_id Extensis _Image_Pointer Gallery_id Name Analog_Image_location_id IncludeInFinalObjectReport LastUpdateUserName Gallery Name Report LastUpdateTime Analog Location Name LastUpdateUserName LastUpdateTime Extensis _Image_Pointer RequestReportStatuses RequestReportStatus_id Name DropDown_Display_Order ReportType_id LastUpdateUserName Comment 83
  • 84.
    Simplified Requests Column Name Request_id EntryShortcutSelect_MajorTMSObj... RequestReason_id Data RequestType_id RequestStatus_id Requestor_id Comment Model QuickNotes RequestDate LastUpdateUserName LastUpdateTime Exhibition_id ExhibitionActivity_id ExhibitionOtherActivity_id EntryShortcutAjax_MajorTMSObje... Loan_id LoanActivity_id RequestNonTMSObjects RequestTMSObjects RequestReports RequestApprovingRoles Column Name RequestBulkClassificationCounts Column Name Column Name Column Name Column Name RequestReport_id RequestApprovingRole_id RequestNonTMSObject_id RequestTMSObject_id RequestBulkClassificationCount_id Request_id Request_id Name Request_id Request_id ReportType_id ApprovingRole_id NGAContactGallery_id TMSObject_id CountForClassification StartedDate ApprovingUser_id Request_id EntryShortcutAjax_TMSObject_id Classification_id EndedDate Approval_id isNGA Conservator_id Comment Comment Description LastUpdateUserName User_id LastUpdateTime RequestReportStatus_id AnalogImageLocation_id IncludeInFinalObjectReport RequestReportTechnicalInfos Report Column Name LastUpdateUserName RequestReport_id LastUpdateTime TechnicalNotes RequestTMSObject_id BetaRadiograph Attachment RequestReportWorkOrders XRayFluorescenceSpectroscopy Image Column Name InfraredSpectroscopy RequestReportDACs Column Name RequestNonTMSObject_id RequestReportAttachments RequestReport_WorkOrder_id MicroFadometer Column Name RequestReport_id RequestReport_DAC_id FourierTransformInfraredSpectroscopy RequestReportAttachment_id WorkOrder_Line RequestReport_id FluorescenceSpectroscopy RequestReport_id WorkOrderType_id DAC_Record_id ColorSpectroscopy FileName LastUpdateUserName Comment None Other LastUpdateUserName Comment LastUpdateTime 84 LastUpdateTime OtherDescription
  • 85.
    Simplified Data Model Request to fix paper Request id: 1 Date: 1/1/90 Request NonNGA Item 3 NGA Item 2 3 XX Y Approved NonNGA Item 5 10 Papers X Approved NGA Item 1 10 Prints Deputy Approved Non TMS Tallies TMS Object Request Approvals Object (Bulk Counts) Reports Examination Treatment Report related Report related Report related Report related Report IRIS Portfolio attachements Tech Info Work Orders Images (DAC) Excel Tech Notes Image ID: 16 Excel Spreadsheet Tech Notes Work Order 10 For exam Image ID: 16 Spreadsheet Work Order 10 Image ID: 16 PDF For exam Work Order 10 Image ID: 14 Work Order 23 85
  • 86.
    Recent Changes Request TMS Object Non TMS / Tallies TMS Object Request Approvals Object NonTMS Object (Bulk Counts) Reports Report related Report related Report related Report related Report IRIS Portfolio attachements Tech Info Work Orders Images (DAC) 86
  • 87.
    Architecture Web Browser ` PHPRunner Application Server (Web Server) SQL Server Database 87
  • 88.
    Rapid application development From Wikipedia • Rapid application development is a software development methodology, which involves iterative development and the construction of prototypes. theis a merger of various The speed and agility of It RAD tools, allows the structured techniques, especially the data also take Information communication of the design process to driven place In the “Prototype” instead of only the “Design Engineering with prototyping techniques to accelerate software Document”. systems development. • RAD calls for a picture is worth a thousand structured techniques and “If the interactive use of words, a prototype prototyping is worth a thousand Pictures” to define user's requirements and design the final system. Using structured techniques the developer first builds - Anonymous preliminary data models and business process models of TEXT the business requirements. Prototyping then helps the analyst TEXT+DIAGRAMS (MODELS, UML,DFD,…) and users to verify those requirements and to formally TEXT+DIAGRAMS + PROTOTYPES 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. 88
  • 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) 89
  • 90.
    RADPrototype Development Collect user Requirements Develop Develop/ Initial Update Design Prototype Collect Verify With Document User changes User Approved System 90
  • 91.
    PHPRunner (step 1) Maprelationships between tables 91
  • 92.
    All the webpages in the application 92
  • 93.
    User Interface Model Where did “Work Log” come from? Why doesn't “Request” point to “Request Classification count?” Data Model Request Non TMS Tallies TMS Object Request Approvals Object (Bulk Counts) Reports Web Pages related to structure Report related Report related Report related 93 Of request Report Tech Info IRIS Work Orders Portfolio Images (DAC) Report related attachements
  • 94.
  • 95.
    “Request” and “WorkLogs” both store data Usersame place (Request Table), they as in the Interface Model are only different in which tables are Linked to them, what appears on there screens and processing rules. Request AKA “Treatment Reports” Request : 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 95
  • 96.
    Links to AuthoritativeSources Portfolio IRIS Employee Database TMS Public Data Extract Nightly Rebuild TMS 96
  • 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 97
  • 98.
    Documentation Project Folder •ngagroupTTDPProjectsPCD -Paper Conservation Database Keys Documents •General Design - Draft (PCD) 20090327a.doc •DCL-PA Database 2.ppt 98
  • 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 99
  • 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 . . . 100
  • 101.
    Toolkit Problems • MultipleFields to perform different types of selects • Only 2-Level Hierarchy supported • UI customizations might be lost during regeneration 101
  • 102.
    Issues Major 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 Issues • Performance – Network, Query, Concurrency, Scalability • Misc – Security, Upload File Placement, – Editing Capabilities (i.e.Spellcheck), – Search (Attachments), Audit Trail, Delete Logic 102
  • 103.
    Other Issues • Scope • Production Planning • Testing and QA • Data Conversion • Procedures and documentation • Web Reports • Iterations and upgrades • Integration with existing processes 103
  • 104.
    End of MainPresentation • Questions 104