Tesis Desarrollo de un Sistema de información basado en SOA by Manuel Maldonado Mendoza

170
Desarrollo de un sistema de Información Basado en SOA 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 of Tesis Desarrollo de un Sistema de información basado en SOA by Manuel Maldonado Mendoza

Desarrollo de un sistema de Información Basado en SOA Manuel Maldonado Mendoza

.

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

72

5.4 Diseño de la base de datos para la aplicación PSM

Figura 5.2 Diseño de la base de datos 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.

125

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

127

Compras

Figura 4.5.3 Compras PSM

Registrar compras

Figura 4.5.4 Registrar compras PSM

128

Registrar pagos compras

Consultar embarques

Figura 4.5.6 Consultar embarques PSM

Figura 4.5.5 Registro pagos compras PSM

129

Contabilidad

Figura 4.5.7 Contabilidad PSM

Gastos

Figura 4.5.8 GastosPagos PSM

130

Mayoreo

Figura 4.5.9 Mayoreo PSM

Menudeo

Figura 4.5.10 Menudeo PSM

131

Pedidos

Figura 4.5.11 Pedidos PSM

Figura 4.5.12 Consulta embarques PSM

132

Ventas

Figura 4.5.13 Ventas 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>