Tabla de Contenidos

ScriptsDB - Proceso: Creación de Scripts

Esta sección define el proceso de creación de scripts para soportar los desarrollos, ajustes, mejoras y solicitudes de cambios que impacten el modelo entidad relación de SICOF ERP.

Notas de Versión

VersiónElaboraRevisaApruebaFecha PublicaciónObservaciones
1.0carlos.torres, abdimar.estradadaberson.henaodaberson.henao05/10/2020Versión Inicial

Antes de describir el proceso es importante la compresión de los siguientes conceptos.

Conceptos Previos

Proceso de Nombramiento de Scripts

A continuación se describe el proceso de nombramiento de scripts

Síntesis

Asumiendo la siguiente Url genérica http://adacsc.co:1443/svn/repository/ADA/SICOF/ScriptsDB/SICOFERP/ se presentan los siguientes ejemplos:

Rama - AlmacenamientoNumeración ExternaFuncionalidad Propietaria.VersiónNumeración Interna.EvoluciónSentenciaNombreReversiónTipo
branches00000000FUNCIONALIDAD PROPIETARIAV1.01001 CREATE TABLEESQUEMA.MAE_PRUEBAS
branches00000000FUNCIONALIDAD PROPIETARIAV1.01001 CREATE TABLEESQUEMA.MAE_PRUEBASREVERT
branches00000000FUNCIONALIDAD PROPIETARIAV1.01001aALTER TABLEESQUEMA.MAE_PRUEBAS
branches00000000FUNCIONALIDAD PROPIETARIAV1.01002 CREATE OR REPLACE FORCE VIEWESQUEMA.V_PRUEBAS
branches00000000FUNCIONALIDAD PROPIETARIAV1.01003aCREATE OR REPLACE PACKAGEESQUEMA.PCK_PRUEBAS SPEC
branches00000000FUNCIONALIDAD PROPIETARIAV1.01003bCREATE OR REPLACE PACKAGEESQUEMA.PCK_PRUEBAS BODY

A lo largo de la sección se definirá cada fragmento del nombramiento de scripts

Almacenamiento

Según el Flujo de Registro los scripts deben almacenarse según la siguiente sección Repositorio SVN

Versionamiento

Toda Funcionalidad Propietaria debe estar versiona empezando con V1.0. A Continuación se definen los siguientes lineamientos:

Extensión

Se deben utilizar las extensiones registradas en la sección Estandares y Prefijos PL/SQL Extensiones de archivos

Agrupación

Cada script debe agruparse de acuerdo a la Funcionalidad Propietaria y estar contenido en el directorio raíz de la funcionalidad.

Numeración Externa

Cada directorio que represente una Funcionalidad Propietaria debe iniciar con una numeración de 8 dígitos, ser secuencial e iniciar a partir de 10000000.

Ejemplo:

00000000 FUNCIONALIDAD PROPIETARIA

Nota

La numeración [00000000 - 09999999] está reservada para scripts de procesos internos y no debe ser utilizada para registrar scripts de lógica del negocio.

Numeración Interna

Cada directorio que represente una Funcionalidad Propietaria deberá contener scripts de evolución de la funcionalidad, estos también deben estar numerados con 4 dígitos de forma secuencial y deben iniciar a partir de 1000.

Ejemplo:

1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS.sql

Nota

La numeración [0000 - 0999] está reservada para scripts de procesos internos y no debe ser utilizada para registrar scripts de lógica del negocio.

Independencia / Segregación por Objeto

Los scripts deben ser generados por objetos, no se deben agrupar.

Nombramiento por Sentencia

Cada script debe registrar en su nombre la sentencia general que describirá y debe estar en mayúsculas.

Ejemplo:

1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS.sql
1002 CREATE OR REPLACE FORCE VIEW ESQUEMA.V_PRUEBAS.sql

Evolución de Scripts

Según el tipo de objeto se pueden presentar los siguientes tipos de evoluciones de scripts:

Evolución por sustitución

Este tipo de cambios modifican el script inicial. No es necesario crear un nuevo script ya que el control de versiones permitirá la gestión de cambios. Aplica para los siguientes tipos de objetos:

Ejemplo:

1002 CREATE OR REPLACE FORCE VIEW ESQUEMA.V_PRUEBAS.sql

Nota Todos los objetos que en su definición tengan especificación y cuerpo deben registrarse en archivos separados de la siguiente manera:

Ejemplo:

1003a CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS SPEC.sql
1003b CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS BODY.sql

Evolución por estado

Este tipo de cambios se anexan al script inicial por medio de otro script. No es posible modificar el archivo inicial porque los objetos no permiten la instrucción CREATE OR REPLACE. Aplica para los objetos:

Los scripts de evolución por estado deben ser nombrados por el mismo nombre del script original pero la numeración debe estar acompañada de letras en minúsculas (al final de la numeración) de la [a-z] en caso de alcanzar el limite se procederá con las combinaciones [aa-az] y así sucesivamente.

Ejemplos:

1002 CREATE TABLE PRESUP01.MAE_PRUEBAS.sql
1002a ALTER TABLE PRESUP01.MAE_PRUEBAS.sql
1002b ALTER TABLE PRESUP01.MAE_PRUEBAS.sql
1002c ALTER TABLE PRESUP01.MAE_PRUEBAS.sql

Reversión de Scripts

Cada Funcionalidad Propietaria contiene un directorio llamado Revert el cual almacenará los scripts de reversión. A continuación se dictan los lineamientos para crearlos:

Ejemplos:

Script de Actualización: 1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS.sql
Script de Reversión: 1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS REVERT.sql

Personalizaciones / Clientes

En algunas situaciones algunos procesos tienen particularidades entre clientes. En estas situaciones la Funcionalidad Propietaria tendrá en sus versiones el código estándar que aplica a todos los clientes y la particularidades deben registrarse en un directorio interno con las siguientes condiciones:

Archivo Leeme.txt

Este archivo es muy importante para la gestión de script ya que en el se deben registrar las actualizaciones que se realizan en las Funcionalidades Propietarias para comprender el archivo se explicará por medio de una plantilla y finalmente se mostrará un archivo diligenciado según los ejemplos utilizados a lo largo de la sección:

Plantilla Leeme.txt

###########################################################################################
# ARCHIVO DE IMPLEMENTACION - FUNCIONALIDAD PROPIETARIA - EJ: 00000000 FUNCIONALIDAD PROPIETARIA
###########################################################################################
# Versión: Número de la Versión liberada. EJ: 1.0
# Fecha: Fecha de liberación de la Funcionalidad Propietaria, por lo generar tiene la fecha del primer scritp registrado. EJ:06/10/2020
# Desarrollador: Desarrollador que publica la funcionalidad propietaria. EJ:carlos.torres@ada.co
# Módulos: Módulos de la funcionalidad propietaria. EJ:Presupuesto 12.5.2.5.0
###########################################################################################
# A continuación se describe el proceso de implementación de los scripts requeridos para
# la actualización del proceso. Favor tener presente el orden descrito en este
# archivo ya que de no seguir el orden pueden generarse errores de compilación por 
# referencias invalidas.
###########################################################################################
# PASOS DE EJECUCION DE SCRIPTS DB
###########################################################################################
# Alcance:
# Indica el alcance de la funcionalidad propietaria. EJ: Aplica para todos los clientes.
###########################################################################################
# Ejecutar Script: 	En esta sección se registran de forma secuencial a lista de script
#					que deben ser ejecutados para soportar la solución implementada.
# Ejemplo:
#			1.	1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS.sql
#			2.	1002 CREATE OR REPLACE FORCE VIEW ESQUEMA.V_PRUEBAS.sql
#			3.	1003a CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS SPEC.sql
#			4.	1003b CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS BODY.sql
###########################################################################################
# OBSERVACIONES
#------------------------------------------------------------------------------------------
# Aquí se deben registrar observaciones sobre la ejecución de los scripts.
# EJ: Alguna consideración externa a la ejecución del script, roles, permisos, etc.
# Se debe registrar la revisión inicial
# EJ: Revision History: 1.0 - carlos.torres@ada.co - 06/10/2020 07:58:34 : Liberación de versión 
###########################################################################################
#	* Validar objetos inválidos al terminar la actualización.
#	* Ejecutar actualización con un usuario que tenga permisos con el usuario ESQUEMA
###########################################################################################
# HISTORIAL DE ACTUALIZACIONES
# En esta sección se registran las evoluciones de script
###########################################################################################
# Se debe registrar la revisión de la actualización
# EJ: Revision History: 1.1 - carlos.torres@ada.co - 07/10/2020 08:58:34 : Adición de columnas
#------------------------------------------------------------------------------------------
# Ejecutar Script: 	En esta sección se registran de forma secuencial a lista de script
#					que deben ser ejecutados para soportar la solución implementada.
# Ejemplo:
#			1.	1001a ALTER TABLE ESQUEMAMAE_PRUEBAS.sql
# OBSERVACIONES
#------------------------------------------------------------------------------------------
# Aquí se deben registrar observaciones sobre la ejecución de los scripts.
#	* Ejecutar los scripts en el orden propuesto
#	* Validar objetos inválidos al terminar la actualización.
#	* Ejecutar actualización con un usuario que tenga permisos con el usuario ESQUEMA

Ejemplo Leeme.txt

###########################################################################################
# ARCHIVO DE IMPLEMENTACION - 00000000 FUNCIONALIDAD PROPIETARIA
###########################################################################################
# Versión: 1.0
# Fecha: 06/10/2020
# Desarrollador: carlos.torres@ada.co
# Módulos: Presupuesto 12.5.2.5.0
###########################################################################################
# A continuación se describe el proceso de implementación de los scripts requeridos para
# la actualización del proceso. Favor tener presente el orden descrito en este
# archivo ya que de no seguir el orden pueden generarse errores de compilación por 
# referencias invalidas.
###########################################################################################
# PASOS DE EJECUCION DE SCRIPTS DB
###########################################################################################
# Alcance:
# Aplica para todos los clientes.
###########################################################################################
# Ejecutar Script:
#			1.	1001 CREATE TABLE ESQUEMA.MAE_PRUEBAS.sql
#			2.	1002 CREATE OR REPLACE FORCE VIEW ESQUEMA.V_PRUEBAS.sql
#			3.	1003a CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS SPEC.sql
#			4.	1003b CREATE OR REPLACE PACKAGE ESQUEMA.PCK_PRUEBAS BODY.sql
###########################################################################################
# OBSERVACIONES
#------------------------------------------------------------------------------------------
# Revision History: 1.0 - carlos.torres@ada.co - 06/10/2020 07:58:34 : Liberación de versión 
###########################################################################################
#	* Validar objetos inválidos al terminar la actualización.
#	* Ejecutar actualización con un usuario que tenga permisos con el usuario ESQUEMA
###########################################################################################
# HISTORIAL DE ACTUALIZACIONES
# En esta sección se registran las evoluciones de script
###########################################################################################
# Revision History: 1.1 - carlos.torres@ada.co - 07/10/2020 08:58:34 : Adición de columnas
#------------------------------------------------------------------------------------------
# Ejecutar Script: 	
#			1.	1001a ALTER TABLE ESQUEMAMAE_PRUEBAS.sql
# OBSERVACIONES
#------------------------------------------------------------------------------------------
# Aquí se deben registrar observaciones sobre la ejecución de los scripts.
#	* Ejecutar los scripts en el orden propuesto
#	* Validar objetos inválidos al terminar la actualización.
#	* Ejecutar actualización con un usuario que tenga permisos con el usuario ESQUEMA

←Volver atrás

1) , 3)
lenguaje de base de datos o lenguaje de definición de datos (Data Definition Language, DDL por sus siglas en inglés
2) , 4)
Lenguaje de Manipulación de Datos (Data Manipulation Language, DML