jueves, enero 03, 2013

Dynamics AX 2012: Patrón de clase de Contrato de Datos

PATRON DE CLASES DE CONTRATO DE DATOS


Contrato de Datos

• Es un acuerdo formal entre un cliente y un servicio que abstractamente describe los datos que se van a intercambiar.
• Para comunicar el cliente y el servicio no tienen que compartir los mismos datos, solo los mismos contratos de datos.
• Un contrato de datos define con precisión para cada parámetro o tipo de valor devuelto que datos se serializarán (se convierte en XML) para su intercambio.
• Clases que se crean para representar una entidad de datos con propiedades que pertenecen a la misma.
• Permite la interoperabilidad más amplio tanto con clientes o no cliente Microsoft.
• Se marca sus tipos con los atributos DataContractAttribute y DataMemberAttribute para crear un contrato de datos (intercambia sus Operaciones de Servicios).
• Los contratos de datos no están relacionados con el ámbito de acceso del código administrado: los miembros de datos privados se pueden señalizar y enviar a otra parte para tener acceso a ellos públicamente.


Clase FormLetterServiceController.

• Reemplaza la clase FormLetter.
• Actúa como controlador para las clases FormLetterService.
• Obtiene toda la información necesaria durante el proceso de registro y pasa estos valores a la clase FormLetterService utilizando el patrón de clases Contrato de Datos.
• Ésta clase invoca la clase FormLetterService cuando el método run es llamado.
• Las variables de clase fueron asignado valores para ser utilizado durante el proceso de registro han sido movidos a las clases de contrato de datos.
• El patrón utilizado para la asignación de valores a las clases de contrato de datos que era utilizado a través de los métodos parm de AX 2009 han sido cambiados para utilizar la clase de contrato de datos en vez de utilizar una variable de clase global.

Clase FormLetterContract

• Es la clase base de las clases de contrato de datos en el framework FormLetter.
• Sigue la misma estructura jerárquica de la clase FormLetterServiceController.
• Cada clase en la jerarquía de FormLetterServiceController tiene una correspondiente clase de contrato de datos.
• Los métodos parm son utilizados para establecer y obtener datos desde una clase Contrato [DataMemberAttribute].

Clase FormLetterService

• Puede ser utilizado para controlar el flujo de registro para un número de Darios.
• La clase está ligada a la capa Servidor y ejecuta en el IL, lo que significa, que no puede haber ninguna llamada de regreso (callbacks) desde ésta clase. Las llamada de regreso resultan en excepción.
• El método run registra documentos.
• También tiene un método de Operación de Servicio para cada tipo de documento que puede ser registrado por este servicio, tal como PostSalesPackingSlip.

Clase FormLetterParmData

• La jerarquía de esta clase puede ser utilizada para crear y mantener registrando datos en las tablas parm tal como SalesParmUpdate, SalesParmTable y SalesParmLine.
• La clase base utiliza utiliza un patrón de plantilla, definiendo una plantilla para cómo crear registros en las tablas parm.
• Hay clases para los módulos específicos tales como SalesFormLetterParmData y una clase para cada tipo de documento soportado, tal como SalesFormLetterParmDataPackingSlip.
• La clase tiene 3 API públicas:
o CreateData – crea los datos necesarios en las tabla parm.
o ReSelect – crea nuevamente los datos basados en el SpectQty.
o ReArrange – vuelve a organizar los datos en las tablas base (actualización resumen)


Clase FormLetterJournalCreate

• La jerarquía de la clase tiene la responsabilidad de crear un Diario con una cabecera. Por ejemplo CustPackingSlipJour y un número de líneas, por ejemplo CustPackingSlipTrans y los datos relacionados del Diario, por ejemplo CustPackingSlipSalesLink.
• La clase base utiliza un patrón de plantilla, definiendo las plantillas para crear un Diario.
• Patrón de plantilla InitJournalHeader().
• Estas clases mantienen la lógica específica para cada documento.
• Estos documentos de clases que soportan tienen múltiple versiones del mismo documento extendiendo la clase FormLetterVersionableJournalCreate.
• La clase FormLetterService instancia ésta jerarquía de clases por cada Diario que necesita crear y llamadas run.

Clase FormLetterJournalPost

• La jerarquía de esta clase puede ser utilizado para registrar un Diario, por ejemplo actualizando inventarios y el libro mayor.
• La clase base utiliza un patrón de plantilla, definiendo la plantilla para registra un diario.
• Existe una clase de documento específico para cada documento que puede ser registrado por el framework. Por ejemplo: SalesPackingSlipJournalPost.
• Estas clases mantienen la lógica específica para cada documento.
• La jerarquía de clases requiere que un Diario ha sido creado y pasado.
• La clase FormLetterService instancia ésta clase por cada Diario que es necesario registrar y llamadas run.

Clase FormLetterJournalPrint

• La jerarquía de esta clase puede ser utilizada para controlar la impresión de uno o mas documentos de Diarios.
• Hay una clase específica para cada documento que puede ser impreso por este framework.
• La clase FormLetterService instancia ésta clase tanto para cada Diario que está siendo registrado o una vez con toda una lista de Diarios registrados.
Clase FormLetterProvieder

• Puede ser utilizado para proporcionar datos específicos al modulo para cada una de las clases de la jerarquía.
• Hay una clase hija por módulo.

No hay comentarios: