Momentos de disparo de reglas en transacciones

Documentos relacionados
Momentos de disparo de reglas en transacciones

Momentos de disparo de reglas en transacciones

Testeando las aplicaciones (GXtest)

Fórmulas Globales. Page1. Video filmado con GeneXus X Evolution 2

Definiendo reglas. En las transacciones, las reglas que deben cumplirse, o los controles que nos solicitan validar, se definen en la sección de Rules.

Definición de reglas

Qué son los subtipos?

Actualización de la Base de Datos - For each, delete, new

Qué son las fórmulas?

Overview GeneXus - Demo: 2.Cómo obtener el ejecutable de la KB y declaración de algunas reglas del negocio.

Qué son los subtipos?

Diseñando más transacciones

Agregando funcionalidad con patrones

Qué son los subtipos?

Relaciones entre entidades de la realidad

Tipos de datos compuestos

Diseñando más transacciones

Formularios dinámicos

Tipos de datos estructurados

Actualización de la Base de Datos - For each, delete, new

Definición de procesos de negocios

Actualización de la Base de Datos - Business Components

Curso GeneXus - Haciendo crecer la aplicación

Una vez completo este paso, es necesario verificar que haya paquetes disponibles para la cantidad de personas que deseen realizar el viaje.

Reglas en transacciones - Más conocimientos

BPM (Business Process Management)

Qué son las fórmulas?

Analicemos a modo de ejemplo la regla señalizada en la transacción Flight en la diapositiva.

Consulta con salida Table

Relaciones entre entidades de la realidad

Administrando las bases de conocimiento

Actualización de la Base de Datos - Business Components

FlightAvailableSeats

Diseñando más transacciones

Introducción a procedimientos, listados y comando For each

Ahora veremos qué sucede cuando el objeto B debe devolver un valor a quien lo llama, al finalizar su ejecución.

Se ejecuta el diagrama de procesos por primera vez

Definición de reglas

Diseñando la primera transacción

Tareas multi-instanciadas y mapeo de datos relevantes

Cargando los tipos de datos estructurados

Introducción a procedimientos, listados y comando For each

Cómo enviar un mail automático y ejecución del acceso a la API programado previamente

Comando For Each simple y For Each anidado para listar info relacionada

Manual de Usuario para publicación de llamados Uruguay Concursa

Ejecutando la aplicación por primera vez

Poblar de datos las tablas desde la propia transacción

Diseñando la primera transacción

PROCESO DE VENTAS Y FACTURACION

Administrando las bases de conocimiento (GXserver)

Transacción de 2 niveles usada como Business Component y manejo de errores.

Ejecutando la aplicación por primera vez

Diseñando más transacciones

Cargando los tipos de datos compuestos

Script Data Selectors: reusing definitions

Comunicación entre objetos

Prototipado, instancias e historia de un proceso

Fórmulas Locales. Page1. Video filmado con GeneXus X Evolution 2. Veremos ahora qué es una fórmula local.

Bing (proveedor de busqueda) Bing es una herramienta de búsqueda que nos ayudará a encontrar lo que buscamos de forma rápida y sencilla.

Data Providers - Más conocimientos

Curso GeneXus - Otro ejemplo de uso de Business components

Power Point para crear narración de imágenes

Ya hemos visto anteriormente el concepto general de Business Component y su aplicación en una transacción de un solo nivel.

Creando una aplicación móvil con GeneXus para trabajar con los Materiales del SAP ERP parte 2

Orders, Searches, and Conditions

Comando for each anidado para listar info agrupada

Agregando funcionalidad con patrones

Para eso abrimos el ambiente de desarrollo de Genexus.

Acceso a bases de datos externas

Usando las Apis del GAM

Ingresar y Reponer Repuestos / Artículos

Ciclos de prototipado y producción

Cómo listar información relacionada

Manual de Usuario I Módulo de Programación Multianual

Uso de la API del GAM

Introducción a Web Panels

Trabajando con documentos

Tutorial para la Instalación de la vista de torre en IVAO

Inicio de un proceso desde un objeto GeneXus, usando la API de Workflow

DEFINICION DE LA FACTURA

GENERADOR DE LIBROS ELECTRONICOS

Otro ejemplo de uso de Business Components

Introducción GAM. La gran mayoría de las aplicaciones modernas necesitan algún esquema de login, autenticación y autorización.

Programando con Minibloq.

Introducción a procedimientos y listados. Comando para consultar la base de datos.

Cargando Tipos de Datos Compuestos (SDT) mediante Data Providers

Ejecutando la aplicación por primera vez

Preparado por Ing. William Vallejo

Controles: Múltiples layouts por fila de un grid

Consulta con salida Chart (Parte I)

Muchos manejadores de bases de datos (DBMSs) cuentan con sistemas de recuperación ante fallos, que permiten dejar la base de datos en estado

Subprocesos transaccionales

D7. DIFERENCIA DE CAMBIO

Integridad Transaccional

TUTORIAL SOBRE HOJAS DE CALCULO

Transacción base. A partir de GeneXus X Ev3, se incorpora el concepto de transacción base.

Transcripción:

Momentos de disparo de reglas en transacciones Cuando vimos las reglas que podemos escribir en las transacciones, dijimos que no era necesario especificar cuándo debe ejecutarse cada una de ellas, ya que GeneXus determina dichos momentos de disparo. La mayoría de las veces, las reglas que definimos se ejecutan en el momento que pretendemos, sin embargo en algunos casos, puede ser necesario modificar dicho momento. Veamos un ejemplo. Supongamos que por cada vuelo, la aerolínea desea controlar que no pueda ingresarse una cantidad de asientos incorrecta, por ejemplo, que cada vuelo no pueda tener menos de ocho asientos. Al ingresar un vuelo nuevo, queremos que se realice el control correspondiente y que no sea posible salvar el vuelo si no cumple la condición deseada. Para lograr esto, en la transacción que registra los vuelos modificamos al atributo FlightCapacity, para que su fórmula cuente la totalidad de asientos del avión. Ahora, en la sección Rules, declaramos una regla Error que no nos permita almacenar un vuelo si tiene menos de 8 asientos. Escribimos Error la cantidad de asientos debe ser mayor o igual a ocho if FlightCapacity es mayor que cero and FlightCapacity es menor que ocho Cerramos con punto y coma Page 1

Presionamos F5 Vamos a abrir la transacción Flight para crear un vuelo nuevo. Dejamos el valor del identificador vacío ya que es autonumerado... Ingresamos un vuelo desde el aeropuerto de Guarulhos, en Sao Paulo, Brasil, hasta el aeropuerto Charles de Gaulle en París, Francia. El costo del vuelo es de 3000, el descuento de un 10% y la aerolínea es TAM. Ahora ingresamos un asiento 1, ventana, letra A. y al salir del renglón, vemos que se despliega el mensaje de error! Obviamente no queremos que el mensaje de error se dispare aquí, porque todavía no pudimos ingresar todos los asientos! Es claro que si ingresamos un único asiento, tenemos menos de 8 Page 2

asientos ingresados y que corresponde que la regla Error se dispare, pero en realidad necesito que el control de la cantidad de asientos se realice después de que termine de ingresar todos los asientos. Para lograr esto, puedo condicionar que la regla se dispare, después que termine de trabajar con las líneas del grid, para eso escribimos. On afterlevel level FlightSeatChar. El momento on after level hace que la regla se dispare después de terminar un nivel. Como en nuestro caso sería después de terminar el nivel de las líneas del grid de asientos, entonces agregamos level FlightSeatChar ya que dicho atributo está en el nivel de las líneas de asientos. De esta forma indicamos a GeneXus que esa regla debe dispararse después de que se terminen de ingresar los datos donde está el atributo FlightSeatChar, es decir, después de ingresar todos los asientos del vuelo. La evaluación que hace la regla Error tiene sentido, ya que al momento de dispararse ya estarán ingresados todos los asientos que el usuario deseaba ingresar y se podrá verificar que al menos se hayan ingresado 8 asientos. Presionamos F5 Abrimos la transacción Flight y vamos a ingresar un vuelo nuevo nuevamente. Repetimos los datos que usamos antes El vuelo desde el aeropuerto de Guarulhos, hasta el aeropuerto Charles de Gaulle. El costo de 3000, con un 10% y la aerolínea TAM. Ahora ingresamos los asientos 1, ventana, A 1, pasillo, B 2, ventana, A 2, pasillo, B Y presionamos Confirmar, para indicar que terminamos de ingresar los asientos. Page 3

Vemos que GeneXus nos indica que la cantidad de asientos ingresados es insuficiente, ya que hemos ingresado solamente 4 asientos. Notemos que ahora, hasta que no presionamos Confirmar indicando que salimos del nivel de los asientos, no se hace la evaluación de la cantidad de asientos ingresados. Completemos la cantidad de asientos a 8 asientos. Digitamos 3, ventana, A 3, pasillo, B 4, ventana, A y por último 4, pasillo, B Ahora presionamos Confirmar y vemos que GeneXus nos dejó salvar el vuelo sin problemas. Page 4

Volvamos a GeneXus para grabar los cambios que hicimos a nuestra KB, en GXserver. Con este ejemplo vimos que hay casos en los que el momento elegido por GeneXus para disparar una regla no se adecua a nuestros intereses, de modo que debemos indicarle a GeneXus en qué momento queremos que dicha regla se ejecute. Así como tenemos el momento on Afterlevel, para indicar que queremos que la regla se dispare después de recorrer un nivel, tenemos otros momentos como on AfterInsert para indicar que la regla se dispare inmediatamente después de la grabación de los datos u on BeforeInsert si quisiéramos hacer o evaluar algo, inmediatamente antes de que los datos sean guardados en la base de datos. Notemos que todos estos momentos de disparo empiezan con el prefijo on y siempre se escriben al finalizar la declaración de la regla. Existen una serie de momentos de disparo disponibles, que no veremos en este video. Page 5

Si quieren profundizar sobre este tema, pueden ir al sitio de Training, dentro del Curso GeneXus, hacer click en el link Profundización Y luego seleccionar el video Orden de ejecución reglas y fórmulas Page 6