tesis desarrollo de un sistema de información basado en soa by manuel maldonado mendoza
DESCRIPTION
El concepto de software como servicio, es una visión que nos permite ofrecer soporte a las necesidades de un mercado de software muy competitivo. Gracias a la interoperabilidad de los servicios web. A lo largo de este trabajo nos centraremos: En el estudio del problema del sistema PSM (Pollería San Manuel). Aplicando la metodología RUP (Rational Unified Process). Esto con lleva a realizar las siguientes actividades: • Modelado de Negocios • Requerimientos • Análisis y Diseño • Implementación • Pruebas En base al modelado de negocios, se pueden obtener los requerimientos funcionales. De esta manera identificamos los servicios de la aplicación PSM. Para modelar los servicios web, se deben realizar las siguientes disciplinas del modelado SOMF (Service-Oriented Modeling Framework). • Modelado de Análisis orientado a servicios. • Modelado de Integración de Negocios. • Modelado de diseñó. La aplicación cliente fue desarrollada en wpf.TRANSCRIPT
.
Benemérita Universidad Autónoma de Puebla
Facultad de Ciencias de la Computación
“Desarrollo de un sistema de información basado
en SOA (Arquitectura Orientada a Servicios)”
Tesis Profesional
Para obtener el título de:
Ingeniero en Ciencias de la Computación
Presenta:
Manuel Maldonado Mendoza
Asesor:
Dr. Abraham Sánchez López
Puebla, Pue. Primavera 2012
Contenido
Capítulo 1 ............................................................................................................................................... 1
Contribución del trabajo de tesis .............................................................................................. 1
Capítulo 2 ............................................................................................................................................... 3
Estado del arte ................................................................................................................................. 3
2.1 Introducción ............................................................................................................................... 3
2.2 SOA ............................................................................................................................................... 3
2.3 Consumo de servicios ............................................................................................................ 6
2.4 Servicios web ............................................................................................................................. 6
2.5 XML ............................................................................................................................................... 7
2.6 SOAP ............................................................................................................................................. 7
2.7 WSDL ............................................................................................................................................ 8
2.8 Modelado de servicios con SOMF (Service Oriented Modeling Framework) .... 8
2.8.1 Análisis orientado a servicios ....................................................................................... 9
2.8.2 Integración de negocios orientada a servicios .................................................... 12
2.8.3 Diseño orientado a servicios ...................................................................................... 17
2.9 RUP (Rational Unified Process) ......................................................................................... 23
2.9.1 Modelado de negocios ................................................................................................ 24
2.9.2 Requerimientos ............................................................................................................... 25
2.9.3 Análisis y diseño ............................................................................................................. 26
2.10 Modelado de datos con UML ......................................................................................... 26
2.11 Conclusión.............................................................................................................................. 29
Capítulo 3 ............................................................................................................................................. 30
Análisis de requisitos ................................................................................................................... 30
3.1 Introducción......................................................................................................................... 30
3.2 Historias de usuario .......................................................................................................... 30
3.3 Conclusión ............................................................................................................................ 32
Capítulo 4 ............................................................................................................................................. 33
Modelado de negocios RUP de la aplicación PSM ........................................................... 33
4.1 Introducción......................................................................................................................... 33
4.2 Casos de uso de negocios .............................................................................................. 33
4.2.1 Actores del negocio....................................................................................................... 33
4.2.2 Diagramas de casos de uso ........................................................................................ 34
4.2.3 Requerimientos funcionales caso de uso ComprarPolloAlProveedor......... 35
Descripción .................................................................................................................................. 35
Pre-Condiciones ........................................................................................................................ 35
Flujo de eventos principal ...................................................................................................... 35
Flujos de eventos alternativos .............................................................................................. 35
Encadenamiento de errores .................................................................................................. 36
4.2.4 Requerimientos funcionales caso de uso VenderPollosAClientes ................ 38
Descripción .................................................................................................................................. 38
Pre-Condiciones ........................................................................................................................ 38
Flujo de eventos principal ...................................................................................................... 38
Flujo de eventos alternativos ................................................................................................ 38
Encadenamiento de errores .................................................................................................. 38
Puntos de extensión ................................................................................................................ 38
Flujos de eventos principales puntos de extensión...................................................... 38
Flujos de eventos alternativos puntos de extensión .................................................... 39
Post-Condiciones ...................................................................................................................... 39
4.2.5 Requerimientos funcionales caso de uso VenderPedidos .............................. 42
Pre-Condiciones ........................................................................................................................ 42
Flujo de eventos principal ...................................................................................................... 42
Sub-Flujo de eventos principal ............................................................................................ 42
Flujos de eventos alternativos .............................................................................................. 42
Encadenamiento de errores .................................................................................................. 42
Post-Condiciones ...................................................................................................................... 43
4.2.6 Requerimientos funcionales caso de uso ObtenerInventario ........................ 45
Pre-Condiciones ........................................................................................................................ 45
Flujo de eventos principal ...................................................................................................... 45
Flujos de eventos alternativos .............................................................................................. 45
Encadenamiento de errores .................................................................................................. 45
Post-Condiciones ...................................................................................................................... 46
4.2.7 Requerimientos funcionales caso de uso RealizarGastos Pagos .................. 48
Pre-Condiciones ........................................................................................................................ 48
Flujo de eventos principal ...................................................................................................... 48
Encadenamiento de errores .................................................................................................. 48
Post-Condiciones ...................................................................................................................... 48
4.2.8 Requerimientos funcionales caso de uso ObtenerContabilidad ................... 51
Descripción .................................................................................................................................. 51
Pre-Condiciones ........................................................................................................................ 51
Flujo de eventos principal ...................................................................................................... 51
Flujo de eventos alternativos ................................................................................................ 51
Encadenamiento de errores .................................................................................................. 51
Requerimientos funcionales caso de uso de los puntos de inclusión ................... 52
Flujos de eventos principales puntos de inclusión ....................................................... 52
Flujos de eventos alternativos puntos de inclusión ..................................................... 55
Post-Condiciones ...................................................................................................................... 57
4.2.9 Diagramas de actividades con entidades .............................................................. 58
4.3 Reglas del negocio ............................................................................................................ 65
4.4 Modelado objetos de negocios.................................................................................... 68
4.5 Conclusión ............................................................................................................................ 69
Capítulo 5 ............................................................................................................................................. 70
5.1 Introducción......................................................................................................................... 70
5.2 Descripción .......................................................................................................................... 70
5.3 Análisis y diseño de la aplicación PSM ...................................................................... 71
5.4 Diseño de la base de datos para la aplicación PSM ............................................ 72
5.5 Conclusión ............................................................................................................................ 73
Capítulo 6 ............................................................................................................................................. 74
SOMF ................................................................................................................................................. 74
6.1 Introducción......................................................................................................................... 74
6.2 Análisis SOMF de la aplicación PSM ........................................................................... 74
6.3 Integración de negocios SOMF de la aplicación PSM. ......................................... 76
6.4 Relación del diseño lógico orientado a servicios de la aplicación PSM ...... 77
6.5 Diseño lógico de la composición orientada a servicios ....................................... 78
6.6 Diagrama de transacción orientado a servicios de la aplicación PSM ........... 79
6.7 Conclusión ............................................................................................................................ 80
Capítulo 7 ............................................................................................................................................. 81
Implementación ............................................................................................................................. 81
7.1 Pantalla autentificación de la aplicación PSM ......................................................... 81
7.2 Pantalla principal dueño de la aplicación PSM ....................................................... 82
7.3 Registrar embarque .......................................................................................................... 83
7.4 Registrar pago de embarque ........................................................................................ 84
7.5 Consultar compras ............................................................................................................ 85
7.6 Pantalla ventas .................................................................................................................... 86
7.7 Pantalla menudeo .............................................................................................................. 87
7.8 Pantalla registro mayoreo .............................................................................................. 88
7.9 Pantalla de pedidos .......................................................................................................... 89
7.10 Pantalla registro pedidos PSM ................................................................................... 90
7.11 Pantalla finalizar pedido ............................................................................................... 90
7.12 Pantalla gastos ................................................................................................................. 91
7.13 Pantalla registro gastos ................................................................................................. 91
7.14 Pantalla inventario PSM ................................................................................................ 92
7.15 Pantalla registro inventario .......................................................................................... 93
7.16 Pantalla bonificaciones .................................................................................................. 94
7.17 Pantalla contabilidad...................................................................................................... 94
7.18 Pantalla principal del trabajador ................................................................................ 95
7.19 Pantalla pedidos del trabajador ................................................................................. 96
7.20 Pantalla registro pedidos del trabajador ................................................................ 97
7.21 Pantalla finalizar pedidos del trabajador ................................................................ 98
7.22 Pantalla gastos pagos del trabajador ..................................................................... 98
7.23 Pantalla registrar gastos .............................................................................................. 99
7.24 WSDL .................................................................................................................................100
Capítulo 8 ...........................................................................................................................................101
Pruebas y resultados ..................................................................................................................101
8.1 Descripción ........................................................................................................................101
8.2 Pruebas ................................................................................................................................101
Capítulo 9 ...........................................................................................................................................121
Conclusión .....................................................................................................................................121
Bibliografía .........................................................................................................................................123
Apéndice A ....................................................................................................................................126
Imágenes del prototipo de la interfaz de usuario.......................................................126
Pantallas de navegación principal ....................................................................................126
Compras .....................................................................................................................................127
Registrar compras ...................................................................................................................127
Registrar pagos compras .....................................................................................................128
Consultar embarques ............................................................................................................128
Contabilidad .............................................................................................................................129
Gastos..........................................................................................................................................129
Mayoreo .....................................................................................................................................130
Menudeo ....................................................................................................................................130
Pedidos .......................................................................................................................................131
Ventas .........................................................................................................................................132
Apéndice B.....................................................................................................................................133
WSDL ...........................................................................................................................................133
7.25 Compras WSDL ..............................................................................................................133
7.26 Ventas WSDL ...................................................................................................................136
7.27 Pedidos WSDL ................................................................................................................139
7.28 Descuentos WSDL .........................................................................................................142
7.29 GastosPagos WSDL.......................................................................................................145
7.30 Inventario WSDL ............................................................................................................147
7.31 Bonificaciones WSDL....................................................................................................148
7.32 Contabilidad WSDL .......................................................................................................150
Agradecimientos
Quiero agradecer de antemano a Dios por darme la oportunidad de tener a
una excelente familia, amigos y maestros. Por compartir grandes
experiencias en la vida, tener momentos buenos, momentos malos, y
momentos muy malos, es por ello que le doy gracias a Dios por darme el
aliento y la fuerza de voluntad para seguir adelante. Así como también le
doy las gracias a mi familia de todo corazón por que con su confianza,
esfuerzo y sacrificio me dieron motivos por los cuales poder seguir
trabajando. En especial a mi padre por esos sabios consejos y ejemplos de su
gran vida para poder sobresalir, y para nunca cruzar los brazos en eso
momentos críticos de la vida. Les estoy también muy agradecido a los
profesores y amigos como lo son el Dr. García Juárez que me ayudo a
confiar en mi y me demostró que es mi amigo ya que esta en las buenas y
en las malas, dándome consejos y motivaciones, la Doctora Sandoval Solís
quien me dio una gran lección de vida al decirme que confiera en mi, el Dr.
Abraham Sánchez López por sus enseñanzas y consejos, Colmenares
Guillen, Dr. Manuel Martin, a los Maestros Anzures García y Melisa
Contreras Gonzales por ser mis sinodales y maestros, también por sus
enseñanzas, a los maestros De la Rosa Flores, Camarillo Martínez,
Palomino Jiménez, Zamora Lima y a muchos otros profesores. Así como
también a mis amigos Pablo Camarillo, Luis IbargÜen, Vélez Bello, Romero
Rincón, Sergio Olivos, Alexander Arriaga y a muchos otros amigos que
me faltaron mencionar. De todo corazón estoy muy agradecido con todos
ellos porque han sido parte de mi vida universitaria, no me queda otra cosa
más que darles las gracias por su ayuda y confianza.
Resumen
El proyecto está enfocado hacia la administración de la venta y compra de pollo,
teniendo en cuenta que se desea tener un sistema el cual pueda llevar el control de
las ventas y compras de pollo, costos por viajes, embarques, balance general con
descripción de ventas, pedidos, fechas de embarque.
El concepto de software como servicio, es una visión que nos permite ofrecer
soporte a las necesidades de un mercado de software muy competitivo. Gracias a la
interoperabilidad de los servicios web.
A lo largo de este trabajo nos centraremos: En el estudio del problema del sistema
PSM (Pollería San Manuel). Aplicando la metodología RUP (Rational Unified
Process). Esto con lleva a realizar las siguientes actividades:
Modelado de negocios
Requerimientos
Análisis y diseño
Implementación
Pruebas
En base al modelado de negocios, se pueden obtener los requerimientos
funcionales. De esta manera identificamos los servicios de la aplicación PSM. Para
modelar los servicios web, se deben realizar las siguientes disciplinas del modelado
SOMF (Service-Oriented Modeling Framework).
Modelado de análisis orientado a servicios.
Modelado de integración de Negocios.
Modelado de diseñó.
1
Capítulo 1
Contribución del trabajo de tesis
La Arquitectura Orientada a Servicios (SOA), surge gracias a la necesidad de
resolver las complejidades del mercado, con respecto al tiempo y a la calidad del
software. SOA considera que una aplicación está compuesta por un conjunto de
servicios autónomos.
En términos generales, SOA es un estilo arquitectónico cuyo objetivo es lograr un
acoplamiento libre entre los servicios web interactuantes. Permitiendo la creación
de sistemas altamente escalables y a su vez brinda una forma estándar de
exposición e invocación de servicios, lo cual facilita la interacción entre diferentes
sistemas propios o de terceros. SOA es un conjunto de servicios, estos servicios se
comunican entre sí [11]. La comunicación puede implicar pasar datos simples o
podría implicar la coordinación de dos o más servicios de algunas actividades.
SOA permite separar funciones en distintas unidades o servicios que los
desarrolladores hacen accesibles dentro de una red, con el fin de que los usuarios
puedan combinarlas y reutilizarlas en la producción de aplicaciones. Estos servicios
se comunican entre sí pasando información de un servicio a otro o coordinando
actividades entre dos o más servicios.
Al igual que los objetos y componentes, un servicio es un elemento
fundamental que:
1. Combina la información y el comportamiento.
2. Oculta el funcionamiento interno de la intrusión externa.
3. Presenta una interfaz relativamente simple para el resto del
organismo.
Los servicios pueden ser publicados y consumidos, solos o como jerarquías y o
colaboraciones. SOA contribuye también a documentar el modelo de negocios de
la empresa y a utilizar el modelo de negocios documentado para integrar en él y
dar respuesta a los cambios dinámicos optimizando los recursos que se produzcan
entre ellos.
2
Retos de SOA:
La capacitación en una nueva tecnología, adquisición de la misma y el punto
más importante de todos: SOA puede representar un cambio de paradigma
para los desarrolladores, por lo que es necesario la capacitación del
personal.
El rediseño de los procesos de negocio para lograr un rendimiento óptimo.
El identificar los problemas potenciales que llegan a surgir y de cómo
solucionarlos lo antes posible en el ciclo de implementación.
Imaginemos que requerimos una aplicación para llevar la administración de un
negocio. ¿Cuál sería el primer punto a considerar? El primer punto a considerar en
esta tesis es el uso de una metodología compatible con el modelado de servicios.
Es por ello que se utiliza la metodología RUP que como sabemos sirve para
modelar los negocios.
En el Capítulo 2 se representa el estado del arte de esta tesis. Es decir la
descripción del modelado de negocios, análisis y diseño con RUP, modelado de
servicios con SOMF, XML, Servicios Web y el modelado de datos con UML.
En el capítulo 3 se muestra el análisis de requisitos de la aplicación para la PSM. En
el capítulo 4 se detalla el modelado de negocios, así como sus artefactos de la
aplicación Pollería San Manuel (PSM). Después del modelado de negocios se
describen los requerimientos y se realiza la interfaz del usuario.
El capítulo 5 explica el modelado de análisis y diseño, es decir se identifican las
clases, y el modelado de la base de datos mapeando clases a tablas con UML.
¿Pero en qué momento se empiezan a modelar los servicios? Una vez realizado
todo el modelado de negocios y la especificación de requerimientos, se toma
como punto de partida los requerimientos funcionales. Con los requerimientos
funcionales se identifican los servicios. En el capítulo 6 se explica el ciclo de vida del
modelado orientado a Servicios de la metodología SOMF (Service Oriented
Modeling Framework). Conformado por el modelo de análisis, integración de
negocios y diseño. En el capítulo 7 se muestra la implementación de la aplicación
PSM orientada a Servicios y los WSDL, en el capitulo 8 se muestran las pruebas y
resultados realizados de la aplicación PSM. En el capítulo 9 se muestran las
conclusiones de esta tesis.
3
Capítulo 2
Estado del arte
2.1 Introducción
El estado del arte está conformado por la explicación de los modelos aplicados en
esta tesis. Es decir: modelado de negocios, requerimientos, análisis y diseño
con RUP, modelado de servicios con SOMF y el modelado de datos con UML.
2.2 SOA
La Arquitectura Orientada a Servicios (SOA), es un concepto de arquitectura de
software que define la utilización de servicios para dar soporte a los requisitos del
negocio. Permite además, la creación de sistemas de información altamente
escalables que reflejan el negocio de la organización, y que a su vez brindan de
una forma bien definida la exposición e invocación de servicios (de forma común,
pero no exclusiva de los servicios web), lo cual facilita la interacción entre
diferentes sistemas propios o de terceros [17].
SOA proporciona una metodología y un marco de trabajo para documentar las
capacidades de negocio y puede dar soporte a las actividades de integración y
consolidación.
Los conceptos de software futurista probablemente contribuirán a otra capa de los
entornos computacionales complejos, un demandante de recursos para el apoyo
de presupuestos. La arquitectura orientada a servicios (SOA) ayuda a resolver los
problemas de la interoperabilidad, reutilización, y otros problemas asociados con
este paradigma. La visión de SOA también se ocupa de los retos de software
fuertemente acoplados y clama por una arquitectura que se basa en el
acoplamiento de los “assets”.
SOA ayuda a la reducción del tiempo de salida al mercado y la agilidad del
negocio. De hecho, la lista de ventajas sigue creciendo. El modelado orientado a
los servicios proporciona mecanismos que nos permitan concebir productos de
software que hemos ido construyendo, adquiriendo, y a la integración en las
últimas décadas como un servicio orientado a componentes. Es importante que
4
deban de ser tratadas por igual la parte de análisis, diseño, arquitectura y deben
ser reconocidos como servicios [16].
El modelado orientado a servicios es una práctica de desarrollo de software que
utiliza las disciplinas de modelado y el lenguaje UML para ofrecer soluciones
estratégicas y tácticas a los problemas de la empresa. Este paradigma de modelado
es una visión integral del análisis, diseño y arquitectura de software de todas las
entidades de la organización, concebirlos como un servicio orientado a los “assets”
[16].
SOA ofrece la posibilidad de llamar a un componente de negocios desarrollado en
una plataforma X, desde una aplicación corriendo en cualquier plataforma, en
cualquier parte del mundo, utilizando para ello protocolos estándar como SOAP,
XML y HTTP [17].
La programación orientada a servicios es un complemento de la programación
orientada a objetos e implementa mejoras a esta última, producto de la experiencia
acumulada en la última década, sobre todo en las áreas de la computación
distribuida, instalación de una solución e interoperabilidad entre sistemas [18].
SOA, a diferencia de las arquitecturas de objetos distribuidos como J2EE, refleja
más fielmente los procesos y relaciones del mundo real; es decir, SOA representa
una manera más simple y natural de modelar y construir software que soluciona
problemáticas de negocios del mundo real [18].
Los sistemas orientados a servicios, son diseñados con un bajo nivel de
acoplamiento que facilita la implementación de cambios y estos servicios pueden
ser desarrollados en cualquier lenguaje corriendo en diferentes plataformas.
Desde el punto de vista de un usuario, la diferencia entre utilizar servicios y utilizar
componentes tradicionales es imperceptible. Desde el punto de vista
arquitectónico, en cambio, podemos decir que los servicios a diferencia de los
componentes son autónomos, encapsulan sus propios datos de la aplicación. Estos
servicios pueden ser generados por distintos equipos de desarrollo, en diferentes
tiempos, plataformas y espacios; es decir, que una aplicación puede ir creciendo y
aumentando su funcionalidad a medida que se construyan nuevos servicios que no
necesariamente deben estar bajo el control del equipo de desarrollo de la
aplicación, por lo que es esencial que entre nuestras aplicaciones y los servicios
que ellas consumen, sean débilmente acopladas.
5
Los servicios son utilizados por una aplicación cliente que les envía mensajes
respetando un determinado contrato de servicios, pero internamente esos servicios
utilizan los conceptos de la Programación Orientada a Objetos (OOP) [18].
SOA tiene dos partes clave: servicio y arquitectura. El servicio es esencialmente la
vista hacia el exterior de las aplicaciones dentro de la organización TI (tecnologías
de la información), donde cada aplicación proporciona los "servicios empresariales"
necesarios para el acceso de otras aplicaciones. La "arquitectura" es el enfoque de
toda la organización para "utilizar" los servicios. Ya que hay múltiples aplicaciones y
soluciones dentro de la organización, tiene que existir una decisión de como
proveer un espacio de aplicación y solución que abarca múltiples aplicaciones.
Para ello utilizan los servicios expuestos por cada aplicación, y para la
estandarización mediante una infraestructura proporcionar y consumir estos
servicios, y los servicios que se consumen a través de un proceso basado en
frameworks, todo estaría compuesto por SOA "arquitectura", se muestra en la
siguiente figura 2.1, los componentes de la arquitectura SOA [17].
Figura 2.1 Componentes de la arquitectura SOA.
6
2.3 Consumo de servicios
¿Una vez que los servicios están disponibles en la plataforma SOA, que se hace
con ellos?
Existen 2 escenarios de uso clave:
1. Consumir los servicios desde una aplicación cliente. Al consumir, nos
referimos a utilizar el servicio, es decir invocar el servicio en cualquier otra
aplicación.
2. Composición de los servicios en los procesos de negocio. El otro método
más popular para el uso de los servicios es en los procesos de negocio, por
la orquestación de los servicios. Esto consiste esencialmente en la
orquestación "encadenar" los servicios disponibles en el dominio para llevar
a cabo una función de negocios o procesos. Este es un enfoque de
programación relativamente de alto nivel, sus construcciones de flujo
de programación pueden definir gráficamente el proceso, tanto como el
dibujo de un diagrama de flujo o un diagrama de actividad con UML.
2.4 Servicios web
Los Servicios web son una innovación en tecnología de la World Wide Web. Un
servicio web es un programa de aplicación basado en la web con una interfaz
definida que acepta y procesa las solicitudes y devuelve una respuesta al
solicitante. Un servicio web no está directamente ligado a una aplicación específica.
En algunos aspectos, un servicio web es similar a un modelo cliente-servidor,
donde el servicio web es un servidor [18]. Los servicios web se basan en un
conjunto de estándares de comunicación, como son XML para la representación de
datos, SOAP (Simple Object Access Protocol) para el intercambio de datos y el
lenguaje WSDL (Web Services Description Language) para describir las
funcionalidades de un servicio web [18].
7
2.5 XML
eXtensible Markup Language (XML) recientemente ha ganado mucha notoriedad
como una solución tecnológica para el intercambio de mensajes. Se puede utilizar
con ventaja para muchos tipos de aplicaciones tales como el movimiento de datos
entre los sistemas de negocio o describir una transacción de negocios, una
solicitud para persistir o almacenar datos en una base de datos, o una solicitud de
servicio.
XML es un fenómeno relativamente reciente (cerca de 1997) [19], pero estable, la
tecnología, XML es en realidad una forma de metadatos descriptivos. Por sí solo,
XML es una sintaxis para la aplicación de los contenedores de datos descriptivos de
un documento, transacción o mensaje. Los esquemas para ampliar las capacidades
de los metadatos XML, se efectúa mediante la definición de reglas y restricciones
de las características de los datos, tales como la estructura, las relaciones, los
valores permitidos, y los tipos de datos. Cuando la información empresarial está
contenida en un documento XML o de la transacción y se comparte con otros
sistemas empresariales o, posiblemente, con los socios externos de la empresa,
podemos ver rápidamente la necesidad de aplicar prácticas eficaces de la
arquitectura de datos.
En muchos casos, XML se utiliza para describir el contenido de un documento
sencillo. Sin embargo, las transacciones y datos de los mensajes orientados a
servicios ayudan a ofrecer oportunidades, aún mayores para las aplicaciones con
XML. También es importante XML para describir el contenido de datos y esquemas,
que incluye las reglas granulares de metadatos que se aplican a un documento de
referencia a XML. Hay varios tipos de esquemas que se pueden utilizar con XML.
2.6 SOAP
SOAP (Simple Object Access Protocol) proporciona un mecanismo para el
intercambio de información estructurada en un entorno descentralizado y
distribuido usando XML. SOAP no define en sí mismo ninguna semántica de la
aplicación como un modelo de programación, sino que define un mecanismo
simple para expresar la semántica de aplicaciones, proporcionando un modelo de
paquetes y los mecanismos de codificación dentro de los módulos de datos. Esto
permite a SOAP, ser utilizado en una gran variedad de sistemas que van desde
8
sistemas de mensajes a RPC (Remote Procedure Call, Llamada a Procedimiento
Remoto) [17].
SOAP consta de tres partes:
La envolvente SOAP define la construcción de un marco general para
expresar lo que está en un mensaje, que debe lidiar con él, y si es opcional u
obligatorio.
Las reglas de codificación SOAP, define un mecanismo de serialización que
puede ser utilizado para el intercambio de ejemplos de tipos de datos
definidos por la aplicación.
La representación SOAP RPC, define una convención que se puede utilizar
para representar llamadas a procedimientos remotos y respuestas.
2.7 WSDL
WSDL (Web Services Description Language), es el idioma más común de describir
los servicios [19]. WSDL está escrito como un documento XML. WSDL tiene dos
Partes fundamentales:
Interfaz: la lista de operaciones en el servicio y el contrato de cada operación
El contrato incluye la descripción del número y tipo de entrada y salida de la
operación.
Bindings: los detalles específicos en donde el servicio se encuentra y el
protocolo para acceder al servicio.
2.8 Modelado de servicios con SOMF (Service Oriented Modeling Framework)
Es un modelo impulsado por una metodología moderna de la ingeniería cuya
disciplina específica de lenguaje de modelado y las mejores prácticas se centran en
el diseño de software en la arquitectura de distintas actividades, empleadas
durante diferentes etapas del ciclo de desarrollo de software. Por otra parte, los
arquitectos, analistas, modeladores, desarrolladores y administradores de SOMF lo
emplean para hacer frente a la arquitectura empresarial, arquitectura de
aplicaciones, arquitectura orientada a servicios (SOA), y los desafíos de la
9
computación en la nube para la organización. El marco, escrito por Michael Bell,
proporciona una notación independiente de la tecnología que fomenta una visión
integral de las entidades de software empresarial [16].
Modelo de análisis orientado a servicios
Modelo de integración de negocios orientada a servicios
Modelo de diseño lógico orientada a servicios
2.8.1 Análisis orientado a servicios
Un servicio se clasifica por sus atributos contextuales y estructurales:
Atomicidad del servicio: un componente de software indivisible que es
muy granular y ejecuta menos funciones técnicas del negocio. Una
formación atómica es también una pieza de software que normalmente no
está sujeta a las actividades de análisis de descomposición y sus negocios
o funcionalidad tecnológica, no justifica la ruptura de componentes más
pequeños.
Composición del servicio: un servicio compuesto, agrega estructuras más
pequeñas y servicios de grano fino. Esta formación se caracteriza por el
servicio jerárquico conocido como de grano grueso, entidad que abarca más
los procesos de negocio o técnicos. Un servicio compuesto puede agregar
servicios atómicos o de otros tipos.
Clúster de servicios: se trata de un conjunto de servicios distribuidos y
relacionados que se han reunido a causa de su relación comercial o
tecnológica común. Un grupo de servicios a los afiliados de los servicios
y combina su oferta para resolver un problema de negocio. Una estructura
de grupos puede agregar formaciones atómicas, así como compuestos.
Nube de servicios: un conjunto de servicios que se entregan mediante una
aplicación computacional en la nube.
La imagen 2.2 muestra los elementos de la notación del Análisis SOMF [16]:
Figura 2.2 Análisis SOMF
10
Análisis de operaciones (Notaciones de las operaciones)
Existen los siguientes símbolos de operaciones que pueden ser utilizados para
representar una propuesta de solución en un diagrama de análisis de servicios.
Estos iconos muestran las actividades que han ocurrido, describen el proceso por el
cual los servicios se transforman para hacer frente al dominio del problema. Por
ejemplo, "agregados" se refiere al estado actual de un servicio que ha sido
conformado por una operación de análisis de agregación. Otro ejemplo, el símbolo
"unificado", que identifica una condición por la cual dos servicios fusionaron sus
operaciones. Por lo tanto, la notación propuesta profundiza en las actividades de
análisis que se llevaron a cabo y describe el estado actual de los servicios y su
contribución a la solución global.
Cada símbolo también se describe en la lista siguiente:
Agregación: Muestra de contención de los servicios de la composición de
Servicios o Clúster.
Resta: se retira un servicio
Unificación: Se une a los servicios mediante la creación de un nuevo servicio.
Descomposición: Separa un servicio de la matriz que lo contenía. Creando
un servicio más amplio “compuesto”. A diferencia de la resta de los servicios,
los activos descompuestos siguen siendo valiosos para la organización y los
ambientes en los que se operan.
Intersección: Intersección de dos o más grupos de servicios
Superponen: Identifica la región de superposición entre dos o más grupos
de servicios
Transformación: Convierte una estructura de servicio a otra formación (es
decir, desde atomicidad de servicios a composición de servicios, etc.).
Comentarios: Un lugar para poner comentarios al lado de cada activo u
operación.
En la figura 2.3 se muestran los pictogramas de las actividades que representan el
proceso de análisis de servicios [16].
11
Análisis contextual de las operaciones SOMF:
Generalizar: Aumenta el nivel de servicio de la abstracción y se amplia la
oferta de servicios.
Especificar: Disminuye el nivel de abstracción del servicio y los límites de las
ofertas de los servicios.
Contratación: Restringe las operaciones de servicio en el entorno distribuido.
Expandir: Amplía las operaciones de servicio en un entorno distribuido.
En la figura 2.4 se muestra la notación del análisis contextual de las operaciones
SOMF [16].
Figura 2.3 Análisis de operaciones SOMF
12
2.8.2 Integración de negocios orientada a servicios
Se debe utilizar una notación de la Integración de negocios orientada a servicios.
Es decir un conjunto formal de símbolos que ofrece un lenguaje de integración.
Estos iconos describen los assets del negocio que participan en la integración y
representan una serie de operaciones que se pueden utilizar para describir la
integración de Negocios. En la figura 2.5 se muestran los elementos de la
integración de Negocios [16].
Figura 2.4 Análisis contextual de las operaciones SOMF
Figura 2.5 Notación de la integración de negocios orientado a servicios
13
Notación de la integración de operaciones
Hay seis símbolos de integración que deben ser empleados para describir una
iniciativa empresarial orientada a los servicios de integración. Estas actividades
deben ser representadas en un esquema de integración. También es imprescindible
para identificar los pasos y los diferentes procesos por los cuales se llego a la
propuesta de integración final de los casos. Por lo tanto, este esquema debe
registrar el estado actual o futuro de la integración orientada a servicios. En la
figura 2.6 se muestra la integración de operaciones [16].
Se deben considerar los símbolos de integración después de la operación, que
pueden facilitar esta documentación.
Integración. Este símbolo identifica una actividad de integración que ha
llevado a cabo entre un servicio y una estructura de dominio o entre un
servicio y una perspectiva contextual.
Desintegración. Las actividades de integración también se pueden invertir,
es decir, un servicio puede ser retirado de un entorno de dominio por
razones estratégicas o tácticas. Por lo tanto, el símbolo identifica como una
reversión de las actividades para preservar el proceso por el que la
integración se ha producido.
Figura 2.6 Integración de operaciones
14
Contenido. La actividad de contención tiene lugar entre los dominios para
formar un dominio estructurado jerárquico de capas. Este símbolo también
puede ser utilizado para incluir un dominio en una capa del negocio. Esto es
similar al símbolo de la agregación de servicios. Sin embargo, aquí los
elementos estructurales de negocios están conectados.
Separados. Este símbolo se utiliza para la separación de una capa de
dominio de una estructura jerárquica, la formación de capas de dominio, o
para quitar un dominio de su negocio que abarca ciertos niveles.
Perspectivas. Este icono identifica una perspectiva de la arquitectura
empresarial contextual que se asocia a un dominio de negocio.
Comentario. Se utiliza este icono para describir las acciones de integración o
un ámbito empresarial que requieren notas para ahondar en el estado de
integración.
Notación formal de la relación lógica del servicio
Notación de la relación lógica. Consta de cuatro conectores que hacen posible
transmitir una relación aparente o implícita entre los assets de software orientada a
servicios, tales como servicios, e incluso los consumidores. Estos símbolos se
utilizan para ilustrar las rutas de mensajes de datos intercambiados y la información
sobre una red como se muestra en la figura 2.7 [16].
La forma general de un conector de relación de servicio es una línea que indica la
dirección e identifica la visibilidad de los servicios.
Figura 2.7 Relación lógica del servicio
15
Hay dos categorías de los conectores de relación de servicios.
1. Relación aparente: Esto denota una relación visible entre dos servicios o
entre un servicio y el consumidor. El término "aparente", describe una ruta
del mensaje que vincula directamente las entidades, con la información
contenida y que establece la comunicación entre 2 partes, sin hacer uso de
intermediarios o servicios de mediación.
2. Relación implícita: Este grupo muestra en un icono la relación de servicio
invisible. La relación pertenece oculta a las asociaciones indirectas que
emplean los agentes para el mensaje de entrega. Por lo tanto, una relación
de servicio implícita se forma cuando los intermediarios, los proxis de
servicios, o centros de servicios se encuentran entre los consumidores y
servicios o entre los servicios.
La dirección de paso de mensajes es también un aspecto importante de esta
notación. Hay dos tipos de direcciones de enrutamiento de mensajes a tener
en cuenta:
1. Relación unidireccional. Una relación de servicio unidireccional identifica un
solo sentido de ese mensaje, los mensajes se entregan en una sola
dirección. No hay respuesta necesaria. Este tipo de actividad se produce
normalmente cuando las partes involucradas en el intercambio de
mensajes desea reducir al mínimo el tráfico de red o simplemente porque
un mensaje de respuesta no es necesario.
2. Relación bidireccional. Este método de entrega de mensajes denota una
conversación típica bidireccional entre un consumidor y un servicio, o entre
dos servicios. Esto es similar a los protocolos comunes de comunicación
petición/ respuesta. El ultimo emisor siempre espera una respuesta.
Por último, puede utilizarse el icono de comentario, que ayuda a explicar la relación
de la naturaleza del servicio.
16
Roles en el contexto de diseño orientado a servicios
El paradigma orientado a servicios presenta tres funciones principales que pueden
envolverse en las decisiones de diseño en términos de enrutamiento de mensajes,
la visibilidad, la sincronización de mensajes, y la colaboración de los servicios.
Los roles de servicio en una disciplina de diseño orientado al servicio no sólo debe
ser coherente, sino que debe estar ligado a un contrato que se establece por
encima de cualquier utilización de los servicios.
Rol de los consumidores
Un cliente es una entidad de software orientada al servicio que está diseñada para
adquirir los servicios. Es decir, normalmente las implementaciones de software que
no proporcionan servicios en sí mismos. Pero en las soluciones de diseño complejo,
el papel de un consumidor que también se puede aplicar a un servicio.
En el contexto de diseño orientado a servicios, un consumidor puede comunicarse
con uno o más servicios. También se puede mantener una relación implícita o apa-
rente, unidireccional o bidireccional con sus correspondientes servicios.
El permiso para acceder a un servicio particular debe ser otorgado en un contrato
vinculante que puede dar el seguimiento y cumplimiento en tiempo de
ejecución. Los consumidores también deben comprometerse al servicio de
consumo con ciertos límites y restricciones de disponibilidad del servicio. El
consumo es generalmente medido por el volumen de mensajes intercambiados y
la frecuencia de la información conforme a lo acordado en el contrato. La
disponibilidad, en el servicio, por otra parte, tiene restricciones en el tiempo de
acceso impuestas a un consumidor.
Rol de servicio
Un servicio es una entidad que se compromete a su oferta a través de un contrato
vinculante a sus consumidores suscritos. Este acuerdo estipula por lo general lo
que está presente en la disponibilidad de un servicio, las tasas de consumo, y el
tiempo de respuesta. Además, los servicios pueden mantener una implícita relación
17
ya sea unidireccional y bidireccional con los correspondientes consumidores y
servicios.
Como se mencionó anteriormente en la sección de rol del consumidor, un servicio
también puede actuar como un consumidor. Imaginemos un servicio que no sólo
está obligado a servir a su comunidad de consumo, sino también tiene la
obligación de intercambiar mensajes con los servicios.
Rol del intermediario
Cualquier software orientado a servicios se encuentra entre los consumidores para
facilitar la comunicación es considerado como un intermediario.
2.8.3 Diseño orientado a servicios
Es más que una formación, una forma visual, un paquete de software que suele ser
moldeada por patrones predefinidos, se compone de software orientado a servicios
que se utilizan para comunicar una solución del problema que se plantee. Esto no
es sólo un método táctico para proporcionar una solución a una preocupación de
la organización, sino también un plan estratégico para resolver problemas
similares en el futuro. La composición del diseño es el resultado de tres aspectos
importantes que contribuyen: asociaciones de servicio, las rutas de intercambio de
mensajes, y los patrones generales de los servicios que ofrecen una solución. Ahora
cada uno de estos contribuyentes se inspecciona para llevar a una mejor
comprensión de la esencia de este esfuerzo de embalaje orientada a servicios.
Asociaciones de servicio
Durante el ciclo de vida orientado a servicios, se encontraron dos tipos de
relaciones de servicio: conceptual y lógico. Estas categorías de asociación de
servicios influyen en la construcción de una composición de servicios: En primer
lugar, en la fase de la conceptualización de servicios, comúnmente los servicios y
las diferencias se identifican en forma de negocio o vínculos tecnológicos entre los
servicios que participan en una solución, los cuales son conocidos como
18
afiliaciones conceptuales. En segundo lugar, más adelante en la fase de diseño de
servicios, las relaciones lógicas fueron descubiertas entre los servicios que son
impulsados por la distribución de mensajes y las necesidades de cambio.
Rutas de intercambio de mensajes
Las relaciones de servicio afectan a las decisiones del diseño de entrega de
mensajes. Estas asociaciones de identificar los requisitos permiten establecer las
mejores rutas de mensaje para transacciones eficientes. Una ruta de mensajes se
refiere a las rutas de red que permiten que la información se intercambie entre los
consumidores y servicios. Por lo tanto, una composición de diseño está
influenciada por las relaciones de servicio y formada por las rutas de intercambio
de mensajes y comportamiento en servicio que fueron concebidas antes en la fase
de diseño lógico de la relación orientada a servicios.
Patrones de formación dirigida por estilos
El diseño de la composición orientada a servicios es la construcción de las
formaciones por posicionamiento de servicios en ciertas formas, nombradas
estilos, para proporcionar soluciones. Estos acuerdos forman patrones visuales que
ayudan a permitir un eficiente enrutamiento de mensajes y la ejecución de la
transacción. Las formaciones de servicio que se descubrieron también son
consideradas como soluciones empaquetadas en las que se comunican las
estrategias empleadas para resolver las preocupaciones de la organización.
Diseño de la composición orientada a servicios
Para ofrecer soluciones efectivas a los planos de diseño orientado a servicios, se
proponen una serie de composiciones. Un estilo de composición de diseño es
simplemente un patrón. Es similar a una plantilla que puede servir de guía a la
vinculación de las estructuras de la atomicidad, composición y clúster de servicios
para comunicar los tipos de problemas que pueden ayudar a resolver y ayudar a
forjar las estrategias de diseño, tales como la reutilización de servicios y la
interoperabilidad. Sus nombres son los estilos, ya que forman a la composición de
la entrega del diseño. En pocas palabras, una composición de diseño orientada a
servicios no sólo comunica una solución, sino que también proporciona una
estrategia que se puede aprovechar en el futuro.
19
Las cuatro principales asociaciones conceptuales de los tipos de servicios son:
circular, jerárquica, malla y estrella.
El estilo de la asociación como circular se utiliza para describir una composición
de diseño circular, se muestra en la figura 2.8. De la misma manera, en las
asociaciones de tipo jerárquica, malla y estrella de la red se emplean el diseño de
la composición para describir una red [16].
Estilo de la composición del diseño circular
El estilo de diseño de la composición circular representa una secuencia de eventos,
cada uno de los cuales está representado por un único servicio en una serie.
Imaginemos que un número de los servicios están vinculados por algún negocio
o asociación tecnológica. El mensaje está en las manos del creador del servicio en
el primer mensaje para el próximo servicio que reciben. Posteriormente a la
entrega de mensajes siempre participa el próximo servicio. Cuando esta operación
se ha completado, el mensaje resultante llega de retorno al punto de partida.
El estilo de composición circular reduce el tráfico de red, evitando intermediarios
innecesarios. En cambio, los mensajes se entregan de un servicio a otro hasta que
la respuesta se entrega al autor del mensaje. La entrega de mensajes implica una
serie de servicios que comparten la carga de procesamiento de transacciones, en
lugar de aplicar la tensión a un único servicio. El estilo de la composición del
diseño circular es adecuada para la gestión de negocios y tecnologías, procesos a
través de la participación de las partes interesadas directamente sin la
intervención de intermediarios.
Figura 2.8 Asociaciones de la composición orientada a servicios
20
Estilo de la composición del diseño jerárquico
La asociación jerárquica conceptual del servicio ayuda al proceso a descubrir
conceptos e ideas para la asociación de sus atributos comunes. También se
muestra la necesidad de identificar la reutilización de clúster de servicios. Para
poder abordar el aspecto de consumo de los servicios, incluso antes de que
sean transportados a su producción. El análisis suele facilitar la estructura de las
asociaciones jerárquicas de las capas del servicio.
Estilo de la composición del diseño malla
Con demasiada frecuencia, los profesionales se enfrentan al tiempo de diseño y al
tiempo de ejecución de los desafíos ambientales que requieren la colaboración de
una planificación del servicio y en la integración del servicio. Estas dificultades
surgen debido a la interoperabilidad creciente en el entorno computacional
teniendo así complejidades, los sistemas operativos y las plataformas múltiples que
emplean las organizaciones.
El estilo de la composición del diseño Malla se puede utilizar para obtener la
siguiente lógica de las ventajas del diseño:
Aliviar el negocio y los desafíos tecnológicos de interoperabilidad.
Las líneas de negocios y puente de dominio superan las barreras
geográficas, ya que permiten la simplificación de las complejas estructuras
de distribución de negocios, y facilitan la gestión del control sobre
federados y no federados de negocios.
Aumentar la reutilización de assets.
Estilo de la composición del diseño estrella
El último estilo de diseño es la composición de estrella, que ofrece otro punto de
vista de la estrategia de diseño. Los estilos de diseño tratan de resolver los
problemas, pero también facilitan un plan de ataque, una estrategia y un mapa de
ruta para lograr los objetivos de diseño. Por lo tanto, el estilo de composición
estrella añade otro punto de vista de los planos de diseño. Se puede mejorar la
creación de un diseño del ambiente débilmente acoplados y ayudar a medir la
efectividad al dividir los ambientes en los que se elaboran.
21
Modelado de transacciones orientado a servicios
En [19] 1983, Theo Haerder y Andreas Reuter presentaron requisitos fundamentales
para la ejecución de las transacciones, en el trabajo de investigación “Principios de
la transacción orientada a la recuperación de las bases de datos”.
Su trabajo está centrado en cuatro grandes principios que definen una transacción
y se identificaron cuatro atributos más importantes que garantizarán el buen fin de
las actividades de operación. Estos grandes principios son por sus siglas en inglés
(ACID):
Atomicidad
Coherencia
Aislamiento
Durabilidad
Se convirtió en el estándar de la industria para la manipulación de datos fiables y la
integridad de las transacciones en un entorno multi-usuario. Haerder y Reuter,
describen una transacción como: la manera en que se componen varias
operaciones de software que interactúan con una base de datos durante un
período determinado de tiempos. No hay cambios en los datos, se debe deducir
que todas estas actividades han concluido con éxito.
Las propiedades para asegurar la integridad de los datos ACID son las siguientes:
Atomicidad: Una transacción confirma todos los cambios aplicados a una base
de datos de su base de actividades, si sus operaciones se ejecutan con éxito. De
lo contrario, una cancelación de la operación es responsable de la restauración
de todas las modificaciones aplicadas en los datos. Esto se conoce como la
condición todo o nada.
Coherencia: Los resultados deben estar comprometidos a ser válidos y no debe
perjudicar la integridad de los datos.
Aislamiento: Una transacción debe ser aislada de otras transacciones que se
ejecutan simultáneamente. No deben interferir entre sí durante la ejecución.
Durabilidad: Los cambios realizados por las transacciones de éxito deben ser
duraderas y persistentes, a pesar de cualquier error que se produzca después.
22
ACID es un método de procesamiento de transacciones estrechamente unidas. Es
decir, este enfoque fue diseñado para hacer frente a los problemas locales de
depósito y fiabilidad de las soluciones de cada acción, es decir, los resultados
exitosos de transacciones están garantizados sólo por un corto período de
tiempo. En el ambiente de computación orientado a servicios deben ser
interoperables requiere un modelo que pueda manejar la interacción y
colaboración de servicios en las estructuras complejas y agregadas. Además, se
requiere la integridad de las transacciones entre las formaciones de servicios
débilmente acoplados dispersados a lo largo de múltiples líneas de negocios y
organizaciones. Un esquema de operación orientada a servicio debe ser
encargado de resolver desafíos de las transacciones de larga duración [19].
Conectores de la actividad
Existen tres conectores de la actividad de servicios que pueden ayudar en la
descripción de la interacción y colaboración de los servicios, como se ilustra en la
figura 2.9. Se deben utilizar en cada actividad una sección para describir los
pasos de enrutamiento de mensajes entre los servicios participantes y los
consumidores [16].
Conector de la actividad de origen. En una sección de actividades, pueden
identificarse una serie de asociaciones de los servicios, para realizar una
tarea determinada. Por lo tanto, se utiliza este conector para referirse a un
inicio de actividad y para ser capaz de identificar un servicio que origina un
mensaje (conocido como mensaje origen).
Figura 2.9 Conectores de la actividad de transacción
23
Conector de la actividad de intermediación: Una actividad puede implicar
múltiples servicios y consumidores. Por lo tanto, para las operaciones de
transacción se utiliza el conector de intermediación. Esto también puede ser
útil cuando el entorno de producción cuenta con los servicios de proxy o
intermediarios orientados a servicios
Indicador de la finalización de la actividad: Un diagrama de las transacciones
de servicios, puede contener una gran serie de finalizaciones en las
actividades de servicios, se emplea el conector para identificar el estado final
de una función determinada.
2.9 RUP (Rational Unified Process)
Es una metodología de ingeniería de software. Proporciona un enfoque disciplina-
do para la asignación de tareas y responsabilidades dentro de una organización de
desarrollo. Su objetivo es garantizar la producción de software de alta calidad que
satisfaga las necesidades de sus usuarios finales dentro de un horario predecible y
presupuestado. La figura 2.10 muestra la arquitectura general de RUP [9] de la
Aplicación PSM.
RUP tiene dos dimensiones:
El eje horizontal representa el tiempo y muestra los aspectos del ciclo de vida del
proceso de medida que se desarrolla. El eje vertical representa las disciplinas, de las
actividades del grupo.
La primera dimensión representa el aspecto dinámico del proceso cuando entra en
vigor, y se expresa en términos de fases, interacciones e hitos.
Figura 2.10 Arquitectura general RUP
24
La segunda dimensión representa el aspecto estático del proceso: la forma en que
se describen los términos de los componentes de proceso, disciplinas, actividades,
flujos de trabajo, artefactos y roles.
El gráfico muestra cómo el énfasis varía con el tiempo. Por ejemplo, en iteraciones
tempranas, pasamos más tiempo en los requisitos, y en las iteraciones de la
aplicación.
¿Qué es una Disciplina? Una disciplina muestra todas las actividades que puede
realizar para producir un conjunto de artefactos. Se describen estas disciplinas en
una visión general de nivel, un resumen de todas las funciones, actividades y los
artefactos que están involucrados. También se muestran, en un nivel más detallado,
cómo los roles colaboran, y cómo utilizan y producen artefactos. A los pasos en
este nivel de detalle se les llama "los detalles del flujo de trabajo".
Disciplinas de RUP:
Modelos de negocio
Requisitos
Análisis y Diseño
Implementación
Pruebas
2.9.1 Modelado de negocios
Se define un modelo de negocio como las soluciones generalizadas que pueden
ser implementadas y aplicadas en una situación problemática, y con ello eliminar
uno o más de los problemas inherentes. Se compone de los artefactos:
Casos de uso de negocios
Reglas de negocio
Diagramas de actividades
Diagramas de objetos de negocio
2.9.1.1 Casos de uso de negocios
Es un modelo de las funciones de negocio previsto. Se utiliza como un insumo
esencial para identificar los roles y los resultados de la organización.
25
2.9.1.2 Diagramas de actividades
Se utilizan para ilustrar las actividades. En el punto de vista externo, se utilizan
diagramas de actividades para la descripción de los procesos de negocio que
describen la funcionalidad del sistema empresarial.
Los Diagramas de actividad le permiten pensar funcionalmente. Con el enfoque
orientado a objetos. Debido a que es posible describir explícitamente los eventos
paralelos, el diagrama de actividades es muy adecuado para la ilustración de los
procesos de negocio, ya que los procesos de negocios rara vez se presentan en
una manera lineal y con frecuencia presentan paralelismos.
2.9.1.3 Reglas de negocio
Son las declaraciones de la política o las condiciones que deben cumplirse.
Diagramas de objeto de negocio
Es un modelo de objeto que describe la realización de casos de uso de negocio.
Identificando las entidades de negocios.
2.9.2 Requerimientos
Son definidos como una condición o capacidad que un sistema debe cumplir. Los
Requisitos se dividen en 2: requerimientos funcionales y requerimientos no
funcionales.
Requerimientos funcionales: Especifican las acciones que un sistema debe
ser capaz de realizar, sin tener en cuenta las limitaciones físicas del
sistema. Estos a menudo se describen mejor en la especificación de los
casos de uso. Los requerimientos funcionales especifican la entrada y el
comportamiento de la producción de un sistema.
Requerimientos no Funcionales: Normalmente describen el criterio de
desempeño, fiabilidad, seguridad y otros parámetros operacionales.
Prototipo de interfaz de usuario
El prototipo puede manifestarse como dibujos en papel o imágenes.
26
2.9.3 Análisis y diseño
2.9.3.1 Análisis
El modelo de análisis contiene las clases de análisis. Las clases de análisis, en
conjunto, representan un primer modelo conceptual del sistema. Las clases de
análisis rara vez sobreviven sin cambios en el diseño. Muchas de ellas representan
colaboraciones del conjunto de objetos, a menudo encapsulados por subsistemas
[13].
2.9.3.2 Diseño
Es un modelo de objeto que describe la realización de casos de uso, y sirve como
una abstracción del modelo de implementación y su código fuente. El modelo de
diseño se utiliza como insumo esencial para las actividades de implementación y
pruebas. Se trata de un artefacto completo, compuesto, que abarca todas las clases
de diseño, subsistemas, paquetes, las colaboraciones y las relaciones entre ellos
[13].
2.10 Modelado de datos con UML
Se centra en la creación de tablas de las clases existentes, esto asegura todas las
clases que se han creado. Una vez que se ha producido el mapeo de clases a tablas,
se puede empezar a buscar formas de optimizar la base de datos, a partir de cómo
manejar las tablas que se crearon sobre la base de relaciones de herencia en el
modelo de clases y las clases que tomó parte en las relaciones muchos-a-muchos
que se tienen que dividir en las asociaciones de las tablas. A partir de ahí el equipo
de diseño de bases de datos comenzará a garantizar la unicidad de las tablas y la
aplicación de elementos tales como reglas de uso de restricciones sobre la base de
datos.
Hay varias formas de mapear modelos. En nuestro escenario, valoraremos la
aplicación y los modelos de bases de datos de diseño para el modelo de análisis
lógico, y vamos a mapear el modelo de diseño de la aplicación directamente en el
modelo de datos. Esto nos da la capacidad de entender la información importante.
El asignar el modelo de objetos al modelo de datos ayuda a construir el acceso a
datos en iteraciones posteriores. Se mapean las clases a tablas, los atributos a
27
columnas, los tipos a tipos de datos y las asociaciones a relaciones, lo que ayudara
a los equipos a entender como la aplicación va a interactuar con la base de datos.
No todos los elementos de cada modelo serán asignados. Sólo las clases que son
persistentes se asignarán a la base de datos, y no se pueden derivar los atributos
dentro de las clases persistentes que no se asignan a las columnas. Por ejemplo, a
menudo no son atributos, tales como total_ventas, que son sumas de varias
columnas de la base de datos, pero nunca son almacenados en cualquier parte de
la base de datos. En lugar de almacenar el atributo, es solo un cálculo en la
aplicación [14].
Mapeo de las clases a tablas
Hay cuatro formas básicas de mapeo de clases a las tablas: uno a uno, uno-a-
muchos, muchos-a-uno y muchos a muchos. Es posible que los mapas de manera
diferente por varias razones, incluyendo el rendimiento, seguridad, facilidad de
consulta, las preferencias del administrador de la base de datos, estándares
corporativos, las necesidades específicas de la base de datos, u otros motivos que
pueden haber experimentado. También hay algunas asignaciones que se producen
sobre la metodología de base de datos relacional en general: muchos-a-muchos,
subtipos, supertipos, y clases de asociación. Muchos-a-muchos se rompen en las
relaciones uno-a-muchos mediante la creación de una tabla de asociación. Es una
buena práctica tener columnas adicionales en una tabla de asociación por encima
de las claves externas basadas en las relaciones con las tablas de los padres. Si no
se tiene la necesidad de columnas adicionales, por lo general no es necesaria la
relación de muchos a muchos y sólo se puede crear una relación uno-a-muchos o
un cuadro adicional que no es realmente una tabla de asociación. Si una tabla de
asociación que existe en el modelo de datos y contiene columnas, además de la
clave externa, debe haber una clase de asociación relacionadas en el modelo de
análisis lógico. Una ventaja de usar UML sobre las notaciones tradicionales de la
entidad-relación (ER) para el modelo lógico es el soporte para una clase de
asociación al mismo tiempo que muestra la relación de muchos a muchos como se
ve en la figura 2.11 [14].
28
Elementos del diagrama para el diseño de la base de datos
Tabla: Agrupación de la información en una base de datos sobre el mismo
tema, compuesto por columnas
Vista: un componente de una tabla que tiene un solo atributo de la tabla
Dominio : el conjunto válido de valores para un atributo o columna
PK: la clave candidata que se elija para identificar las filas de una tabla
también conocida como llave primaria.
FK: una columna o un conjunto de columnas de una tabla que se asignan
a la clave primaria de otra tabla también conocida como llave foránea.
Identificación de la relación: una relación entre dos tablas en las que la tabla
secundaria debe coexistir con la tabla principal
Sin Identificación de la relación: una relación entre dos tablas en las
que cada tabla puede existir independientemente de otras.
Los elementos del diagrama para él diseño de la base de datos se muestra en la
figura 2.12 [14].
Figura 2.11 Relaciones muchos a muchos
29
2.11 Conclusión
Este capítulo ha servido a entender el funcionamiento referente a los modelados
de la aplicación PSM, es decir RUP, SOMF, y la arquitectura orientada a servicios.
Figura 2.12 Diagramas para el diseño de la base de datos
30
Capítulo 3
Análisis de requisitos
3.1 Introducción
Antes que nada al desarrollar una aplicación es necesario analizar el problema, para
poder ofrecer una solución y así resolver el problema. Es por ello que en este
capítulo se muestra la historia de Usuarios, gracias a las historias de usuario
identificamos los puntos clave de la aplicación PSM.
3.2 Historias de usuario
La pollería san Manuel (PSM), es un negocio de venta de pollo al mayoreo y
menudeo. Para el buen funcionamiento del negocio se requieren los servicios para
administrar las compras y ventas realizadas durante diferentes periodos, es decir,
llevar un control por día, semana, mes y año. PSM tiene una granja ¨San Manuel¨
la cual es surtida por algún proveedor mediante embarques con una cierta
cantidad de pollos, para después ofrecerlos al público en general.
Requerimientos de compra
Un primer requerimiento es el control de existencia de pollos en la granja san
Manuel, la cual no debe de tener menos de 150 pollos. Al llegar al límite de
existencia se debe notificar un mensaje de advertencia, para que se pueda
programar en tiempo la compra de embarques de pollos con el proveedor. Esto
con lleva a la necesidad de tener un control de pagos al proveedor, por lo tanto
surgen otros requerimientos para el sistema PSM. Adicional a la existencia de
mercancía, se tienen las posibles bonificaciones por parte del proveedor
generadas por: pago puntual, oportuno y otro. De aquí la importancia de llevar el
control del número del embarque, fecha del embarque, total de pollos, descripción
del embarque, promedios, fechas de cuando se tiene que pagar cada embarque,
total del precio del embarque, mortalidad. En caso de que cada pago genere una
bonificación mensual mostrar el total de las bonificaciones así como la fecha y
números de embarque.
31
Requerimientos de venta
PSM se dedica a la venta de pollo por mayoreo y menudeo a continuación se
describirán los tipos de venta y los requerimientos del sistema PSM.
Venta por mayoreo
Las ventas por mayoreo consisten en la venta de 450 pollos o más. Así que se
requiere el control de pagos de los clientes de mayoreo, que desglose número de
embarque, año, mes, día, descripción, precio, total de pollos y promedio. Una
condición para vender es que el cliente no tenga adeudos con PSM
Venta por menudeo
La venta por menudeo consiste en la venta diaria menor a 450 pollos. Dichas
ventas pueden ser de 4 tipos:
Mostrador:
o Maciza, Surtido, retazo con ala, retazo sin ala, pechuga, pierna sola,
pulpa de pechuga, menudencia, cabezas.
Vivo
Mercado
New York
Este tipo de venta necesita llevar un balance general: de gastos, mortalidad e
ingresos. Para posteriormente tener un balance diario, semanal, mensual y anual.
Se tienen que generar tickets con: descripción, cantidades, precio de venta y total
para los clientes diariamente.
Un servicio adicional de PSM son los pedidos los cuales consisten en la venta por
menudeo
Pedidos
Requiere un servicio de pedidos de pollos, los pedidos pueden ser de mayoreo o
menudeo, el cual necesita almacenar los datos de las fechas, horas, promedios,
descripción, costo, total, datos del cliente y pago por adelantado. Los pedidos
pueden ser de los tipos mayoreo y menudeo, es decir, pueden ser varios pedidos
en un solo pedido. Cada pedido es identificado por un número de pedidos o
nombre del cliente.
32
Control de gastos
Requiere un servicio en el cual administre los gastos diarios, semanales, mensuales
y anuales. Con la siguiente información: descripción, total y fecha.
Generación de tickets
No se puede entregan facturas, dado que es pequeño contribuyente pero si se
podrían entregar tickets con el RFC de pequeño contribuyente.
Contabilidad
Necesita tener un servicio en el cual pueda tener el balance general de todos los
servicios. Para tener el total de gastos, adeudos, pagos realizados, control de
embarques, fechas. En los periodos anuales, mensuales, semanales. Es decir un
balance general.
3.3 Conclusión
En este capítulo hemos recolectado los requisitos de la aplicación PSM. Con la
ayuda de las historias de usuario. Esto en un punto fundamental para poder
identificar en el siguiente capítulo los casos de uso de negocios.
33
uc Actores
TrabajadorDueño
Capítulo 4
Modelado de negocios RUP de la aplicación PSM
4.1 Introducción
En este capítulo se muestra el modelado de negocios de la aplicación PSM, y se
describen los artefactos del modelado de negocios.
El conjunto de modelado de negocio presenta los artefactos que capturan y
representan el contexto del negocio del sistema. Los artefactos de modelado de
negocio sirven como entrada y referencia para los requisitos del sistema. Los
artefactos del modelado de negocios son los siguientes:
Casos de uso del modelado de negocios
Especificación de los casos de uso del negocio
Identificar los actores y las entidades del negocio
Modelado de objetos de negocio
Reglas del negocio
4.2 Casos de uso de negocios
4.2.1 Actores del negocio en la figura 4.1
Figura 4.1 Actores de negocio
34
4.2.1.1 Dueño
El Dueño es el principal actor del programa PSM, es decir es el encargado
directamente del control de todos los módulos del programa.
4.2.1.2 Trabajador
El Trabajador es el trabajador del negocio, el trabajador está limitado en el
programa a ciertos módulos del sistema.
4.2.2 Diagramas de casos de uso
Figura 4.2 Casos de uso de negocios PSM
35
4.2.3 Requerimientos funcionales caso de uso ComprarPolloAlProveedor
Descripción
Este caso de uso es el encargado de llevar el control de compras de pollo al
proveedor. De esta manera se tiene el inventario de la granja PSM.
El control de embarques, contratiempos del embarque, control de
bonificaciones.
Pre-Condiciones
El usuario debe de autentificarse en el sistema como dueño.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El Dueño revisa el inventario de la granja en el sistema.
2. El Dueño programa el embarque o embarques de Pollo al proveedor
3. El dueño guarda todos los detalles del embarque o embarques en el
sistema.
4. El Dueño paga el embarque o embarques de Pollo al proveedor y los
datos son guardados para tener el control de pagos.
5. Si paga a tiempo se obtiene bonificación y se guarda en el sistema.
6. Finaliza el flujo de ComprasPollosAlProveedor.
Flujos de eventos alternativos
1. Si existen más 150 pollos en la granja termina el caso de uso de
ComprasPollosAlProveedor.
2. Si no autorizan la carga no se guarda en el sistema y termina el caso de
uso de ComprasPollosAlProveedor.
3. Si existen contratiempos en la carga del embarque de pollos se registra
en el sistema dicho contratiempo para posteriormente reportarlo al
proveedor y de esta manera obtener bonificaciones por dichos
contratiempos, es decir: si el embarque tiene cierto número de
mortalidad de pollo, o si atrasaron la carga por otras circunstancias.
5. Si el pago del embarque o embarques de pollos no se paga a tiempo,
no se efectúa el caso de uso Bonificación y por lo tanto no se registra
en el sistema.
36
act DiagramasDeActiv idadCompra
Prov eedorDueño
InicioDeActividad
Embarques
Rev isarPollosGranja
NoProgramaCarga
Bonificaciones
ProgramanEmbarque
PagosEmbarque
SaldoAFav or
Contabilidad
FinalDeActividad
«datastore»
Inv entarioGranja
«datastore»
RegistroEmbarques
«datastore»
ControlBonificaciones
«datastore»
DetallesEmbarque
ContratiemposEmbarque ReportarProv eedor
BonificacionDetalleCarga
ProgramarCarga
AutorizaciónCarga
PagoenTiempo
SiExisten
NoExistenContratiempos
Encadenamiento de errores
E1. Error al conectarse al servidor, se solicita al usuario volver a intentarlo.
E3. Error al guardar los detalles del embarque o embarques.
Figura 4.3 Diagrama de actividad ComprarPollosAlProveedor
37
La siguiente figura muestra el diagrama de secuencia del caso de uso
ComprarPollosAlProveedor.
sd Diagrama de secuencia ComprarPollosAProv eedor
Dueño
(from Actores)
PSM
alt E1
[Si existen más 150 pollos en la granja finaliza.]
alt
[no autorizan la carga no se guarda en el sistema]
alt Bonificacion
[No se paga a tiempo]
loop
SeCancelaOperaciónSeCancelaOperación
SeCancelaOperacionSeCancelaOperacion
revisa el inventario de la granja en el sistema.()
MuestraResultado()
programa el embarque o embarques de Pollo al proveedor()
AutorizanCargaProveedor()
GuardaInformación()
SeRegistraPagoProveedor()
[Si se paga a tiempo]:Bonificacion()
Se Registra en sistema la Bonificacion()
Figura 4.4 Diagrama de secuencia ComprarPollosAProveedor
38
4.2.4 Requerimientos funcionales caso de uso VenderPollosAClientes
Descripción
Este caso de uso es el encargado de llevar el control de ventas de pollo al
cliente .De esta manera se tiene el control del inventario de la granja PSM y
del rastro PSM.
Este caso de uso se extiende por los casos de uso Mayoreo y Menudeo.
Pre-Condiciones
El usuario debe de autentificarse en el sistema.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El usuario requiere registrar un tipo de venta.
2. El caso de uso base “VenderPolloAClientes”, pasa a los puntos de
extensión 1 y 2.
3. Se muestran las opciones de venta, de acuerdo al nivel de usuario.
Flujo de eventos alternativos
3. El Dueño selecciona el tipo de venta a realizar: “Mayoreo” o “Menudeo”.
Encadenamiento de errores
E3. El dueño no seleccione ningún tipo de venta.
E2.1 Si la venta es mayor a 450 pollos. No puede vender el trabajador.
Puntos de extensión
1. Caso de Uso: Menudeo
2. Caso de Uso: Mayoreo
Flujos de eventos principales puntos de extensión
Si el usuario es el actor Trabajador o Dueño:
PE1.
1.1 El usuario especifica los datos de la venta.
1.2 Guarda la información.
39
1.3 El sistema genera el ticket con los datos especificados de la venta de
pollo.
Si el usuario es el actor Dueño:
PE2.
2.1 Consulta adeudo del cliente
2.2 Programa embarque
2.3 Guardar los detalles del embarque del cliente.
2.4 Registra Pago Cliente (Detalles, Fechas).
2.5 Termina el flujo del caso de uso Mayoreo.
Flujos de eventos alternativos puntos de extensión
2.1 No Programa embarque. Debe carga anterior.
2.3 El dueño puede hacer descuento o no.
Post-Condiciones
Sale una notificación avisando si requiere registrar más ventas o regresar al
menú de selección.
40
act DiagramasDeActiv idadVentas2
Dueño
InicioDeActividad
VentasPollo
VenderPolloClienteContactaDueño
ProgramaEmbarque
Contabilidad
FinalDeActividad
Ticket
«datastore»
RegistroPagosClientes
DescuentoValueSpecification
«datastore»
RegistraDatosdeEmbarqueCliente
Trabajador
MenudistaMayorista
Existe Adeudo
No ha Pagado el Cliente
Si ya Pago el Cliente
NoExisteAdeudo
La siguiente figura muestra el diagrama de actividad del caso de uso
VenderPolloAClientes.
Figura 4.5 Diagrama de actividad de vender pollos al cliente PSM
41
sd Modelo de casos de uso VenderPolloAClientes
Dueño
(from Actores)
Trabajador
(from Actores)
PSM
alt
[Selecciona la opcion Ticket]
alt
[SeleccionaOpcionTicket]
loop
loop
alt Descuento
Se Muestran las Opciones de Venta
Mayoreo Menudeo()
SelccionaOpciónMenudeo()
Ingresa los datos de Venta()
Se Muestra el Menú Menudeo()
SeEfectuaDescuento()
IngresaDatosVenta()
SeGuardan los detalles de la Venta()
Seleccion Ticket o Nota()SeleccionOpcionTicketoNota()
Se Imprime Ticket()
Se ImprimeTicket()
SeleccionOpcionNota()
SeImprimeNota()
Selecciona la opción Nota()
SeImprimeNota()
SelccionaOpcionMayoreo()
ConsultaAdeudoCliente()
ResultadoConsulta()
ProgramaEmbarque()
SeGuardaInformacionEmbarqueyCliente()
RegistraPagoCliente()
La siguiente figura muestra el diagrama de secuencia del caso de uso
VenderPollosAClientes.
Figura 4.6 Diagrama de secuencia de VenderPollosACliente PSM
42
4.2.5 Requerimientos funcionales caso de uso VenderPedidos
Este caso de uso es el encargado de realizar pedidos o pedido de un cliente al
Dueño.
El actor Dueño necesita llevar el control de todos los pedidos con todos sus
detalles, adeudos, liquidación de pagos, descuentos, de esta manera tener un
control sobre el inventario en granja y rastro.
Pre-Condiciones
El usuario debe de autentificarse en el sistema.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El usuario revisa el inventario de la granja en el sistema.
2. El usuario realiza el pedido del cliente.
3. El Dueño puede hacer descuento al cliente.
4. El usuario registra los datos del cliente y los detalles del pedido (total,
subtotal, a cuenta, resta, nombre, fecha, n_pedido).
5. El usuario genera la nota de remisión del pedido.
6. Termina el flujo de la orden del pedido.
Sub-Flujo de eventos principal
El caso de uso empieza cuando:
1.1 El usuario busca el n_pedido.
1.2 El cliente paga el adeudo.
1.3 Actualiza los datos de la nota del pedido.
1.4 Se genera la nota de remisión actualizada.
Flujos de eventos alternativos
1.1 Si no existe la nota se notifica. Y se vuelve a pedir el Número de la
nota.
3. El Trabajador no puede hacer descuento. No se le presenta esta opción
en el sistema.
Encadenamiento de errores
E1. Error al conectarse al servidor, inténtelo de nuevo por favor.
E4. Error no registro nada, por favor ingresen los datos que se piden.
43
act DiagramasDeActiv idadPedidos
DueñoCliente
InicioDeActividad
NotaRemisiónClienteContabilidad
PedidoCliente
Rev isarInv entarioGranjaYRastro
ClienteRequierePedidoPollo
FinalDeActividad
«datastore»
ControlPedidos
AnticipoPedido
FinalDeFlujo
CompletaPagoPedidoCliente
«datastore»
ActualizaNRemisionCPagadoContabilidad
DescuentoSeHaceDescuento
EntregaPedido
CumplenReqCliente
Post-Condiciones
Se muestra la siguiente notificación: Los datos se han registrado
correctamente.
El usuario registra los pedidos del cliente en el sistema. Y se actualiza el
inventario y Contabilidad.
La siguiente figura muestra el diagrama de actividad Pedidos.
Figura 4.7 Diagrama de actividad de pedidos PSM
44
La siguiente figura muestra el diagrama de secuencia del caso de uso
VenderPedidos.
sd Diagrama de secuencia VenderPedidos
Dueño
(from Actores)
PSM
Trabajador
(from Actores)
alt
[Si no hay la cantidad Necesitada.Se notifica y se cancela la operación]
alt
[Si efectua un descuento al Cliente]
loop
alt
[Si no Existe la cantidad Suficiente.Se notifica y se cancela Operación]
loop
loop ActualizarPedido
alt
[Si No existe el número de Nota .Se vuelve a pedir el valor]
loop ActualizarPedido
alt
[Si no existe la nota se notifica. Y se vuelve a pedir el Número de la nota.]
Revisa Inventario Granja()
Realiza el Pedido del Cliente()
Ingresa la cantidad de Descuento()
Guarda la Información()
Genera Nota de Remisión()
RevisaInventarioGranja()
Realizael Pedido()
GuardaInformación()
GeneraNotaRemisión()
BuscaElNúmerodelPedido()
Se Registra el Pago Finalizado()
SeActualizalnformación()
GeneraNotaRemisión()
BuscaElNúmeroPedido()
SeRegistraPagoFinalizado()
GuardaInformación()
GeneraNotaRemisión()
Figura 4.8 Diagrama de secuencia Pedidos PSM
45
4.2.6 Requerimientos funcionales caso de uso ObtenerInventario
Este caso de uso es el encargado de registrar los envases de pollo de la
granja y registrar el inventario del rastro PSM.
Pre-Condiciones
El usuario debe de autentificarse en el sistema.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El dueño selecciona el menú Inventario
2. Se muestra las opciones inventario Granja e Inventario Rastro.
3. El dueño selecciona el Inventario Granja
4. Se muestra el formulario de registro para el inventario al dueño.
5. El dueño ingresa los datos y los guarda.
6. Se muestra una notificación de que se han guardado correctamente
los datos.
7. Termina el flujo de inventario.
Flujos de eventos alternativos
3. Selecciona la opción de inventario Rastro
4. Se muestra el formulario de registro para el inventario al dueño.
5. El dueño ingresa los datos y los guarda.
6. Se muestra una notificación de que se han guardado correctamente
los datos.
7. Termina el flujo de inventario.
Encadenamiento de errores
E1. Error al conectarse al servidor, inténtelo de nuevo por favor.
E5. Error no registro nada, por favor ingresen los datos que se piden.
46
Post-Condiciones
Se muestra la siguiente notificación: Los datos se han registrado
correctamente.
El usuario registra los pedidos del cliente en el sistema. Y se actualiza el
inventario y Contabilidad.
La siguiente figura muestra el diagrama de actividad Inventario.
Figura 4.9 Diagrama de actividad Inventario PSM
act DiagramasDeActiv idadInv entarios
Dueño
InicioDeActividad
RegistrarInv entario
«datastore»
RegistrarInv entario
Inv entarioGranja Inv entarioRastro
FinalDeFlujo
Selecciona
47
La siguiente figura muestra el diagrama de secuencia del caso de uso
ObtenerInventario.
sd Diagrama de secuencia ObtenerInv entario
Dueño
(from Actores)
PSM
alt
loop SeleccionaInventario()
Se Muestra las Opciones de Inventario()
Selecciona RegistrarInventarioRastro()
Selecciona Inventario Granja()
Se muestra el formulario Inventario Granja()
Ingresa los datos del formulario y los guarda()
Muestra Notificación()
Se muestra el formulario Registrar InventarioRastro()
Ingresa los datos del Formulario y los Guarda()
Se muestra Notficación ()
Figura 4.10 Diagrama de secuencia Inventario PSM
48
4.2.7 Requerimientos funcionales caso de uso RealizarGastos Pagos
Este caso de uso es el encargado de registrar los gastos del día en la pollería
y granja.
Pre-Condiciones
El usuario debe de autentificarse en el sistema.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El usuario selecciona el menú Gastos y Pagos
2. Se le muestra al usuario el formulario de Gastos y Pagos
3. El usuario ingresa los datos en el formulario Gastos y Pagos y guarda los
datos.
4. Se muestra notificación de los datos guardados.
5. Termina el flujo de RealizarGastoPagos.
Encadenamiento de errores
E1. Error al conectarse al servidor, inténtelo de nuevo por favor.
E4. Error no registro nada, por favor ingresen los datos que se piden.
Post-Condiciones
Se muestra la siguiente notificación: Los datos se han registrado
correctamente.
49
act DiagramasDeActiv idadGastosPago
TrabajadorDueño
InicioDeActividad
RegistrarDetallesGastos«datastore»
GastosPagos
SeleccionaActiv idad
Contabilidad
(::)
Final
La siguiente figura muestra el diagrama de actividad de Gastos y Pagos.
Figura 4.11 Diagrama de actividad GastosPagos PSM
50
La siguiente figura muestra el diagrama de secuencia del caso de uso
RealizarGastosPagos.
sd Diagrama de secuencia RealizarGastosPagos
Dueño
(from Actores)
PSM
Trabajador
(from Actores)
loop
loop
Selecciona el menú Gastos Pagos()
Se muestra el formularioGastos Pagos()
Ingresa los datos y los guarda()
Se muestra Notificación()
Selecciona el menú Gastos Pagos()
Se muestra el formulario Gastos Pagos()
Ingresa los Datos y los guarda()
Se muestra Notificación()
Figura 4.12 Diagrama de secuencia RealizarGastosPagos PSM
51
4.2.8 Requerimientos funcionales caso de uso ObtenerContabilidad
Descripción
Este caso de uso es el encargado de llevar el control de las ganancias y
pérdidas diariamente, semanal, mensual y anual del negocio PSM.
Pre-Condiciones
El usuario debe de autentificarse en el sistema como Dueño.
Flujo de eventos principal
El caso de uso empieza cuando:
1. El dueño requiere visualizar la contabilidad del negocio.
2. Se muestra el menú de contabilidad al dueño: Ventas, Compras,
Gastos, Inventario, Bonificaciones, Descuentos, Balance General.
3. El Dueño selecciona el Balance General.
4. Se le muestra el formulario del Balance General.
5. Se le muestra al dueño las opciones de: búsqueda por fecha, Generar
Reporte, Regresar al Menú Contabilidad.
6. El dueño ingresa los datos de la búsqueda por fecha.
7. Se envían los datos de la búsqueda.
8. Se le muestra al dueño el formulario del balance general detallado.
9. El dueño genera el reporte.
10. Termina el flujo Principal.
Flujo de eventos alternativos
3. El dueño selecciona una opción de los puntos de inclusión.
4. El dueño desea salir del menú Contabilidad.
5. El dueño selecciona la opción regresar al Menú Anterior.
6. La fecha ingresada no está registrada en el sistema PSM.
9. El dueño no genera el reporte. Se muestra la opción de: buscar otras
fechas.
Encadenamiento de errores
E2. El dueño no seleccione ningún modulo.
E7. Error al conectarse al servidor. Inténtelo nuevamente.
52
E6. Los datos ingresados no son correctos. Ingréselos Nuevamente por
favor.
E2.4.1 El dueño no selecciono ninguna opción del menú Gastos
E2.4.3 Error al conectarse al servidor. Vuelva a Intentarlo por favor.
E2.4.4 El dueño no ingreso los datos que se necesitan en el formulario.
2.2.4 Los datos ingresados son incorrectos. Inténtelo nuevamente.
2.3.4 Los datos ingresados son incorrectos. Inténtelo nuevamente.
2.6.5 El dueño ingresa los datos que se requieren.
2.3.4.1 Los datos ingresados son incorrectos. Ingrese nuevamente los datos
por favor.
2.7.5 Ingrese los datos que se piden por favor.
2.7.6 Los datos ingresados son incorrectos. Inténtelo nuevamente.
Requerimientos funcionales caso de uso de los puntos de inclusión
2.1 Caso de Uso: VenderPolloAClientes
2.2 Caso de Uso: ComprarPolloAlProveedor
2.3 Caso de Uso: VenderPedidos
2.4 Caso de Uso: RealizarGastosPagos
2.5 Caso de Uso: ObtenerInventario
2.6 Caso de Uso: ObtenerBonificaciones
2.7 Caso de Uso: ObtenerDescuentos
Flujos de eventos principales puntos de inclusión
PI1.Caso de Uso: VenderPolloAClientes
Al Dueño:
2.1.1 Se le muestra el menú de Contabilidad de ventas:
(Mayoreo,Menudeo,General).
2.1.2 El dueño selecciona la opción: General.
2.1.3 Se le muestra al dueño el balance General de las ventas del día:
mayoreo y menudeo.
2.1.4 Se le muestra al dueño las opciones para ordenar: Tipo de Venta,
$Total.
53
2.1.5 Se muestra al dueño la opción: búsquedas de balances anteriores por
fecha.
2.1.6 El dueño ingresa los parámetros de la búsqueda.
2.1.7 El dueño envía los parámetros de búsqueda.
2.1.8 Genera Reporte final.
2.1.9 Termina el flujo de ventas General.
PI2.Caso de Uso: ComprarPolloAlProveedor.
Al Dueño:
2.2.1 Se le muestra al dueño el balance General de las compras de
embarques del día.
2.2.2 Se muestra una ventana de notificación si desea buscar otros
embarques.
2.2.3 Si acepta hacer más búsquedas. Se muestran las opciones de
búsqueda por: N_Embarque, Fecha, Todos.
2.2.4 El dueño ingresa los parámetros de la búsqueda.
2.2.5 El dueño envía los parámetros de búsqueda.
2.2.6 Se muestran los embarques pagados y no pagados. Y Que embarques
obtuvieron bonificaciones.
2.2.5 Se le muestra al dueño las opciones de ordenar por: N_Embarque, $
total embarque, Total de Pollos, Fechas.
2.2.6 Se muestra una notificación si desea imprimir el reporte de
Contabilidad de Compras.
2.2.7 Termina el flujo de Contabilidad de Compras.
PI3.Caso de Uso: VenderPedidos
Al usuario:
2.3.1 Se le muestra el reporte de la Contabilidad de Pedidos del día.
2.3.2 Se le muestra al usuario una notificación si desea buscar otros
pedidos.
2.3.3 Si acepta buscar otras fechas .Se le muestran las opciones de
búsqueda por: Fecha, Cliente, N_Remisión.
2.3.4 El usuario ingresa los datos de la búsqueda.
2.3.5 Se le muestra la información al usuario en un reporte.
2.3.6 Termina el flujo del Pedidos.
54
PI4.Caso de Uso: RealizarGastosPagos.
El Dueño:
2.4.1 Selecciona la opción a realizar Consultas de Gastos:
2.4.2 Se le muestra el formulario de Consultas de Gastos
2.4.3 El dueño selecciona las opciones de búsqueda, que necesita realizar.
2.4.4 Se muestran los resultados de la búsqueda.
2.4.4.1 Si desea generar un reporte de gastos, selecciona esta opción.
2.4.4.2 El Dueño selecciona si requiere imprimir un reporte.
2.4.4.3 Imprime el Reporte el dueño.
2.4.5 Se muestra una notificación al dueño si desea hacer más búsquedas o
si desea entrar a otro modulo.
2.4.6 Termina el sub-flujo del caso de uso GastosPagos.
PI5.Caso de Uso ObtenerInventario.
2.5.1 Se le muestra al dueño el menú de Inventario: (Granja, Rastro,
General).
2.5.2 El dueño selecciona la opción: General.
2.5.3 Se le muestra al dueño el Inventario General de cuantos pollos hay en
existencia.
2.5.4 Si existen menos de 150 pollos se notifica al dueño.
2.5.5 Genera Reporte final.
2.5.6 Se le muestra al dueño, una notificación: si desea consultar otras
fechas.
2.5.7 Si acepta buscar otras fechas .Se le muestran la opción de búsqueda
por: Fecha.
2.5.6 El dueño ingresa los parámetros de la búsqueda.
2.5.7 El dueño envía los parámetros de búsqueda.
2.5.8 Genera Reporte final.
2.5.9 Termina el flujo del Inventario.
55
PI6.Caso de Uso ObtenerBonificaciones
2.6.1 El dueño requiere tener el control de cuantas bonificaciones recibió
por el embarque, o embarques.
2.6.2 Se muestra el formulario de los embarques con bonificaciones del
último mes.
2.6.3 Se genera el reporte detallado (N_Embarque, fecha, Cantidad de
Bonificación).
2.6.4 Se muestra una opción si requiere hacer búsquedas por: N_Embarque,
fechas, todos.
2.6.5 El dueño ingresa los datos que se requieren.
2.6.6 Se genera el reporte detallado (N_Embarque, fecha, Cantidad de
Bonificación).
2.6.7 Termina el flujo de Bonificaciones.
PI7.Caso de Uso ObtenerDescuentos
2.7.1 El dueño requiere tener el control de cuantos descuentos efectuó al
día.
2.7.2 Se muestra el formulario de los descuentos realizados por las ventas
de menudeo y pedidos por la fecha más reciente.
2.7.3 Se muestra una notificación si desea hacer otras consultas.
2.7.4 Se muestra una opción si requiere hacer búsquedas por: fechas, o
todos los descuentos.
2.7.5 El dueño ingresa los datos que se requieren.
2.7.6 Se genera el reporte detallado (Fecha, Total, Descripción).
2.7.7 Termina el flujo de Descuentos.
Flujos de eventos alternativos puntos de inclusión
PI1A1 Caso de Uso: VenderPolloAClientes
2.2.2 El dueño selecciona la opción: Mayoreo.
2.2.3 Se le muestra al dueño el balance de las ventas del día: mayoreo.
2.2.4 Se le muestra al dueño las opciones para ordenar: N_Embarque,
Cliente.
56
2.2.5 Se muestra al dueño la opción: búsquedas de balances anteriores por
fecha.
PI1A2 Caso de Uso: VenderPolloAClientes
2.2.2 El dueño selecciona la opción: Menudeo.
2.2.3 Se le muestra al dueño el balance de las ventas del día: menudeo.
2.2.4 Se le muestra al dueño las opciones para ordenar: Tipo de venta,
cantidad y total.
2.2.5 Se muestra al dueño la opción: búsquedas de balances anteriores por
fecha,N_NotaRemision.
PI2A.Caso de Uso: ComprarPolloAlProveedor.
Al Dueño:
2.2.4 Si no acepta hacer más búsquedas. Se regresa al menú principal de
Contabilidad.
2.2.6 No imprime el reporte de Contabilidad de Compras.
2.2.7 Termina el flujo de Contabilidad de Compras.
PI3.Caso de Uso: VenderPedidos
Al usuario:
2.3.3 Si no acepta buscar otras fechas de pedidos. Se regresa al menú
principal de Contabilidad.
2.3.6 Termina el flujo del Pedidos.
PI5A1 Caso de Uso: ObtenerInventario
2.5.2 El dueño selecciona la opción: Granja.
2.5.3 El dueño ingresa en el Inventario de la Granja (Pollos ahogados,
Pollos embazados, fecha, descripción).
PI5A2 Caso de Uso: ObtenerInventario
2.5.2 El dueño selecciona la opción: Rastro.
2.5.3 El dueño ingresa el número de pollos: vivos, ahogados, y el total en
kilogramos de lo que sobro de las piezas de pollo.
57
act DiagramasDeActiv idadContabilidad2
Dueño
InicioDeActividad
Consultar la Contabilidad
del Negocio
Contabilidad
General
Ventas
«datastore»
ConsutarDatos
Compras Bonificaciones Descuentos Gastos Inv entario
ResultadoReporte
FinalDeFlujo
ResultadoContabilidad
Contabilidad
PI6A.Caso de Uso: ObtenerBonificaciones
2.6.4 No se muestra esta opción. Regresa al menú Principal de
Contabilidad.
2.6.5 Termina el flujo de Bonificaciones.
PI7.Caso de Uso ObtenerDescuentos
2.7.4 No Se muestra una opción si requiere hacer más búsquedas. Se
muestra el menú principal de Contabilidad.
Post-Condiciones
Se muestra el menú principal de Contabilidad.
La siguiente figura muestra el diagrama de actividad de contabilidad.
Figura 4.13 Diagrama de actividad contabilidad PSM
58
4.2.9 Diagramas de actividades con entidades
La siguiente figura muestra el diagrama de actividad de bonificaciones.
Figura 4.14 Diagramas de actividad bonificaciones PSM
act DiagramasDeActiv idadBonificaciones
Dueño
InicioDeActividad
ConsultarBonificaciones
«datastore»
Consultar
Resultado
FinalDeFlujo
ContabilidadResultadoBonificaciones
Bonificaciones
59
act DiagramasDeActiv idadCompra
Prov eedorDueño
InicioDeActividad
Embarques
Rev isarPollosGranja
NoProgramaCarga
Bonificaciones
ProgramanEmbarque
PagosEmbarque
ContabilidadCompras
FinalDeActividad
«datastore»
Inv entarioGranja
«datastore»
RegistroEmbarquesInv entario
«datastore»
ControlBonificaciones
«datastore»
ProgramaDetallesEmbarque
ContratiemposEmbarque ReportarProv eedor
BonificacionDetalleCarga
ReporteInventario
ReporteMortalidadPorEmbarque
RegistroBonificaciónPorEmbarqueMortalidad
RegistroProgramaEmbarque
RegistroBonificaciones
RegistroEmbarqueInventario
«datastore»
RegistroPagoComprasContabilidad
RegistroPagosEmbarqueAProveedor
Compras
SiExisten
AutorizaciónCarga
ProgramarCarga
PagoenTiempo
SiNoSeObtieneBonificacion
NoExistenContratiempos
La siguiente figura muestra el diagrama de actividad de compras.
Figura 4.15 Diagramas de actividad ComprarPollosaProveedor con entidades PSM
60
act DiagramasDeActiv idadContabilidad
Dueño
InicioDeActividad
Consultar la Contabilidad
del Negocio
Contabilidad
General
Ventas
«datastore»
ConsutarDatos
Compras Bonificaciones Descuentos Gastos Inv entario
ResultadoReporte
FinalDeFlujo
ResultadoContabilidad
Contabilidad
La siguiente figura muestra el diagrama de actividad de contabilidad.
Figura 4.16 Diagrama de actividad contabilidad con entidades PSM
61
act DiagramasDeActiv idadGastosPago
TrabajadorDueño
InicioDeActividad
RegistrarDetallesGastos«datastore»
GastosPagos
SeleccionaActiv idad
Contabilidad
(::)
Final
RegistroGastosPagos
GastosPagos
La siguiente figura muestra el diagrama de actividad de gastos y pagos.
Figura 4.17 Diagrama de actividad con entidades gastos y pagos PSM
62
La siguiente figura muestra el diagrama de actividad de inventario.
Figura 4.18 Diagrama de actividad con entidades inventario PSM
act DiagramasDeActiv idadInv entario
Dueño
InicioDeActividad
RegistrarInv entario
«datastore»
RegistrarInv entario
Inv entarioGranja Inv entarioRastro
FinalDeFlujo
RegistroInvertario
Inventario
InventarioGranja
InventarioRastro
Selecciona
63
act DiagramasDeActiv idadPedidos
InicioDeActividad
NotaRemisiónClienteContabilidad
PedidoCliente
Rev isarInv entarioGranjaYRastro
ClienteRequierePedidoPollo
FinalDeActividad
«datastore»
ControlPedidos
AnticipoPedido
FinalDeFlujo
CompletaPagoPedidoCliente
«datastore»
ActualizaNRemisionCPagadoContabilidad
Descuento
ResultadoConsultaInvertario
NotaRemisión
RegistroPedidos
PedidoEntregadoLiquidado
Trabajador Dueño
Pedidos
EntregaPedido
SeHaceDescuento
CumplenReqCliente
La siguiente figura muestra el diagrama de actividad de pedidos.
Figura 4.19 Diagrama de actividad con entidades pedidos PSM
64
act DiagramasDeActiv idadVentas
Dueño
InicioDeActividad
VentasPollo
VenderPolloClienteContactaDueño
ProgramaEmbarque
Contabilidad
FinalDeActividad
Ticket
«datastore»
RegistroPagosClientes
DescuentoValueSpecification
«datastore»
RegistraDatosdeEmbarqueCliente
Ticket
RegistroEmbarqueCliente
RegistroPagoClientes
VentaMayoreo
VentaMenudeo
Ventas
Trabajador
Descuentos
RegistroInventario
MenudistaMayorista
NoExisteAdeudo
Existe Adeudo
No ha Pagado el Cliente
Si ya Pago el Cliente
La siguiente figura muestra el diagrama de actividad de Ventas.
Figura 4.20 Diagrama de actividad con entidades ventas PSM
65
BRM_RuleFlow Regla De Negocio Ventas
«Start» Inicio
«RuleTask»
VenderPolloAClientes
«RuleTask»
VenderPolloAClientes
«RuleTask»
Mayoreo
«RuleTask»
Mayoreo
«RuleTask»
Menudeo
«RuleTask»
Menudeo
«End» RuleFlowEnd
[El Dueño solo puede hacer ventas por Mayoreo]
Si la Venta es > 450 pollos
Si la venta es < 450 pollos
4.3 Reglas del negocio
Las siguientes figuras muestran las reglas de negocio de PSM.
Figura 4.3.1 Reglas de negocio PSM
Figura 4.3.2 Regla de negocio ventas PSM
66
BRM_RuleFlow Regla de Negocio Pedidos
«Start» Inicio
«RuleTask»
Pedidos
«RuleTask»
Pedidos
«RuleTask»
Descuento
«RuleTask»
Descuento
«End» RuleFlowEnd
Figura 4.3.3 Regla de negocio pedidos PSM
BRM_RuleFlow Reglas de Negocio Descuentos
«Inicio» flujo
de Reglas
«RuleTask»
VenderPolloAClientes
«RuleTask»
VenderPolloAClientes
«RuleTask»
Descuentos
«RuleTask»
Descuentos
«End» RuleFlowEnd
Si es el Dueño
Si es el Trabajador
Figura 4.3.4 Regla de negocio descuentos PSM
67
Reglas de negocio:
Mayoreo: La venta >450 pollos.
Menudeo: La venta <450 pollos.
Pedidos: El Dueño solo lo puede efectuar el descuento.
VenderPollosAClientes: El Dueño solo lo puede efectuar el descuento.
No deben de existir menos de 150 pollos En la granja.
Figura 4.3.5 Reglas de negocio PSM
68
analysis Objetos de negocio
Dueño
VentaMenudeo
VentaMayoreo
Ventas
Ticket
Trabajador
RegistroPagoClientes
RegistroEmbarqueInventario
ProgramarEmbarque
ReporteMortalidadPorEmbarque
RegistroBonificaciones
RegistroBonificaciónPorEmbarqueMortalidad
RegistroPagosEmbarqueAProveedor
RegistroPedidos
Login
ResultadoConsultaInvertario
PedidoEntregadoLiquidado
RegistroGastosPagos
ReporteConsultasGastosPagos
ReporteInventario
ResultadoContabilidad
Inventario
ContabilidadGastosPagos
Descuentos
Bonificaciones
Pedidos
Compras
RegistroInventario
InventarioRastroInventarioGranja
1
1..*
1
1..*
0
1
1..*
1..*
1..*
1..*
1
1..*
1
1..*
1
1..*
1
1..*
1
1..*
1
1
0..*
1..*
1..*1..*
1
1
0..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1
1..*1..*
1..
1
1..*
1..*
1..*
1..*
1..*1..*
11
4.4 Modelado objetos de negocios
El modelo de negocio objeto es un modelo de objetos que describen la realización
de casos de uso de negocio. Gracias a los diagramas de actividades podemos
identificar las entidades del negocio. Un modelo de objetos de negocio se crea
durante el inicio y se finaliza durante la fase de elaboración. Dado que
identificamos las entidades del negocio y definimos las multiplicidades.
En la figura 4.4.1 se muestra el modelado de objetos de negocio de la aplicación
PSM.
Los prototipos de la interfaz de usuario se encuentran en el apéndice A Imágenes
donde se presentan los prototipos de la interfaz de Usuario.
Figura 4.4.1 Modelado de objetos de negocio PSM
69
4.5 Conclusión
El modelo de negocios es muy importante para identificar los casos de uso de
negocios, actores y reglas de negocios. Los casos de uso de negocios se utilizan
para modelar los servicios web, dado que con los requerimientos funcionales
identificamos los servicios.
Para identificar que los casos de uso de negocios estén bien hechos, necesitamos
comprobarlos con los diagramas de secuencia, dado que nos ayudan a visualizar el
comportamiento de intercambio de mensajes. Los diagramas de actividad nos
sirven para identificar el flujo de trabajo y para visualizar en que momentos se
toman ciertas decisiones para los procesos de negocio. Los diagramas de
actividades son muy importantes a la hora de modelar los servicios, dado que se
tiene un control para la orquestación de servicios. Las reglas de negocio definen y
controlan el funcionamiento de la estrategia a seguir en la aplicación PSM (Pollería
San Manuel).
70
Capítulo 5
5.1 Introducción
En este capítulo se muestran los diagramas de análisis, diseño de las clases y el de
la base de datos de la aplicación PSM. El modelo de análisis contiene las clases de
análisis y todos los artefactos asociados. El modelo de análisis puede ser un
artefacto temporal, como lo es en el caso de que se convierta en un modelo de
diseño, sirviendo como una visión conceptual del sistema. El modelo de diseño es
un modelo de clases que describe la realización de casos de uso, y sirve como una
abstracción del modelo de implementación y su código fuente. El modelo de
diseño se utiliza como insumo esencial para las actividades de implementación y
pruebas.
5.2 Descripción
Se identificaron los atributos por medio de la especificación de los casos de uso y
los métodos, por medio de los objetos de negocio. El diseño de la base de datos
es por medio del mapeo de clases a tablas con UML, se identifican los atributos,
entidades y asociaciones, existen clases que tienen atributos en común, por lo
tanto identificamos que unas tablas pueden ser representadas en una entidad y se
pueden agregar unos atributos como instancias de la base de datos.
La figura 5.1 muestra el diagrama de clases final de la aplicación PSM.
71
class Sistema
Compras
- AdeudoEmbarque: double
- Bonificacion: boolean
- DescripcionEmbarque: string
- FechaEmbarque: string
- FechaPagoEmbarque: string
- Mortalidad: boolean
- N_Embarque: int
- PrecioTotalEmbarque: double
- Promedio: double
- TotalPollos: int
+ ConsultaEmbarques() : void
+ RegistraEmbarque() : void
+ RegistrarPagosEmbarques() : void
Contabilidad
- Fecha: String
+ ContabilidadBonificaciones() : void
+ ContabilidadCompras() : void
+ ContabilidadDescuentos() : void
+ ContabilidadGastos() : void
+ ContabilidadInventario() : void
+ ContabilidadInventarioGranja() : void
+ ContabilidadInventarioRastro() : void
+ ContabilidadPedidos() : void
+ ContabilidadVentasGeneral() : void
Usuarios
- Login: string
- Password: string
+ Validacion()
Inv entarioGranja
- CantidadPolloAhogados: int
- CantidadRestantePollo: int
- Descripcion: string
- Fecha: string
- PollosEmbasados: int
- TotalPollos: int
+ GuardarInventario() : void
Pedidos
- ACuenta: double
- Cantidad: double
- Descripcion: string
- FechaEntregaPedido: string
- N_Pedido: int
- NombreCliente: string
- PUnitario: double
- Total: float
+ CompletarPedido() : void
+ RegistrarPedido() : void
«interface»
Ventas
Mayoreo
- AdeudoEmbarque: double
- Descripcion: string
- FechaEmbarque: string
- FechaPagoEmbarque: string
- incrementoPrecioEmbarque: float
- Mortalidad: boolean
- N_Embarque: int
- NombreCliente: string
- PrecioTotalEmbarque: double
- Promedio: double
- TotalEmbarqueDepositado: double
- TotalPollos: int
+ RegitrarPagosVentasMayoreo() : void
+ RegitrarVentasMayoreo() : void
Menudeo
- Cantidad: double
- Descripcion: String
- descuento: double
- Fecha: string
- Precio: double
- subTotal: double
- TipoVenta: int
- Total: double
+ GenerarTickets() : void
+ GuardarVentaMenudeo() : void
+ ImprmirTickets() : void
SYSTEM
Inv entarioRastro
- CantidadPedaceria: double
- CantidadPollosAhogadosDia: int
- N_PollosVivos: int
+ GuardarInventarioRastro() : void
«interface»
Inv entario
Gastos
- Descripcion: string
- Fecha: string
- Total: double
+ GuardarGastos() : void
Bonificaciones
- N_Embarque: int
- TipodeBonificacion: int
- TotalBonificacion: float
+ ConsultarBonificaciones() : void
1..*1..*
0..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
1..*
0..*
1..*
1..* 0..*
1..*
1..*
1..*
1..*
5.3 Análisis y diseño de la aplicación PSM
Figura 5.1 Diagrama de clases PSM
73
5.5 Conclusión
Al modelar correctamente las clases y la base de datos, ayuda identificar las
asociaciones de cada clase, a la hora de programar teniendo un punto partida
esencial para el desarrollo de una aplicación. Sin una base de datos correcta se
tendría inconsistencia en los datos. Recordemos que es una aplicación de negocios
y no se puede dar uno el lujo de fallar en la consistencia de los datos. Es por ello
que importante todos los puntos anteriores de este trabajo de tesis. El modelar los
negocios, especificar los casos de uso, y los otros puntos discutidos en los capítulos
anteriores, demuestran que cada modelo es importante para el desarrollo de
cualquier aplicación de negocios.
74
Capítulo 6
SOMF
6.1 Introducción
En este capítulo se muestran los diagramas de las disciplinas que conforman al
modelado de servicios (SOMF) que se utilizaron para la aplicación PSM. Es decir:
Modelo de análisis
Modelo integración de negocios
Modelo de diseño
El modelado de servicios necesita el modelado de negocios que se representa en
los capítulos anteriores, porque los caso de uso de negocio son esenciales para
poder identificar la atomicidad, composición y que casos de uso son clúster de
servicios.
6.2 Análisis SOMF de la aplicación PSM
En la parte de análisis identificamos los servicios y el cómo están conformados, por
medio de los requerimientos Funcionales. Recordemos que necesitamos identificar
el tipo de servicio es decir:
Servicio atómico
Servicio compuesto
Clúster de servicios
Los servicios atómicos que se identificaron son: Compras, Bonificaciones, Gastos
Pagos, Mayoreo, Menudeo, Descuentos, pedidos, InventarioGranja,
InventarioRastro.
Los Servicios Compuestos que se identificaron son: ventas, inventario. Ya que
ventas está conformado por mayoreo y menudeo e inventario está conformado por
inventariogranja y rastro. El clúster de servicios es el que es accesible por todos los
servicios, es decir para obtener la contabilidad necesitamos los parámetros de los
otros servicios. Por lo tanto contabilidad tiene relación con los servicios compras,
ventas, bonificaciones, descuentos, pedidos, inventario.
75
somf Analysis Diagram
Pedidos
Ventas
Bonificaciones
Compras
GastosPagos
Mayoreo
Menudeo
Contabilidad
Inventario
InventarioGranja
Inventario
Rastro
Descuentos
En la figura 6.1 se muestra el diagrama del modelo de análisis SOMF.
Figura 6.1 Análisis SOMF de la aplicación PSM
76
somf Business Integration Diagram
Nivel1PSMVentas
DominioVentasPSM
Ventas
Mayoreo Menudeo
Mayoreo Menudeo
Descuentos
Descuentos
Pedidos
Pedidos
InventarioContabilidad
Compras
Compras BonificacionesGastosPagos
GastosPagos
Contabilidad
Inventario
InventarioGranjaInventario
Rastro
Bonificaciones
6.3 Integración de negocios SOMF de la aplicación PSM.
En la integración de negocios especificamos el dominio al que pertenecen los
servicios. En el caso de la aplicación PSM, el dominio es PSM. Las perspectivas
contextuales las determinamos gracias al modelado de negocios y de esta manera
integramos los servicios de negocios. En la figura 6.2 se muestra el diagrama de la
integración de Negocios.
Figura 6.2 Integración de negocios de la aplicación PSM
77
6.4 Relación del diseño lógico orientado a servicios de la aplicación PSM
Se han identificado los servicios y se ha representado la integración de negocios.
Ahora lo que se tiene que representar son los consumidores de servicios y el cómo
están asociados. Los consumidores de servicio son el Trabajador y Dueño
determinados gracias a los actores de los casos de uso. En la figura 6.3 se muestra
el diagrama de la relación del diseño lógico orientado a servicios.
somf Design Relationships Diagram
Trabajador
Bonificaciones
Dueño
Compras
Contabilidad
Descuentos
GastosPagosInventario
Inventario
Rastro
InventarioGranja
MayoreoMenudeo
PedidosVentas
TransormaciónMensajes
Figura 6.3 Diseño lógico de la aplicación PSM
78
6.5 Diseño lógico de la composición orientada a servicios de la aplicación
PSM
En el diseño lógico de la composición ayudan a resolver las estrategias del diseño
para la reutilización de servicios y la interoperabilidad. En la Figura 6.4 se muestra
el diagrama de relación del diseño lógico orientado a servicios.
somf Design Composition Diagram
Ventas
Bonificaciones
Boss
Compras
Contabilidad
Descuentos
GastosPagos
Inventario
Inventario
RastroInventarioGranja
Mayoreo
MenudeoPedidos
Trabajador
Figura 6.4 Diseño lógico de la composición de la aplicación PSM
79
6.6 Diagrama de transacción orientado a servicios de la aplicación PSM
Para tener la orquestación de servicios necesitamos la representación visual basada
en los diagramas de secuencia por lo tanto obtenemos la relación de los servicios
con el consumidor. En la figura 6.5 se muestra el diagrama de transacción de la
aplicación PSM.
somf Design Transaction Diagram
Dueño Trabajador
Ventas Mayoreo Menudeo Compras ContabilidadDescuentosPedidosInventario
RastroInventario InventarioGranja GastosPagos
InvocaVentas()
Registrar ventas()
GuardaVenta()
RegistrarVenta()
InvocaconsultarVentas()
ConsultarVentas()
ResultadoConsultaVentas()
ConsultarVenta()
ResultadoConsultaVenta()
GuardaInventarioGranja()
GuardaVenta()
RegistrarCompras()
GuardaCompra()
ConsultaCompras(date)
RegistrarPedidos()
GuardarPedidos()
FinalizarPedido(N_Nota)
ActualizarPedidoFinalizado()
InvocaInventario()
RegistrarInventarioRastro()
IngresaParametrosInventarioRastro()
GuardaInventarioRastro()
RegistrarInventarioGranja()
IngresaParametrosInventario()
GuardaInventarioRastro()
RegistaGastos()
IngresaParametroGastos()
GuardaGasto()
ConsultaBalance()
ResultadosBalance()
Figura 6.5 Diagrama de transacción de la aplicación PSM
80
6.7 Conclusión
Gracias al modelado de servicios (SOMF), se logró comprender el funcionamiento
de cada servicio y el cómo están interactuando. Estos resultados se ven reflejados a
la hora de programar. Facilitando la programación de la aplicación. Se identifican
ciertos problemas de coordinación gracias a los diagramas de transacción y por lo
tanto se corrigen. También nos facilita la forma en que puedan reutilizar ciertos
servicios, optimizando los tiempos del modelado.
81
Capítulo 7
Implementación
Descripción
La aplicación cliente fue desarrollada en C# y WPF (Windows Presentation
Foundation). Los servicios web fueron desarrollados en c# en visual studio 2010. El
protocolo de comunicación es por medio de SOAP. A continuación se muestran las
pantallas de la aplicación cliente de los servicios web PSM.
7.1 Pantalla autentificación de la aplicación PSM
Al ejecutar la aplicación se necesita autentificar el usuario como se muestra en la
figura 7.1
Figura 7.1 Pantalla autentificación
82
7.2 Pantalla principal dueño de la aplicación PSM
Una vez autentificado en este caso el dueño se le muestra la ventana principal del
sistema PSM como se muestra en la figura 7.2
Figura 7.2 Pantalla principal dueño PSM
83
7.3 Registrar embarque
En caso de seleccionar la opción de registro compras se muestra la figura 7.3
Figura 7.3 Registrar embarque PSM
84
7.4 Registrar pago de embarque
En caso de seleccionar la opción de registrar compras se muestra la figura 7.4
Figura 7.4 Registrar pago de embarque PSM
85
7.5 Consultar compras
En caso de seleccionar consultar compras. Se muestran 2 opciones de búsqueda:
por número de embarque y por fecha como se muestra en la figura 7.5 y 7.6
Figura 7.6 Consultar compras por fecha
Figura 7.5 Consultar compras por embarque
86
7.6 Pantalla ventas
Al seleccionar el menú de ventas se muestran 2 opciones: ventas por mayoreo
ventas menudeo como se muestra en las figuras 7.7
Figura 7.7 Pantalla ventas PSM
87
7.7 Pantalla menudeo
Al Seleccionar la opción de ventas de menudeo se muestra la figura 7.8
Figura 7.8 Ventas menudeo PSM
88
7.8 Pantalla registro mayoreo
Al seleccionar la opción de ventas de mayoreo se muestra la figura 7.9
Figura 7.9 Ventas mayoreo PSM
89
7.9 Pantalla de pedidos
Si selecciona la opción de pedidos se muestra la figura 7.10
Figura 7.10 Pantalla principal de pedidos PSM
90
7.10 Pantalla registro pedidos PSM
Al Seleccionar la opción de registro de pedidos se muestra la figura 7.11
7.11 Pantalla finalizar pedido
Al seleccionar la opción de finalizar pedido se muestra la figura 7.12
Figura 7.11 Pantalla registro pedidos PSM
Figura 7.12 Pantalla finalizar pedido
91
7.12 Pantalla gastos
Al Seleccionar el menú de gastos se muestra la figura 7.13
7.13 Pantalla registro gastos
Al seleccionar la opcion de registrar gastos se muestra la figura 7.14
Figura 7.13 Pantalla principal gastos
Figura 7.14 Pantalla registrar gastos
92
7.14 Pantalla inventario PSM
Al Seleccionar el menú de inventario se muestran las opciones: registrar inventario
y consultar inventario. En la figura 7.15
Figura 7.15 Pantalla inventario PSM
93
7.15 Pantalla registro inventario
Al seleccionar la opción de registrar inventario. Se muestran 2 opciones: embarques
granja y rastro. En la figura 7.16 y 7.17
Figura 7.16 Pantalla registro inventario granja PSM
Figura 7.17 Pantalla registro rastro PSM
94
7.16 Pantalla bonificaciones
Al seleccionar bonificaciones en el menú principal se muestra la figura 7.18
7.17 Pantalla contabilidad
Al seleccionar la opción de contabilidad se muestran las opciones de: contabilidad
general, ventas, compras, bonificaciones, descuentos, gastos, e inventario en la
figura 7.19
Figura 7.18 Registrar bonificaciones
Figura 7.19 Pantalla principal contabilidad PSM
95
Al seleccionar la opción de contabilidad general se muestra la figura 7.20
7.18 Pantalla principal del trabajador
Al ingresar el usuario como trabajador se muestra la figura 7.21
Figura 7.20 Pantalla contabilidad general PSM
7.21 Pantalla registro de ventas trabajador
96
Al seleccionar el trabajador la opción de ventas menudeo, se muestra la figura 7.22
7.19 Pantalla pedidos del trabajador
Al seleccionar la opción de pedidos se muestran las opciones de registrar pedidos y
finalizar pedidos. Como se muestra en la figura 7.23
FIgura 7.23 Pantalla pedidos trabajador PSM
Figura 7.22 Registro ventas trabajador PSM
97
7.20 Pantalla registro pedidos del trabajador
Al seleccionar el trabajador la opción de registrar pedidos, se muestra la figura 7.24
Figura 7.24 Pantalla registro pedidos trabajador PSM
98
7.21 Pantalla finalizar pedidos del trabajador
Al seleccionar el trabajador la opción de finalizar Pedido se muestra la figura 7.25
7.22 Pantalla gastos pagos del trabajador
Al seleccionar la opción de gastos pagos se muestra la figura 7.26
Figura 7.25 Pantalla finalizar pedidos PSM
Figura 7.26 Gastos pagos trabajador PSM
99
7.23 Pantalla registrar gastos
Al seleccionar la opción de registrar gastos se muestra la figura 7.27
Figura 7.27 Registrar gastos trabajador PSM
100
7.24 WSDL
WSDL La importancia de comprender su estructura y para qué se usa. Es un
aspecto importante en el desarrollo de sistemas orientados a servicios y es un
elemento fundamental en la interoperabilidad de los servicios web. Además, es
muy importante si se usa un registro UDDI.
Los WSDL son importantes para el desarrollo de la aplicación PSM, en ellos se
especifican los tipos de atributos es decir si son: string, double, int, entre otros.
Cabe mencionar que en cada caso de uso se especifican las operaciones, es decir
los métodos y que parámetros envía y recibe.
En el apéndice B WSDL se muestran los WSDL de la aplicación PSM.
101
Capítulo 8
Pruebas y resultados
8.1 Descripción
En este capítulo se muestran las pruebas realizadas de la aplicación PSM. También
se muestran los resultados obtenidos de cada módulo, mensajes de notificación y
las validaciones de la aplicación PSM.
8.2 Pruebas
8.2.1 Registro compras
Al seleccionar la opción registro compras, en caso de que el usuario introduzca un
valor invalido no lo permite la aplicación, notifica y borra el valor ingresado en la
figura 8.1 se muestra la validación de los campos de registro compras.
Figura 8.1 Validación compras dueño
102
Si la opción mortalidad no está seleccionada e intentan guardar, la aplicación no lo
permite y se notifica al usuario. En la figura 8.2 se muestra la notificación de que no
se ha seleccionado la mortalidad.
En caso de que la selección de mortalidad sea “Si” se activan los campos de
cantidad y descripción de bonificación.
Figura 8.2 Notificación selección mortalidad.
Figura 8.3 campos habilitados bonificación
103
Al no existir campos inválidos se guarda la información. Y se notifica al usuario. En
la figura 8.4 se muestra la notificación.
8.2.2 Consultar compras
Si la búsqueda es por número de embarque se ingresa el número de embarque y
se muestra el resultado en la figura 8.5. Si no existe ese número de embarque se
borra el resultado anterior y se notifica al usuario en la figura 8.6.
Figura 8.4 Notificación de datos guardados correctamente.
Figura 8.5 Resultado consulta número de embarque
104
Si la búsqueda es por fecha se muestra la figura 8.7. Si no existen embarques en
esa fecha se muestra la figura 8.8
Figura 8.6 Notificación cuando no existe ese número de embarque
Figura 8.7 Resultados consulta de compras por fecha
105
8.2.3 Registrar pagos de compras
Si selecciona la opción de registrar pagos de compras se muestra la figura 8.9. En la
que se ingresa el número de la nota del embarque para registrar el pago.
Figura 8.8 Notificación cuando no existen compras en esa Fecha
Figura 8.9 Registrar pagos del embarque
106
Para registrar pagos del embarque se ingresa la cantidad. Si la cantidad es mayor a
lo que adeuda en realidad, cancela la transacción y notifica, como se muestra en la
figura 8.10
Si no existe la nota se notifica como se muestra en la figura 8.11
Figura 8.10 Registrar Pago del embarque Figura 8.10 Notificación valor invalido del pago de la compra
Figura 8.11 Notificación cuando no existe ese número de embarque
107
8.2.4 Registrar ventas menudeo
Al seleccionar la opción de registrar ventas menudeo se muestra la figura 8.12 en la
que se ingresan los datos de la venta, cada campo esta validado, al seleccionar el
botón agregar se añade al datagrid los datos de la venta.
Si selecciona la opción de venta distinta de tipo de venta mostrador se deshabilita
la opción de tipo de venta de mostrador.
Figura 8.12 Agregar datos al datagrid de ventas
Figura 8.13 Agregar elementos distintos de tipo de venta mostrador
108
Para eliminar elementos del datagrid se selecciona el elemento a eliminar y se
actualiza el Total como se muestra en la figura 8.14
Para finalizar el registro se selecciona el botón guardar y se notifica al usuario que
se han guardado correctamente los datos. Como se muestra en la figura 8.15.
Figura 8.14 Eliminar registros del datagrid
Figura 8.15 Notificación de datos guardados
109
Se genera el ticket una vez finalizada la venta como se muestra en la figura 8.16
8.2.5 Registrar pedidos
Al seleccionar la opción de registrar pedidos, ingresa los elementos al datagrid del
pedido. Los campos están validados, por ejemplo cuando ingrese números en
donde solo se aceptan letras la aplicación no lo permite y borra lo ingresado en el
campo, como se muestra en la figura 8.17.
Figura 8.16 Ticket generado de la venta
Figura 8.17 Validaciones de los campos registrar pedidos
110
Si no ingresa ningún campo no lo permite la aplicación y muestra una notificación
como se muestra en la figura 8.18.
Al agregar los elementos del pedido al datagrid se muestra la figura 8.19
Figura 8.18 Notificación de campos vacíos.
Figura 8.19 Registrar pedidos
111
Si la cantidad de a cuenta ingresada es mayor a lo que en realidad adeuda se
muestra la notificación de error y borra la cantidad de a cuenta como se muestra
en la figura 8.20.
Al guardar los datos correctamente se muestra la figura 8.21
Figura 8.20 Notifación de error del adeudo ingresado.
Figura 8.21 Notificación de datos guardados correctamente
112
8.2.6 Finalizar pedidos
Para finalizar un pedido, cuando se entrega la mercancía se ingresan los valores en
los campos correspondientes, es decir se ingresa el número de la nota como se
muestra en la figura 8.22
Si el número del pedido no existe se muestra la figura 8.23
Figura 8.22 Buscar pedidos
Figura 8.23 Notificación no existe ese numero de nota.
113
Para finalizar la venta se selecciona la opción finalizar pedido y se actualiza el valor
del campo resta a 0 en caso de que la venta no halla sido finalizada se muestra el
botón de finalizar pedido, como se muestra en la figura 8.24
Cuando un pedido ya esta finalizado el valor de resta es 0 y se muestra la figura
8.25.
Figura 8.24 Finalizar pedidos
Figura 8.25 Pedido entregado
114
8.2.7 Registrar ventas mayoreo
Al seleccionar la opción de registrar ventas mayoreo se ingresan los valores que
pide cada campo si la opción mortalidad es “NO” se inhabilitan los campos
cantidad bonificación y descripción bonificación. Como se muestra en la figura 8.26
Si existiera mortalidad entonces se selecciona esa opción y se habilitan los campos
cantidad bonificación y descripción bonificación. Como se muestra en la figura 8.27
Figura 8.26 Sin mortalidad
Figura 8.27 Existe mortalidad
115
Al guardar los datos correctamente se muestra la notificación de la figura 8.28
8.2.8 Registrar gastos
Al seleccionar la opción registrar compras, se ingresan los valores en los campos y
se muestra la notificación de la figura 8.29
Figura 8.28 Notificación datos guardados
Figura 8.29 Notificación datos guardados correctamente
116
8.2.9 Registrar inventario
Al seleccionar la opción de registrar inventario en la sección de envases granja, se
ingresan los campos que piden y se muestra la figura 8.30.
Cuando en el inventario la cantidad de pollos sea menor 0 igual a 150 notifica para
programar un embarque. En la figura 8.31 se muestra esta notificación.
Figura 8.31 Notificación advertencia pollos en la granja
Figura 8.30 Registrar inventario
117
Al seleccionar la sección de rastro se ingresan los valores en los campos
correspondientes y al guardar la información se muestra la notificación de la figura
8.32
8.2.10 Consultar inventario
Para consultar el inventario del rastro se ingresa la fecha, si existen registros en esa
fecha se muestra la información de la figura 8.33, en caso contrario se muestra una
notificación de que no existen registros en esa fecha de la figura 8.34.
Figura 8.32 Registrar pedacería rastro
Figura 8.33 Consultar inventario rastro
118
Al seleccionar la sección de consultar inventario se ingresa la fecha. Si existen
registros muestra la figura 8.35, en caso contrario notifica como se muestra en la
figura 8.36
Figura 8.34 Notificación no existen registros en esa fecha del inventario rastro
Figura 8.35 Consulta inventario granja
Figura 8.36 Notificación no existen registro en esa fecha inventario granja
119
8.2.11 Registrar bonificaciones
Al seleccionar la opción de registrar bonificaciones se ingresan los valores en los
campos correspondientes si el numero de embarque no existe se muestra la
notificación de la figura 8.37
Si no existen errores entonces guarda la información y muestra la notificación. En la
figura 8.38
Figura 8.37 Notificación error al guardar información
Figura 8.38 Registro bonificaciones correctamente
120
8.2.12 Contabilidad
Al seleccionar la opción de contabilidad, se selecciona la opción de búsqueda: día,
semana, mes ó año. Y se ingresa la fecha si existen registros se muestra la figura
8.39 en caso contrario se muestra la figura 8.40.
Figura 8.40 Sin registros en esa fecha
Figura 8.39 Contabilidad
121
Capítulo 9
Conclusión
Este trabajo de tesis me ayudado a comprender mejor el funcionamiento de SOA y
las grandes ventajas que ofrece, es decir:
Interoperabilidad
Reutilización
Escalabilidad
La interoperabilidad es por que se puede consumir el Servicio web con cualquier
cliente, siempre y cuando sea compatible con servicios web como es .net, java
entre otros.
La reutilización, se da porque estos servicios en un futuro se pueden ofrecer a otros
clientes o se pueden utilizar para otros proyectos. Ya sea realizando contratos de
servicios. O implementando otras aplicaciones clientes.
Escalabilidad, se refiere a que se puede mejor la aplicación cliente. Es decir se
puede desarrollar el cliente para consumirlo desde un celular o un ipad, entres
otros siempre y cuando sean dispositivos móviles con acceso a internet.
Las ventajas de modelar servicios con respecto al modelado de aplicaciones
clásicas son:
Menos recursos de hardware , por ejemplo disco duro
Tiempo en el desarrollo de otras aplicaciones, pues podemos contratar y
consumir servicios web.
Y por su puesto la interoperabilidad de los servicios web.
Dinero, ya que en algunas ocasiones conviene mas contratar algo ya hecho
a empezar el proyecto desde 0.
Otro punto importante es la ingeniería de software ya que en lo personal, me
parece que esta a la par, pues te facilita la programación y el tiempo de entrega,
por que tienes en concreto lo que vas a realizar. De esta manera es más fácil
obtener los servicios Web. Ahora el modelado de Servicios ayuda a visualizar como
están organizados los servicios y comprobar el comportamiento de cada servicio. El
122
modelado de negocios recordemos que es un punto fundamental para poder
desarrollar una aplicación de negocios por que con ello se identifican los procesos
de negocio. Para que después podamos hacer la orquestación de servicios.
Programar en c# con la suite de visual studio ayuda mucho ya que con ello
ahorramos tiempo. Por ejemplo al generar los WSDL o establecer la comunicación
por medio de SOAP y no tener que hacerlo manualmente. Pero ojo no olvidemos
que para poder desarrollar algo primero tenemos que entender que hace cada
parte.
El WSDL es algo muy importante a la hora de ofrecer nuestro servicio o consumirlo.
Ya que en el especifican las descripciones de cada servicio por ejemplo que
parámetros y que tipo de parámetros requiere.
En verdad me siento orgulloso por desarrollar esta aplicación no solo por
obligación si no por satisfacción al poder ayudar a mi padre en su negocio. Es por
ello que cada punto lo hice lo mejor posible.
123
Bibliografía
[1]. Champy, James. Reengineering Management: The Mandate for New Leadership.
New York, NY: HarperCollins : s.n., 1995.
[2]. Solid and comprehensive introduction about how information technology enables
business improvement and reengineering. Davenport, Thomas H. Boston, MA:
Harvard Business School Press. : s.n., 1993.
[3]. Champy, Michael Hammer and James. Reengineering the Corporation A
Manifesto for Business Revolution. . 1993.
[4]. Harrington, H. James. Business Process Improvement: The Breakthrough
Strategy for Total Quality, Productivity, and Competitiveness. New York, NY :
McGraw-Hill.Another contributor to the topic of business re-engineering. , 1991.
[5]. Ivar Jacobson, Maria Ericsson, and Agneta Jacobson. The Object
Advantage—Business Process Reengineering with Object Technology. s.l. : Addison
Wesley Longman., 1994.
[6]. Tushman, David A. Nadler and Michael L. Competing by Design—the Power
of Organizational Architecture. Oxford University Press. Defines organizational
architecture and capabilities as a source of competitive advantage. 1999.
[7]. Odell, James J. Advanced Object-Oriented Analysis & Design Using UML. . s.l. :
Cambridge University Press., 1998.
[8]. Activity-Based Management: Arthur Andersen's Lessons from the ABM Battlefield.
Wiley Cost Management Series. Keys, R. Steven Player and David. 1999.
[9]. ts.mah.se/. [En línea]
ts.mah.se/RUP/RationalUnifiedProcess/process/workflow/ovu_core.htm.
[10]. Davenport, Thomas H. Process Innovation—Reengineering Work through
Information Technology. Boston, MA: Harvard Business School Press. : s.n., 1993.
[11]. Warner Onstine, Rick Hightower. Creación de SOA con servicios web. 2011.
[12]. Patrick Grässle, Henriette Baumann, Philippe Baumann. UML 2.0 in Action
A Project-Based Tutorial. s.l. : Packt Publishing Ltd, 2005.
124
[13]. Leffingwell, Dean. Agile software requirements Lean RequiRements PRactices
foR teams , PRogRams , and the enteRPRise.
[14]. Eric J. Naiburg, Robert A. Maksimchuk. UML for Database Design . s.l. :
Addison Wesley .
[15]. Sánchez Lopez, Dr. Abraham. Notas Curso de UML . 2011 .
[16]. Bell, Michael. Service Oriented Modeling. New Jersey : Jonh Wiley & Sons Inc.,
Hoboken, 2008.
[17]. Matjaz B. Juric, Ramesh Loganathan,Poornachandra Sarang, Frank
Jennings. SOA Approach to Integration XML, Web services in real-world SOA
projects . Birmingham : Pakt Publishing Ltd, 2007.
[18]. Corporation, Microsoft. Whitepaper: La arquitectura SOA de Microsoft®
aplicada al mundo real. 2006.
[19]. MacVittie, Lori. Technical Marketing Manager, Application Services. 2007.
126
Apéndice A
Imágenes del prototipo de la interfaz de usuario
Figura 4.5.1: Mapa sketchflow PSM
Pantallas de navegación principal
Figura 4.5.2 Principal PSM
128
Registrar pagos compras
Consultar embarques
Figura 4.5.6 Consultar embarques PSM
Figura 4.5.5 Registro pagos compras PSM
133
Apéndice B
WSDL
7.25 Compras WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="RegistroCompras"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Nota" type="s:int"/><s:element
minOccurs="0" maxOccurs="1" name="fecha" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="totalPollos" type="s:int"/><s:element
minOccurs="0" maxOccurs="1" name="Descripcion" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="promedio" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="precitotal" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="mortalidad" type="s:boolean"/><s:element
minOccurs="1" maxOccurs="1" name="bon" type="s:double"/><s:element
minOccurs="0" maxOccurs="1" name="descripcbon" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="pahogados"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="RegistroComprasResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RegistroComprasResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaCompras"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaComprasResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
name="ConsultaComprasResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="MuestraArticulos"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="N_Emb"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="MuestraArticulosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
134
name="MuestraArticulosResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaComprasNota"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="N_Nota"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaComprasNotaResponse"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="ConsultaComprasNotaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="PagosCompras"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="fechaPagoEmb"
type="s:string"/><s:element minOccurs="1" maxOccurs="1"
name="TotalDepositadoEmbarque" type="s:double"/><s:element minOccurs="1"
maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="PagosComprasResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="PagosComprasResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="PagosComprasCompletos"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="PagosComprasCompletosResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="PagosComprasCompletosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="PagosComprasCliente"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="fechaPagoEmb"
type="s:string"/><s:element minOccurs="1" maxOccurs="1"
name="TotalDepositadoEmbarque" type="s:double"/><s:element minOccurs="1"
maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="PagosComprasClienteResponse"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="PagosComprasClienteResult"
135
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGastosPagosEmbarquesDate"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGastosPagosEmbarquesDateResponse"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1"
name="GetGastosPagosEmbarquesDateResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGastosComprasGeneralSemana"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGastosComprasGeneralSemanaResponse"><s:complexType><s:sequen
ce><s:element minOccurs="0" maxOccurs="1"
name="GetGastosComprasGeneralSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGastosComprasGeneralMes"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGastosComprasGeneralMesResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GetGastosComprasGeneralMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGananciasGastosComprasGeneralYear"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasGastosComprasGeneralYearResponse"><s:complexType><s:s
equence><s:element minOccurs="0" maxOccurs="1"
name="GetGananciasGastosComprasGeneralYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element></s:sche
ma></wsdl:types>
136
7.26 Ventas WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="RegistroMenudeo"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="total" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="descuento" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="cantidad" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="Precio" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="tipoVenta" type="s:int"/><s:element
minOccurs="1" maxOccurs="1" name="TipoventaMostrador"
type="s:int"/><s:element minOccurs="1" maxOccurs="1"
name="idPrecioMostrador"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="RegistroMenudeoResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RegistroMenudeoResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroVariasCantidades"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="cantidad" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="Precio" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="tipoVenta" type="s:int"/><s:element
minOccurs="1" maxOccurs="1" name="TipoventaMostrador"
type="s:int"/><s:element minOccurs="1" maxOccurs="1" name="descuento"
type="s:double"/></s:sequence></s:complexType></s:element><s:element
name="RegistroVariasCantidadesResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="RegistroVariasCantidadesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroVentasMayoreo"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Nota" type="s:int"/><s:element
minOccurs="0" maxOccurs="1" name="fecha" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="totalPollos" type="s:int"/><s:element
minOccurs="0" maxOccurs="1" name="Descripcion" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="promedio" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="precitotal" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="mortalidad" type="s:boolean"/><s:element
137
minOccurs="1" maxOccurs="1" name="bon" type="s:double"/><s:element
minOccurs="0" maxOccurs="1" name="descripcbon" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="pahogados" type="s:int"/><s:element
minOccurs="1" maxOccurs="1" name="IncrementoPrecioCliente"
type="s:double"/><s:element minOccurs="0" maxOccurs="1"
name="NombreCliente"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroVentasMayoreoResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="RegistroVentasMayoreoResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="AdeudoCliente"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="AdeudoClienteResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="AdeudoClienteResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="GetExisteAdeudo"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="GetExisteAdeudoResponse"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="GetExisteAdeudoResult"
type="s:boolean"/></s:sequence></s:complexType></s:element><s:element
name="SetPagoEmbarque"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="fechaPago" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="deposito" type="s:double"/><s:element
minOccurs="1" maxOccurs="1" name="Nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="SetPagoEmbarqueResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="SetPagoEmbarqueResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasVentasGeneral"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
138
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasVentasGeneralResponse"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1"
name="GetGananciasVentasGeneralResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGananciasVentasGeneralSemana"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasVentasGeneralSemanaResponse"><s:complexType><s:seque
nce><s:element minOccurs="0" maxOccurs="1"
name="GetGananciasVentasGeneralSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGananciasVentasGeneralMes"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasVentasGeneralMesResponse"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1"
name="GetGananciasVentasGeneralMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="GetGananciasVentasGeneralYear"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetGananciasVentasGeneralYearResponse"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1"
name="GetGananciasVentasGeneralYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element></s:sche
ma></wsdl:types>
139
7.27 Pedidos WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="RegistrarPedidos"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="FechaEntrega" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="NombreCliente"
type="s:string"/><s:element minOccurs="1" maxOccurs="1" name="Total"
type="s:double"/><s:element minOccurs="1" maxOccurs="1" name="ACuenta"
type="s:double"/><s:element minOccurs="1" maxOccurs="1" name="descuento"
type="s:double"/></s:sequence></s:complexType></s:element><s:element
name="RegistrarPedidosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RegistrarPedidosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroCantidadVentasMenudeo"><s:complexType><s:sequence><s:ele
ment minOccurs="1" maxOccurs="1" name="Cantidad"
type="s:double"/><s:element minOccurs="1" maxOccurs="1" name="TipoVenta"
type="s:int"/><s:element minOccurs="1" maxOccurs="1"
name="TipoVentaMostrador" type="s:int"/><s:element minOccurs="1"
maxOccurs="1" name="Precio"
type="s:double"/></s:sequence></s:complexType></s:element><s:element
name="RegistroCantidadVentasMenudeoResponse"><s:complexType><s:sequenc
e><s:element minOccurs="0" maxOccurs="1"
name="RegistroCantidadVentasMenudeoResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="NPedido"><s:complexType/></s:element><s:element
name="NPedidoResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="NPedidoResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="getPagoPedidos"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="getPagoPedidosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="getPagoPedidosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
140
name="getPagoPedidosFinalizado"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="getPagoPedidosFinalizadoResponse"><s:complexType><s:sequence><s:el
ement minOccurs="1" maxOccurs="1" name="getPagoPedidosFinalizadoResult"
type="s:boolean"/></s:sequence></s:complexType></s:element><s:element
name="consultaPedidosNota"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="consultaPedidosNotaResponse"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="consultaPedidosNotaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="consultaPedidosNotaDescripcionCantidades"><s:complexType><s:sequen
ce><s:element minOccurs="1" maxOccurs="1" name="Nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="consultaPedidosNotaDescripcionCantidadesResponse"><s:complexType><
s:sequence><s:element minOccurs="0" maxOccurs="1"
name="consultaPedidosNotaDescripcionCantidadesResult"><s:complexType><s:s
equence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaDescripcionPedidosDate"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaDescripcionPedidosDateResponse"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1"
name="ConsultaDescripcionPedidosDateResult"><s:complexType><s:sequence><
s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultarEntregaPedidosDia"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
141
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarEntregaPedidosDiaResponse"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1"
name="ConsultarEntregaPedidosDiaResult"><s:complexType><s:sequence><s:ele
ment
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultarPedidosRealizadosDia"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarPedidosRealizadosDiaResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ConsultarPedidosRealizadosDiaResult"><s:complexType><s:sequence><s:
element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosDia"><s:complexType><s:sequence><s:elemen
t minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosDiaResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ConsultaGananciasPedidosDiaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosSemana"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosSemanaResponse"><s:complexType><s:sequen
ce><s:element minOccurs="0" maxOccurs="1"
name="ConsultaGananciasPedidosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosMes"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
142
name="ConsultaGananciasPedidosMesResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ConsultaGananciasPedidosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosYear"><s:complexType><s:sequence><s:eleme
nt minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaGananciasPedidosYearResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="ConsultaGananciasPedidosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element></s:schema></ws
dl:types>
7.28 Descuentos WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="CantidadTotalDescuentoPedidosDia"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoPedidosDiaResponse"><s:complexType><s:seque
nce><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoPedidosDiaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="CantidadTotalDescuentoPedidosSemana"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="date"
type="s:string"/><s:element minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoPedidosSemanaResponse"><s:complexType><s:s
equence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoPedidosSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
143
name="CantidadTotalDescuentoPedidosMes"><s:complexType><s:sequence><s:e
lement minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoPedidosMesResponse"><s:complexType><s:sequ
ence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoPedidosMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="CantidadTotalDescuentoPedidosYear"><s:complexType><s:sequence><s:e
lement minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoPedidosYearResponse"><s:complexType><s:sequ
ence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoPedidosYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="CantidadTotalDescuentoMenudeoDia"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoMenudeoDiaResponse"><s:complexType><s:sequ
ence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoMenudeoDiaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="CantidadTotalDescuentoMenudeoSemana"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1" name="date"
type="s:string"/><s:element minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoMenudeoSemanaResponse"><s:complexType><s:
sequence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoMenudeoSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="CantidadTotalDescuentoMenudeoMes"><s:complexType><s:sequence><s
144
:element minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoMenudeoMesResponse"><s:complexType><s:seq
uence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoMenudeoMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="CantidadTotalDescuentoMenudeoYear"><s:complexType><s:sequence><s
:element minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CantidadTotalDescuentoMenudeoYearResponse"><s:complexType><s:seq
uence><s:element minOccurs="0" maxOccurs="1"
name="CantidadTotalDescuentoMenudeoYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt
name="ConsultaTotalDescuentosDia"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosDiaResponse"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1"
name="ConsultaTotalDescuentosDiaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosSemana"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosSemanaResponse"><s:complexType><s:sequenc
e><s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalDescuentosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
145
name="ConsultaTotalDescuentosMesResponse"><s:complexType><s:sequence><
s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalDescuentosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalDescuentosYearResponse"><s:complexType><s:sequence><
s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalDescuentosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element></s:schema></ws
dl:types>
7.29 GastosPagos WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="RegistroGastos"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="descripcion" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="total" type="s:double"/><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroGastosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RegistroGastosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastossDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastossDateResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1"
name="ConsultaTotalGastossDateResult"><s:complexType><s:sequence><s:elem
ent
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalGastosDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
146
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastosDateResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="ConsultaTotalGastosDateResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastosSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="a" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="b"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastosSemanaResponse"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1"
name="ConsultaTotalGastosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosSemana"><s:complexType><s:sequence><s:elemen
t minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosSemanaResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="DetalleConsultaGastosSemanaResult"><s:complexType><s:sequence><s:e
lement
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalGastosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastosMesResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="ConsultaTotalGastosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosMesResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1"
147
name="DetalleConsultaGastosMesResult"><s:complexType><s:sequence><s:elem
ent
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalGastosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalGastosYearResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="ConsultaTotalGastosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaGastosYearResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1"
name="DetalleConsultaGastosYearResult"><s:complexType><s:sequence><s:elem
ent
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element></s:schema></wsdl:types>
7.30 Inventario WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="Inventarios"><s:complexType><s:sequence><s:element minOccurs="1"
maxOccurs="1" name="TotalPollos" type="s:int"/><s:element minOccurs="1"
maxOccurs="1" name="ahogados" type="s:int"/><s:element minOccurs="1"
maxOccurs="1" name="NEmbarque"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="InventariosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="InventariosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="consultaInventario"><s:complexType/></s:element><s:element
name="consultaInventarioResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="consultaInventarioResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
148
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="EmbPollos"><s:complexType><s:sequence><s:element minOccurs="1"
maxOccurs="1" name="CantidadPollosAhogados" type="s:int"/><s:element
minOccurs="1" maxOccurs="1" name="PollosEmbasados"
type="s:int"/><s:element minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="EmbPollosResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="EmbPollosResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="AlertaE"><s:complexType/></s:element><s:element
name="AlertaEResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="AlertaEResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RIRastro"><s:complexType><s:sequence><s:element minOccurs="1"
maxOccurs="1" name="CantidadPollosAhogados" type="s:int"/><s:element
minOccurs="1" maxOccurs="1" name="cantidadVivos"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="RIRastroResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RIRastroResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="RegistroCantidadInventarioRastro"><s:complexType><s:sequence><s:ele
ment minOccurs="1" maxOccurs="1" name="idVentaMostrador"
type="s:int"/><s:element minOccurs="1" maxOccurs="1" name="Cantidad"
type="s:double"/></s:sequence></s:complexType></s:element><s:element
name="RegistroCantidadInventarioRastroResponse"><s:complexType><s:sequenc
e><s:element minOccurs="0" maxOccurs="1"
name="RegistroCantidadInventarioRastroResult"
type="s:string"/></s:sequence></s:complexType></s:element></s:schema></ws
dl:types>
7.31 Bonificaciones WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
149
name="RegistroBonificacion"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="Bonificacion" type="s:double"/><s:element
minOccurs="0" maxOccurs="1" name="descripcion" type="s:string"/><s:element
minOccurs="1" maxOccurs="1" name="nota"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="RegistroBonificacionResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="RegistroBonificacionResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarBonificaciones"><s:complexType><s:sequence><s:element
minOccurs="1" maxOccurs="1" name="NEmbarque"
type="s:int"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarBonificacionesResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1"
name="ConsultarBonificacionesResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="CBonificacionesDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="Fecha"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="CBonificacionesDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
name="CBonificacionesDateResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="TBonificacionesDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="Fecha"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="TBonificacionesDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="TBonificacionesDateResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="TBonificacionesSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
150
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="TBonificacionesSemanaResponse"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="TBonificacionesSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="TBonificacionesMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="TBonificacionesMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="TBonificacionesMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="TBonificacionesYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="TBonificacionesYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="TBonificacionesYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element></s:sche
ma></wsdl:types>
7.32 Contabilidad WSDL
<wsdl:types><s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/"><s:element
name="GetDataMenudeoDiaTotal"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GetDataMenudeoDiaTotalResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="GetDataMenudeoDiaTotalResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:comp
lexType name="ArrayOfString"><s:sequence><s:element minOccurs="0"
maxOccurs="unbounded" name="string" nillable="true"
type="s:string"/></s:sequence></s:complexType><s:element
name="GetDataMenudeoDescripcionDia"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
151
name="GetDataMenudeoDescripcionDiaResponse"><s:complexType><s:sequence
><s:element minOccurs="0" maxOccurs="1"
name="GetDataMenudeoDescripcionDiaResult"><s:complexType><s:sequence><
s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoSemana"><s:complexType><s:sequence><s:
element minOccurs="0" maxOccurs="1" name="a" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="b"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoSemanaResponse"><s:complexType><s:seq
uence><s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalVentasMenudeoSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoSemana"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="date"
type="s:string"/><s:element minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoSemanaResponse"><s:complexType><s:se
quence><s:element minOccurs="0" maxOccurs="1"
name="DetalleConsultaVentasMenudeoSemanaResult"><s:complexType><s:seque
nce><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoMes"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoMesResponse"><s:complexType><s:sequenc
e><s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalVentasMenudeoMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoMes"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
152
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoMesResponse"><s:complexType><s:seque
nce><s:element minOccurs="0" maxOccurs="1"
name="DetalleConsultaVentasMenudeoMesResult"><s:complexType><s:sequence
><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoYear"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaTotalVentasMenudeoYearResponse"><s:complexType><s:sequen
ce><s:element minOccurs="0" maxOccurs="1"
name="ConsultaTotalVentasMenudeoYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoYear"><s:complexType><s:sequence><s:e
lement minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="DetalleConsultaVentasMenudeoYearResponse"><s:complexType><s:seque
nce><s:element minOccurs="0" maxOccurs="1"
name="DetalleConsultaVentasMenudeoYearResult"><s:complexType><s:sequence
><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="GananciasMayoreoDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoDateResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="GananciasMayoreoDateResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoSemanaResponse"><s:complexType><s:sequence><s:e
153
lement minOccurs="0" maxOccurs="1" name="GananciasMayoreoSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="Mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoMesResponse"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="GananciasMayoreoMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GananciasMayoreoYearResponse"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1" name="GananciasMayoreoYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGDia"><s:complexType><s:sequence><s:element minOccurs="0"
maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGDiaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGDiaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGSemana"><s:complexType><s:sequence><s:element minOccurs="0"
maxOccurs="1" name="date" type="s:string"/><s:element minOccurs="0"
maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGSemanaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGMes"><s:complexType><s:sequence><s:element minOccurs="0"
maxOccurs="1" name="mes" type="s:string"/><s:element minOccurs="0"
maxOccurs="1" name="dyear"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
154
nt name="BGYear"><s:complexType><s:sequence><s:element minOccurs="0"
maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGComprasDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGComprasDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGComprasDateResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGComprasSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGComprasSemanaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGComprasSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGComprasMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGComprasMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGComprasMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="GBComprasYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBComprasYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBComprasYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="GBonificacionesDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
155
name="GBonificacionesDateResponse"><s:complexType><s:sequence><s:elemen
t minOccurs="0" maxOccurs="1" name="GBonificacionesDateResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="GBonificacionesSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBonificacionesSemanaResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="GBonificacionesSemanaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="GBonificacionesMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBonificacionesMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBonificacionesMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="GBonifciacionesYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBonifciacionesYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBonifciacionesYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="ConsultarRastroDia"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarRastroDiaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="ConsultarRastroDiaResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="ConsultarRastroSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarRastroSemanaResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1"
156
name="ConsultarRastroSemanaResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultarRastroMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarRastroMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
name="ConsultarRastroMesResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultarRastroYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarRastroYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
name="ConsultarRastroYearResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaEmbaseDia"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaEmbaseDiaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1"
name="ConsultaEmbaseDiaResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaEmbaseSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaEmbaseSemanaResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1"
name="ConsultaEmbaseSemanaResult"><s:complexType><s:sequence><s:elemen
157
t
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultaEmbaseMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultaEmbaseMesResponse"><s:complexType><s:sequence><s:elemen
t minOccurs="0" maxOccurs="1"
name="ConsultaEmbaseMesResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="ConsultarEmbasesYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="ConsultarEmbasesYearResponse"><s:complexType><s:sequence><s:elem
ent minOccurs="0" maxOccurs="1"
name="ConsultarEmbasesYearResult"><s:complexType><s:sequence><s:element
ref="s:schema"/><s:any/></s:sequence></s:complexType></s:element></s:seque
nce></s:complexType></s:element><s:element
name="Inventario"><s:complexType/></s:element><s:element
name="InventarioResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="InventarioResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BGeneralGastosDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGastosDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGeneralGastosDateResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGatosSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGatosSemanaResponse"><s:complexType><s:sequence><s:elem
158
ent minOccurs="0" maxOccurs="1" name="BGeneralGatosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGastosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGastosMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGeneralGastosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGastosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BGeneralGastosYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BGeneralGastosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBPedidosDateResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosSemanaResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBPedidosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBPedidosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
159
name="GBPedidosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBPedidosYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="GBPedidosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosDateResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="GBGeneralDescuentosDateResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosSemana"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosSemanaResponse"><s:complexType><s:sequence>
<s:element minOccurs="0" maxOccurs="1"
name="GBGeneralDescuentosSemanaResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosMesResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="GBGeneralDescuentosMesResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="GBGeneralDescuentosYearResponse"><s:complexType><s:sequence><s:el
ement minOccurs="0" maxOccurs="1" name="GBGeneralDescuentosYearResult"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BalanceGeneralDate"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date"
160
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BalanceGeneralDateResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BalanceGeneralDateResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BalanceGeneralSemanal"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="date" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="date2"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BalanceGeneralSemanalResponse"><s:complexType><s:sequence><s:ele
ment minOccurs="0" maxOccurs="1" name="BalanceGeneralSemanalResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BalanceGeneralMes"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="mes" type="s:string"/><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BalanceGeneralMesResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BalanceGeneralMesResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element><s:eleme
nt name="BalanceGeneralYear"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="year"
type="s:string"/></s:sequence></s:complexType></s:element><s:element
name="BalanceGeneralYearResponse"><s:complexType><s:sequence><s:element
minOccurs="0" maxOccurs="1" name="BalanceGeneralYearResult"
type="tns:ArrayOfString"/></s:sequence></s:complexType></s:element></s:sche
ma></wsdl:types>