OLE Data

SYSTEM OF RECORD LOCATIONS

Seq

Name

Location

Description

1

Rice Server Bootstrap

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-impex/ole-impex-rice

Modified version of rice-impex-server-bootstrap

2

OLE Master

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-impex/ole-impex-master

Master data set for OLE (derived from KFS 5.0)

3

Liquibase Change Sets

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-liquibase/ole-liquibase-changeset

Changesets applied on top of 1 and 2

GENERATED LOCATIONS

Seq

Name

Location

Description

1

Rice Server Bootstrap

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-sql/ole-rice-sql

Modified version of rice-impex-server-bootstrap

2

OLE Master

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-sql/ole-master-sql

Master data set for OLE (derived from KFS 5.0)

3

Liquibase Change Sets

http://svn.kuali.org/repos/ole/branches/dev/50-upgrade-test-1/ole-app/ole-db/ole-sql/ole-liquibase-sql

Changesets applied on top of 1 and 2

PROCESS DESCRIPTION

  1. CI continuously monitors the 3 system of record locations
  2. As soon as a change is detected, a job is fired to generate SQL from the system of record locations
    1. The job generates SQL for MySQL and Oracle
    2. Any new or altered SQL is checked into its corresponding generated location
    3. Any old SQL is removed from its corresponding location
    4. This assures the GENERATED locations are automatically kept in sync with the SYSTEM OF RECORD locations as changes are committed
    5. The CI job also creates metadata describing the SQL files for each location - src/main/resources/META-INF
  3. As soon as SQL generation completes, a CI job is fired to execute the SQL
    1. The SQL execution job executes the SQL for both MySQL and Oracle against test databases
    2. The SQL execution job is a lightweight Spring based component at its core
    3. The Spring based nature of the SQL execution decouples the database creation process from:
      1. The file system
      2. The build system
      3. Source code management system
      4. "Other" random requirements imposed by the tooling being used to convert database agnostic XML into database specific SQL
        1. XML Impex
          1. Hard coded relative pathing issues between the java code being executed and the velocity templates
          2. Overall size limitation
        2. CloverETL Impex
          1. No ability to declaratively express a dependency on a published version of the tool
          2. Hard coded path related to workspace.prm requiring the java virtual machine to be launched from the same directory as the tool itself
        3. Liquibase
          1. Requires a connection to a live database containing the tables DATABASECHANGELOG and DATABASECHANGELOGLOCK even if all you are doing is generating SQL from XML
    4. The Spring based execution of the SQL happens to run faster, but improving execution speed is not the point
    5. Decoupling the database creation process from file systems, build systems, source code managements systems, and tools that also require those things is the point

Operated as a Community Resource by the Open Library Foundation