Está en la página 1de 59

OBJETO TRANSACCIÓN

Elementos

Para una transacción se definen:

• Estructura
• Form GUI-Windows
• Form Web
• Reglas
• Eventos
• Subrutinas
• Propiedades
• Documentación
• Ayuda
Estructura

Ejemplo: Se necesita registrar información de proveedores.

Se define transacción “Supplier”, con estructura:

SupplierId* Identificador de proveedor


SupplierName Nombre de proveedor
SupplierAddress Dirección de proveedor
SupplierPhone Teléfono de proveedor
Estructura

Vista de la estructura en GeneXus:


Estructura

Ejemplo: Se necesita registrar información referente a


facturas de venta.

Se define transacción “Invoice”, con estructura:

InvoiceId* Identificador de factura


CustomerId Identificador de cliente
CustomerName Nombre de cliente
InvoiceDate Fecha de factura
InvoiceTotal Importe total de factura
( ProductId* Identificador de producto
ProductDescription Descripción de producto
ProductPrice Precio de producto
InvoiceLineQuantity Cantidad de producto llevada en la línea
InvoiceLineAmount )Importe de línea de factura
Estructura

Vista de la estructura en GeneXus


Definición del modelo de datos a partir de las
estructuras de las transacciones
Tabla
Transacción Transacción INVOICE
“Supplier” “Invoice”
InvoiceId*
SupplierId* InvoiceId* CustomerId
SupplierName CustomerId CustomerName
SupplierAddress CustomerName InvoiceDate
SupplierPhone InvoiceDate InvoiceTotal
InvoiceTotal
( ProductId* Tabla
ProductDescription INVOICELINE
Tabla ProductPrice
SUPPLIER InvoiceLineQuantity InvoiceId*
SupplierId* InvoiceLineAmount ) ProductId*
SupplierName ProductDescription
SupplierAddress ProductPrice
SupplierPhone InvoiceLineQuantity

InvoiceLineAmount
Al definir las nuevas transacciones:

Transacción “Customer”
CustomerId*
CustomerName
CustomerAddress
CustomerGender Sexo del cliente

Transacción “Product”

ProductId*
ProductDescription
ProductPrice
ProductStock
Normalización: cambios en las tablas
Tabla
INVOICE
Tabla CUSTOMER
InvoiceId* CustomerId*
CustomerId CustomerName Tabla
CustomerName CustomerAddress
SUPPLIER
InvoiceDate CustomerGender
SupplierId*
InvoiceTotal
SupplierName
Tabla SupplierAddress
INVOICELINE Tabla PRODUCT SupplierPhone

InvoiceId* ProductId*
ProductId* ProductDescription
ProductDescription ProductPrice
ProductPrice ProductStock
InvoiceLineQuantity

InvoiceLineAmount
GeneXus establece las relaciones
por los nombres de atributos

CONCEPTOS IGUALES DEBEN TENER EL MISMO NOMBRE

Transacción “Invoice” Transacción “Customer”


InvoiceId* CustomerId*
CustomerId SI CustomerName
CustomerName
Transacción “Invoice” Transacción “Customer”
InvoiceId* NO CustomerId*
InvoiceCustomerId

CONCEPTOS DIFERENTES NO DEBEN TENER EL MISMO NOMBRE

Transacción “Invoice” Transacción “VendorInvoice”


InvoiceId* VendorInvoiceId*
NO
Date Date
CustomerId SupplierId
CustomerName SupplierName
Es conveniente usar padrones
para los nombres de atributos

• Facilitan la tarea de nombrado

• Facilitan la tarea de integración de bases de


conocimiento

• Facilitan la lectura del código generado


Nombrado de atributos:
Nomenclatura GIK

Componente de Entidad + Categoría


[+ Calificador + Complemento]

…y en inglés:
Demo
 Creación de base de conocimiento
 Creación de transacciones
Definición de atributos
Tipos de Datos

 Numeric, Character, Date

 VarChar
- Equivalente a Character, salvo en la forma en que se almacena en la BD.
- Propiedades Maximum Length y Avarage Length asociadas.

 Long Varchar
- Permite almacenar textos largos, comentarios, etc. (memo).

 DateTime
- Permite almacenar una combinación de fecha y hora.

 Blob
- Permite almacenar cualquier tipo de información: texto, imágenes,
videos, planillas, etc., en la base de datos.
- Win / Web ofrecen manipulación distinta de este tipo de datos
Definición de variables

 En todo objeto GeneXus es posible definir variables.

 Las variables son únicamente visibles dentro del objeto; es


decir, son locales.
Dominios

• Objetivo: Realizar definiciones genéricas.

• ¿Cuándo debemos usar dominios?


• Atributos y/o variables con la misma definición

Ejemplo:

Atributos ProductPrice: Precio de producto


InvoiceLineAmount: Importe total de línea

Dominio Price: Numeric(10.2)


Forms

 Cada transacción tiene asociado un form GUI-


Windows y un form Web.

 Ambos forms son creados por defecto al grabar la


estructura de la transacción, pudiendo ser
modificados por el programador.
Form GUI-Windows
de la transacción “Invoice”

GRID
Form Web
de la transacción “Invoice”

Control “Error Viewer”


exclusivo de Web

botón “Get”

GRID
Paletas de herramientas para
diseño de forms Win y Web

Insertar controles:

Cortar, copiar y pegar controles:

Alinear, distribuir y uniformizar los tamaños de los controles


(solo disponible para form GUI-Windows):
Controles en form Web

• Cada control del form Web podrá tener una clase asociada, de
un objeto theme (tema) determinado, asociado al objeto.

• Al crear una KB, se crea por defecto el tema “Default” y todos


los objetos que se creen tendrán este tema.

• Esto permitirá independizar el diseño de la interfaz, de la


programación.
• Existe el Editor de temas, un utilitario que usarán los diseñadores
gráficos del sitio
• Cada tema tendrá definidas muchas clases para cada tipo de control
• El analista solo asocia un tema al objeto, y una clase a cada control
del form y puede olvidarse del diseño de los mismos.

• El control hereda el diseño de la clase del tema al que esté


asociado
Controles en form Web
Ejemplo: transacción “Customer” con tema “Default”
Demo

 ¿Cómo crear un modelo dentro de la base de


conocimiento?

WIZARD MANUAL
¿Qué son los conceptos...?

Análisis de Impacto

Reorganizar

Especificar

Generar
Ítem “Build” de la barra de menú de GeneXus
Ejecución de las aplicaciones

Build / Run:
Modos de las transacciones
en tiempo de ejecución

• Al ejecutar una transacción se pueden distinguir los siguientes


modos, dependiendo de la operación que se realice:

Modo Insert: Indica que se está efectuando una inserción

Modo Update: Indica que se está efectuando una actualización

Modo Delete: Indica que se está efectuando una eliminación

Modo Display: Indica que se está efectuando una consulta


INTEGRIDAD
REFERENCIAL
Diagrama de Bachman

COUNTRY CountryId*
CountryName
1

CUSTOMER CustomerId*
N CustomerName
………
CountryId
Diagrama de Bachman

COUNTRY Hay que verificar existencia del COUNTRY referenciado.

1
En transacción “Customer”:
CUSTOMER • si se inserta nuevo registro, o
N • si se modifica el CountryId de un registro

COUNTRY En transacción “Country”:


• si se quiere eliminar un registro
1
CUSTOMER Hay que verificar la no existencia de
N ningún CUSTOMER que lo referencie.
Índices
Índices primarios y foráneos
PK PK
CountryId* ICountry CustomerId* ICustomer
CountryName CustomerName
...
FK ICustomer1
CountryId

ountryId CountryName CustomerId CustomerName CountryId

1 Uruguay 4 Ana Diez 1


2 United States 1 Juan Pérez 1
3 China 3 María Donoso 1
2 Jessica Deep 2

Si en transacción El programa debe buscar sobre CUSTOMER


“Country” queremos si  registro con CountryId = 2
eliminar “United States”:  para hacer eficiente esta búsqueda:
índice foráneo (ICustomer1)
Índices de usuario
• Los crea el analista sobre una tabla. Deberá
categorizarlos según si aceptará valores repetidos
(duplicate) o no (unique).

• Si en la realidad modelada, un mismo nombre se puede repetir


para dos clientes:
CustomerId CustomerName CountryId
1 Ana 1
2 Ana 2
3 María 1
Índices de usuario
• Si un mismo nombre no puede repetirse (es por tanto un
atributo clave de la tabla)

CustomerId CustomerName CountryId


1 Ana Diez 1
2 Ana Pérez 2
3 María Rua 1

• La forma de definir claves candidatas en el modelo de datos es


a través de índices unique. GeneXus pasará a incorporar
controles en las transacciones, utilizando el índice, para no
permitir la inserción de registros duplicados.
Si se intenta ingresar un nuevo cliente con nombre “Ana Pérez”
la transacción dará un error de registro duplicado.
Índices temporales
• Son creados automáticamente, bajo ciertas condiciones,
cuando son necesarios, y se eliminan cuando termina la
ejecución del objeto que los creó.

• Si se desea acceder a los datos ordenados por determinados


atributos, pero no se desea crear un índice permanente para
ello: GeneXus creará un índice temporal.

• Se crean solamente en algunas plataformas (como Visual FoxPro


con base de datos local, o en iSeries).

• En otras plataformas, las consultas para las cuales se quiere


obtener el resultado ordenado por determinados atributos, y no
existe el índice de usuario, son resueltas por el DBMS
correspondiente sin la creación de índices temporales.

• El usuario puede resolver dejar de utilizar un índice temporal,


creando un índice de usuario.
Manejo de nulos

• Para cada atributo no inferido, ni identificador en la


estructura de una transacción, es posible definir si admitirá
nulos o no, en la tabla asociada
Manejo de nulos

• Valores posibles que ofrece la propiedad Nulls:


- No: el atributo en la tabla asociada, no permitirá valor null
- Yes: el atributo en la tabla asociada, sí admitirá valor null
Valor por defecto

• Atributos parte de la clave primaria no soportan


valor null (propiedad Nulls = No, siempre)

• Atributos clave foránea sí, y esto tendrá repercusión


en los controles de integridad referencial.
Manejo de nulos

• Repercusión en controles de integridad referencial

CountryId* CountryId* CustomerId*


CountryName CityId* CustomerName
CityName FK
CountryId
compuesta CityId

1) CountryId y CityId con propiedad Nulls=No

• Se realizan los chequeos de IR mostrados arriba

2) CityId con propiedad Nulls=Yes

• Se agrega un control de IR en CUSTOMER  si se deja nulo CityId, se


realizará chequeo contra COUNTRY.
Manejo de nulos

• Diferencia entre valor empty y null para atributos:

• empty: es un valor (0 para Numeric, “” para Character, etc.)

• null: si está permitido, no es un valor. Significa que el valor debe


ser considerado como:

• no especificado
• no disponible
• no asignado
• desconocido

• Métodos según si atributo permite null o empty:


• IsEmpty
• IsNull
• SetEmpty
• SetNull
TABLA BASE
Y
TABLA EXTENDIDA
Tabla Base y Tabla Extendida

Definición

Dada una tabla X de la base de datos, a la cual llamamos “tabla


base”, se denomina “tabla extendida” de la misma al conjunto de
atributos conformado por:

• Atributos que pertenecen a la tabla X.


• Atributos de toda tabla Y, tal que la relación entre la tabla
extendida determinada hasta el momento y la tabla Y sea
N-1.
Tabla Base y Tabla Extendida

INVOICE CUSTOMER COUNTRY


InvoiceId* CustomerId* CountryId*
InvoiceDate CustomerName CountryName
CustomerId CountryId

INVOICELINE PRODUCT
InvoiceId* ProductId*
ProductId* ProductDescription
InvoiceLineQuantity ProductPrice
InvoiceLineAmount ProductStock
Tabla Base y Tabla Extendida
Descripciones en vez de Códigos

Country Transaction
CountryID*
CountryName

Customer Transaction
CustomerID*
CustomerName
CountryID
CountryName
Este atributo no es CountryName, sino
CountryId disfrazado de CountryName.
Se muestra (y acepta) en ejecución el valor de
CountryName, mientras que lo que se almacena
es CountryId.
Descripciones en vez de Códigos
Propiedad InputType del atributo identificador

Valores posibles:

• Values
atributo real: lo que
muestra es su contenido

• Descriptions
atributo disfrazado: toma
las descripciones de
otro atributo, aunque su
contenido sigue siendo el
propio.
Descripciones con autocomplete

Propiedad Suggest

Podemos hacer que en lugar de que el


usuario tenga que recordar los
valores existentes para ingresar uno
correcto, se le sugieran los valores
posibles para ese control, de modo
que él pueda elegir el que deseaba y
que será necesariamente correcto.

Aquí estamos combinando 2 propiedades: InputType y Suggest, lo


que no es obligatorio.
Descripciones con autocomplete
Propiedad Suggest

El control para CountryId


disfrazará sus valores por
los de CountryName, que
ahora le serán sugeridos al
usuario a medida que vaya
digitando letras del nombre

Valores posibles:
• Incremental
• No
• OnRequest
Reglas
• Se utilizan para definir el comportamiento de las transacciones.
• Algunas reglas:
Default
Asignación
Msg
Error
Noaccept
Add
Subtract
Serial
Update

• Pueden incluir: atributos, variables, constantes y funciones.


• Son LOCALES a la transacción.
• Programación DECLARATIVA.
Conceptos importantes sobre reglas de
transacciones

• ¿En qué nivel de una transacción se ejecutarán


las reglas definidas en la misma?

• ¿Cómo condicionar reglas para que se ejecuten


en determinados modos?
Tipos de diálogo

• Diálogo campo a campo


Las validaciones, disparo de reglas y fórmulas y grabaciones, se
van efectuando en forma interactiva, en la medida que el usuario
va trabajando en la pantalla (Ej: Vb, Vfp con interfaz Win)

• Diálogo a pantalla completa (full screen)


Todas las validaciones, disparo de reglas y fórmulas y
grabaciones, se efectúan cuando se confirma la pantalla completa
(Ej: Java y .Net con interfaz Win)

• Diálogo con Validación a nivel del cliente (CSV)


Híbrido entre los dos anteriores
• Disparo de algunas reglas y fórmulas interactivas
• Grabaciones cuando se confirma la pantalla completa
(aquí se redisparan reglas y fórmulas)
(Ej: Java y .Net, Win y Web)
Tipos de diálogo

Client Server Client Server

• Ingreso de datos • Validaciones • Ingreso de datos • Validaciones


• Confirmación • Controles IR • Validaciones • Controles IR
• inferencias • Controles IR • inferencias
• Reglas • Inferencias • Reglas
• Fórmulas • Algunas reglas • Fórmulas
• Grabaciones • Fórmulas • Grabaciones
• Confirmación

Diálogo a pantalla completa Diálogo con CSV


Diálogo con Validación a nivel del cliente
(Client Side Validation)

• En su base es full screen, con algunas validaciones en el cliente


que le permiten incrementar la interacción con el usuario final

• Generadores .Net y Java

• interfaz Win: es configurable (propiedad CSV)

• interfaz Web: no es configurable, siempre se realizará.

• Valores de la propiedad CSV (solo para Win)


• Yes: Activa las validaciones, inferencias y disparo de reglas y fórmulas en la
medida que el usuario va ingresando datos en la pantalla. Estas acciones se
repiten cuando se confirma. (valor predeterminado)
• No: Todas las validaciones y disparo de reglas y fórmulas se realizan cuando se
confirma.

• Propiedad a nivel de modelo y de objeto


Diálogo con Validación a nivel del cliente
(Client Side Validation)

• En la medida que el usuario final va ingresando información en la


pantalla, se van validando los datos, realizando las inferencias, y
disparándose las reglas y fórmulas definidas.
• Procesamiento de datos (grabaciones) a “pantalla completa”
• Inferencia de modo:

WIN: WEB:
CSV=No  Hay botón get / no se infiere el modo Hay botón get / no se infiere el modo
CSV=Yes  No hay botón get / se infiere el modo
Diálogo a pantalla completa
Propiedad: Confirmation

• Se cuenta también con la propiedad “Confirmation”, útil fundamentalmente en


diálogo a pantalla completa.

• Posibilita trabajar “con” o “sin” confirmación explícita del usuario:


• Con confirmación: validación en 2 pasos (grabación en el último).

WIN: cambia texto del botón, WEB: no cambia texto, “confirm” se muestra
“confirm” en el 2do. paso en el 2do. paso en el Error Viewer

• Sin confirmación: se valida y graba en 1 solo paso


• En Win: no hay botón “Confirm”, solo Insert o Update, dependiendo del modo.
• En Web: no hay mensaje de confirmación en el Error Viewer
Transacciones en tiempo
de ejecución
WIN

eliminación
de líneas
(tecla Supr)
Transacciones en tiempo
de ejecución
WEB

eliminación de
líneas
(&GxRemove)
Algunos elementos más
de las transacciones

Propiedades
• Propiedades

• Documentación

• Ayuda Ayuda

Documentación

También podría gustarte