Reglas de Negocio: Dónde implementarlas? Reglas de Negocio: Capa de presentación

Documentos relacionados
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Introducción a PL/SQL

Checks, Triggers y Excepciones en InterBase: validando desde la base de datos

Diseño Basado en Componentes. Curso 2008 / 09

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Coordinación n de Componentes mediante Conectores Implementados con Servicios Web

Oracle PL/SQL. Programa de Estudio.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 E V E N T O S. Ing. Bruno López Takeyas, M.C.

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

DISPARADORES EN SQL DISPARADORES EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999 SINTAXIS GENERAL DE UN DISPARADOR EN SQL:1999

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Oracle Fusion Middleware 11g: Creación de Aplicaciones ADF - Acelerado

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

PRÁCTICA T2. El lenguaje procedural PL/SQL de Oracle

Declaración de Variables. Copyright Oracle Corporation, All rights reserved.

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Clases Abstractas e Interfaces

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

El Lenguaje PL/SQL. Un lenguaje de propósito general orientado a la inclusión de sentencias SQL. Estructura del código PL/SQL.

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Conceptos Básicos. Programación Orientada a Objetos 2

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

Curso de Java POO: Programación orientada a objetos

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Lenguaje de programación con JAVA

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Creación de un objeto. Creación de un objeto. Creación de un objeto

PRÁCTICA 4: DISEÑO DE TIPOS Versión: 1.0.1

Modelo de Orientación a Aspectos

Examen escrito de Programación 1

Programación Orientada a Objetos en Java

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

INTERACCION ENTRE OBJETOS

Programación orientada a objetos

Derechos de Acceso: COMPOSICION

Herencia. Hay clases que comparten gran parte de sus características.

Arquitectura y Diseño de Sistemas Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Primer Cuatrimestre de 2015

Construcciones del Lenguaje Java

Departamento de Lenguajes y Sistemas Informáticos

Administración Local Soluciones

Lenguaje SQL (2ª Parte) Definición de datos

Prueba N o 1. Programación II

También añado a la clase Libro los siguientes métodos: (que programaré más adelante)

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

PHP 7 Desarrollar un sitio web dinámico e interactivo

Manual de turbo pascal

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

OOP y C++ Indice. 0.1 Análisis orientado a objetos(1/4) Análisis orientado a objetos(2/4) 0.- OOP 1.- INTRODUCCIÓN.

GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL

Tema 1.- Conceptos básicos de la OO

Los procedimientos almacenados son nuevas funcionalidades de la versión de MySQL 5.0. Un procedimiento

Oracle Fusion Middleware 11g: Creación de Aplicaciones con ADF I

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Práctica 4: Java Remote Method Invocation (RMI)

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

GUIA 3 PARTE II. Introducción a PL/SQL

Herencia Java y Servicios Web I Master en Ingeniería Matemática

Concurso: Cuánto sabes de JAVA?

Introducción a C++ Índice

GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Carlos A. Olarte Ligaduras de Integridad y Restricciones sobre la BD

Tema 7.- Fundamentos de la Programación Orientada a Objetos

MODELO LÓGICO. Diseño de tablas para SIG RODOLFO FRANCO. Especialista SIG DOCUMENTO CORTO V. 1.0

Estudiaremos desde los fundamentos hasta conceptos más avanzados de la tecnología JSF.

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

INDICE Programación Introducción Capitulo 21 BASIC Capitulo 22. COBOL Capitulo 23 DELPHI Capitulo 24. FORTRAN Capitulo 25.

- Bases de Datos - - Diseño Físico - Luis D. García

Tema 3: Programación orientada a objetos (I)

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Examen de Bases de datos Grado de Ingeniería en Informática, Febrero, 2015

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 EXCEPCIONES. Ing. Bruno López Takeyas, M.C.

Tema 3: Genericidad en Java. Tema 3: Genericidad en Java. Objetivos y Bibliografía. Modelos de Datos Genéricos

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Aplicaciones de Escritorio

Guías técnicas Grupo Danysoft: Creación de Componentes en Delphi (parte II)

Clases Abstractas e Interfaces

Anexo 6 Documento de Base de Datos

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Práctica sobre compartición de instancias remotas.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Oracle Database: Programación con PL/SQL

FRAMEWORK 2 Recepción de SMS

A través del API de WWF Derivando de la clase Activity Configurar las propiedades de las actividades

INTERFACE LIST DEL API JAVA. CLASES ARRAYLIST, LINKEDLIST, STACK, VECTOR. EJEMPLO CON ARRAYLIST. (CU00920C)

Tema 5 Corrección y Robustez Excepciones en Java

La Herencia: Teoría (1)

Integración Capa Web de pojo-miniportal (1)

Integridad en sistemas de bases de datos relacionales

Introducción a la Programación orientada a objetos con C++

Oracle ADF: Introducción a Business Components

Aprender a desarrollar con JavaScript

Declaración. Introducción. Definición o implementación. Llamada. Un programa en C consta de una o más funciones.

Transcripción:

Reglas de Negocio: Dónde implementarlas? EIS Negocios WEB En el servidor: mediante PK, FK, unique, Check disparadores, procedimientos, funciones, paquetes. Garantizan la consistencia de los datos almacenados. Si sólo las implementamos en el servidor: Frustración en el usuario Sobrecargamos de trabajo al servidor Sobrecarga en la red Reglas de Negocio: Capa de presentación Violación de clave primaria? Violación de restricción not null? Valores permitidos? Formato correcto? Clave foránea? Valores permitidos? 1

RN en capa presentación: Claves foráneas RN en capa presentación: Valores predefinidos 2

RN en capa presentación: Qué hacer con las fechas? RN en capa presentación: Post-fallo... 3

Reglas de Negocio: Dónde implementarlas? EIS Negocios WEB En la capa de presentación: FK: listas desplegables Dominio: botones de radio, casillas de verificación Amigables e intuitivas No cubren todas las posibilidades Consumen recursos del cliente Por sí solas no garantizan la consistencia de datos en el servidor Reglas de Negocio: Dónde implementarlas? EIS Negocios WEB En la capa de negocios Cubren todas las posibilidades Consumen recursos del cliente Por sí solas no garantizan la consistencia de datos en el servidor 4

Reglas de Negocio En la capa de negocios Cómo se implementan en Developer? Usando PL/SQL: con funciones, procedimientos y disparadores asociados a eventos y elementos. y en JDeveloper? Reglas de Negocio: JDeveloper ADF BD es un marco (Java Framework Technology): librería de clases orientadas a resolver un problema específico. Usan un fichero de metadatos xml que permite personalización, pero admiten también extensión de clases. Base Entity Classes: Oracle.jbo.server.EntityImpl: A partir de ella se extienden las subclases que representan los objetos de la bd EntityImpl EmpleadoImpl peado p TrabajoImpl 5

RN en JDeveloper: Validación a nivel de atributo Se realiza cada vez que cambia el valor de un atributo. Se implementa mediante: Reglas de validación: clases Java Dominios de validación. Método set. Validación a nivel de atributo: reglas de validación Predefinidas: CompareValidator: comparan un atributo con un literal ListValidator: comprueban si un atributo está en una lista de literales. RangeValidator: comprueban si un atributo está comprendido entre dos literales. MethodValidator: invoca un método en la clase EO. Custom: Jdeveloper crea un esqueleto de la clase, con: Boolean validatevalue (Object o) (o es el valor de un atributo) vetoablechange(): se invoca automáticamente al cambiar el valor de un atributo. Description: mensaje de información. 6

RN en JDeveloper: Validación a nivel de entidad Afecta a varios atributos. Se aplica al hacer commit. Se implementa mediante: Reglas de validación a nivel de entidad Método validateentity() Validación a nivel de entidad: reglas de validación Predefinidas: MethodValidator: comparan un atributo con un literal UniqueKeyValidator: comprueban si un atributo está en una lista de literales. Custom:implementan la interfaz JbiValidator() 7

RN en capa negocios: Developer Ningún trabajador de nuestra empresa cobra menos del salario mínimo interprofesional (570 ) IF (:salar < 570) THEN lanza_mensaje ('El salario es menor que el interprofesional'); END IF; 8

RN en capa negocios: JDeveloper Ningún trabajador de nuestra empresa cobra menos del salario mínimo interprofesional (570 ) A nivel de atributo A nivel Reglas de validación entidad Predefinidas: CompareValidator: ListValidator: RangeValidator: MethodValidator: Custom: Dominios de validación. Método set. RN en capa negocios: Developer Las longitudes máximas son: para el nombre de un departamento, 20 para un identificador, 10 para los apellidos, 30 IF ( length (:apell_s) > 30 ) THEN lanza_mensaje ('Apellidos demasiado largos'); END IF; IF ( length (:b_departamento.id_depart) > 10 ) THEN lanza_mensaje ('Identificador demasiado largo'); END IF; IF ( length (:b_departamento.nombr) > 20 ) THEN lanza_mensaje ('Identificador demasiado largo'); END IF; 9

RN en capa negocios: JDeveloper Las longitudes máximas son: para el nombre de un departamento, 20 para un identificador, 10 para los apellidos, 30 A nivel de atributo A Reglas nivel de validación entidad Predefinidas: CompareValidator: ListValidator: RangeValidator: MethodValidator: Custom: Dominios de validación. Método set. description: mensaje de error. longitudmáxima: adaptable a cada caso. boolean validatevalue l (Object value): realiza la validación ió public void vetoablechange(propertychangeevent eventobj) { if (!validatevalue(eventobj.getnewvalue())) { throw new ValidationException( getdescription() ); } } RN en capa negocios: Developer Los identificadores de departamento y proyecto siguen las normas de abreviatura Noesis DECLARE palabro VARCHAR2 (20); i INTEGER; BEGIN IF (length(:b_depart.id_depart) > 10) THEN lanza_mensaje ('Identificador demasiado largo'); END IF; palabro := :b_depart.id_depart; palabro := TRANSLATE ( palabro, 'aeiouaeiouáéíóúáéíóú', 'aaaaaaaaaaaaaaaaaaaa'); IF ( INSTR (palabro, 'a',5)!= 0) THEN lanza_mensaje ('El identificador no cumple la norma Noesis:' CHR (10) 'Hay una vocal más allá de los 4 primeros caracteres'); END IF; 2007 END; J. Lloret, M.A. Zapata y J.C. Ciria Nº 10

RN en capa negocios: JDeveloper Los identificadores de departamento y proyecto siguen las normas de abreviatura Noesis A nivel de atributo A Reglas nivel de validación entidad Predefinidas: CompareValidator: ListValidator: RangeValidator: MethodValidator: Custom: Dominios de validación. Método set. RN en capa negocios: Developer Los identificadores son correctos IF ( SUBSTR (:b_depart.nombr, length (:b_depart.id_depart))!= :b_depart.id_depart ) THEN lanza_mensaje ('El identificador no se corresponde con el nombre'); END IF; 11

RN en capa negocios: JDeveloper Los identificadores son correctos A nivel de atributo A nivel de entidad RN en capa negocios: Developer Ningún empleado puede cobrar más que su jefe? 12

RN en capa negocios: JDeveloper Ningún empleado puede cobrar más que su jefe A nivel de atributo A Reglas nivel de validación entidad Predefinidas: CompareValidator: ListValidator: RangeValidator: MethodValidator: Custom: Dominios de validación. Método set. RN en capa negocios: Developer Los empleados sin jefe, y sólo ellos, cobran más de 8000 al mes 13

RN en capa negocios: JDeveloper Los empleados sin jefe, y sólo ellos, cobran más de 8000 al mes A nivel ld de atributo A nivel de entidad protected void validateentity() { super.validateentity(); String jefe = getnssjefe(); if ( (jefe == null) && (getsalar().floatvalue() < 8000 ) ) throw new oracle.jbo.jboexception ("Este jefazo gana muy poco"); else { throw new oracle.jbo.jboexception ("Este gana como si fuera jefazo, y no lo es"); } } Reglas de Negocio Reusabilidad Regla de validación Dominio Set No Facilidad de programación Se requiere acceder a otros atributos? Estilo de programación preferido puede aplicarse a atributos de distintos tipos usando get Estándar Java 14