Date post: | 27-Oct-2015 |
Category: |
Documents |
Upload: | juan-andres-amado-cerpa |
View: | 50 times |
Download: | 0 times |
Lógica de Negocios
� Para organizar el Layer de Negocios
�Transaction Script
�Table Module
�Domain Module
�Service Layer
�Scripting
Glanularidad Interfaces
� Coarse Grained
� Métodos con muchos
parámetros
� SOA
� Distribución
� Un procesamiento
completo para un
servicio
� Fine Grained
� Métodos con pocos
parámetros
� Domain Model
� Contiene un conjunto
de operaciones
separadas
�Mas Flexibilidad
Transaction Script
Organiza la lógica de la aplicación en
procedimientos que resuelven la funcionalidad
que la aplicación requiere
Transaction Script
� Es un procedimiento que:
�Toma el input de la presentación
�Lo procesa y realiza los cálculos y
validaciones que correspondan
�Guarda los datos en una base de datos
�Devuelve un resultado a la presentación
Transaction Script
�Opciones de Implementación:
�Organizar en un conjunto de Métodos
�Organizar en un conjunto de Clases.
�Clases con Interfaces Coarse-Grained.
�Permite distribución
�Utilizando el patrón Command
�Fine-Grained
Transaction Script
�Coarse-Grained Transaction Script:
+AgregarFactura(in Fecha : Date, in Cliente : int, in Vencimiento : Date, in Lista De Precios : int, in ....) : int
«interface»
FacturaScript
Transaction Script
� Problema a Resolver
� Como comunico mi capa de Transaction Scrtipts con
las otras capas de mi aplicación
� Opciones
� ID
� RecordSets
� Algún Tipo de Dato Abstracto
� Iteradores
� DTO
� XML
Transaction Script
� Ejemplo
� Se desea listar las ventas del ultimo período
� Para ello debemos comunicarnos con la capa de la
interfaz grafica
+VentasUltimoPeriodo() : ???
ScriptVentas
Transaction Script
� Opciones
� Devolver un RecordSet con las ventas del ultimo
período
� Devolver un Iterador a las ventas del ultimo Período
� Devolver una colección de DTO Ventas
� Devuelve un XML que contiene la colección de
Ventas
Transaction Script
� Consecuencias
�Ve a la aplicación como una serie de transacciones
�Existen varios componentes de negocios.
�Cada componentes de negocios tienen métodos que corresponden directamente con la funcionalidad que la aplicación requiere.
Transaction Script
� Consecuencias
�Se pueden generar distintos niveles de transaction script para eliminar el código duplicado
�Son un buen punto para incluir� Manejo de transacciones (strart transacción /
commit)
� Seguridad
Transaction Script
� Ventajas
�Es un modelo procedural simple que todos
los desarrolladores entienden.
�Fácil de comprender y rápido de desarrollar
para problemas no muy complejos
�Un procedimiento para cada acción
�Cada procedimiento maneja la transacción
Transaction Script
� Desventajas:
�Es propenso a que aparezca código
duplicado
�Carece de la flexibilidad que poseen otras
formas de organización.
�Se dificulta mantener el software (realizar
correcciones, agregar funcionalidades) a
medida que los requerimientos cambian.
Table Module
� Una instancia que maneja toda la lógica
de negocios para todas las filas de una
tabla o vista de la base de datos
� Se ajusta muy bien si el entorno donde
trabajamos esta preparado para trabajar
con RecordSets como por ejemplo Delphi
o .NET.
Table Module
� Consecuencia
�Este patrón representa un punto medio de complejidad entre los otros dos.
�El diseño se hace más dependiente a la plataforma que elijamos
�Se ajusta muy bien con los DataSets de ADO.NET
�Es más difícil montar pruebas automaticas y hacer unit testing
Table Module� Esta directamente
relacionado con el
patrón de
Arquitectura
Recordset
� En el gráfico
podemos apreciar la
implementación de
.NET de ese patron
mediante la clase
DataSet
Domain Module
Una red de objetos interconectados que incorporan
tanto los datos como el comportamiento
Domain Module
� Temas a tener en cuenta
�Mapeo entre los objetos y la base de datos
�Generación de Ids.
�Colecciones Fuertemente tipadas
Domain Module
� Temas a tener en cuenta
�Mapeo entre los objetos y la base de datos
�Generación de Ids.
�Colecciones Fuertemente tipadas
Domain Module
� Permite aplicar técnicas y patrones conocido
(GOF) para trabajar con objetos.
� Creacionales
� Abstract
Factory
� Builder.
� Factory
Method
� Prototype.
� Singleton
� Estructurales
� Adapter
� Bridge
� Composite
� Decorator
� Facade
code.
� Flyweight
� Proxy
� Comportamiento
� Command
� Iterator
� Mediator
� Memento
� Observer
� State
� Strategy
� Template method
� Visitor
Domain Module
� Desventajas
�Requiere mayor preparación y conocimientos
por parte del equipo de desarrollo.
�No aprovecha la capacidad de determinados
entornos para trabajar alrededor de
RecordSets
Layer de Negocios
� Criterios para elegir
�Complejidad del problema
�Perspectiva de cambio del software a futuro
�Entorno de Desarrollo
�Equipo de Trabajo
Layer De Negocios
� Se tiene que diseñar un sistema para 3 clientes
distintos
� Los tres clientes manejan presupuesto
� Dependiendo ciertas circunstancias los
presupuestos se aprueban automáticamente
� Cada cliente tiene un criterio de aprobación
diferente
Juan Perez
En mi empresa los presupuestos
se aprueban automaticamente si
el cliente tiene cuenta corriente y
el saldo de la misma es positivo
Pedro Ramirez
En mi empresa si el cierre del
ultimo ejercicio fue positivo y se
pronostica que no habrá inflación
en los proximos 3 meses, el
presupuesto se aprueba
automaticamente
Ernesto Horangel
Si mercurio se encuentra alineado
con jupiter y neptuno y hay luna
llena entonces el presupuesto se
aprueba directamente
Ejemplo Con Transaction Script
If ( Cliente=Juan Perez )
{
Aprobado = TieneCuentaCorriente(IDcliente) and SaldoPositivo(IDCliente);
}
Else If ( Cliente=Pedro Ramirez)
{
(…)
}
Else If (Cliente=Ernesto Horangel)
{(…)
}
Ejemplo Con Domain Model
Presupuesto EstrategiaAprobacionAutomatica
AprobacionJuanPerez AprobacionPedroRamirez AprobacionErnestoHorangel
1 *
Domain logic vs. Aplication logic
� Tipos de Lógica de Negocios
�Lógica del dominio del problema (domain logic)� Corresponden a calculos, validaciones, etcque ver puramente con el problema
�Lógica de la aplicación (aplication logic)� Corresponde por ejemplo mandar un mail al responsible cuando se produce una determinada acción
Service Layer
Define una capa con los servicios
disponibles a ejecutar la aplicacion y
corrdina la respuesta a esos servicios.
Scripting
Permitir parametrizar en tiempo de
ejecución la logica de la aplicación
(application logic) mediante scripts que se
ejecutan ante determinados eventos del
sistema.