My favorites | Sign in
Project Home Downloads Wiki Issues Source
READ-ONLY: This project has been archived. For more information see this post.
Search
for
Implementacion_ENs  
Detalles de la implementación de los ENs de la Lógica de Negocio
Phase-Implementation, Featured
Updated Feb 4, 2010 by sergi.gi...@gmail.com

Introducción

En esta pequeña guía intentaremos dar los pasos a seguir para implementar el EN de cada una de nuestras Entidades de Negocio

ENs

Las ENs están en el proyecto "Negocio", que contiene las ENs y los CADs, y probablemente contendrá también los Componentes de Proceso que se ofrecerán como servicio COM+.

Dentro de este proyecto, tenemos la carpeta "EN", que tiene agrupadas las ENs por las 5 partes principales de la Lógica. Cada una de estas partes tiene su propio Namespace para agrupar cada sección.

Por norma general, los métodos implementados en cada EN devolverán hacia arriba siempre un DTO (o una colección de estos), mientras que las llamadas entre un EN y su CAD si que podrán devolver ENs.

Atributos y Propiedades

Todas los ENs con sus atributos privados y los prototipos de los métodos ya están generados a partir del diagrama de clases de análisis, y ya están subidos al repositorio. Además, cada uno tiene un atributo privado a su CAD correspondiente. Si no lo tiene, habrá que añadírselo.

Siguiendo con el ejemplo de la Entidad Permiso, así quedan sus atributos privados:

        #region Atributos
        private Int32 id;
        private String permiso;
        private String descripcion;

        private static CADPermiso cadPermiso = new CADPermiso();
        #endregion

Los pasos a seguir en su implementación son:

  • Generar las Propiedades públicas para cada atributo privado.
  • Añadimos una propiedad que llamaremos "DTO" que devuelva el DTO correspondiente al EN. De esta manera, nos ahorramos el tener que implementar un conversor EN->DTO, ya que lo hacemos en la misma Propiedad. Hay que tener en cuenta que si tenemos atributos de tipos complejos, tenemos que devolver su DTO, y no el tipo complejo.

Ejemplo:

        #region Propiedades
        public Int32 Id
        {
            get { return id; }
            set { id = value; }
        }
        public String Permiso
        {
            get { return permiso; }
            set { permiso = value; }
        }
        public String Descripcion
        {
            get { return descripcion; }
            set { descripcion = value; }
        }
        public DTOPermiso DTO
        {
            get { return new DTOPermiso(id, permiso, descripcion); }
        }
        #endregion

Aquí hay que tener cuidado con los atributos de tipo Complejo, ya que hay que comprobar que no sean null antes de acceder a su DTO y pasarlo al constructor del DTO. Por ejemplo, el EN de LOG tiene un atributo "usuario", que es de tipo USUARIO. Al crear la propiedad que devuelve su DTO, hay que devolver el DTO del Usuario, pero si éste es nulo, nos dará un error.

        public DTOLOG DTO
        {
            get
            {
                if (usuario != null)
                    return (new DTOLOG(this.id, this.ip, this.infoAdicional, this.tipoOperacion, this.fechaHora, this.usuario.DTO));
                else
                    return (new DTOLOG(this.id, this.ip, this.infoAdicional, this.tipoOperacion, this.fechaHora, null));
            }
        }

Métodos

Los métodos originales se han generado también a partir de los diagramas de clases, con lo que sólo nos queda rellenarlos.

  • Los métodos del CRUD (Alta, Baja, Modificación y Load) devuelven un booleano y llaman al CAD para rellenar los propios atributos de la EN.

Ejemplo de un método del CRUD:

        public bool alta()
        {
            bool resultado = false;
            try
            {
                resultado = cadUsuario.alta(this);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return resultado;
        }
  • Los métodos que devuelven datos, siempre devolverán el DTO de la EN o colecciones de éste. Estós son el método de cargar de datos ("dameUsuario()") y los listados.

Por norma general, siempre tendremos un listado completo, y un listado por cada uno de los tipos complejos que contenga el EN. Por ejemplo, si la clase Usuario tiene un atributo Perfil, tendremos un método "listadoPorPerfil(int perfil)".

Los listados se colocan en la EN del tipo de datos que devuelven. Así, el ejemplo anterior, que devuelve Usuarios, estará en la EN de Usuario.

Ejemplo de métodos que devuelven DTOs:

        public static DTOUsuario dameUsuario(String usuario)
        {
            cUsuario user = null;
            user.load(usuario);
            return user.DTO;
        }


        public static List<DTOUsuario> listado()
        {
            List<DTOUsuario> usuarios = null;
            try
            {
                usuarios = CADUsuario.listado();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return usuarios;
        }
Powered by Google Project Hosting