desarrollo politico

94
DIRECCIÓN GENERAL DE INFORMÁTICA Esquema y Esquema y Estándares de Estándares de Trabajo Trabajo 29 de Septiembre de 2011 29 de Septiembre de 2011

Upload: seicoplade

Post on 24-Jun-2015

710 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Esquema y Esquema y Estándares de Estándares de TrabajoTrabajo

29 de Septiembre de 201129 de Septiembre de 2011

Page 2: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Esquema de trabajoEsquema de trabajo

29 de Septiembre de 201129 de Septiembre de 2011

Page 3: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

ContenidoContenido

Relación Interdepartamental Esquema de Trabajo Interno

Source Control Plan de Trabajo Process Dashboard

Page 4: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Ordenes de ServicioOrdenes de ServicioUna orden de servicio es básicamente un orden de trabajo que el personal de Soporte a Sistemas turna al personal de Desarrollo de Soluciones, para que este ultimo le de solución a un problema de la aplicación o bien realice una mejora de funcionalidad o mejora visual de acuerdo a una solicitud planteada por el usuario.

Usuario Help Desk Soporte a Sistemas Desarrollo

• El usuario detecta un error en la aplicación.

• Marca a DGI al Help Desk para levantar una orden de servicio.

• El personal captura la orden de servicio de acuerdo a lo que el usuario le comenta.

• Clasifica la orden de servicio para que sea revisada.

• El personal revisa la orden y trata de recrear el caso que el usuario especifico en la orden, de ser necesario se comunica con el para una mejor explicación

• Si la orden procede como error de sistema la turna a Desarrollo

• La orden es revisada y el caso es recreado una vez mas.

• Si es un error de lógica, se corrige el problema de fondo para que este no vuelva a ocurrir, si es de aplicación se corrige solamente.

• Generar nueva versión del ejecutable con el cambio realizado

Page 5: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Propuesta de Flujo para O.S.Propuesta de Flujo para O.S.Problemas

Soporte a Sistemas Desarrollo

• El personal revisa la orden y trata de recrear el caso que el usuario especifico en la orden, de ser necesario se comunica con el para una mejor explicación.

• Revisar si realmente se trata de un error en la aplicación.

• Obtener una descripción mas detallada del error.

• Obtener los datos y el flujo mediante el cual se recrea el error.

• Obtener los datos del usuario (nombre, dependencia y extensión) para que el departamento de desarrollo pueda contactarlo de ser requerido.

• Prestar apoyo para corrección de información.

• La orden es revisada y el caso es recreado una vez mas, en caso de ser necesario.

• Si es un error de lógica, se corrige el problema de fondo para que este no vuelva a ocurrir.

• Si es de aplicación se corrige solamente.

• Si el error origina que se grabe mal la información en la base de datos y hay manera de corregirlo retroalimentar al departamento de soporte a sistemas para que este apoye en la corrección de información mientras se resuelve el problema de fondo.

• Proveer al departamento de Soporte a Sistemas de los querys requeridos para la corrección de información.

Page 6: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Propuesta de Flujo para O.S.Propuesta de Flujo para O.S.Solicitudes

Soporte a Sistemas Desarrollo

• El personal revisa la orden y en caso de ser necesario se comunica con el para una mejor explicación de su solicitud.

• Revisar si es factible realizar esta modificación.

• Obtener una descripción mas especifica de la solicitud.

• Obtener los datos del usuario (nombre, dependencia y extensión) para que el departamento de desarrollo pueda contactarlo de ser requerido.

• En el caso de solicitud de reporte y/o consulta investigar el motivo o que información quieren explotar con ese reporte.

• Para reportes se deberá de solicitar al usuario un formato, la definición de las columnas, grupos y filtros que el usuario solicita que se incluyan en la ventana.

• La orden es revisada y se analiza la factibilidad de la solicitud.

• En el caso de reportes y/o consultas si se determina que el usuario puede obtener esa información en el sistema de alguna otra parte se debe de retroalimentar al personal de soporte a sistemas para que este transmita esta al usuario.

• Se analiza en conjunto con el usuario el requerimiento a fin de pulir la solicitud y aclarar puntos de duda sobre la orden.

• Desarrollo de la solicitud de acuerdo a lo solicitado.

• Proveer al departamento de Soporte a Sistemas de una retroalimentación del cambio para que este pueda apoyar al usuario en caso de cualquier mensaje de error.

• Alimentar las soluciones a problemas mas comunes que se pueden originar con la solución desarrollada.

Page 7: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

ContenidoContenido

Relación Interdepartamental Esquema de Trabajo Interno

Source Control Process Dashboard

Page 8: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Source ControlSource Control

Funciona para controlar las versiones y el desarrollo en equipo.

El líder del proyecto es el responsable de tener siempre todos los objetos y de ir soltando conforme se vayan requiriendo.

Facilidad para el líder de proyecto de generar versión mientras algunas actualizaciones sigan pendientes de terminarse.

Page 9: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Source ControlSource Control

Page 10: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Process DashboardProcess Dashboard

Contabilizar el tiempo de las actividades que realizamos dentro de nuestro horario de trabajo.

Registro de actividades que no llegan con anterioridad, con urgencia y/o de orden directa.

En combinación con el plan de trabajo nos permite encontrar desfases anticipados de los proyectos ‘bandera’.

Autocritica.

OJO: No es fiscalización es auto administración.

Page 11: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Menú

Control de Tiempo

Estimación

Navegación Comentarios

Selección de Tareas Terminar

Process DashboardProcess Dashboard

Page 12: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Process DashboardProcess Dashboard

Agregar, eliminar y modificar actividades.

Crear el árbol de trabajo a fin de detallar proyectos y actividades especificas.

Estructura propuesta.

Page 13: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Process DashboardProcess Dashboard

Ver a detalle el tiempo empleado en cada tema y/o agregar comentario a las interrupciones.

Filtro por fechas para ver que se hizo en la semana. Acceso a la tarjeta de tiempos (Time Card View).

Page 14: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Process DashboardProcess Dashboard

Ver a detalle el tiempo empleado en cada tema y/o agregar comentario a las interrupciones.

Filtro por fechas para ver que se hizo en la semana. Acceso a la tarjeta de tiempos (Time Card View).

Page 15: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Ver a detalle por día el tiempo empleado en cada tema. Análisis de la distribución del tiempo entre temas. Insumo para obtener la hoja de tiempos y esfuerzos.

Process DashboardProcess Dashboard

Page 16: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Click sobre el icono para pausar/contabilizar Ctrl + ‘Click’ para cambiar de actividad (incluso sin pausar). ‘Click’ con el botón derecho para abrir el menú.

Abrir la ventana de administración de actividades. Abrir la ventana ‘Log de Tiempos’.

Process DashboardProcess Dashboard

Minimizado en el Systray

Page 17: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estandarización y Estandarización y Optimización del Optimización del Desarrollo DesktopDesarrollo Desktop

Page 18: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

¿Que buscamos?¿Que buscamos?

Ejemplos

dw_1.retrieve(a)

for i=1 to dw_1.rowcount() ls_b = dw_1.getitemstring(i,1)

if Len(ls_b)<0 Then else dw_1.setitem(i,5,’S’) dw_1.accepttext() end ifNext

dw_1.retrieve(a)for i=1 to dw_1.rowcount()ls_b = dw_1.getitemstring(i,’nombre’)if Len(ls_b)<0 Thenelsedw_1.setitem(i,’activo’,’S’)dw_1.accepttext()end ifNext

dw_1.retrieve(a)for i=1 to dw_1.rowcount() ls_b = dw_1.getitemstring(i,’nombre’) if Len(ls_b)<0 Then else dw_1.setitem(i,’activo’,’S’) dw_1.accepttext() end ifNext

Page 19: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

¿Que buscamos?¿Que buscamos?

Ejemplos

Page 20: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

¿Como reaccionamos?¿Como reaccionamos?

Page 21: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Objetivos del TallerObjetivos del Taller

Permear las buenas prácticas de codificación a todo el departamento estandarizando la visión con la cual se diseñan o desarrollan las aplicaciones.

Reforzar el conocimiento de los estándares de desarrollo así como el uso de las librerías estándar.

Proveer de herramientas tanto al programador como al líder del proyecto sobre que es lo que se tiene que revisar en un producto antes de ser entregado.

Optimizar el tiempo de desarrollo fomentando la reutilización de código, esquemas de encapsulamiento de funcionalidad y herencia.

Generar una base de conocimientos para referencia de quien lo requiera y que pueda servir también como curso de inducción al personal nuevo.

Page 22: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del TallerContenido del Taller

Checklist Visual Lógico Mensajes

Estándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables

Page 23: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del TallerContenido del Taller

Buenas Prácticas de Codificación Indentación del Código Indentación de Sentencias SQL embebido Ámbito de Variables Referencia de Objetos en Variables Pasar parámetros entre ventanas DS/DW Blobs Funciones Esquema de Objetos Triggers, Procedures and Functions (BD).

Page 24: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del TallerContenido del Taller

Librerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo

Recopilación de Trucos y Tips Tips SQL Tips PB

Page 25: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del Taller (Día 1)Contenido del Taller (Día 1)

ChecklistChecklist Visual Lógico Mensajes

Estándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables

Page 26: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

ChecklistChecklist

Como Programador.

Tener un marco de referencia de que es lo se tiene que revisar por default al entregar un producto con la calidad esperada.

Como Líder de Proyecto.

Es el primer punto de referencia de la supervisión si el producto entregado no cumple cuando menos con este checklist debe regresarse.

Page 27: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Checklist 1: VisualChecklist 1: Visual

Estándares de Color Estándares de Formato Alineación de Controles Uso de Scrollbars (Verticales y Horizontales) Ventanas en Cascada (Sheets) ¡Ortografía!

Page 28: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Checklist 2: LógicosChecklist 2: Lógicos

Validar valores nulos Capturar los errores de Llave Primaria y Llave

Foránea. Validaciones sobre Fechas Inhabilitar opciones de menú Longitud de Captura.

Page 29: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Checklist 3: MensajesChecklist 3: Mensajes

Aviso Vs. Error ¿Que es un Aviso? ¿Que es un Error?

Redacción del Mensaje ‘Información Grabada Exitosamente’ Mensajes cortos/largos. ¡Ortografía!

Iconos para Mensajes Mensajes con w_dgi_espere.

Lineamientos Acción en Gerundio + Proceso. Messagebox y Rollback

Page 30: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del Taller (Día 1)Contenido del Taller (Día 1)

Checklist Visual Lógico Mensajes

Estándares BásicosEstándares Básicos Visuales Máscaras y Formatos Reportes Nomenclatura de Variables

Page 31: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

VISUALES

Tipo de letra Tamaño Color

Ms Sans Serif 8 Negro

Smallfonts* 7 Negro

Tipo de Letra

* Solo se puede utilizar en reportes

Page 32: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

VISUALES Alineación

Rubro Alineación Captura

Alineación Despliegue

Claves Numéricas (Clave de Catálogo, Folios, etc..)

Centrado Centrado

Números enteros que representan cantidades a sumar (No. de registros)

Derecha Derecha

Fechas Centrado Centrado

Cantidades Monetarias Derecha Derecha

Porcentaje Derecha Derecha

Títulos de Columnas en ventanas/dw N/A Centrado

Títulos de Columnas en Reportes N/A Centrado

Etiquetas en Free Forms N/A Derecha

Campos de Texto Izquierda Izquierda

Page 33: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

VISUALES Colores Estándar.

DW Tabular y DW Grid, DW Crosstab (Captura, Consulta en Pantalla)

Rubro Color Relleno/Letra Borde

Background del Datawindow Blanco/NA NA

Título de Columnas Button Face/Negro Raised

Campos de Edición (Texto, Dropdowns, etc..) Blanco/Negro None

Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None

DW FreeForm y todos los demás (Captura y Consulta en Pantalla)

Rubro Color Relleno/Letra Borde

Background del Datawindow Button Face/NA NA

Título de Columnas (Etiquetas de Campo) Trasparente/Negro None

Campos de Edición (Texto, Dropdowns, etc..) Blanco/Negro Lowered

Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None

Page 34: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

DW para Reportes

Rubro Color Relleno/Letra Borde

Background del Datawindow Button Face/NA NA

Título de Columnas (Etiquetas de Campo) Trasparente/Negro None

Campos de Edición (Texto, Dropdowns, etc..) Trasparente/Negro None

Campos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None

Ventanas

Rubro Color Relleno/Letra Borde

Background Button Face/NA NA

Etiquetas Trasparente/Negro None

Objetos de Edición (Texto, Dropdowns, etc..) Blanco/Negro Lowered

Objetos de Selección (Radios, Checkbox, etc..) Trasparente/Negro None

Groupbox Trasparente/Negro Lowered

Objetos Lista (Listbox, Treeview, Lists) Blanco/Negro Lowered

Botones Button Face/Negro NA

DW Control para todos los demás tipos NA Lowered

DW Control para FreeForm NA None

Contenedor Objetos OLE NA NA

Tabs Button Face/Negro NA

Page 35: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Mascaras y FormatosRubro Captura Despliegue Impresión

Texto Normal ( excepto URL’s y direcciones de E-mail)

Mayúsculas Mayúsculas Mayúsculas

Números que representan claves o folios

‘###0’ ‘###0’ ‘###0’

Números enteros que representan cantidades a sumar

‘#,##0’ ‘#,##0’ ‘#,##0’

Números enteros negativos que representan cantidades a sumar

‘-#,##0’ ‘-#,##0’ ‘-#,##0’

Números que representan cantidades monetarias

‘$#,##0.00’ ‘$#,##0.00’ ‘$#,##0.00’

Números Negativos que representan cantidades monetarias

‘(#,##0.00)’ ‘[RED](#,##0.00)’ ‘[RED](#,##0.00)’

Números que representan porcentajes

‘##0.00%’ ‘##0.00%’ ‘##0.00%’

Números Negativos que representan porcentajes

‘(##0.00%)’ ‘[RED]##0.00%’ ‘[RED]##0.00%’

Fecha ‘dd/mm/yyyy’ ‘dd/mm/yyyy’ ‘dd/mm/yyyy’

Hora ‘HH24:mm:ss’ ‘HH24:mm:ss’ ‘HH24:mm:ss’

Fecha y Hora ‘dd/mm/yyyy HH24:mm:ss’

‘dd/mm/yyyy HH24:mm:ss’

‘dd/mm/yyyy HH24:mm:ss’

Page 36: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

ReportesEncabezado

Cuerpo

Pie de Página

Page 37: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

EncabezadoNombre de

la Secretaría

Nombre de la

Dirección

Título del Reporte

Nombre de la

Empresa

Nombre de la

Aplicación

Logotipo de la

Empresa

Crear un reporte que será nesteado en todos los demás reportes de la aplicación. Este reporte deberá de llamar d_rep_header o algo parecido de acuerdo al estándar para

identificarlo como un reporte de encabezado. Debe de Recibir como argumentos el Path de la imagen y el Titulo del Reporte.

Page 38: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Cuerpo del ReporteEncabezado

Los encabezados de las columnas deberán ir siempre en mayúsculas. Todos los catálogos al final llevaran un conteo de registros. En los reportes agrupados siempre deberá de tener cuando menos un conteo de registros por

cada grupo, si son cantidades también a menos que el usuario especifique lo contrario. El uso de negritas es exclusivo de columnas que sean división de agrupamientos o bien en

las columnas de totales por grupo y total final.

Detalle de Información

Page 39: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Pie de PaginaNombre del

DW

Paginación

Fecha y Hora de la Impresión

Nombre del DW siempre a la Izquierda, Fecha y Hora al Centro y Paginación a la derecha La fecha y hora de impresión debe de ser un SYSDATE que se encuentra como campo

dentro del query del reporte La paginación es un compute predefinido por PowerBuilder al que se le tiene que cambiar

el texto al español

Page 40: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Nomenclatura de Variables Sintaxis del Nombrado de Variables (Notación Húngara)

Ámbito + tipo_dato + ‘_’ + nombreVariable

El nombre de la variable después del guión bajo se utilizará en notación camello.

Ejemplo:

li_tipoContribuyente

Evitar el uso de variables genéricas para contador o acumulador.

Page 41: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Nomenclatura de Variables Ámbito de las variables

Contexto Prefijo Uso

Local l Se utilizan únicamente dentro del evento o método donde son creadas.

Instancia i Cuando es necesario que únicamente los componentes, métodos y eventos que pertenecen al mismo objeto utilicen el valor de la variable.

Global g Cuando sea necesario que el valor sea utilizado en cualquier componente de la aplicación.

Shared s Cuando es necesario que el valor se mantengan durante todas las instancias que tenga un objeto.

Page 42: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Estándares BásicosEstándares Básicos

Nomenclatura de Variables Tipo de Variables

Tipo Prefijo

Long l

Blob bl

Char c

Real r

Unsigned Long ul

Unsigned Integer ui

Tipo Prefijo

Boolean b

Integer i

Decimal d

Double db

String s

Date dt

Datetime dtt

Page 43: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del Taller (Día 2)Contenido del Taller (Día 2)

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación Comentarios en el Código Indentación del Código Indentación de Sentencias SQL embebido Ámbito de Variables Referencia de Objetos en Variables Pasar parámetros entre ventanas DS/DW Blobs Funciones Esquema de Objetos Triggers, Procedures and Functions (BD).

Page 44: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Comentarios en el Código Generalidades

El comentario al inicio de funciones o eventos de usuario deben de especificar para que se creo la función, que argumentos recibe y quien la creó.

Los comentarios deben de hacerse donde inicia un proceso dentro de la ventana o bien para explicar el porque le aplicación toma cierta decisión.

No exagerar en los comentarios.

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Page 45: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación//En base al proceso se elige el formatoChoose Case as_proceso Case 'E‘ //Se obtiene el formato de Respuesta

SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0

Case "R“ //Se obtiene el formato de Respuesta

SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0 End Choose

//En base al proceso se elige el formatoChoose Case as_proceso //Verifico el proceso Case 'E‘ //Se obtenie el formato de Respuesta //Leer el formato de la BD SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans;

//Si el query me da error salir de la funcion if at_trans.sqlcode <> 0 then RETURN -1 //Si el formato es nulo asignar 0 if isnull(li_formato) then li_formato = 0

Case "R“ //Se obtiene el formato de Respuesta //Leer el formato de la BD SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; //Si el query me da error salir de la funcion if at_trans.sqlcode <> 0 then RETURN -1 //Si el formato es nulo asignar 0 if isnull(li_formato) then li_formato = 0 End Choose //Fin de la seleccion

Page 46: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación/* Funcion: uof_obtener_formato *//* Descripcion: Se elije el tipo de formato en base *//* al tipo de tramite y forma de *//* presentar la garantía. *//* Argumentos: ai_tipo_tramite, ai_forma_pres */ /* Regresa: El valor del formato a utilizar *//* Creada por: Luis Francisco López */ Case 'E‘ //Se obtenie el formato de Respuesta

SELECT FORMATO_EMIS INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0

Case "R“ //Se obtiene el formato de Respuesta

SELECT FORMATO_RESP INTO :li_formato FROM DGI.TIPO_TRAMITE_CONFIG WHERE TIPO_TRAMITE = :ai_tipo_tramite AND FORMA_PRES =:ai_forma_pres USING at_trans; if at_trans.sqlcode <> 0 then RETURN -1 if isnull(li_formato) then li_formato = 0 End Choose

Page 47: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Indentación de Código Condiciones if

Condiciones 1 sola líneaIf condición then return value

Condiciones MultilíneaIf condición then

//Sentencias

Else/Elseif

//Sentencias Else/Elseif

End If

CiclosWhile condición/for valorInicial to valorFinal

//Sentencias del Ciclo

Loop/Next

Page 48: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Indentación de Código Condiciones Case

CHOOSE CASE variable

CASE caso_1

//Sentencias Caso_1

CASE caso_n

//Sentencias Caso_n

Else

//Sentencias Else

END CHOOSE

Page 49: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Indentación de Código Generalidades

Se vale separar grupos de código mediante líneas en blanco (no se las cobran), sin embargo se recomienda usar comentarios.

La cantidad de código por línea es de acuerdo al espacio de trabajo de cada quien sin embargo trate en lo posible de no tener que mover el scroll horizontal para ver la línea completa.

En el caso de concatenar u operaciones que ocupen mas de una línea trate de continuar el código donde inicia la asignación o donde inician los argumentos.

LS_VALOR = CADENA1 + CADENA2 + CADENA3 + CADENA4 +&

CADENA5 + CADENA6 + CADENA7… + CADENAn

li_result = UOF_ACTUALIZAR_IMPUESTO(variable1, variable2, variable3,&

variable5, variable 6)

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Page 50: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Indentación de Sentencias SQL Sentencias SELECT

SELECT Columna1, Columna2, Columna3,… Columnan

INTO :variable1,:variable2,:variable3,… variablen

FROM Tabla1 Alias1,

Tabla2 Alias2,

Tablan Aliasn

WHERE Condicion1

AND Condicion2

AND Condicion3

AND Condicion4

Sentencias UPDATEUPDATE Tabla1

SET Columna1 = :variable1,Columna 2 = :variable2,

Columna3 = :variable3,… Columnan = :variablen

WHERE Condicion1

AND Condicion2

AND Condicion3

AND Condicion4

Page 51: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Indentación de Sentencias SQL Sentencias INSERT

INSERT INTO Tabla1 (Columna1, Columna2, Columna3,… Columnan

VALUES (:variable1,:variable2,:variable3,… variablen);

INSERT INTO Tabla1 (Columna1, Columna2, Columna3,… Columnan

SELECT Columna1, Columna2, Columna3,… Columnan

FROM Tabla1 Alias1,

Tabla2 Aliasn

WHERE Condicion1

AND Condicion2;

Sentencias DELETEDELETE FROM Tabla1

WHERE Condicion1

AND Condicion2

AND Condicion3

AND Condicion4

Page 52: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Indentación de Sentencias SQL Generalidades

La cantidad de columnas que contendrá un select o un insert dependerá de su pantalla, trate de que no tenga que mover el scroll para ver las columnas o las variables

En el caso de las columnas de select o insert estas deben de coincidir en número por renglón con las variables, por ejemplo.

SELECT CAMPO1, CAMP02, CAMPO3

INTO :VAR1, :VAR2, :VAR3

FROM TABLE

WHERE CONDICION.

SELECT CAMPO1, CAMPO2, CAMPO3,

CAMPO4

INTO :VAR1, :VAR2, :VAR3, :VAR4

FROM TABLE

WHERE CONDICION

Las tablas deberán de ser listadas, es decir un renglón por cada tabla que se utilice.

Usar alias para las tablas.

BIE

NM

A L

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Page 53: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Ámbito de Variables Variables Locales

Se utilizan únicamente dentro del evento o método donde son creadas. Deben utilizarse para procesos que van a iniciar y terminar dentro del mismo

código.

Variables de Instancia Cuando es necesario que únicamente los componentes, métodos y eventos que

pertenecen al mismo objeto utilicen el valor de la variable. Deben utilizarse como propiedades de objetos, o como variables que deben ser

accedidas desde la misma ventana para lectura y/o escritura.

Variables Globales Cuando sea necesario que el valor sea utilizado en cualquier componente

de la aplicación. La única variable global permitida en el sistema es la instancia del objeto

u_dgifc_aplmanager (Aplican restricciones).

Page 54: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Paso de Parámetros entre Ventanas Se debe utilizar para evitar el uso de variables globales, si se

requiere que dos ventanas se comuniquen entre si. Se pueden enviar valores o bien variables Se recibe en la ventana destino mediante el objeto Message

Para enviar tipos de datos no incluidos en el objeto Message debe de ser mediante una estructura.

Contexto Uso

Doubleparm Valor numérico desde entero hasta double

Stringparm Valor cadena

Powerobjectparm Objeto de PowerBuilder (Objeto, estructura, transacciones, etc.)

Page 55: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Datastore Vs. Datawindow

Datastore Datawindow

Es no visual No contiene eventos No es autoinstanciable

Visual Contiene eventos Es autoinstanciable

Ninguno es mejor simplemente tienen diferentes usos. Objeto No Visual = Uso de datastores. Es mejor utilizar un datastore que hacer un cursor (en su defecto store

procedure) Si en la función o ventana no se requieren utilizar eventos de un listado

utilizar datastores Es mejor utilizar un datastore que ocultar un datawindow.

Page 56: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Binary Large Objects (BLOB’s)

PowerBuilder Se utiliza para guardar una ilimitada cantidad de datos (Imágenes, Texto muy Largo, Texto de Procesadores de Texto con Formato, etc..)

BLOB no es sinónimo de imágenes escaneadas, ni de RTF’s

Se usa en intercambio de información en aplicaciones cliente/servidor.

Page 57: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Binary Large Objects (BLOB’s) Utilizando Blob’s con Datawindows/Datastores

GetFullState/SetFullState. NO ES un Rowscopy/Rowsmove Se mantienen las propiedades del DW, banderas de actualización, etc.. No se mantiene la transacción pero al asignarse de nuevo funciona como tal.

Envío un DW/ Recibo DS y Viceversa. Se convierte el DW a Blob y se envía a un objeto No Visual El DS regresa a la ventana y se convierte en DW

Page 58: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Uso de Funciones

Tipo de Función Descripción

Funciones de PowerBuilder

Son las funciones que se crean como objetos de PowerBuilder, son funciones que pueden ser llamadas desde cualquier otro objeto de la aplicación.

Funciones de Ventana

Son funciones que se crean en una ventana para agregar funcionalidad, solo son válidas dentro de la ventana que las contiene.

Funciones de Objetos

Son funciones creadas por el usuario en los objetos de PowerBuilder (ya sea visuales o no visuales). Si bien estas funciones solo son válidas dentro del objeto donde fueron creadas basta que se instancie el objeto para poderlas utilizar.

Page 59: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Uso de Funciones

Tipo de Acceso Descripción

Publica (Public) Función que puede ser vista y accedida desde cualquier parte de la aplicación, simplemente requiere que el objeto se encuentre instanciado.

Privada (Private) Función que puede ser vista y accedida únicamente desde el objeto/ventana donde fue creada.

Protegida (Protected) Función que puede ser vista y accedida desde cualquier parte de la aplicación, sin embargo esta no puede ser modificada, ni heredada.

Uso de Funciones

Sobrecarga de funciones Funciones que se llaman igual pero reciben diferentes argumentos y hacen

cosas diferentes. Permiten al programador una referencia mas rápida.

Page 60: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Uso de Funciones Argumentos en Funciones

Casi cualquier cosa se puede mandar por argumento a una función sin embargo.

Evite pasar ventanas como argumento. Evite pasar objetos visuales a un objeto no visual. Los objetos de powerbuilder (excepto estructuras) mejor por referencia.

Los tipos de acceso de los argumentos en funciones son.

Tipo de Acceso Descripción

Valor (Value) La variable entra a la función y aunque su valor sea alterado dentro de ella al salir mantiene el valor con el que fue enviado.

Referencia (Reference) La variable entra a la función y si su valor es alterado dentro de ella al salir muestra el valor que se cambio dentro.

Readonly (Solo lectura) La variable entra y sale de la función pero su valor no puede ser alterado (como una constante)

Page 61: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos

Tipo de Objetos Descripción

Visual Son objetos que encapsulan la funcionalidad de un o un grupo de objetos visuales.

No Visual Son en realidad para agrupar métodos de un funcionalidad especifica.

Page 62: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos

Usuario:• Teclea los datos en la

forma de captura• Pulsa el botón

procesar• Espera los resultados

Ventana:• Muestra la forma• Espera a que el

usuario dispare algún evento

• Envía el procesamiento al objeto visual forma

Objeto Visual Forma:• Valida que los datos

proporcionados por el usuario sean los esperados

• Instancia e Inicializa el Objeto No Visual que procesará la información.

• Ejecuta el método del Objeto No Visual que procesará la información

Objeto No Visual:• Procesa la información

enviada desde la ventana.

• Sus funciones publicas son una caja negra.

Base de Datos:• Mediante un trigger

guarda una bitácora del procesamiento de la información

Page 63: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos

Ventajas Desventajas

Separa la funcionalidad de la parte visual

Divide y Vencerás Encapsulamiento Fácil de compartir funcionalidad

(es una caja negra) Reutilización de funcionalidad

en otras ventanas.

Forzosamente hay que pensar en Sinergia.

Si se exagera se puede llegar al extremo de separar funcionalidad ya existente en objetos de PB.

Page 64: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos Generalidades

Todas las variables de instancia (se conocen como propiedades del objeto) deben de ser declaradas como privadas.

Todas las funciones son de acceso privado excepto aquellas que disparan la funcionalidad principal del objeto.

El objeto debe ser capaz de tomar todas las decisiones para saber que hacer en cada caso.

Las funciones deben ser lo mas atómicas posibles, es decir servir a un solo propósito.

La función principal (o principales) deberá de, en lo posible, evitar el uso de código extra, esta función debe dedicarse a llamar funciones privadas del objeto.

Un objeto no visual no debe hacer referencia a ningún objeto visual (no usar DW como variables, no mandar llamar la w_dgi_espere, no desplegar MessageBox, no hacer referencia a ventanas o menús). Ojo: Ni siquiera por argumento.

Page 65: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos (Ejemplo SEAF)

uo_remesa

Page 66: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos (Ejemplo Cajas)

uo_cajas

Page 67: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Esquema de Objetos (Ejemplo Inversión)

uo_mvto_fondo

Page 68: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Triggers, Procedures y Functions (BD)

Tipo de Acceso Descripción

Triggers Son los equivalentes de los eventos pero en base de datos, el usuario puede programar cuando quiere que se disparen ya que se pueden ejecutar en cualquiera de las tres operaciones básicas sobre una tabla, INSERT, UPDATE, DELETE.

Procedures Son grupos de código que ejecutan una serie de instrucciones sin regresar ningún valor (si acaso pueden regresar en la variable de transacción de PowerBuilder si se ejecuto o no)

Functions Son grupos de código que ejecutan una serie de instrucciones pero estos si pueden regresar un resultado.

Page 69: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Triggers, Procedures y Functions (BD) Cuando utilizar Procedimientos o Funciones

NOTA INICIAL: Primero hay que buscar que cualquier procedimiento de negocio quede en la programación no en la BD.

Procesos de llenado de históricos. Traspaso de información masiva entre base de datos. Cálculos complejos y lentos que no puedan ser parametrizados. Cálculos complejos y lentos que solo se ocupen para reportes y no para

la aplicación. Procesos de Base de Datos (Creación de Tablas Dinámicas, Creación de

Sinónimos, Creación de Usuarios, etc.).

Page 70: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Buenas Prácticas de CodificaciónBuenas Prácticas de Codificación

Triggers, Procedures y Functions (BD) Cuando utilizar Triggers

Procesos simples de Bitácora (Logs) Manejar el agrupamiento de status sin el involucramiento del usuario. Disparar procesos de tablas PIVOTE.

Page 71: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del Taller (Día 3)Contenido del Taller (Día 3)

Librerías y EstándaresLibrerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo

Recopilación de Trucos y Tips Tips SQL Tips PB

Page 72: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Ruta de Trabajo

SIELCSIELC

ADMON PROYADMON PROY

ANALISISANALISIS

DISEÑODISEÑO

AUXIAUXI

LIBLIB

EXEEXE

SOPORTE DOCUMENTAL

SOPORTE DOCUMENTAL

REUNIONESREUNIONES

PLAN DE TRABAJOPLAN DE TRABAJO

DESCRIPCIÓN TÉCNICA

DESCRIPCIÓN TÉCNICA

DIAGRAMASDIAGRAMAS

BDBD

PB804-10575PB804-10575

PB105-6627PB105-6627

IMÁGENESIMÁGENES

COMPONENTESCOMPONENTES

Page 73: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Ruta de TrabajoCarpeta Uso

PROYECTO Esta carpeta deberá de nombrarse con las siglas que se le hayan asignado al proyecto, como máximo deberá de ser hasta 6 caracteres que identifiquen el proyecto.

ADMON PROY Esta carpeta tendrá toda la información referente a la administración del proyecto

SOPORTE DOCUMENTAL

Toda aquella documentación que de soporte al proyecto como por ejemplo ley del trabajo, tabuladores, por citar algunos.

REUNIONES Contendrá documentos como minutas, orden del día, listas de asistencia y todas aquellos documentos que soporten las reuniones que sean llevadas a cabo para el proyecto, para el nombrado de estos documentos ver documento (nombre documento).

PLAN DE TRABAJO Todos y cada uno de los planes de trabajo elaborados para el Proyecto (ver lo del nombrado de los planes).

ANALISIS Contendrá toda la documentación referente al Análisis del proyecto, de acuerdo a la metodología vigente.

DISEÑO Contendrá toda la documentación referente al Diseño del proyecto de acuerdo a la metodología vigente.

DESCRIPCIÓN TÉCNICA Deberán ser los documentos que soporten la Documentación Técnica del proyecto

Page 74: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Ruta de Trabajo

Carpeta Uso

DIAGRAMAS Contiene todos los diagramas que durante el diseño del proyecto se realicen y soporten al mismo.

BD Contiene el modelo de Base de Datos del proyecto y todos aquellos documentos que soporten al mismo y que tengan que ver con Base de Datos.

LIB Esta carpeta contendrá todas aquellas librerías que soporten al proyecto , dentro de ella se deberán de crear sub carpetas por cada versión y parche del lenguaje de programación que se esté utilizando en ese momento

AUXI Esta carpeta contendrá todo lo referente a los bmps, jpgs y demás auxiliares que sean necesarios para el buen funcionamiento de la aplicación.

IMÁGENES En esta carpeta se guardaran todas aquellas imágenes que sean necesarias para el buen funcionamiento de la aplicación.

COMPONENTES En esta carpeta se guardaran todas aquellas utilerías que sean necesarias para el buen funcionamiento del sistema, como por ejemplo .ocx, TextControl, entre otros

EXE Esta carpeta contendrá las librerías que conforman el ejecutable de la aplicación y que representa un respaldo del programador, aquí se deberá de tener la última versión del proyecto que se encuentre en el servidor de aplicaciones.

Page 75: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Librerías Librería Principal

Siglas del Proyecto en Mayúsculas. Máximo 6 caracteres Ejemplo: SIECL.pbl

Librerías Subsecuentes

Siglas del Proyecto (Solo inicial en Mayúsculas) Siglas del Modulo (Máximo 4 caracteres) Consecutivo de Librería de 2 dígitos Ejemplo: Sieclemis01.pbl

Page 76: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Librerías Librerías Especiales

Son librerías para un uso especifico dentro de la aplicación y son las siguientes.

Librería Uso

Acceso.pbl Esta librería se creara exclusivamente para contener objetos que hagan referencia a los objetos para configurar el acceso a la aplicación. Ejemplo: Catalogo de Usuarios, Catalogo de Configuración de Roles de Acceso, etc.

Catalogos.pbl Esta librería se creará para contener exclusivamente los objetos que hagan referencia a los catálogos principales de la aplicación.

Reportes.pbl Esta librería se creara para contener exclusivamente los objetos que hagan referencia al modulo de reportes estadísticos de la aplicación.

Consultas.pbl Esta librería se creara para contener exclusivamente los objetos que hagan referencia a las consultas especificas y estadísticas de la aplicación.

Page 77: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Librerías

SIELCSIELC

AccesoAcceso

CatálogosCatálogos

ReportesReportes

ConsultasConsultas

Sielcemis01

Sielcemis01

Page 78: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Objetos Sintaxis

PrefijoObjeto + SiglasLibreria + ConsecLibreria + Prefijo Uso + Nombre Objeto

Prefijo Objeto

Tipo de Objeto Prefijo (Máx. 3 dígitos)

Windows w_

Menús m_

Querys q_

Data windows d_

DataWindowContenedor de Externos

dc_

Objetos No Visuales uo_

Objetos Visuales vuo_

Tipo de Objeto Prefijo (Máx. 3 dígitos)

DataWindow External de_

DataWindow Multiselección dm_

Project p_

Pipeline pp_

Funciones f_

Structure str_

Page 79: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Objetos Siglas Librería y Consec Librería

Se refiere al nombre de la librería en donde se esta guardando el objeto. Utilizar el nombre de la librería sin las iniciales del proyecto. Ejemplo: Sielcemis01 emis01

Prefijo Uso

Uso del Objeto Prefijo (Max. 2 dígitos)

Reporte r

Catálogo c

Consulta k

Proceso p

Listado l

Contenedor de Listado cl

Page 80: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Nomenclatura Objetos Nombre Objeto

Descripción breve del objeto que permita identificar de que se trata o que

hace el objeto. Ejemplos

Nombre del Objeto Descripción

w_cat01c_tipo_licencia Es un objeto ‘Window’ que se encuentra en la librería ‘Catalogos.pbl’ y que se refiere al ‘Tipo de Licencia’

d_emis01l_estado Es un objeto de tipo ‘Datawindow’ que se encuentra en la librería ‘Sielcemis01.pbl’ que se utiliza como un listado de estados (para dropdown).

w_emis01k_recibos_pagados Es un objeto de tipo ‘Window’ que se encuentra en la librería ‘Sielcemis01.pbl’ y que se utiliza para una consulta de recibos pagados.

d_emis01r_prevista_volante Es un objeto de tipo ‘Datawindow’ que se encuentra en la librería ‘Sielcemis01.pbl’ y que se utiliza para imprimir un volante.

de_emis01cl_estado Es un objeto de tipo ‘Datawindow’ sin query que se encuentra en la librería ‘Sielcemis01.pbl’ que se utiliza para contener un Datawindow de listado.

Page 81: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Librerías de Objetos Estándar Básicas

Nombre del Objeto Descripción

estandar.pbl Template de la aplicación, esta librería debe renombrarse con las siglas de la aplicación, esta librería tiene ya los objetos estándar para control de acceso.

dgiapi.pbd Contiene las funciones api de windows importadas como objetos de PowerBuilder, muy útil sobre todo en el control de actualizaciones.

dgibd.pbd Contiene las rutinas para comparar esquemas de base de datos

dgifund.pbd Contiene las clases fundamentales de las cuales están heredadas las demás ventanas del propio estándar.

dginvis.pbd Contiene funciones definidas y objetos no visuales con funcionalidad común en las aplicaciones que puede ser reutilizada

dgitxt.pbd Contiene toda la funcionalidad para implementar la creación de documentos dinámicos utilizando DW como base.

dgiutil.pbd Contiene algunos objetos visuales y no visuales que agregan funcionalidad y facilitan la programación.

dgiutilbd.pbd Contiene funcionalidad para algunos procesos de base de datos que se requieren dentro de las aplicaciones.

dgivis.pbd Contiene objetos visuales de las cuales se puede heredar los procesos mas comunes en una aplicación.

Page 82: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Librerías de Objetos Estándar Envío de Correos

Nombre del Objeto Descripción

dgimail.pbd Contiene todos los objetos para implementar el proceso de envío de correos a través de cualquier servidor smtp.

DemoniosNombre del Objeto Descripción

dgidemon.pbd Contiene todos los objetos para implementar aplicaciones tipo demonio que corren en memoria esperando una hora o un evento para dispararse.

Interpretación de Mensajes del SistemaNombre del Objeto Descripción

dgiserv.pbd Contiene todos los objetos para implementar una ayuda para el usuario basada en el sistema de servicios.

Page 83: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Objeto(s): w_util_catalogo_listadoLibrería: dgiutil.pblPara que se utiliza :Catálogos donde se requiere que el usuario capture en freeform (por la cantidad de datos) pero se requiere una referencia de listado.

Librerías y EstándaresLibrerías y Estándares

Objetos Estándar que agilizan el Desarrollo

Objeto(s): w_dgi_catalogo_estaticoLibrería: dgivis.pblPara que se utiliza:Catálogos de tipo tabular del tipo clave/descripción.

Catálogos Catálogos

Page 84: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Objetos Estándar que agilizan el Desarrollo

Objeto(s): w_dgi_maestro_detalleLibrería: dgivis.pblPara que se utiliza :Catálogos cuya información requiera ser capturada como Maestro/Detalle.

Objeto(s): w_dgi_catalogo_sin_dwLibrería: dgivis.pblPara que se utiliza :Catálogos complejos, por ejemplo catálogos con filtros en cascada (no maestro detalle)

Catálogos Catálogos

Page 85: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Objetos Estándar que agilizan el Desarrollo

Objeto(s): uo_doc_visual, uo_param, w_rep_reporte.Librería: dgiutil.pbdPara que se utiliza :Cualquier llamado a reportes o consultas que se haga en la aplicación.

Objeto(s): w_argumentsLibrería: dgiutil.pbdPara que se utiliza :Ventana de Argumentos para reportes estadísticos

Reportes Argumentos de Reportes

Page 86: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Librerías y EstándaresLibrerías y Estándares

Objetos Estándar que agilizan el Desarrollo

Otros Objetos

Page 87: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Contenido del Taller (Día 3)Contenido del Taller (Día 3)

Librerías y Estándares Ruta de Trabajo Nomenclatura Librerías de Objetos Estándar Objetos Estándar que agilizan el Desarrollo

Recopilación de Trucos y TipsRecopilación de Trucos y Tips Uso de la Ayuda de PB Tips PB Tips SQL

Page 88: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s PowerBuilderTip’s PowerBuilder Regresar el valor anterior a un campo cuando no pasa una

validación en el Itemchanged.

Crear un evento que reciba de argumento la fila, la columna y el valor que se le quiere poner a la columna, este evento lo que hace es hacer setitem con el valor a la fila y a la columna que se le envían como parámetro.

En el evento itemchanged codificar que una ves que el dato no pase la validación que se espera, mande llamar en forma post al evento creado en el paso anterior y hacer return.

En el Itemchanged

la_rfc_ant = this.getitemstring(row,dwo.column)

If Len(Trim(Data)) < 10 and this.getitemstring(row,’tipo_contrib’) = ‘F’ Then

MessageBox(“Aviso”,”El rfc para una persona física debe de contener 10 caracteres”)

This.post event ue_corrige_dato(row,dwo.column,la_rfc_ant)

Return 1

End If

Page 89: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s PowerBuilderTip’s PowerBuilder Regresar el valor anterior a un campo cuando no pasa una

validación en el Itemchanged.

En el ue_corrige_dato

this.SetItem(ai_ren, as_columna, aa_dato)

this.SetColumn(as_columna)

Page 90: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s PowerBuilderTip’s PowerBuilder

Páginas de Tip’s de PowerBuilder

http://www.rgagnon.com/howto.html

http://www.softtreetech.com/hightech/tips.htm

http://www.pbdr.com/pbtips/index.htm

http://www.dvl-software.com/pbtips/

http://power-builder.blogspot.com/

Page 91: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s SQL y OracleTip’s SQL y Oracle

Un poco de Teoría Existen dos tipos de acceso de la Base de Datos a una tabla:

SIN USAR INDICES Table Access Full (FULL SCAN). USANDO INDICES Table Access by ROWID (ROWID ACCESS).

De la misma forma, existen 2 tipos de barrido a un índice: INDICE UNICO Unique (único). INDICE NO UNICO Range (por rangos).

Page 92: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s SQL y OracleTip’s SQL y Oracle

Orden de tablas en el FROMEl orden de las tablas en el FROM debe ser de arriba hacia debajo de mayor a menor número de registros, la primer tabla siempre es el PIVOTE o la que inicia la ejecución del query.

Solo las columnas NecesariasEn cualquier Query solo deben extraerse las columnas a utilizar, especialmente en un subquery, ya que a mayor número de columnas mayor memoria se consume y se pueden omitir barridos a tablas que no era necesarias.

Orden del JOIN y columnas (Teoría no expresada en libro Oracle)Se debe armar la serie de Joins en el mismo orden en que están las tablas en el FROM, empezando en el WHERE de derecha a izquierda, respetando el orden de los campos dentro de los índices y tratando de emplear el mayor número de columnas con UNIQUE INDEXES. Al final se agregan las condiciones con constantes.

Page 93: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s SQL y OracleTip’s SQL y Oracle

SubquerySolo hay que emplearlo cuando sea necesario, muchas veces con un JOIN o un EXISTS se puede extraer la información necesaria.

Decode vs. UnionSe puede omitir el uso de múltiples Uniones en algunos queries con el uso de DECODE, condicionando los valores de las columnas según los valores de las columnas o expresiones.

IN vs. EXISTS vs. JOINEl IN como vimos anteriormente, realiza varias búsquedas para extraer la información, es mas rápido emplear un EXIST y aún mas un JOIN.

Page 94: DESARROLLO POLITICO

DIRECCIÓN GENERAL DE INFORMÁTICA

Tip’s SQL y OracleTip’s SQL y Oracle

Páginas de Tip’s de SQL

http://www.devjoker.com/

Páginas de Errores de Oracle

http://www.ora-code.com/

http://www.orasite.com/errores/