Ejercicio 3.5: Modelado de la capa de componentes de infraestructura

En este ejercicio se modela la capa de infraestructura del paquete itso.ad.business. La capa de componentes de la infraestructura separa la interfaz de cliente de los datos de la aplicación persistentes, así como de la implementación de la aplicación. La capa de componentes de la infraestructura contiene las interfaces de delegado y de objetos de transferencia, así como las excepciones y las clases de fábrica de delegados.

La capa de componentes de la infraestructura contiene los subpaquetes de diseños que se indican en la tabla siguiente:

Paquete Descripción
exception Este subpaquete contiene las clases de excepción ServiceException y DataAccessException que proporcionan la recuperación de errores para el sistema de banca en línea de PiggyBank.
factory Este subpaquete contiene la clase BusinessDelegateFactory que se utiliza para crear de modo dinámico un delegado empresarial.
interfaces.delegates Este subpaquete contiene las interfaces para el delegado empresarial.
interfaces.to Este subpaquete contiene las interfaces para los objetos de transferencia.

Modelado de las interfaces de objetos de transferencia

Los objetos de transferencia se utilizan como tipos de retorno para llamadas a procedimientos remotos. Los objetos de transferencia de PiggyBank transportan información de los clientes y las cuentas entre las capas del diseño de PiggyBank. En este ejercicio se modelan las interfaces de los objetos de transferencia.

Para modelar la interfaz ICustomerTO:
  1. En la vista Explorador de modelos, expanda Modelo de diseño IT empresarial y Diseños de implementación de PiggyBank.
  2. En el subpaquete itso.ad.business, pulse el botón derecho del ratón sobre el paquete framework y, a continuación, pulse Añadir UML > Paquete.
  3. Denomine el nuevo paquete como interfaces.to.
  4. En la vista Explorador de modelos, efectúe una doble pulsación en el diagrama Principal y añada el título interfaces.to - Interfaces de objetos de transferencia.
  5. En la Paleta, efectúe una doble pulsación en Interfaz y denomine la interfaz como ICustomerTO.
  6. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase ICustomerTO y, a continuación, pulse Añadir UML > Operación.
  7. Denomine la operación como getId.
  8. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  9. En la ventana Seleccionar elemento, pulse String.
  10. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase ICustomerTO y, a continuación, pulse Añadir UML > Operación.
  11. Denomine la operación como getName.
  12. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  13. En la ventana Seleccionar elemento, pulse String.

Para modelar la interfaz IAccountTO:
  1. En la Paleta, efectúe una doble pulsación en Interfaz y denomine la interfaz como IAccountTO.
  2. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IAccountTO y, a continuación, pulse Añadir UML > Operación.
  3. Denomine la operación como getBalance.
  4. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  5. En la ventana Seleccionar elemento, pulse Integer.
  6. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IAccountTO y, a continuación, pulse Añadir UML > Operación.
  7. Denomine la operación como getNumber.
  8. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  9. En la ventana Seleccionar elemento, pulse String.

Ha modelado las interfaces de objetos de transferencia. El diagrama debe presentar un aspecto similar al de la figura siguiente:

Diagrama de interfaces de objetos de transferencia.

Modelado de las interfaces de delegado

Las definiciones de las interfaces de delegado empresarial describen los métodos de delegado empresarial y los componentes de fábrica que se utilizan para generar una instancia de implementación de delegado empresarial. La interfaz IPiggyBankBusinessDelegate define una interfaz para la lógica empresarial de PiggyBank. La clase AbstractBusinessDelegateFactory crea instancias de IPiggyBankBusinessDelegate.

Para modelar la interfaz IPiggyBankBusinessDelegate:
  1. En la vista Explorador de modelos, expanda Modelo de diseño IT empresarial y Diseños de implementación de PiggyBank.
  2. En el subpaquete itso.ad.business, pulse el botón derecho del ratón sobre el paquete framework y, a continuación, pulse Añadir UML > Paquete.
  3. Denomine el nuevo paquete como interfaces.delegates.
  4. En la vista Explorador de modelos, efectúe una doble pulsación en el diagrama Principal y añada el título interfaces.delegates - Interfaces de delegado.
  5. En la Paleta, efectúe una doble pulsación en Interfaz y denomine la interfaz como IPiggyBankBusinessDelegate.

Para modelar la operación cashCheck:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IPiggyBankBusinessDelegate y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como cashCheck ( accountToCredit, checkAmount, checkReference ).
  3. En la vista Propiedades de la página Parámetros, pulse el campo Tipo para el parámetro accountToCredit y cambie el tipo de parámetro por String.
  4. Pulse el campo Tipo para el parámetro checkAmount y cambie el tipo de parámetro por Integer.
  5. Pulse el campo Tipo para el parámetro checkReference y cambie el tipo de parámetro por String.

Para modelar la operación getAccountByCustomer:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IPiggyBankBusinessDelegate y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como getAccountByCustomer ( customer ).
  3. En la vista Propiedades de la página Avanzadas, junto a Multiplicidad, pulse la flecha abajo que se encuentra junto a 1..-1 y, a continuación, pulse 1..*.
  4. En la página General, seleccione el recuadro de selección Ordenado, deseleccione el recuadro de selección Exclusivo y, a continuación, pulse Establecer tipo de retorno.
  5. En la ventana Seleccionar elemento, expanda itso.ad.business y framework y, en el paquete interfaces.to, pulse IAccountTO.

Para modelar la operación getBalance:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IPiggyBankBusinessDelegate y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como getBalance ( accountNumber, customer ).
  3. En la vista Propiedades de la página Parámetros, pulse el campo Tipo para el parámetro accountNumber y cambie el tipo de parámetro por String.
  4. Pulse el campo Tipo para el parámetro customer y cambie el tipo de parámetro por ICustomerTO.
  5. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  6. En la ventana Seleccionar elemento, pulse Integer.

Para modelar la operación getCustomerById:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IPiggyBankBusinessDelegate y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como getCustomerById ( customerId ).
  3. En la vista Propiedades de la página Parámetros, pulse el campo Tipo para el parámetro customerId y cambie el tipo de parámetro por String.
  4. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  5. En la ventana Seleccionar elemento, expanda itso.ad.business y framework y, en el paquete interfaces.to, pulse ICustomerTO.

Para modelar la operación transfer:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase IPiggyBankBusinessDelegate y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como transfer ( amountToTransfer, creditAccount, customer, debitAccount ).
  3. En la vista Propiedades de la página Parámetros, pulse el campo Tipo para el parámetro amountToTransfer y cambie el tipo de parámetro por Integer.
  4. Pulse el campo Tipo para el parámetro creditAccount y cambie el tipo de parámetro por String.
  5. Pulse el campo Tipo para el parámetro customer y cambie el tipo de parámetro por ICustomerTO.
  6. Pulse el campo Tipo para el parámetro debitAccount y cambie el tipo de parámetro por String.
  7. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  8. En la ventana Seleccionar elemento, pulse Boolean.

Para modelar la interfaz AbstractBusinessDelegateFactory:
  1. En la Paleta, efectúe una doble pulsación en Interfaz y denomine la interfaz como AbstractBusinessDelegateFactory.
  2. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase AbstractBusinessDelegateFactory y, a continuación, pulse Añadir UML > Operación.
  3. Denomine la operación como createPiggyBankBusinessDelegate.
  4. En la vista Propiedades de la página General, pulse Establecer tipo de retorno.
  5. En la ventana Seleccionar elemento, expanda itso.ad.business y framework y, en el paquete interfaces.delegates, pulse IPiggyBankBusinessDelegate y, a continuación, pulse Aceptar.

Ha modelado la interfaces de delegado. Observe que las operaciones getAccountsByCustomer y getCustomerById devuelven las interfaces de objetos de transferencia que ha creado en el ejercicio anterior. Los diagramas deben presentar un aspecto similar al de la figura siguiente:

Diagrama de interfaces de delegados empresariales.

Modelado de la fábrica de delegados empresariales

La clase BusinessDelegateFactory se utiliza para crear dinámicamente una instancia de fábrica de delegados.

Para modelar la interfaz BusinessDelegateFactoryClass:
  1. En la vista Explorador de modelos, expanda Modelo de diseño IT empresarial y Diseños de implementación de PiggyBank.
  2. En el subpaquete itso.ad.business, pulse el botón derecho del ratón sobre el paquete framework y, a continuación, pulse Añadir UML > Paquete.
  3. Denomine el nuevo paquete como factory.
  4. En el Explorador de modelos, efectúe una doble pulsación en el diagrama Principal y añada el título factory - Implementación abstracta de Fábrica de delegados empresariales.
  5. En la Paleta, efectúe una doble pulsación en Clase y denomine la clase como BusinessDelegateFactory.
  6. En la vista Propiedades de la página General, seleccione el recuadro de selección Abstracta.

Para modelar el atributo delegateFactory:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase BusinessDelegateFactory y, a continuación, pulse Añadir UML > Atributo.
  2. Denomine el atributo como delegateFactory.
  3. En la vista Propiedades de la página General, pulse Seleccionar tipo.
  4. En la ventana Seleccionar elemento, expanda itso.ad.business y framework y, en el paquete interfaces.delegates, pulse AbstractBusinessDelegateFactory.
  5. En la vista Propiedades de la página General, pulse Estática.

Para modelar la operación getInstance:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase BusinessDelegateFactory y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como getInstance.
  3. En la ventana Seleccionar elemento, expanda itso.ad.business y framework y, en el paquete interfaces.delegates, pulse AbstractBusinessDelegateFactory.
  4. En la vista Propiedades de la página General, pulse Estática.

Para modelar la operación init:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase BusinessDelegateFactory y, a continuación, pulse Añadir UML > Operación.
  2. Denomine la operación como init ( factoryClassName ).
  3. En la vista Propiedades de la página Parámetros, pulse el campo Tipo para el parámetro factoryClassName y cambie el tipo de parámetro por String.
  4. En la vista Propiedades de la página General, pulse Estática.
  5. En la vista Explorador de modelos del subpaquete interfaces.delegate, pulse la interfaz AbstractBusinessDelegateFactory y arrástrela al interior del diagrama.
  6. En la Paleta, pulse Implementaciones.
  7. En el editor de diagramas, pulse la clase BusinessDelegateFactory y arrástrela a la clase AbstractBusinessDelegateFactory.

Ha modelado las clases de fábrica de la capa itso.ad.business. El diagrama debe presentar un aspecto similar al de la figura siguiente:

Implementación abstracta de fábrica de delegados empresariales.

Modelado de las excepciones de infraestructura de itso.ad.business

La capa de componentes de la infraestructura contiene la implementación de dos excepciones: DataAccessException, que se lanza cada vez que se produce un error en la capa empresarial y ServiceException, que se produce debido a una pérdida de servicio.

Para modelar las clases DataAccessException y ServiceException:
  1. En la vista Explorador de modelos, expanda Modelo de diseño IT empresarial y Diseños de implementación de PiggyBank.
  2. En el subpaquete itso.ad.business, pulse el botón derecho del ratón sobre el paquete framework y, a continuación, pulse Añadir UML > Paquete.
  3. Denomine el nuevo paquete como exception.
  4. En la vista Explorador de modelos, efectúe una doble pulsación en el diagrama Principal y añada el título exception.
  5. En la Paleta, efectúe una doble pulsación en Clase y denomine la clase como DataAccessException.
  6. En la Paleta, efectúe una doble pulsación en Clase y denomine la clase como ServiceException.

Ha modelado la capa de componentes de la infraestructura de itso.ad.business. La capa de la infraestructura es una capa de aislamiento que oculta la interfaz de cliente de PiggyBank de la implementación de PiggyBank. Ahora, puede completar el diagrama de elementos de diseño de itso.ad.business al arrastrar el paquete factory al diagrama. Conecte el paquete delegate.ejb al paquete factory con una relación de uso. Conecte el paquete factory al paquete framework con una relación de asociación. El diagrama debe presentar un aspecto similar al de la figura siguiente:

Diagrama de paquete de elementos de diseño de itso.ad.business.

Para continuar, vaya al Ejercicio 3.6: Modelado del subpaquete de componentes EJB.

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2004, 2005. Todos los derechos reservados.