Web Document Store and Printing

Anuncio
A Luisma, Javi, Marce y a toda la
gente de la GIS Cueva, en especial a
Dani y Zaka, por su inestimable ayuda.
A mis padres, por su esfuerzo y paciencia
para hacer esto posible.
Web Document Store and Printing
WEB DOCUMENT STORE AND PRINTING
Autor: Egido Cortés, Miguel.
Director: Calvo Díez, Luis Manuel.
Entidad colaboradora: Fractalia Remote Systems, S.L.
RESUMEN
Existen hoy en día dos tendencias que se manifiestan visiblemente, como son la
tendencia a utilizar soportes digitales en lugar de papel para el manejo de la
información y el crecimiento del número de instalaciones que proporcionan acceso
público a Internet y de sus usuarios. Sin embargo ambas presentan ciertas
limitaciones. Por un lado, el papel como soporte es en muchas ocasiones necesario.
Por otro, el carácter público impone restricciones respecto a los recursos físicos
puestos a disposición de los usuarios.
Existe también una vinculación clara entre ambos aspectos. Los usuarios de
entornos de acceso público a Internet encuentran, con excesiva frecuencia, la
limitación de no poder utilizar una impresora para plasmar en papel sus
documentos en formato digital. Esta limitación viene impuesta en unos casos por la
inexistencia de una impresora en el entorno de acceso público, y en otros por la
incapacidad del gestor de la instalación para facturar el servicio, generalmente por
no disponer de un sistema de control que lo justifique.
El proyecto que se presenta a continuación consiste en la elaboración de un sistema
que permita superar esta limitación. Esto es, salvando la necesidad obvia de
existencia de la impresora en la instalación de acceso público, el sistema
desarrollado permite a los usuarios utilizar la impresora cuando les sea necesaria,
efectuando un control de los trabajos de impresión realizados, y estableciendo al
i
Web Document Store and Printing
mismo tiempo un sistema mediante el cual los gestores de estas instalaciones
pueden ofrecer y facturar el servicio de la misma manera que lo hacen con el resto
de servicios ofrecidos.
El sistema desarrollado está formado por varios componentes de distinta
naturaleza. Por una parte, se ha elaborado un modelo de datos que permite la
gestión de los datos persistentes del sistema. La base de datos resultante es
utilizada tanto para el almacenamiento de los documentos de usuarios como para
mantener un soporte estable de las propiedades necesarias para la gestión del
sistema.
Como abstracción a este modelo de datos se ha desarrollado también un servicio
web, que representa un modo seguro, fiable y ubicuo de obtener acceso a los datos
manejados. Este servicio es utilizado por el resto de componentes como interfaz
con la base de datos.
Por otro lado, se ha desarrollado un módulo consistente en un servicio Windows,
que actúa de enlace entre el sistema desarrollado y el sistema operativo sobre el
que se ejecuta. Este servicio realiza la monitorización y el control explícitos de los
trabajos de impresión, y de sus propiedades, gestionados por el sistema operativo a
petición del usuario.
La parte visible del sistema consiste en un conjunto de páginas Web, las cuales
representan el interfaz presentado al usuario, y mediante el cual se permite el
acceso a todas las funcionalidades ofrecidas por el sistema. Esta interfaz está
dividida en dos secciones. Una primera destinada al usuario final, con el objetivo
de cubrir sus necesidades de impresión. La otra destinada a los explotadores del
servicio, con el objetivo de cubrir sus necesidades de gestión del mismo.
ii
Web Document Store and Printing
Por último, se ha desarrollado un pequeño servicio encargado de realizar un
mantenimiento mínimo de la información manejada por el sistema. La labor
principal de este componente es la eliminación de documentos considerados
obsoletos para el sistema, para así limitar en lo posible los recursos de hardware de
almacenamiento utilizados.
En la siguiente memoria del proyecto se pueden ver reflejados los resultados del
trabajo realizado para la construcción del sistema. Se comienza haciendo una breve
presentación del proyecto, sus motivaciones y los recursos utilizados. Más tarde se
muestran las definiciones formales del sistema a desarrollar, para después detallar
la solución técnica adoptada.
Detallando a continuación la planificación de trabajos seguida y así como una
estimación de los costes vinculados al desarrollo del sistema, se concluye con un
estudio de los resultados y una propuesta de posibles mejoras de funcionalidad
futuras.
iii
Web Document Store and Printing
ABSTRACT
There are now two tendencies which manifest visibly, such as the trend of using
digital media instead of paper for information management and the growth of the
number of facilities, together with its users, providing public Internet access.
However, both have certain limitations. On one hand, paper as a support is often
necessary. On the other, the public nature imposes restrictions on the physical
resources that can be put available to users.
There is also a clear link between both aspects. Users of public access to the
Internet environments find, too often, the limitation of not being able to use a
printer in order to print into paper their digital documents. This limitation is
imposed in some cases by the absence of a printer in the public access
environment, and in others by the inability of the manager of the facility to bill the
service, usually due to the lack of a control system that justifies it.
The project presented below consists in the development of a system which allows
overcoming this limitation. That is, saving the obvious needing for the existence of
a printer in the public access environment, the developed system allows users to
use the printer when it is necessary, carrying out a control of printing jobs
performed, and establishing at the same time a system whereby the managers of
these facilities can provide this service and bill it, doing it at the same way they do
with other services.
The developed system consists of multiple components of different nature. On one
hand, a data model has been developed, which allows system persistent data to be
managed. The resulting database is used for the storage of user documents as well
as to maintain a stable support of properties needed to manage the system.
iv
Web Document Store and Printing
As an abstraction to this data model, a web service has also been developed, which
represents a safe, reliable and ubiquitous way for gaining access to managed data.
This service is used by the other components as an interface with the database.
On other hand, a module consisting of a Windows service has been developed,
which acts as a link between the developed system and the operating system on
which it runs. This service carries out the explicit monitoring and control of
printing jobs, as well as of their properties, managed by the operating system to
user request.
The visible part of the system consists of a set of Web pages, which represent the
interface presented to the user, and through which the access to every feature
offered by the system is allowed. This interface is divided into two sections. One
of them is reserved for the end user, with the aim of meeting their printing needs.
The other reserved for the managers of the service, with the aim of meeting their
needs for service management.
Finally, a small service has been developed, which is in charge to perform minimal
maintenance of the information handled by the system. The main task of this
component is removing those documents considered already obsolete for the
system, thereby limiting as possible the storage hardware resources used.
Inside the next report of the project, the results of the work accomplished to build
the system can be seen reflected. It begins with a brief presentation of the project,
its motivations and the resources used. Later, it shows the formal definitions of the
system to be developed and afterwards the detail of the technical solution adopted.
Detailing then the followed work planning, as well as an estimation of the costs
associated with system development, it concludes with a study of the results and a
proposal of possible future functionality enhancements.
v
Web Document Store and Printing
ÍNDICE
1. INTRODUCCIÓN ............................................................................................ 1
1.1. PRESENTACIÓN DEL PROYECTO ........................................................................... 2
1.2. MOTIVACIÓN ................................................................................................. 3
2. ESTADO DEL ARTE ........................................................................................ 6
2.1. RESPECTO DEL ALMACENAMIENTO TEMPORAL ........................................................ 7
2.2. RESPECTO DE LA GESTIÓN DE RECURSOS ................................................................ 8
3. OBJETIVOS ................................................................................................. 10
4. TECNOLOGÍA UTILIZADA............................................................................. 12
4.1. LENGUAJES Y OTROS RECURSOS DE PROGRAMACIÓN .............................................. 13
4.1.1. Visual C# .NET .................................................................................... 13
4.1.2. Visual C++ .NET .................................................................................. 14
4.1.3. ADO .NET ........................................................................................... 14
4.1.4. ASP .NET ............................................................................................ 14
4.1.5. Detours .............................................................................................. 15
4.1.6. TextCrypter ........................................................................................ 15
4.1.7. Log4Net ............................................................................................. 15
4.2. PROTOCOLOS Y ESTÁNDARES ............................................................................ 16
4.2.1. HTTPS – Hypertext Transfer Protocol Secure ...................................... 16
4.2.2. AES – Advanced Encryption Protocol .................................................. 16
4.2.3. SOAP – Simple Object Access Protocol ............................................... 17
4.2.4. XML – Extensible Markup Language .................................................. 17
4.3. HERRAMIENTAS ............................................................................................ 18
4.3.1. Visual Studio 2008 ............................................................................. 18
vi
Web Document Store and Printing
5. DEFINICIÓN DE CASOS DE USO ................................................................... 19
5.1. DIAGRAMA DE CASOS DE USO ........................................................................... 20
5.2. DEFINICIÓN DE CASOS DE USO .......................................................................... 21
5.2.1. Almacenar documento ....................................................................... 21
5.2.2. Descargar documento ........................................................................ 22
5.2.3. Imprimir documento .......................................................................... 23
5.2.4. Consultar precio artículos .................................................................. 25
5.2.5. Monitorizar impresiones .................................................................... 26
5.2.6. Registrar trabajo ................................................................................ 27
5.2.7. Confirmar pago .................................................................................. 28
5.2.8. Cancelar pago .................................................................................... 30
5.2.9. Consultar precio total ........................................................................ 31
6. ESPECIFICACIÓN DE REQUISITOS ................................................................ 33
6.1. PERSPECTIVA DEL PRODUCTO ........................................................................... 34
6.2. CARACTERÍSTICAS DEL PRODUCTO...................................................................... 34
6.3. TIPOS DE USUARIOS Y CARACTERÍSTICAS .............................................................. 34
6.4. ENTORNO DE FUNCIONAMIENTO ....................................................................... 35
6.5. LIMITACIONES AL DISEÑO E IMPLEMENTACIÓN. ..................................................... 35
6.6. DOCUMENTACIÓN ......................................................................................... 36
6.7. DESCRIPCIÓN DE REQUISITOS FUNCIONALES ......................................................... 37
6.7.1. Grupo funcional 1 – Selección de documentos ................................... 37
6.7.2. Grupo funcional 2 – Subida de documentos al servidor ...................... 39
6.7.3. Grupo funcional 3 – Almacenamiento en el servidor .......................... 41
6.7.4. Grupo funcional 4 – Recuperación de archivos del servidor................ 42
6.7.5. Grupo funcional 5 – Impresión de documentos .................................. 45
vii
Web Document Store and Printing
6.7.6. Grupo funcional 6 – Facturación del servicio ...................................... 47
6.7.7. Grupo funcional 7 – Lenguajes ........................................................... 49
6.7.8. Grupo funcional 8 – Instalación.......................................................... 50
6.8. REQUISITOS DE INTERFACES EXTERNAS ................................................................ 53
6.8.1. Interfaz de usuario ............................................................................. 53
6.8.2. Interfaces Hardware .......................................................................... 55
6.8.3. Interfaces Software ............................................................................ 55
6.8.4. Interfaces de comunicación................................................................ 55
6.9. OTROS REQUISITOS NO FUNCIONALES ................................................................. 55
6.9.1. Requisitos de fiabilidad ...................................................................... 55
6.9.2. Requisitos de seguridad ..................................................................... 56
6.9.3. Requisitos de calidad ......................................................................... 56
7. ESPECIFICACIONES TÉCNICAS DEL SISTEMA ................................................ 57
7.1. DESCRIPCIÓN DEL SISTEMA .............................................................................. 58
7.1.1. Arquitectura....................................................................................... 58
7.2. COMPONENTES ............................................................................................ 60
7.2.1. Base de Datos .................................................................................... 60
7.2.2. Página Web ....................................................................................... 64
7.2.3. Servicio Web ...................................................................................... 88
7.2.4. Servicio de monitorización de impresiones ......................................... 91
7.2.5. Tarea Programada ............................................................................. 98
8. PLANIFICACIÓN ........................................................................................ 101
8.1. DESCRIPCIÓN DE LAS ACTIVIDADES LLEVADAS A CABO. .......................................... 102
8.1.1. Iteración 1 ........................................................................................ 102
8.1.2. Iteración 2 ........................................................................................ 103
viii
Web Document Store and Printing
8.2. RESUMEN DE LA PLANIFICACIÓN ...................................................................... 105
9. ESTUDIO ECONÓMICO.............................................................................. 106
9.1. COSTES DE PERSONAL ................................................................................... 107
9.2. COSTES EN MATERIALES ................................................................................ 107
9.3. COSTES INDIRECTOS ..................................................................................... 108
9.4. RESUMEN DE COSTES ................................................................................... 108
10. CONCLUSIONES Y LÍNEAS FUTURAS .......................................................... 110
10.1.
RESUMEN DE RESULTADOS ......................................................................... 111
10.2.
FUTUROS DESARROLLOS ............................................................................. 112
10.2.1. Respecto al almacenamiento e impresión ........................................ 113
10.2.2. Respecto a la facturación ................................................................. 114
11. BIBLIOGRAFÍA .......................................................................................... 116
12. GLOSARIO DE ACRÓNIMOS ...................................................................... 119
ANEXO A. MANUAL DE INSTALACIÓN Y OPERACIÓN ............................... 122
ANEXO B. MANUAL DE USUARIO FINAL .................................................. 169
ANEXO C. MANUAL DE USUARIO GESTOR .............................................. 182
ix
Web Document Store and Printing
1. Introducción
Web Document Store and Printing
1.1. Presentación del proyecto
Actualmente es clara la tendencia a utilizar soportes digitales para la creación,
almacenamiento y distribución de todo tipo de documentos, reemplazándose así el papel
como soporte físico de los mismos. Sin embargo, existen muchas situaciones en las que,
debido a la naturaleza de ciertos documentos, resulta estrictamente necesario disponer de
ellos en papel.
Por otro lado se está experimentando un rápido crecimiento del número de instalaciones en
que se proporciona acceso público a Internet y, por lo tanto, del número de usuarios que
hacen uso de estas redes públicas. Estos entornos proporcionan servicios cada vez más
variados y de mayor calidad, pero su carácter público impone ciertas limitaciones respecto a
los recursos que pueden ser puestos a disposición de los usuarios para su utilización.
La vinculación entre estos dos aspectos es clara. Los usuarios de entornos de acceso público
a Internet encuentran, con excesiva frecuencia, la limitación de no poder utilizar una
impresora para plasmar en papel sus documentos en formato digital. Esta limitación viene
impuesta en unos casos por la inexistencia de una impresora en el entorno de acceso público,
y en otros por la incapacidad del gestor de la instalación para facturar el servicio,
generalmente por no disponer de un sistema de control que justifique su cobro.
El proyecto llevado a cabo consiste en un sistema que permite salvar esta limitación. Esto es,
siendo obvia la necesidad de existencia de la impresora en la instalación de acceso público, el
sistema desarrollado permite su uso a los usuarios cuando les sea necesaria, estableciendo al
mismo tiempo un sistema mediante el cual los gestores de estas instalaciones pueden ofrecer
y facturar el servicio de igual manera que lo hacen con el resto de servicios ofrecidos.
2
Web Document Store and Printing
1.2. Motivación
El presente proyecto nace con la vocación de cubrir una necesidad concreta detectada por
los usuarios de estas redes públicas. Esta necesidad consiste en tener la posibilidad de
plasmar todo tipo de contenidos digitales en un soporte físico final, esto es, la impresión de
todo tipo de documentos. Cuando un usuario hace uso de una red de acceso público a
Internet, en la gran mayoría de los casos carece de un recurso, como una impresora,
mediante el cual poder cubrir esta necesidad.
Un ejemplo claro de esta necesidad se encuentra en instalaciones hoteleras que disponen de
servicios de acceso público a Internet, mediante redes tanto cableadas como inalámbricas,
para su uso con dispositivos propios de los usuarios. Dada la gran cantidad y variedad de
usuarios del servicio en estos entornos, se encuentran necesidades de impresión de muy
diversos tipos de documentos, desde correos electrónicos hasta fotografías, pasando por
entradas de cine, entradas de conciertos, billetes de avión y tren, y una larga lista de
etcéteras.
En estas situaciones, la limitación de no disponer de una impresora conduce a los usuarios a
la necesidad de buscar alternativas. Por ejemplo, podrían acudir a los llamados “Cibers”,
teniendo que realizar un nuevo pago para un nuevo acceso a Internet simplemente para
poder imprimir el documento; o bien solicitar la impresión en la propia instalación hotelera
de manera que, en caso de que el responsable de la instalación permita la impresión, resulta
muy complicado para él tanto poder realizar como poder justificar y registrar el cobro de ese
servicio.
Por lo tanto, y con el fin de cubrir estas necesidades detectadas, se puede resumir la
motivación del proyecto en la consecución de dos grandes bloques de objetivos:
3
Web Document Store and Printing
Por una parte, se necesita desarrollar una aplicación Web que permita a los usuarios,
desde cualquier lugar donde dispongan de una conexión a Internet, transferir
cualquier documento hacia un servidor, donde este quedará almacenado, otorgándole
al usuario un número de serie. Este número de serie identificará unívocamente el
documento de manera que el usuario, posteriormente, podrá acercarse a cualquier
comercio gestionado y solicitar la impresión del documento, identificándolo
mediante el número de serie. Por parte del comerciante, hará uso de la misma
herramienta Web, la cual además le presentará el precio del servicio, en caso de
existir, obteniendo así una manera de realizar, justificar y registrar la facturación del
mismo.
Por otra parte, y como soporte al sistema anterior, se necesita desarrollar un
subsistema que permita gestionar y controlar todos los aspectos que intervienen en la
impresión de documentos, como pueden ser las propiedades de impresión, estado de
impresión de un documento y de funcionamiento de la impresora, etc. De esta
manera se permitirá adaptar la facturación del servicio a las características concretas
de cada trabajo de impresión.
Además, teniendo en cuenta la gran variedad en cuanto a la naturaleza y contenidos de los
archivos que manejará el sistema, los cuales además no pueden ser conocidos a priori debido
al carácter público necesario para la solución, se debe tener especial cuidado con la
seguridad del sistema. Por lo tanto, otro objetivo importante del sistema desarrollado es
garantizar la seguridad de los documentos gestionados por el mismo. Así, se debe garantizar
que los documentos no son interceptados, inspeccionados ni modificados por entes externos
en ningún momento, tanto durante la transmisión de los mismos a través del canal
inherentemente inseguro que representa Internet, como durante su almacenamiento
temporal en el servidor.
4
Web Document Store and Printing
En otro ámbito, en el plano personal, de entre todos los posibles proyectos que el
desarrollador podía haber elegido, se decantó por el presente proyecto debido a dos aspectos
claves. Por un lado, se encuadra dentro del interés del desarrollador por las comunicaciones
y el desarrollo de herramientas de uso público basadas en la utilización de Internet. Por otro
lado, ofrece al desarrollador el reto superar la falta de conocimientos respecto a la
interacción de sistemas con el sistema operativo, ya que el sistema a desarrollar pasaba
necesariamente por la inclusión de un módulo que interactuase con el sistema operativo al
más bajo nivel, interviniendo incluso en el funcionamiento del núcleo de sistemas operativos
Microsoft Windows.
5
Web Document Store and Printing
2. Estado del arte
Web Document Store and Printing
El estado de la tecnología con respecto al alcance de este proyecto es esperanzador, pero
insuficiente en unos ámbitos e inexistente en otros.
2.1. Respecto del almacenamiento temporal
Respecto del almacenamiento temporal de documentos, existen a nivel internacional
algunos proyectos que presentan al usuario la posibilidad de almacenar sus documentos online, con iniciativas como Google Docs o el almacenamiento ofrecido por Microsoft a partir
de su correo Web Hotmail, las cuales presentan una gran calidad respecto del servicio que
ofrecen. Sin embargo, en el alcance del presente proyecto, se le encuentran diferentes
carencias:
Requieren por parte del usuario de un registro previo, que obliga a la presentación de
datos personales del usuario, en la plataforma que integra el servicio.
No garantizan la integridad de los documentos gestionados durante su transmisión, y
se desconoce el alcance de la garantía de integridad durante su almacenamiento.
No se garantiza la imposibilidad de inspección de los documentos por parte de los
gestores de las aplicaciones.
Otras soluciones de almacenamiento temporal usadas comúnmente en ciertos entornos,
como pueden ser unidades de almacenamiento en red, servidores FTP, etc., suelen ser
aplicables únicamente a entornos privados, y suponen la necesidad de que los usuarios
presenten un grado más que elemental en el uso de las tecnologías de la información.
7
Web Document Store and Printing
2.2. Respecto de la gestión de recursos
Respecto a la gestión del uso de recursos de impresión, y debido a la necesidad de permitir
su uso, existe una gran variedad de métodos implantados en todo tipo de entornos. Algunos
pasan por que un empleado utilice el recurso, establezca de manera manual el precio del
servicio y realice su cobro. Otros más avanzados utilizan herramientas basadas en el
protocolo IPP (Internet Printing Protocol), permitiendo al usuario final una impresora
compartida en red, instalándola y utilizándola desde su propio dispositivo a través de un
servidor de impresión.
Estas soluciones, implantadas con mucho éxito en entornos como universidades, empresas,
reprografías, etc., suelen presentar algunas de las siguientes limitaciones con respecto a su
utilización pública:
Se basan en aplicaciones locales, donde la orden de impresión se realiza
necesariamente desde un dispositivo local, y en algunos casos es necesario acceder
físicamente al servidor que gestiona el dispositivo de impresión.
Debido a esa necesidad de uso, requieren por parte del usuario estar previamente
inscrito o asociado de alguna manera a la institución donde se hace uso del servicio.
No realiza control de las propiedades de impresión de los documentos. Por tanto, no
es factible realizar una gestión de la facturación del servicio, o incluso de utilización
aunque este se ofrezca de manera gratuita.
No existe la posibilidad de imponer restricciones al uso del recurso de impresión
respecto a algunos aspectos, como pueden ser el tipo de documentos, su tamaño, o
propiedades como el color o la calidad de salida.
8
Web Document Store and Printing
Por otra parte, es destacable que ninguna de las soluciones existentes integra todos los
aspectos mencionados anteriormente, por lo que el alcance del proyecto que aquí se
presenta le confiere una calidad elevada de innovación.
9
Web Document Store and Printing
3. Objetivos
Web Document Store and Printing
El objetivo del presente proyecto es el desarrollo de una herramienta que permita a los
usuarios de redes de acceso público, por una parte, transferir y almacenar de manera
completamente segura y a través de Internet cualquier tipo de documento en un servidor; y
por otra, posteriormente, identificarse para descargarlos e imprimirlos, añadiendo además
funciones de control de los servicios de impresión para permitir la correcta gestión de
permisos de uso y facturación del servicio, en caso de que se desee realizarla.
Ofrecer la posibilidad de almacenamiento temporal remoto de documentos a través
de Internet.
Ofrecer la posibilidad anterior sin necesidad previa de inscripción ni pago, y desde
cualquier lugar donde se disponga de conexión a Internet.
Ofrecer la posibilidad de descarga e impresión de documentos previamente
incorporados al sistema.
Ofrecer la posibilidad anterior en cualquier lugar gestionado, sin necesidad previa de
inscripción o registro, con la simple presentación de un identificador.
Garantizar la seguridad ante inspección y modificación de los documentos
involucrados durante toda su existencia en el sistema.
Realizar un control explícito de las propiedades de los trabajos de impresión llevados
a cabo en los centros gestionados.
Ofrecer al explotador final del servicio la posibilidad de gestionar, justificar y
registrar el cobro del mismo.
Ofrecer la posibilidad anterior basando el precio del servicio en las propiedades
específicas de cada trabajo de impresión llevado a cabo.
11
Web Document Store and Printing
4. Tecnología utilizada
Web Document Store and Printing
Debido a que ha sido necesario desarrollar módulos del sistema de diversa índole, se ha
necesitado también utilizar varias tecnologías para su desarrollo. Cabe destacar que, debido a
que se ha realizado en el entorno de Fractalia como entidad colaboradora, y ajustándose a la
filosofía, tradición y necesidades de la misma, el proyecto completo se ha desarrollado
basándose en tecnologías Microsoft. De entre ellas cabe destacar:
4.1. Lenguajes y otros recursos de programación
4.1.1. Visual C# .NET
Visual C# .NET es uno de los cuatro lenguajes de .NET incluidos por Microsoft para crear
los últimos componentes, aplicaciones y servicios .NET. La versión más reciente del
lenguaje representa el salto generacional más importante que ha dado en su historia. Visual
C# .NET ya es un auténtico lenguaje orientado a objetos. Con esta versión los
programadores pueden construir todo, desde aplicaciones ASP.NET hasta servicios Web
XML.
Visual C# .NET se integra plenamente con otros lenguajes de Microsoft Visual Studio®
.NET. No sólo se pueden programar componentes de aplicaciones en diferentes lenguajes de
programación, sino que las clases se pueden heredar de clases escritas en otros lenguajes
utilizando la herencia entre lenguajes. Con el depurador unificado, se pueden depurar
aplicaciones en varios lenguajes, independientemente de si se ejecutan localmente o en
equipos remotos. Por último, independientemente del lenguaje que se utilice, .NET
Framework proporciona un amplio conjunto de interfaces de programación de aplicaciones
(API) para el sistema operativo Microsoft Windows e Internet.
13
Web Document Store and Printing
4.1.2. Visual C++ .NET
La última versión de Microsoft Visual C++ .NET supone la integración transparente del
lenguaje C++ con el resto de la arquitectura .NET. De este modo, el paradigma de la
programación orientada a objetos, junto a la potencia de los servicios distribuidos .NET, se
convierten en un tándem difícil de superar a la hora de crear aplicaciones bajo Windows. El
software escrito para .NET es más escalable, seguro y portable que cualquier otra tecnología
Windows anterior.
4.1.3. ADO .NET
Microsoft ActiveX® Data Objects .NET (ADO.NET) es un conjunto de bibliotecas
incluidas en Microsoft .NET Framework que ayudan a comunicarse con los datos de
aplicaciones basadas en .NET, incluyendo datos XML.
4.1.4. ASP .NET
ASP.NET, una parte de la plataforma .NET de Microsoft, es una estructura de
programación revolucionaria que permite el desarrollo de aplicaciones Web dirigidas a
corporaciones. Constituye la forma más rápida y escalable de desarrollar, implementar y
ejecutar aplicaciones Web en cualquier navegador o dispositivo. ASP.NET facilita el
desarrollo de aplicaciones si lo comparamos con el modelo ASP clásico, por lo que la
productividad de los programadores mejorará considerablemente. Esta plataforma permite
dotar de funciones adicionales a una aplicación Web y escribir una menor cantidad de
código, entre otras características.
14
Web Document Store and Printing
4.1.5. Detours
Detours es una librería para el desarrollo de todo tipo de funciones Win32 en plataformas
x86, x64 e IA64. Detours es capaz de interceptar funciones Win32 mediante la sobre
escritura del código en memoria para las funciones objetivo. El paquete Detours incluye
también utilidades para crear enlaces a cualquier librería DLL y hacia cualquier binario
basado en Win32.
Detours permite preservar el funcionamiento de las librerías originales mediante llamadas a
subrutinas que representan las funciones originales.
4.1.6. TextCrypter
TextCrypter es un una librería DLL creada por Fractalia, desarrollada en lenguaje C# y, por
lo tanto, que se integra perfectamente en cualquier desarrollo basado en el Framework de
.NET. Esta librería puede importarse fácilmente dentro de cualquier proyecto desarrollado
mediante Visual Studio, permitiendo de manera sencilla su utilización.
Mediante esta librería se puede acceder fácilmente a funciones de encriptación y
desencriptación basadas en el estándar AES, siendo así un recurso muy útil para la
implantación de los más elevados criterios de seguridad de acceso a la información en los
desarrollos, de manera rápida y sencilla.
4.1.7. Log4Net
Log4net es una herramienta para ayudar a los programadores a crear registros de
funcionamiento, generalmente conocidos como “logs” o “bitácoras”, hacia una gran variedad
de entornos de salida, como pueden ser terminales de consola, ficheros, e-mail, etc. El API
publicado por log4net permite de manera sencilla crear estas salidas log, incluso
jerarquizándolas en niveles según la importancia de los eventos registrados.
15
Web Document Store and Printing
Log4net es una herramienta abierta, que forma parte del proyecto “Apache Logging Services”.
Este proyecto tiene como objetivo proveer servicios de logging para diversas plataformas,
con propósitos de auditoría y depuración.
4.2. Protocolos y estándares
4.2.1. HTTPS – Hypertext Transfer Protocol Secure
El protocolo de transferencia de hipertexto HTTP (HyperText Transfer Protocol) constituye el
estándar de facto para la transmisión de información en la Web. Es un protocolo construido
sobre la base de los protocolos TCP/IP, es orientado a transacciones y sigue el esquema
petición-respuesta entre un cliente y un servidor.es
Este protocolo, utilizado en conjunción con SSL (Secure Sockets Layer), permite la transmisión
de información entre un servidor Web y un agente de usuario a través de Internet de manera
segura, basando la seguridad en la encriptación de las transmisiones mediante un sistema de
claves asimétricas.
4.2.2. AES – Advanced Encryption Protocol
Advanced Encryption Standard, también conocido como Rijndael, es un esquema de cifrado
por bloques, con un tamaño de bloque fijo de 128 bits y con tamaños de clave de 128, 192 ó
256 bits. Este sistema de cifrado, adoptado inicialmente como estándar de cifrado por los
Estados Unidos, es actualmente uno de los algoritmos más populares utilizados en
criptografía simétrica, además de ser considerado el que mayor nivel de seguridad ofrece.
16
Web Document Store and Printing
4.2.3. SOAP – Simple Object Access Protocol
Se trata de un protocolo de comunicación bajo HTTP mediante XML, y forma
prácticamente el núcleo de los servicios web. SOAP proporciona un mecanismo estándar de
empaquetar mensajes, facilitando la comunicación del estilo RPC (Remote Procedure Call)
entre un cliente y un servidor remoto.
SOAP es el primer protocolo de su tipo que ha sido aceptado prácticamente por todas las
grandes compañías de software del mundo, obteniendo así ventajas como son el no estar
asociado directamente a ningún lenguaje ni protocolo de transporte, permitiendo además la
interoperabilidad entre múltiples plataformas.
4.2.4. XML – Extensible Markup Language
Se trata de un lenguaje basado en etiquetas. Es extensible ya que, después de diseñado y
puesto en producción, es posible extender XML con la adición de nuevas etiquetas, de modo
que se pueda continuar utilizando sin complicación alguna. Además, el analizador del
lenguaje es un componente estándar, no es necesario crear un analizador específico para cada
versión de lenguaje XML, por lo que es completamente portable.
Realmente no es un lenguaje en sí, sino una manera de definir lenguajes para diferentes
necesidades. Algunos de los lenguajes que usan XML para su definición son XHTML, SVG,
MathML.
17
Web Document Store and Printing
4.3. Herramientas
4.3.1. Visual Studio 2008
Visual Studio es la herramienta más productiva para crear aplicaciones que se ejecutan en el
sistema operativo Microsoft Windows. Con Visual Studio, los programadores pueden crear
aplicaciones para Windows que aprovechan las completas características de la interfaz de
usuario del sistema operativo Windows. Esta versión incluye todas las herramientas de
programación rápida de aplicaciones que los programadores esperan de Microsoft, como la
creación, con arrastrar y colocar, de aplicaciones para Windows que aprovechan totalmente
las bases de datos y los servicios Web XML. Con la herencia visual, los programadores
pueden simplificar enormemente la creación de aplicaciones basadas en Windows.
18
Web Document Store and Printing
5. Definición de casos de uso
Web Document Store and Printing
A continuación se presenta un estudio de los casos de uso iniciales identificados para el
sistema, desde el punto de vista de su utilización por parte de los usuarios del mismo.
5.1. Diagrama de casos de uso
Los casos de uso identificados para el sistema responden a la estructura representada en el
siguiente diagrama:
Web Document Store and Printing
Almacenar
documento
Descargar
documento
«uses»
Consultar precio
artículos
«uses»
Usuario final
«uses»
Imprimir
documento
Registrar trabajo
«uses»
Monitorizar
impresiones
CajaWeb
Confirmar pago
«uses»
Consultar precio
total
Usuario gestor
«uses»
Cancelar pago
Figura 1. Diagrama de casos de uso
20
Web Document Store and Printing
5.2. Definición de casos de uso
5.2.1. Almacenar documento
Actor primario: Usuario final
Actores secundarios: Ninguno
Trigger: Petición de almacenamiento por parte del usuario final.
Precondiciones: Ninguna
Escenario primario:
1.
El usuario realiza la petición de almacenamiento.
2.
El documento se transfiere al servidor y se almacena.
3.
Se genera un identificador del documento.
4.
Se presenta el identificador del documento al usuario.
Extensiones:
1.- No se ha especificado un documento para almacenar
1.
Se muestra al usuario un mensaje pidiendo que especifique un documento.
2a.- El documento no puede transferirse
1.
Se muestra un mensaje al usuario indicando la situación.
2b.- El documento no puede almacenarse
1.
Se muestra un mensaje al usuario indicando la situación.
21
Web Document Store and Printing
Descripción de datos:
Documento: Documento especificado por el usuario para ser almacenado.
Identificador: Identificador alfanumérico del documento una vez almacenado.
5.2.2. Descargar documento
Actor primario: Usuario final
Actores secundarios: Ninguno
Trigger: Petición de descarga por parte del usuario final.
Precondiciones: El usuario debe indicar el identificador del documento.
Escenario primario:
1.
El usuario indica el identificador y realiza la petición de descarga.
2.
Previa ejecución del caso de uso “Consultar precio artículos”, se presentan al
usuario los precios asociados al servicio de impresión.
3.
Se busca en la base de datos el documento asociado con el identificador.
4.
El documento se transfiere del servidor al terminal utilizado por el usuario.
Extensiones:
1.- No se ha especificado un identificador de documento
1.
Se muestra al usuario un mensaje pidiendo que especifique un identificador.
22
Web Document Store and Printing
2a.- El identificador especificado no corresponde con ningún documento
1.
Se muestra un mensaje al usuario indicando la situación y pidiendo que especifique
otro identificador.
2b.- El documento no asociado ha sido eliminado del sistema
1.
Se muestra un mensaje al usuario indicando la situación. Deberá volver a
almacenarlo si desea imprimirlo.
3.- El documento no puede ser transferido
1.
Se muestra un mensaje al usuario pidiendo que vuelva a intentar la descarga más
tarde.
Descripción de datos:
Identificador: Identificador alfanumérico del documento.
Documento: Documento asociado al identificador de documento.
5.2.3. Imprimir documento
Actor primario: Usuario final
Actores secundarios: Sistema CajaWeb
Trigger: Petición de impresión por parte del usuario final.
Precondiciones: Ninguna
Escenario primario:
1.
El cliente realiza la petición de impresión.
23
Web Document Store and Printing
2.
Previa ejecución del caso de uso “Consultar precio artículos”, se presentan al
usuario los precios asociados al servicio de impresión.
Se procesa el trabajo de impresión.
A petición del usuario, se ejecuta el caso de uso “Monitorizar impresiones”.
Se ejecuta el caso de uso “Registrar trabajo”.
Extensiones:
2.- No se puede mostrar el precio de los artículos
1.
Se indica la situación al usuario, permitiendo continuar con el trabajo.
3a.- El trabajo de impresión queda interrumpido de manera no definitiva
1.
Se muestra un mensaje al usuario indicando la situación. El trabajo podrá
continuarse pero se necesita interacción física con la impresora.
3b.- El trabajo de impresión queda interrumpido de manera definitiva
1.
Se muestra un mensaje al usuario indicando la situación. El trabajo se cancelará.
2.
Se cancela la ejecución del presente caso de uso.
Descripción de datos:
Documento: Documento especificado por el usuario para ser impreso.
Centro: Identificador del centro donde se está realizando el caso de uso.
24
Web Document Store and Printing
5.2.4. Consultar precio artículos
Actor primario: Sistema Web Document Store and Printing
Actores secundarios: Sistema CajaWeb
Trigger: Ejecución de los casos de uso “Descargar documento” o “Imprimir documento”.
Precondiciones: Ninguna
Escenario primario:
1.
Se pregunta al sistema CajaWeb por los artículos de impresión y su precio
asociados al centro especificado.
2.
Se recoge la respuesta por parte del sistema CajaWeb.
3.
Se presenta el resultado al módulo ejecutor del caso de uso que generó la petición.
4.
Se continúa la ejecución del caso de uso que generó la petición.
Extensiones:
1.- No se puede conectar con el sistema CajaWeb
1.
Se indica la situación. No se cancela la ejecución del caso de uso previo.
2.- No se recibe respuesta del sistema CajaWeb
1.
Se indica la situación. No se cancela la ejecución del caso de uso previo.
Descripción de datos:
Centro: Identificador del centro donde se está realizando el caso de uso previo.
Artículos: Listado de artículos de impresión disponibles para el centro.
25
Web Document Store and Printing
Precios: Listado de precios asociados a los artículos de impresión disponibles para el
centro.
5.2.5. Monitorizar impresiones
Actor primario: Usuario final
Actores secundarios: Ninguno
Trigger: Petición de monitorización por parte del usuario.
Precondiciones: El usuario debe haber indicado un identificador de documento.
Escenario primario:
2.
El usuario realiza la petición de monitorización.
3.
Se consulta el estado de los trabajos de impresión asociados al documento.
4.
Se consultan las propiedades del trabajo de impresión.
5.
Se muestra el estado al usuario.
6.
Se actualiza el estado de manera periódica.
Extensiones:
2.- No se puede consultar el estado
1.
Se indica la situación al usuario.
3.- No se puede consultar el estado
1.
Se indica la situación al usuario.
26
Web Document Store and Printing
Descripción de datos:
Identificador: Identificador alfanumérico del documento en proceso.
Estado: Tipo de estado en que se encuentra el trabajo de impresión.
Páginas: Número de páginas impresas durante el trabajo de impresión.
Color: Identificador que indica si el trabajo de impresión se realizó en color o en
blanco y negro.
5.2.6. Registrar trabajo
Actor primario: Sistema Web Document Store and Printing
Actores secundarios: Ninguno
Trigger: Finalización de un trabajo de impresión.
Precondiciones: Ninguna
Escenario primario:
1.
Se detecta la finalización de un trabajo de impresión.
2.
Se registran en el sistema las propiedades del trabajo de impresión.
Extensiones:
1.- Finalización debida a interrupción definitiva del trabajo
1.
Se cancela la ejecución de este caso de uso.
27
Web Document Store and Printing
Descripción de datos:
Identificador: Identificador alfanumérico del documento.
Centro: Identificador del centro donde se ha ejecutado el trabajo de impresión.
Páginas: Número de páginas impresas durante el trabajo de impresión.
Color: Identificador que indica si el trabajo de impresión se realizó en color o en
blanco y negro.
5.2.7. Confirmar pago
Actor primario: Usuario gestor
Actores secundarios: Sistema CajaWeb
Trigger: Petición de confirmación de pago por parte del usuario gestor.
Precondiciones: El usuario debe haber especificado un identificador de documento.
Escenario primario:
1.
El usuario realiza la petición de confirmación.
2.
Se ejecuta el caso de uso “Consultar precio total”.
3.
Se muestra al usuario el precio total y se le pide aceptación del mismo.
4.
Se comunica al sistema CajaWeb la ejecución del pago.
5.
Se vincula el identificador de documento al estado “pagado” y se registra en el
sistema.
6.
Se marca el documento asociado al identificador como obsoleto para el sistema.
28
Web Document Store and Printing
Extensiones:
3a.- No se conoce el precio total
1.
Se cancela la ejecución del caso de uso.
3b.- No se acepta el precio establecido
1.
Se cancela la ejecución del caso de uso.
4.- No se puede establecer comunicación con el sistema CajaWeb
1.
Se cancela la ejecución del caso de uso.
Descripción de datos:
Identificador: Identificador alfanumérico del documento.
Documento: Documento asociado al identificador de documento.
Centro: Identificador del centro donde se ha ejecutado el trabajo de impresión.
Páginas: Número de páginas impresas durante el trabajo de impresión.
Color: Identificador que indica si el trabajo de impresión se realizó en color o en
blanco y negro.
Precio total: Precio total de los trabajos de impresión asociados al documento.
29
Web Document Store and Printing
5.2.8. Cancelar pago
Actor primario: Usuario gestor
Actores secundarios: Sistema CajaWeb
Trigger: Petición de cancelación de pago por parte del usuario gestor.
Precondiciones: El usuario debe haber especificado un identificador de documento.
Escenario primario:
1.
El usuario realiza la petición de cancelación.
2.
Se pide al usuario el motivo de la cancelación.
3.
Se comunica al sistema CajaWeb la cancelación y su motivo.
4.
Se vincula el identificador de documento al estado “cancelado” y se registra en el
sistema.
5.
Se marca el documento asociado al identificador como obsoleto para el sistema.
Extensiones:
2.- No se ha especificado un motivo para la cancelación
1.
Se indica al usuario que es estrictamente necesario especificarlo.
3.- No se puede establecer comunicación con el sistema CajaWeb
1.
Se cancela la ejecución del caso de uso.
Descripción de datos:
Identificador: Identificador alfanumérico del documento.
30
Web Document Store and Printing
Centro: Identificador del centro donde se ha ejecutado el trabajo de impresión.
Motivo: Motivo para la cancelación indicado por el usuario.
5.2.9. Consultar precio total
Actor primario: Sistema Web Document Store and Printing
Actores secundarios: Sistema CajaWeb
Trigger: Ejecución del caso de uso “Confirmar pago”.
Precondiciones: Se debe haber especificado un identificador de documento y centro.
Escenario primario:
1.
Se pregunta al sistema CajaWeb por los artículos de impresión y su precio
asociados al centro especificado.
2.
Se recuperan las propiedades de todos los trabajos de impresión asociados al
identificador de documento especificado.
3.
Se calcula el precio total en función de los trabajos realizados y los artículos
disponibles.
Extensiones:
1.- No se puede establecer comunicación con el sistema CajaWeb
1.
Se indica la situación al módulo que generó la petición de ejecución del presente
caso de uso.
31
Web Document Store and Printing
Descripción de datos:
Identificador: Identificador alfanumérico del documento.
Centro: Identificador del centro donde se ha ejecutado el trabajo de impresión.
Artículos: Listado de artículos de impresión disponibles para el centro.
Precios: Listado de precios asociados a los artículos de impresión disponibles para el
centro.
Trabajos: Lista de trabajos de impresión asociados al identificador de documento.
Páginas: Número de páginas impresas durante cada trabajo de impresión.
Color: Identificador que indica para cada trabajo de impresión se realizó en color o en
blanco y negro.
32
Web Document Store and Printing
6. Especificación de requisitos
Web Document Store and Printing
6.1. Perspectiva del producto
Las especificaciones detalladas a lo largo de este capítulo definen un producto completo, el
cual debe desarrollarse desde cero, de principio a fin.
6.2. Características del producto
El sistema a desarrollar debe proveer, por un lado, un método para almacenar documentos
en un servidor remoto a través de Internet y, por otro, un método para recuperar estos
documentos del servidor remoto, con el objetivo de imprimirlos. Una vez almacenados los
documentos, el sistema deberá proporcionar al usuario un identificador, el cuál le servirá
posteriormente para identificarse como propietario del documento y así poder descargarlo e
imprimirlo.
Además, deberá presentar un método que permita al explotador final del producto conocer
y aplicar el precio de facturación del servicio de impresión de manera automática.
6.3. Tipos de usuarios y características
Se pretende que este software pueda ser utilizado por cualquier usuario de redes de acceso
público a Internet, independientemente de los conocimientos y habilidades que presenten en
el uso de las tecnologías de información. Es decir, está orientado al público en general.
Por otro lado, los empleados de las empresas explotadoras finales también deberán hacer uso
del software. Teniendo en cuenta que el sistema está pensado para poderse utilizar en una
gran variedad de entornos, estos usuarios también pueden considerarse público en general.
34
Web Document Store and Printing
6.4. Entorno de funcionamiento
El sistema consistirá en un entorno Web, y por lo tanto deberá funcionar a partir de un
sistema de servidor Web.
Debido a que se pretende que pueda ser instalado y utilizado en entornos tanto locales como
remotos, se deberá poder usar cualquiera de los siguientes entornos:
Microsoft Information Server, versión 5.1 o superior, instalado sobre el sistema
operativo Microsoft Windows 2003 Server.
Microsoft Information Server, versión 5.1 superior, instalado sobre el sistema
operativo Microsoft Windows XP Professional.
Además, se necesita implementar un sistema de almacenamiento en base de datos. El
entorno del servidor de bases de datos podrá consistir en cualquiera de los dos siguientes:
Microsoft SQL Server 2005 instalado sobre un sistema operativo Microsoft Windows
2003 Server.
Microsoft SQL Server Desktop Engine instalado sobre un sistema operativo Microsoft
Windows XP Professional.
6.5. Limitaciones al diseño e implementación.
Todas las páginas Web desarrolladas deben ser codificadas utilizando el lenguaje de
programación ASP .NET.
El módulo de enlace con la cola de impresión del sistema operativo deberá codificarse
utilizando el lenguaje de programación C++.
35
Web Document Store and Printing
El resto de módulos del sistema deberán codificarse utilizando el lenguaje de programación
C#.
Todos los módulos del sistema desarrollados utilizando los lenguajes anteriores y que hagan
uso de las bibliotecas proporcionadas por el Microsoft .NET Framework, harán uso de la
versión 2.0 del mismo como máximo.
El sitio Web a desarrollar debe ser navegable utilizando cualquier navegador Web. Un
ejemplo y una relación de mínimos de navegadores que deben soportarse es:
Microsoft Internet Explorer
Mozilla Firefox
Opera
Safari
Google Chrome
6.6. Documentación
Junto con el software desarrollado deberán entregarse los siguientes documentos:
Manual de instalación y operación
Manual de usuario
36
Web Document Store and Printing
6.7. Descripción de requisitos funcionales
A continuación se detallan los requisitos funcionales identificados para el sistema y que este
debe implantar.
El orden de prioridades está jerarquizado, de manera que dentro de la prioridad de un grupo
funcional se debe seguir también el orden de prioridad de cada requisito concreto.
También las dependencias están jerarquizadas. Esto es, todas las dependencias especificadas
para un grupo funcional son aplicables a sus requisitos concretos, sin perjuicio de las
especificadas explícitamente para ellos.
Los elementos escritos en cursiva representan elementos y controles de usuario utilizados
comúnmente en entornos y aplicaciones Web.
6.7.1. Grupo funcional 1 – Selección de documentos
6.7.1.1. Descripción y prioridad
Descripción: El sistema debe permitir a los usuarios seleccionar el archive que desean
almacenar en el servidor. Además de permitir escribir la ruta del documento en un textbox,
deberá presentar un control de usuario, tal como un botón, con el objetivo de mostrar una
ventana de selección de archivo.
Dependencias: Ninguna.
Prioridad: alta
6.7.1.2. Secuencias de estímulo/respuesta
Estímulo
El usuario activa el botón de selección de archivo.
37
Web Document Store and Printing
Respuesta
Se abre una ventana de selección de archivo.
Cuando el usuario ha seleccionado el archivo y presionado el botón “Aceptar”, la
ventana de selección se cierra y la ruta del archivo se escribe en el textbox.
6.7.1.3. Requisitos funcionales
REQ-1: Tipos de archivos seleccionables por defecto
Prioridad: Alta.
Dependencias: Ninguna.
Definición: Por defecto, la ventana de selección de archivos mostrará únicamente archivos
imprimibles, entendidos como los tipos de archivos que más comúnmente se imprimen y
que más probablemente se dispondrá del software necesario para abrirlos. Los tipos de
ficheros por defecto, en cualquier caso, se deben poder especificar como parámetro de
configuración del sistema.
Inicialmente, se soportarán los siguientes tipos de archivos:
“.txt” files
“.doc” and “.docx” files
“.xls” and “.xlsx” files
“.ppt” and “.pptx” files
“.pdf” files
“.bmp”, “.tif”, “.tiff”, “.gif”, “.jpg”, “.jpeg” and “.png” files.
38
Web Document Store and Printing
REQ-2: Selección de otros tipos de archivos
Prioridad: Alta.
Dependencias: Depende del REQ-1.
Definición: Además del comportamiento definido en el REQ-1, la ventana de selección de
archivos deberá permitir cambiar los tipos de archivos mostrados, de manera que se puedan
encontrar todos los archivos almacenados en el dispositivo.
6.7.2. Grupo funcional 2 – Subida de documentos al servidor
6.7.2.1. Descripción y prioridad
Descripción: El sistema debe permitir a los usuarios subir sus documentos al servidor.
Antes de hacerlo, debe alertar sobre posibles situaciones especiales. Una vez almacenados,
debe proporcionar al usuario un identificador, el cual le permitirá posteriormente
identificarse como propietario del documento.
Dependencias: Depende de la consecución del Grupo Funcional 1 – Selección de
documentos.
Prioridad: Alta.
6.7.2.2. Secuencias de estímulo/respuesta
Estímulo
El usuario activa el botón de subida de archivo.
Respuesta
La aplicación intenta subir el documento al servidor.
Una vez almacenado se genera y presenta al usuario un identificador del documento.
39
Web Document Store and Printing
6.7.2.3. Requisitos funcionales
REQ-3: Comprobación del tipo de archivo
Prioridad: Media.
Dependencias: Depende del REQ-1.
Definición: Cuando el usuario presiona el botón de subida del archivo, el sistema deberá
verificar si el archivo está incluido en la lista de tipos de archivos soportados definida en la
configuración. Si el usuario ha seleccionado un archivo cuyo tipo no está incluido en la lista,
cuando presiona el botón de subida el sistema deberá mostrar un mensaje de advertencia,
indicando que el documento puede aparecer como no imprimible cuando más tarde el
usuario desee imprimirlo.
Cuando se muestre este mensaje, se deberá obligar al usuario a elegir entre las opciones
“Continuar” o “Cancelar”, de manera que se continúe con la subida del documento o se
cancele y se vuelva a la página de selección de archivo, respectivamente.
REQ-4: Comportamiento en caso de que el fichero no pueda ser subido
Prioridad: Alta.
Dependencias: Ninguna.
Definición: En caso de que, por cualquier razón, el documento no pueda ser subido al
servidor correctamente, el sistema deberá presentar un mensaje indicando la situación.
Después, deberá volver a la página de selección de archivo, donde el archivo permanecerá
seleccionado.
40
Web Document Store and Printing
6.7.3. Grupo funcional 3 – Almacenamiento en el servidor
6.7.3.1. Descripción y prioridad
Descripción: El sistema debe permitir a los usuarios almacenar sus documentos en un
servidor, cifrándolo de algún modo. También deberá almacenar los identificadores asociados
a los documentos, cifrándolos igualmente.
Dependencias: Ninguna.
Prioridad: Alta.
6.7.3.2. Secuencias de estímulo/respuesta
Estímulo:
Llega al servidor una petición de almacenamiento de archivo.
Respuesta:
El servidor descarga el archivo y lo almacena en la base de datos.
El servidor almacena en la base de datos el identificador del
documento y su nombre original.
6.7.3.3. Requisitos funcionales
REQ-5: Nombre de los ficheros
Prioridad: Alta.
Dependencias: Ninguna.
41
Web Document Store and Printing
Definición: Cuando un fichero es almacenado por el servidor, deberá crearse un GUID para
el mismo y deberá modificarse el nombre del fichero, de manera que el nombre del fichero
almacenado quedará formado por la concatenación de su nombre original y su GUID.
REQ-6: Tabla de archivos – identificadores
Prioridad: Alta.
Dependencias: Ninguna.
Definición: El sistema deberá mantener un registro de ficheros almacenados e
identificadores de los mismos. Los identificadores de documentos deberán almacenarse de
manera cifrada.
REQ-7: Cifrado de ficheros
Prioridad: Alta.
Dependencias: Ninguna.
Definición: Cuando un fichero es almacenado en el sistema, este debe ser cifrado con el
objetivo de evitar que cualquiera pueda abrirlo.
A pesar de que legalmente se considera suficiente el almacenamiento en base de datos en
modo binario, se debe considerar la posibilidad de utilizar un cifrado basado en el protocolo
AES de encriptación.
6.7.4. Grupo funcional 4 – Recuperación de archivos del servidor
6.7.4.1. Descripción y prioridad
Descripción: el sistema debe permitir a los usuarios recuperar sus documentos del
servidor, con el objetivo de poder imprimirlos, mediante la utilización del identificador
asociado al documento.
42
Web Document Store and Printing
Dependencias: Depende del Grupo funcional 2 – Subida de documentos al servidor y del
Grupo funcional 3 – Almacenamiento en el servidor.
Prioridad: Alta
6.7.4.2. Secuencias de estímulo/respuesta
Estímulo:
El usuario escribe el identificador del documento en un textbox y activa un botón.
Respuesta:
Se envía el identificador al servidor.
El servidor busca el identificador.
Si se encuentra el identificador, el servidor busca el archivo asociado, lo descifra y lo
envía al usuario.
6.7.4.3. Requisitos funcionales
REQ-8: Comportamiento en caso de identificador inexistente
Prioridad: Media.
Dependencias: Depende del REQ-6.
Definición: En caso de que el identificador del documento no coincida con ninguno de los
almacenados, se deberá mostrar un mensaje al usuario indicando la situación.
43
Web Document Store and Printing
REQ-9: Comportamiento en caso de que el archivo no pueda ser recuperado
Prioridad: Media.
Dependencias: Ninguna.
Definición: Si, por cualquier razón, el archivo no puede ser recuperado del servidor, se debe
mostrar un mensaje indicando la situación y una posible causa.
REQ-10: Comportamiento en caso de que el tipo de fichero NO esté incluido
en la lista de tipos soportados.
Prioridad: Media.
Dependencias: Depende del REQ-1.
Definición: Al recuperar un documento, el sistema debe comprobar si su tipo está incluido
en la lista de tipos de archivos soportados definida en la configuración. En caso de que no
esté incluido, se debe presentar un mensaje indicando al usuario la situación.
REQ-11: Comportamiento en caso de que el tipo de fichero SÍ esté incluido en
la lista de tipos soportados
Prioridad: Alta.
Dependencias: Depende del REQ-1.
Definición: Al recuperar un documento, el sistema debe comprobar si su tipo está incluido
en la lista de tipos de archivos soportados definida en la configuración. En caso de que esté
incluido, el documento deberá abrirse con la aplicación apropiada y, de ser posible, se
deberá abrir automáticamente un diálogo de impresión.
44
Web Document Store and Printing
6.7.5. Grupo funcional 5 – Impresión de documentos
6.7.5.1. Descripción y prioridad
Descripción: El sistema debe permitir a los usuarios imprimir sus documentos en una
impresora accesible. Además, deberá controlar el número de páginas impresas y si la
impresión se realiza en color o en blanco y negro, dejando un registro en el sistema de las
propiedades de cada impresión realizada sobre un documento gestionado por el sistema.
Dependencias: Depende del Grupo funcional 4 – Recuperación de archivos del servidor.
Prioridad: Alta.
6.7.5.2. Secuencias de estímulo/respuesta
Estímulo:
Se detecta la impresión de un archivo gestionado por el sistema.
Respuesta:
Se realiza control de las propiedades de los trabajos de impresión asociados al archivo.
Se guarda un registro de las propiedades detectadas.
6.7.5.3. Requisitos funcionales
REQ-12: Control de propiedades de impresión
Prioridad: Alta.
Dependencias: Ninguna.
45
Web Document Store and Printing
Definición: El sistema deberá realizar un control explícito del número de páginas
imprimidas, y de si las impresiones se han realizado en color o en blanco y negro, para cada
documento gestionado por el sistema.
REQ-13: Registro de propiedades
Prioridad: Alta.
Dependencias: Depende del REQ-12
Definición: El sistema deberá guardar un registro que relacione cada identificador de
documento gestionado por el sistema con las propiedades de los trabajos de impresión
realizados sobre el mismo.
REQ-14: Comportamiento en caso de documento no gestionado por el sistema
y permitido para la impresión
Prioridad: Media.
Dependencias: Ninguna.
Definición: Cuando se detecta un trabajo de impresión cualquiera, el sistema debe
comprobar si se trata de un documento gestionado por el sistema. En caso de no serlo,
deberá comprobar también si el nombre del documento cumple con alguna de las
expresiones regulares definidas por configuración. En caso de que se cumpla alguna, se
permitirá la impresión libre del documento.
REQ-15: Comportamiento en caso de documento no gestionado por el sistema
y NO permitido para la impresión
Prioridad: Alta.
Dependencias: Ninguna.
46
Web Document Store and Printing
Definición: Cuando se detecta un trabajo de impresión cualquiera, el sistema debe
comprobar si se trata de un documento gestionado por el sistema. En caso de no serlo,
deberá comprobar también si el nombre del documento cumple con alguna de las
expresiones regulares definidas por configuración. En el caso de que no cumpla ninguna, se
deberá denegar la posibilidad de imprimirlo.
REQ-16: Monitorización de trabajos de impresión
Prioridad: Media
Dependencias: Ninguna
Definición: Se debe proveer al usuario con una manera de monitorizar sus trabajos de
impresión, con el objetivo de conocer en todo momento el estado de los mismos.
6.7.6. Grupo funcional 6 – Facturación del servicio
6.7.6.1. Descripción y prioridad
Descripción: El sistema debe proporcionar un método mediante el cual los explotadores
finales del servicio puedan conocer el precio asociado a los trabajos de impresión realizados
sobre los documentos gestionados por el sistema, así como de guardar un registro de las
facturaciones realizadas.
Dependencias: Depende del Grupo funcional 5 – Impresión de documentos.
Prioridad: Alta.
6.7.6.2. Secuencias de estímulo/respuesta
Estímulo:
El usuario administrativo introduce el identificador de un documento y pulsa un
botón.
47
Web Document Store and Printing
Respuesta:
Se le muestra al usuario administrativo el precio asociado a los trabajos de impresión
del documento asociado.
Se le muestra un botón que permita la posibilidad de guardar registro del pago
realizado.
6.7.6.3. Requisitos funcionales
REQ-17: Cálculo del precio del servicio
Prioridad: Alta.
Dependencias: Ninguna.
Descripción: Para el cálculo del precio del servicio, el sistema deberá comunicarse con el
sistema externo de facturación, indicándole el centro donde se ha prestado el servicio y las
propiedades de los trabajos de impresión, recuperando así el precio final.
REQ-18: Registro de la facturación
Prioridad: Alta.
Dependencias: Ninguna.
Descripción: Cuando se realice el cobro del servicio, el usuario administrativo deberá poder
registrarlo, mediante la activación de un botón. Cuando esta acción se realice, el sistema
deberá tanto registrar en su base de datos que los trabajos de impresión asociados al
documento han sido cobrados, como notificar la situación al sistema de facturación externo.
48
Web Document Store and Printing
REQ-19: Comportamiento en caso de identificador no encontrado
Prioridad: Media.
Dependencias: Ninguna.
Descripción: En caso de que el identificador introducido por el usuario administrativo no se
encuentre en el sistema, se deberá mostrar un mensaje indicando la situación
REQ-20: Eliminación del documento del servidor
Prioridad: Media.
Dependencias: Ninguna.
Descripción: Cuando los trabajos de impresión de un documento asociado al sistema se
hayan cobrado, el sistema deberá eliminar automáticamente el documento de su
almacenamiento en el servidor.
6.7.7. Grupo funcional 7 – Lenguajes
6.7.7.1. Descripción y prioridad
Descripción: El sistema debe permitir a los usuarios cambiar en cualquier momento el
lenguaje en que se muestran los textos dentro de los interfaces Web del sistema.
Dependencias: Ninguna.
Prioridad: Media.
6.7.7.2. Secuencias de estímulo/respuesta
Estímulo:
El usuario hace “click” en el enlace relativo al idioma que desea seleccionar.
49
Web Document Store and Printing
Respuesta:
La página Web cambia el lenguaje en que se muestran todos los textos incluidos.
6.7.7.3. Requisitos funcionales
REQ-21: Lenguaje por defecto
Prioridad: Media.
Dependencias: Ninguna.
Definición: El lenguaje por defecto en que se muestren los textos de los interfaces Web
debe poder ser fijado a través de un parámetro de configuración.
REQ-22: Almacenamiento de textos
Prioridad: Alta.
Dependencias: Ninguna.
Definición: Todos los textos que se mostrarán en los interfaces Web y en cualquier
elemento Web que vaya a presentarse al usuario, deberán ser almacenados en un fichero
XML. Además, tanto el sistema en sí como el formato del fichero XML deberán permitir la
adición de nuevos mensajes.
6.7.8. Grupo funcional 8 – Instalación
6.7.8.1. Descripción y prioridad
Descripción: Todos los componentes del sistema, a excepción de la base de datos en caso
de ser inviable, se deberán poder instalar haciendo uso de un fichero autoinstalable de
Microsoft, esto es, mediante la ejecución de un archivo “.msi”. La aplicación de instalación
debe dejar el componente listo para su uso.
50
Web Document Store and Printing
Dependencias: Ninguna.
Prioridad: Baja.
6.7.8.2. Secuencias de estímulo/respuesta
Estímulo:
Se ejecuta el instalador.
Respuesta:
La aplicación de instalación pregunta por los parámetros de instalación deseados.
El componente se instala usando los parámetros definidos durante la instalación.
6.7.8.3. Requisitos funcionales
REQ-23: Comprobación de requisitos de sistema
Prioridad: Alta.
Dependencias: Ninguna.
Definición: La aplicación de instalación deberá comprobar si se cumplen los requisitos
necesarios para el funcionamiento del componente, como pueden ser la presencia del
Microsoft .NET Framework, o que el servicio de estado de ASP .NET se encuentre
arrancado.
Si alguno de los requisitos no se cumplen, la aplicación de instalación debe intentar realizar
las acciones necesarias para evitar la situación. Si para algún requisito no puede realizarse
acción alguna, se debe mostrar un mensaje al usuario indicando la situación.
51
Web Document Store and Printing
REQ-24: Creación de directorios virtuales de IIS
Prioridad: Media.
Dependencias: Ninguna.
Definición: La aplicación de instalación deberá preguntar por qué sitio Web de entre los
definidos en IIS se deberá utilizar para instalar los componentes Web, así como por el
nombre del directorio virtual a crear
Después, la aplicación de instalación deberá crear la carpeta del directorio virtual, el
directorio virtual dentro del IIS y asignarle los permisos necesarios para que el sistema
funcione correctamente.
REQ-25: Creación de la carpeta de logs
Prioridad: Media.
Dependencias: Ninguna.
Definición: La aplicación de instalación deberá preguntar por el directorio donde se desean
almacenar los logs del componente, crearlo en caso de que no exista y asignarle los permisos
necesarios para que el componente pueda escribir el él.
52
Web Document Store and Printing
6.8. Requisitos de interfaces externas
6.8.1. Interfaz de usuario
Las interfaces de usuario consistirán en un grupo de páginas Web. El mínimo de páginas y
controles de usuario existentes en las mismas será:
6.8.1.1. Página de subida de archivos
Desde esta página el usuario podrá seleccionar el archivo que desea subir y realizar la
petición de subida. Además, deberá presentar enlaces que permitan cambiar el lenguaje de
los textos mostrados.
Así en ella existirán, al menos, los siguientes controles:
Un textbox para indicar la ruta del archivo a subir.
Un botón para abrir la ventana de búsqueda de archivos.
Un botón para comenzar la subida del archivo.
Un enlace para cada lenguaje disponible.
Además deberá mostrar un texto indicando el nombre y descripción del sistema, un texto
indicando los términos de uso, y deberá estar preparada para mostrar posibles mensajes de
advertencia o error.
6.8.1.2. Página de descarga de archivos
Desde esta página el usuario podrá indicar el identificador de un documento con el objetivo
de poder descargarlo del servidor, así como monitorizar el estado de sus trabajos de
impresión. Además, deberá presentar enlaces que permitan cambiar el lenguaje de los textos
mostrados.
53
Web Document Store and Printing
Así en ella existirán, al menos, los siguientes controles:
Un textbox para la introducción del identificador del documento.
Un botón para comenzar la descarga.
Un enlace por cada lenguaje disponible.
Además esta página deberá mostrar un texto indicando el nombre y descripción del sistema,
un texto indicando los términos de uso, y deberá estar preparada para mostrar posibles
mensajes de advertencia o error.
6.8.1.3. Página de facturación
Desde esta página los usuarios administrativos podrán introducir un identificador de
documento, con el objetivo de conocer el precio asociado a sus trabajos de impresión.
Además, podrán realizar la petición de registro del cobro realizado.
Así en ella existirán, al menos, los siguientes controles:
Un textbox para introducir el identificador del documento.
Un botón para pedir el registro del cobro del servicio.
Además esta página deberá mostrar un texto indicando el nombre y descripción del sistema,
un texto indicando los términos de uso, y deberá estar preparada para mostrar posibles
mensajes de advertencia o error.
54
Web Document Store and Printing
6.8.2. Interfaces Hardware
La parte cliente Web del sistema deberá poder utilizarse desde cualquier tipo de ordenador
personal que utilicen los usuarios finales.
Todos los módulos instalables funcionarán en plataformas basadas en tecnología Intel de 32
bits.
6.8.3. Interfaces Software
La parte cliente del sistema deberá funcionar en cualquier navegador Web que utilicen los
usuarios, tal y como se define en el apartado 6.5. Limitaciones al diseño e implementación.
El sistema deberá además interactuar con el sistema externo de facturación “CajaWeb”.
6.8.4. Interfaces de comunicación
Al implementar interfaces basadas en aplicaciones Web, y dada la necesidad de salvaguarda
de la seguridad, las comunicaciones entre distintos componentes del sistema deberán
realizarse utilizando el protocolo HTTPS.
6.9. Otros requisitos no funcionales
6.9.1. Requisitos de fiabilidad
Durante el uso de este sistema ningún documento de usuario debe ser dañado ni modificado,
ni en su localización original en el dispositivo del usuario ni en su almacenamiento temporal
en el servidor.
55
Web Document Store and Printing
6.9.2. Requisitos de seguridad
Debido a la gran variedad y naturaleza de los documentos potencialmente gestionables por el
sistema, garantizar su seguridad durante toda la gestión de los mismos por parte del sistema
es un requisito clave.
Así, se debe prever que, para la transmisión de documentos entre distintos módulos del
sistema, se utilizará la versión segura del protocolo HTTP. Se debe garantizar al menos el
mismo nivel de seguridad en las transmisiones que involucren otros protocolos de
comunicación.
Por otro lado, en el almacenamiento de los documentos, se debe garantizar la seguridad
igualmente. Así, como requisito mínimo se establece el almacenamiento de los mismos en
forma binaria, debiendo estudiarse la viabilidad de utilización de sistemas de cifrado que
garanticen un mayor nivel de seguridad.
6.9.3. Requisitos de calidad
Las interfaces de usuario desarrolladas deben cumplir unos mínimos criterios de
navegabilidad y usabilidad. El sistema de almacenamiento temporal debe permitir una
correcta gestión de los recursos físicos de almacenamiento utilizados, eliminando
automáticamente todos aquellos documentos que, por unas causas u otras, ya no vaya a ser
necesario que permanezcan almacenados.
56
Web Document Store and Printing
7. Especificaciones técnicas del
sistema
Web Document Store and Printing
7.1. Descripción del sistema
7.1.1. Arquitectura
Web Document Store and Printing es un sistema creado para permitir a los usuarios de
soluciones de acceso público a Internet poder realizar impresiones de sus documentos. Para
esto se dispondrá de un servidor para almacenar el documento, con la idea de
posteriormente descargarlo en un lugar que disponga de impresoras accesibles. El sistema
monitoriza las impresiones y factura las impresiones realizadas.
Para lograr esta funcionalidad, el sistema dispone de cinco componentes que se detallan
posteriormente y se comunica con un sistema externo de facturación utilizado en Fractalia
denominado “CajaWeb”, mediante un servicio Web que este sistema publica. Los cinco
componentes propios del sistema son los siguientes:
Una base de datos, (WDSDb). Sirve para almacenar los documentos y la información
necesaria acerca de las impresiones asociadas a los documentos almacenados.
Una página Web, (WDSWeb). Va a ser utilizada por dos perfiles de usuarios.
o El cliente final para almacenar un documento, descargarlo desde una ubicación
con impresoras disponibles, realizar impresiones del documento y
monitorizarlas.
o El encargado de las impresiones para saber qué precio tienen las impresiones
realizadas correctamente y realizar el cobro.
Un Servicio Web, (WDSws). Sirve para comunicar el monitor de impresiones con la
base de datos.
Un Servicio Windows, (WDSMonitor). Es un servicio de monitorización de
impresiones que se envían a la cola de impresión de una impresora.
58
Web Document Store and Printing
Una tarea programada, (WDSDbCleaner). Sirve para borrar los documentos pagados
del servidor y para borrar los documentos no pagados con una antigüedad.
El diagrama con la arquitectura sería el siguiente:
Figura 2. Arquitectura del sistema
59
Web Document Store and Printing
7.2. Componentes
7.2.1. Base de Datos
Los datos persistentes que maneja el sistema se almacenan en una base de datos y que se
identifica en el esquema como WDSDb.
7.2.1.1. Esquema
Figura 3. Esquema de la base de datos
60
Web Document Store and Printing
7.2.1.2. Descripción de los objetos
7.2.1.2.1 Tablas
wds01_Document
En esta tabla se almacenan los documentos que se suben al servidor. Tiene declarados los
siguientes campos:
o wds01_id: es el identificador de un documento y actúa como clave primaria.
o wds01_uploadTime: es la fecha y hora en la que se ha almacenado un documento
en el servidor.
o wds01_password: es la contraseña que se usa para descargar un documento y
consultar la impresión o impresiones relacionadas con dicho documento.
o wds01_guid: es un GUID que identifica externamente a un documento.
o wds01_fileData: este campo almacena los datos binarios de un documento.
o wds01_name: es el nombre del documento junto con su extensión.
o wds01_payed: define si la impresión o impresiones de un documento han sido
pagadas.
wds02_Printing
En esta tabla se almacena información sobre las impresiones de los documentos, detectados
en las colas de impresiones. Se almacena además información de la facturación asociada a
cada impresión que se obtiene a través del sistema “CajaWeb”. Tiene declarados los
siguientes campos:
61
Web Document Store and Printing
o wds02_id: es el identificador de la impresión de un documento y actúa como
clave primaria.
o wds02_idDocument: es el identificador del documento del cual se ha realizado
una impresión y actúa como clave ajena referenciando a la tabla
“wds01_Document”.
o wds02_idCenter: es el identificador del Centro en el cual se ha mandado a
imprimir el documento.
o wds02_submittedTime: es la fecha y hora en la que se ha mandado un documento
a una cola de impresión.
o wds02_totalPages: es el número total de páginas impresas.
o wds02_color: define si una impresión se ha realizado en color o en blanco y
negro.
o wds02_idPrintingState: identificador del estado de la impresión. Actúa como
clave ajena referenciando a la tabla “wds03_PrintingState”.
o wds02_idTicket: es el identificador del ticket asociado a la impresión.
o wds02_articleDescription: describe el tipo de artículo asociado a la impresión.
o wds02_price: es el precio aplicado al total de las páginas impresas y que figura
en el ticket.
o wds02_ticketCancelled: toma valor true cuando se cancela el ticket asociado a la
impresión.
62
Web Document Store and Printing
wds03_PrintingState
En esta tabla se almacena información descriptiva sobre el estado de una impresión. Tiene
declarados los siguientes campos:
o wds03_id: es el identificador de un estado de impresión y actúa como clave
primaria.
o wds03_name: es el nombre de un estado de impresión.
Los estados que puede tomar una impresión son los siguientes:
o Printing: impresión de documento en curso.
o Printed: impresión concluida.
o Printer Error: la impresora a la que se ha mandado el documento para imprimir
está en un estado de error, y por tanto, NO se ha podido realizar la
impresión.
o Ticket Error: No se ha podido generar un ticket asociado a la impresión, y por
tanto, NO se ha podido realizar la impresión.
o Interrupted Printing: la impresión del documento está interrumpida debido a que
la impresora está en un estado que requiere la intervención física de un
usuario.
7.2.1.2.2 Procedimientos Almacenados
AddPrinting: añade la impresión de un documento, detectada en una cola de
impresión, a la base de datos.
CheckPassword: Verifica si existe un documento en la base de datos que tiene asignado
una determinada contraseña.
63
Web Document Store and Printing
DeleteFileData: Borra los datos binarios de documentos que cumplen ciertos criterios.
GetDocument: Devuelve un documento con su información y datos.
GetDocumentPassword: devuelve la contraseña asociada a un documento.
GetPrinting: Devuelve la información de una impresión o impresiones realizadas para
un documento.
SetDocumentPayed: actualiza el estado de un documento a pagado.
SetTicketPrintingToCancelled: actualiza el estado de cancelación del ticket de una
impresión cuyo ticket asociado fue cancelado.
StoreDocument: Almacena en la base de datos un documento.
UpdatePrinting: Actualiza el estado de una impresión de documento.
7.2.2. Página Web
WDSWeb es una aplicación Web que sirve al usuario final para subir documentos,
descargarlos y monitorizar las impresiones. Al usuario encargado de realizar el cobro, le
sirve para saber lo que hay que facturar por las impresiones realizadas.
El funcionamiento del sitio web se puede agrupar en tres apartados los cuales se
corresponden con una página física.
En la página Upload.aspx se suben los documentos al servidor y se muestra un código
que sirve al usuario para identificar el documento almacenado.
En la página Download.aspx se descargan los documentos almacenados anteriormente y
se realiza la monitorización de los trabajos de impresión enviados del documento
descargado.
64
Web Document Store and Printing
En la página Payment.aspx se muestran las impresiones realizadas para el documento y
se calcula el precio total en función de las copias impresas, que están asociadas a un
artículo de impresión del centro.
Aunque WDSWeb es el proyecto principal y todas las secciones de este punto se refieren a
este proyecto, la solución de Visual Studio que contiene el de la página web contiene varios
proyectos más:
Crypt: Es un proyecto que genera una librería que se utiliza para desencriptar la
cadena de conexión a la base de datos.
WDSWeb_deploy: Contiene la publicación de la página web.
WDSWeb_Installer: Crea un instalador para el sitio web.
7.2.2.1. Estructura
La aplicación Web se ha estructurado haciendo uso de una Master Page representada por la
página MainPage.master, que es plantilla de diseño y distribución de contenidos.
Los controles de usuario son como plantillas que podremos ubicar en tantos sitios de nuestra
Web como queramos, de forma que todo queda centralizado, y cualquier cambio en nuestro
fichero .ascx se verá reflejado allá donde lo hayamos ubicado. Se utilizan tres controles de
usuario:
LanguageControl.ascx, se utiliza para mostrar las banderas que sirven para seleccionar el
idioma con el que se muestran los textos del sitio web.
PrinterArticles.ascx, se utiliza para mostrar en una tabla los artículos de impresión que
tiene un centro.
65
Web Document Store and Printing
PrintingDocument.ascx, se utiliza para mostrar en una tabla las impresiones realizadas de
un documento descargado del sitio web.
Las páginas que se muestran en el contenedor de la página maestra, son Default.aspx,
Upload.aspx, Download.aspx y Payment.aspx.
El archivo de idiomas se llama Languages.xml y se encuentra en la carpeta “language”, pero su
nombre y localización se puede configurar en los parámetros del archivo de configuración.
La carpeta de almacenamiento temporal de archivos en el servidor web se llama WDSFiles,
pero se puede seleccionar una carpeta distinta, creándola en el directorio virtual y
cambiando la ruta mediante un parámetro del archivo de configuración.
Las imágenes se guardan en la carpeta “images” y la hoja de estilo, que se encuentra en la
carpeta “css”, se llama DocumentStoreWeb.css.
7.2.2.1.1 Clase de la Master-Page
La página maestra se compone de un titulo y un texto personalizable mediante el archivo de
idiomas, un contenedor para mostrar las páginas de contenido y una barra horizontal que
contiene un enlace a la página de inicio, un enlace personalizable y el control de idiomas.
7.2.2.1.2 Archivo XML con los idiomas.
En archivo de idiomas tiene la siguiente estructura.
<?xml version="1.0" encoding="utf-8"?>
<TRADUCTOR>
<!-- Página maestra-->
<IDIOMA id="lbHeader">
<ES>Bienvenido al servicio Web Document Store</ES>
<EN>Welocme to Web Document Store System</EN>
</IDIOMA>
<IDIOMA id="lbHome">
<ES>Inicio</ES>
<EN>Home</EN>
</IDIOMA>
…
</TRADUCTOR>
66
Web Document Store and Printing
Se pueden añadir más sentencias para traducir si siguen la misma estructura.
También se pueden añadir más traducciones para las sentencias existentes siempre que se
utilicen
los
códigos
de
lenguaje
según
el
formato
de
Microsoft
en
http://msdn.microsoft.com/es-es/goglobal/bb964664(en-us).aspx y que se añada el
código correspondiente en el fichero de configuración. Si se quiere añadir un lenguaje en el
archivo de traducción hay que asegurarse que se va a añadir la nueva traducción en todas las
sentencias.
Ejemplo de añadir una nueva traducción a la sentencia en otros idiomas.
<IDIOMA id="lbHome">
<ES>Inicio</ES>
<EN>Inicio(EN)</EN>
<PT>Inicio(PT)</PT>
<DE>Inicio(DE)</DE>
<FR>Inicio(FR)</FR>
<IT>Inicio(IT)</IT>
</IDIOMA>
7.2.2.1.3 Clases de App_Code
Las clases contenidas en esta carpeta se compilan en tiempo de ejecución y se creara un solo
ensamblado al que se podrá tener acceso desde el código de cualquier parte de la aplicación
Web.
Autoticket.cs
Página que sirve para realizar las operaciones necesarias con el servicio web del sistema
externo de facturación. Tiene dos métodos públicos:
GetPrintingArticles
public
List<ArticlePrintable>
GetPrintingArticles(int
idCenter,
out
PrintingArticlesResult
result)
67
Web Document Store and Printing
Esta función devuelve una lista de los artículos de impresión que tiene un centro.
ArticlePrintable
es una clase serializable del servicio web del sistema de facturación, que
contiene los datos del artículo imprimible.
Como parámetros de entrada, tiene el identificador de centro de plataforma interna y una
enumerador PrintingArticlesResult que devuelve el estado de la operación. Los valores
de este enum son, success, centerFail y databaseFail.
Este método realiza una llamada al siguiente método web del sistema de facturación:
public reply SelectPrintableArticles(int idCentro, out List<ArticlePrintable> articlesGroup, out
string message)
CancelPeripheralTicket
public bool CancelPeripheralTicket(int idTicket, string comment)
Esta función devuelve el resultado de realizar la cancelación de un ticket de periférico en la
base de datos.
Como parámetros de entrada, tiene el identificador de ticket y un string que indica la causa
de la cancelación. Devuelve un bool que indica si se realizó la cancelación correctamente o
hubo algún fallo.
Este método realiza una llamada al siguiente método web del sistema de facturación:
public
reply
CancelAndDeactivatePeripheralTicket(int
IDTicketPeripheral,
string
comment,
out
string message)
Center.cs
Esta clase contiene los datos que necesitamos de un centro. Para poder visualizar las páginas
accesibles solo desde centros, se comprueba que existe variable de sesión llamada
center,
que contiene la información sobre los artículos imprimibles del centro. Los datos que se
almacenan del centro son:
68
Web Document Store and Printing
Int32 _identifier:
el identificador de centro.
<ArticlePrintable> _articlesPrintables:
La lista de artículos de impresión del
centro.
Int32 _numberOfArticles:
el número de artículos de impresión.
Autoticket.PrintingArticlesResult _result:
el resultado de obtener la lista de
artículos de impresión a través del servicio web del sistema de facturación. Los
valores de este enum son, success, centerFail y databaseFail.
El constructor de esta clase es
public Center(Int32 identifier).
Solo se le pasa el
identificador de centro desde el que se pretende acceder y en el constructor se realiza una
llamada a su único método, que sirve para obtener los artículos imprimibles del centro.
private List<ArticlePrintable> getPrintingArticlesByCenter(int idCenter)
Este método instancia la clase
Autoticket.cs
y llama al método para obtener los artículos
imprimibles.
Database.cs
En esta clase se encuentran declarados los métodos que realizan llamadas a procedimientos
almacenados, para operaciones que se aplican sobre bases de datos.
La clase Database define los siguientes métodos:
public Database():
Constructor de la clase. Obtiene la cadena de conexión de
fichero de configuración y la desencripta con la clase AESCrypt de la librería Crypt.dll.
public
bool
AddNewDocument(string
byte[] filedata):
name,
string
password,
Guid
guid,
Añade un nuevo documento en la base de datos.
69
Web Document Store and Printing
o Los parámetros de entrada son el nombre del documento junto a su extensión,
la contraseña que se genera al subir el documento, el
Guid
que identifica
externamente al documento, los datos binarios del documento.
o Devuelve un bool que indica si se realizo la cancelación correctamente.
public
bool
CheckPassword(string
password):
Comprueba si la existe un
documento asociado a esa contraseña en la base de datos.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un bool que indica si se realizo la cancelación correctamente.
public Document GetDocument(string password):
Obtiene el documento asociado
a la contraseña.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un bool que indica si se realizo la cancelación correctamente.
public List<Printing> GetDocumentPrintings(string password):
Obtiene las
impresiones del documento almacenado con la contraseña.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un bool que indica si se realizo la cancelación correctamente.
public
bool
SetDocumentPayed(string
password):
Marca el documento
almacenado con esa contraseña como pagado.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un bool que indica si se realizo la cancelación correctamente.
70
Web Document Store and Printing
public bool SetPrintingTicketCancelled(int idTicket):
Marca la impresión
asociada a un documento cuyo ticket sea el parámetro de entrada como cancelado.
o El parámetro de entrada es el identificador de ticket de periférico almacenado
en la base de datos
o Devuelve un bool que indica si se realizo la cancelación correctamente.
private
Object
ExecuteStoredProcedure(string
List<SqlParameter> parameters):
storedProc,
Ejecuta un procedimiento almacenado
o Los parametros de entrada son el nombre del procedimiento almacenado a
ejecutar y la lista de parematros de entrada.
o Devuelve un
Object
que encapsula la informacion devuelta por el
procedimiento almacenado.
private
bool
ExecuteStoredProcedureBool(string
storedProc,
List<SqlParameter> parameters):
o Los parametros de entrada son el nombre del procedimiento almacenado a
ejecutar y la lista de parematros de entrada.
o Devuelve un
bool
con el resultado de la ejecución del procedimiento
almacenado
private
GetDocumentByCode(string
password):
Obtiene
el
documento
almacenado, mediante su contraseña.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un DataSet que contiene los datos del documento.
71
Web Document Store and Printing
private
DataSet
GetPrintingByDocumentCode(string
password):
Obtiene las
impresiones asociadas a un documento, mediante su contraseña.
o El parámetro de entrada es la contraseña que se genera al subir el documento.
o Devuelve un DataSet que contiene los datos de las impresiones.
private void OpenConnection():
Abre la conexión con la base de datos.
private void CloseConnection():
Cierra la conexión con la base de datos.
private bool IsDatasetEmpty(DataSet ds):
Comprueba si el DataSet está vacío.
o El parámetro de entrada es el DataSet.
o Devuelve un bool que indica si el DataSet está vacío.
Document.cs
Es una clase de envoltura de la tabla wds01_Document. Las variables privadas declaradas son:
private
int
_id, DateTime
_uploadTime, string
_password, Guid
_guid, byte[]
_fileData, string _name y bool _payed.
Todos estos variables tienen los métodos de envoltura, get y set.
LanguageTranslator.cs
LanguageTranslator
se utiliza para leer el archivo XML donde se guardan las sentencias de
texto traducidas en varios idiomas que se muestran en la página web.
Se almacena una instancia de
LanguageTranslator
como variable de sesión en la página
web.
72
Web Document Store and Printing
La clase LanguageTranslator define los siguientes métodos públicos:
public LanguageTranslator():
XmlTextReader
Constructor de la clase. Crea un nuevo objeto
con el fichero XML especificado en el fichero de configuración.
public void loadLanguages():
Lee las sentencias del fichero de idiomas y las
almacena en una variable de tipo diccionario Dictionary<string,
Sentence>
siendo
el string el nombre de la sentencia y Sentence una instancia de dicha clase.
public
string
translate(string
language,
string
idLabel):
Obtiene la
traducción de una sentencia en un idioma determinado.
o Los parámetros de entrada son el idioma en el que traducir la sentencia y el
nombre de la sentencia.
o Devuelve un string con la sentencia traducida.
public string GetLanguage(string reqLang, object sessLang):
lenguaje actual con el que mostrar los textos. Si no existe
sessLang
reqLang,
siempre que existan en el parámetro de configuración
Obtiene el
se devuelve
languages.
Si no
existen ninguno de ellos, se pone el lenguaje por defecto configurado en
default_language.
o Los parámetros de entrada son el lenguaje al que traducir el texto y el lenguaje
en el que estaban traducidos los textos anteriormente.
o Devuelve un string con el lenguaje a traducir el texto.
73
Web Document Store and Printing
Printing.cs
Es una clase de envoltura de la tabla wds02_Printing. Las variables privadas declaradas son:
int _id, int _idDocument, int _idCenter, DateTime _submittedTime, int _totalPages,
bool
_color, int
_idPrintingState, int
_idTicket, string
_articleDescription,
decimal _price y bool _ticketCancelled.
Todas estas variables tienen los métodos de envoltura, get y set.
RandomPassword.cs
Esta clase estática se utiliza para generar contraseñas aleatorias generadas de forma que sean
más fácil de recordar. El tamaño mínimo de estas contraseñas será de cuatro caracteres. Las
contraseñas van a tener siempre dos silabas y si su longitud es mayor que cuatro, se añaden
números hasta completar la longitud.
Se declaran las siguientes variables donde se declaran que caracteres se van a utilizar para
generar las contraseñas de forma aleatorias:
private static readonly char[] VOWELS = new char[] {'a','e','i','o','u'};
private static readonly char[] CONSONANTS = new char[]
{'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'};
private static readonly char[] NUMBERS = new char[] {'1','2','3','4','5','6','7','8','9'};
La clase RandomPassword define los siguientes métodos públicos:
public static string Generate(int length):
Genera una contraseña utilizando
los arrays definidos para ello.
o El parámetro de entrada es la longitud de la cadena, debe ser mayor de cuatro,
si no es así, se creara una cadena de cuatro caracteres.
o Devuelve un string con la contraseña creada de forma aleatoria, siguiendo el
formato establecido por la clase.
74
Web Document Store and Printing
public static bool CheckPassword(string password, int length):
Comprueba
si la contraseña cumple con el formato establecido por la clase.
o Los parámetros de entrada son la contraseña y la longitud de la contraseña.
o Devuelve un
bool
indicando si la contraseña introducida cumple el formato
establecido por la clase.
Sentence.cs
Es una clase que contiene las traducciones de una sentencia y define el siguiente método
público:
public Sentence(string[] language, string[] languagesSentence):
Añade la
traducción de una sentencia en varios idiomas.
o Los parámetros de entrada son un array con los lenguajes de traducción y otro
con las sentencias traducidas.
SurfOption.cs
Esta clase contiene varios
enum
que definen las opciones de navegación de las siguientes
páginas:
Upload.aspx
public enum UploadOption
{
ShowSelectFile,
ShowSelectFileFromCenter,
ShowFileCode,
UploadFileToWeb,
UploadFileToDataBase
}
75
Web Document Store and Printing
Download.aspx
public enum DownloadOption
{
ShowInsertFileCode,
ShowDocumentLink,
DeleteServerFileAndWait,
DownloadAndShowLink,
ShowPrintingsMonitorize
}
Payment.aspx.
public enum PaymentOption
{
ShowInsertFileCode,
ShowPrintingsPayment,
ShowPrintingsCancel,
ShowPayedPrintings,
ShowPayPanel
}
También contiene varios
enum
que definen los mensajes que se pueden mostrar como
respuesta a sucesos que ocurren en las siguientes páginas:
Upload.aspx
public enum UploadMessage
{
ErrorMaxSize = 1
WarningFileSize,
WarningExtension,
WarningFileSizeAndExtension,
ErrorFileEmpty,
ErrorUploadFail,
ErrorDataBaseComunication
}
76
Web Document Store and Printing
Download.aspx
public enum DownloadMessage
{
ErrorNotDownloadOutsideCenter = 1,
InfoWaitForStartMonitorize,
ErrorDownloadFail,
ErrorNotPrintablesArticles,
InfoFileDeleted,
SucessMonitorizeStop,
ErrorDataBaseComunication,
ErrorFillMonitorizeTable,
}
Payment.aspx.
public enum PaymentMessage
{
ErrorNotPaymentOutsideCenter = 1,
ErrorNotPrintablesArticles,
WarningNotAllPrintingsCompleted,
SuccesCancelPayment,
ErrorWebServiceComunication,
ErrorDataBaseComunication,
ErrorFillPaymentTable
}
7.2.2.1.4 Clases de las Páginas ASPX
Default.aspx.cs
Esta es la página de menú donde se muestran enlaces a la página de subir documentos y a la
de descargarlos. Al cargar la página se cargan obtiene el idioma actual, que es el que hay que
mostrar los textos. También se comprueba si la página está siendo visualizada desde un
centro y si es así se añade una instancia de la clase
Center
como variable de sesión. Se
eliminan las variables de sesión que ya no sean útiles y se cargan los textos de la página en
función del centro.
77
Web Document Store and Printing
Los métodos declarados en Default.aspx.cs son los siguientes:
protected void Page_Load(object sender, EventArgs e):
Se ejecuta al cargar la
página.
private void checkAccessible():
Comprueba si la página es accesible desde un
centro. Si lo es, crea una instancia de la clase Center y la almacena en la variable de
sesión center.
private void DeleteSessionValue():
comprueba si existe alguna variable de sesión
que se utiliza en el resto de páginas y ya no son necesarias y las borra.
Upload.aspx.cs
En esta página se suben los documentos al servidor y se muestra un código que sirve al
usuario para identificar el documento almacenado. Los controles se dividen en paneles que
se muestran u ocultan en función de lo que se quiera mostrar.
La página tiene cinco acciones que se pueden llevar a cabo cuando se carga la página:
ShowSelectFile:
Esta acción muestra el control para subir archivos cuando no se
accede desde un centro.
ShowSelectFileFromCenter:
Esta acción muestra el control para subir archivos
cuando se accede desde un centro. Muestra la tabla de artículos imprimibles del
centro.
ShowFileCode:
Esta acción muestra la contraseña relacionada con el archivo cuando se
ha subido correctamente el documento en el servidor de base de datos.
78
Web Document Store and Printing
UploadFileToWeb:
Esta acción sube el documento al servidor web. Si es correcto se
recarga la página con la opción UploadFileToDataBase y si no se muestra un mensaje
en la página. Message.aspx.
UploadFileToDataBase:
Esta acción almacena el documento del servidor Web a la
base de datos. Si es correcto se recarga la página con la opción ShowFileCode y si no
se muestra un mensaje en la página Message.aspx.
Los métodos declarados en Upload.aspx.cs son los siguientes:
protected void Page_Load(object sender, EventArgs e):
Se ejecuta al cargar la
página.
private SurfOption.UploadOption CheckOption():
Selecciona la opción a realizar
en la página web.
private
bool
CheckAccessibleFromCenter():
Comprueba si la página se está
accediendo desde un centro. Bien por tener una instancia de la clase
almacenado en la variable de sesión
center,
Center
por tener un parámetro en la dirección
URL que lo indique o por tener un parámetro de configuración que indique el
centro. Si es accesible y no existía la variable de sesión, la crea.
private
void
CheckSessionItems(SurfOption.UploadOption
option):
Elimina
las variables de sesión que no se necesitan para cada opción.
private void HidePanels(bool upload, bool code, bool table):
Oculta los
paneles que no se usan para cada opción de navegación de página.
private void FillArticlesTable():
Rellena la tabla con los artículos imprimibles
del centro.
79
Web Document Store and Printing
protected void btnUpload_Click(object sender, EventArgs e):
Evento que se
ejecuta para al pulsar el botón de subida para almacenar el archivo en la base de
datos.
private CheckFileResult CheckFileSize(int fileSize):
Comprueba el tamaño
del archivo a subir.
private CheckFileResult CheckFileExtension(string name):
Comprueba si la
extensión del archivo es de tipo imprimible por configuración.
private
void
strFileName):
UploadFileToWebServer(HttpPostedFile
uploadFile,
string
Almacena el archivo temporalmente en el servidor web.
private void AddFile(string filePath):
Almacena el archivo que se encuentra
en el servidor web en el servidor de base de datos.
private void DeleteDocument(string filePath):
Borra el archivo del servidor
web.
private string GetFileExtension(string fileName):
Obtiene la extensión del
archivo.
private bool FileExtensionIsApproved(string extension):
Comprueba si la
extensión esta añadida por configuración como imprimible.
protected void btnMoreUpload_Click(object sender, EventArgs e):
Evento
que se ejecuta al pulsar el botón para mostrar la opción de añadir más documentos en
la base de datos.
80
Web Document Store and Printing
Download.aspx.cs
En esta página se descargan los documentos almacenados anteriormente y se realiza la
monitorización de los trabajos de impresión enviados del documento descargado.
La página tiene cinco acciones que se pueden llevar a cabo cuando se carga la página:
ShowInsertFileCode:
Esta acción se muestra al cargar la página por primera vez.
Permite introducir el código del documento, para descargarlo. Si el código existe en
la base de datos y se puede descargar, se recarga la página con la opción
ShowDocumentLink
y si no se muestra un mensaje en la página Message.aspx.
ShowDocumentLink:
Esta opción descarga el documento de la base de datos al servidor
web durante un tiempo establecido por configuración y se muestra un enlace para
que el usuario lo descargue o lo abra. Cuando este tiempo transcurre, se recarga la
página en la opción DownloadAndShowLink.
DeleteServerFileAndWait:
Esta opción elimina el documento del servidor web y
muestra un mensaje en la página preguntando al usuario si empezar la monitorización
o mostrar otra vez el enlace. Si hay que monitorizar las impresiones se recarga la
página con la opción
ShowPrintingsMonitorize
y en caso contrario con la opción
DownloadAndShowLink.
DownloadAndShowLink:
Descarga el documento de la base de datos al servidor web y
recarga la pagina en la opción ShowDocumentLink.
ShowPrintingsMonitorize:
Esta acción se encarga de mostrar los datos sobre las
impresiones del documento realizadas, se refresca automáticamente y se leen los
datos de la tabla de impresiones de la base de datos.
81
Web Document Store and Printing
Los métodos declarados en Download.aspx.cs son los siguientes:
protected void Page_Load(object sender, EventArgs e):
Se ejecuta al cargar la
página.
private
SurfOption.DownloadOption
realizar
en
la
página
CheckAccessibleFromCenter
Message.aspx
private
web.
CheckOption():
Selecciona la opción a
Realiza
llamada
una
la
método
y si no es accesible se muestra un mensaje en la pagina
indicando que solo se puede acceder a la pagina desde un centro.
bool
CheckAccessibleFromCenter():
Comprueba si la página se está
accediendo desde un centro. Bien por tener una instancia de la clase
almacenado en la variable de sesión
center,
Center
por tener un parámetro en la dirección
URL que lo indique o por tener un parámetro de configuración que indique el
centro. Si es accesible y no existía la variable de sesión, la crea.
private void CheckSessionItems(SurfOption.DownloadOption option):
Elimina
las variables de sesión que no se necesitan para cada opción.
private
void
printings):
HidePanels(bool
code,
bool
table,
bool
link,
bool
Oculta los paneles que no se usan para cada opción de navegación de
página.
private void RefreshPage(string action):
Añade una etiqueta HTML indicando
que se debe recargar la página en el periodo de tiempo indicado.
private void FillArticlesTable():
Rellena la tabla con los artículos imprimibles
del centro.
private
bool
FillPrintingTable(string
code):
Rellena la tabla con las
impresiones enviadas del documento que se descargo.
82
Web Document Store and Printing
private void ShowMonitorizeLinks(bool showPause):
Muestra el link para parar
la monitorización si esta activa o para reiniciarla si esta pausada.
private List<Printing> LeakPrintingsByCenter(List<Printing> printings):
Filtra los artículos que no son de ese centro.
protected void btnDownloadWeb_Click(object sender, EventArgs e):
Evento
que se ejecuta tras pulsar el botón para descargar el documento.
private void WriteDocument(string password):
Filtra las impresiones que no
pertenecen al centro actual.
private
bool
DeleteDocument(string
filePath):
Elimina el documento del
servidor web.
private
void
DeleteDocument
CloseFileWebBrowser():
Realiza una llamada al método
para eliminar el archivo del servidor web.
private string GetFileExtension(string fileName):
Devuelve la extensión del
nombre del archivo.
private string getFileName(string fileName):
Devuelve el nombre del archivo
sin la extensión.
Payment.aspx.cs
En esta página se muestran las impresiones realizadas para el documento y se calcula el
precio total en función de las copias impresas, que están asociadas a un artículo de impresión
del centro.
83
Web Document Store and Printing
La página tiene cinco acciones que se pueden llevar a cabo cuando se carga la página:
ShowInsertFileCode:
Esta acción se muestra al cargar la página por primera vez.
Permite introducir el código del documento, para mostrar las impresiones realizadas.
Si el documento existe, se recarga la página y se muestra la acción
si no fue marcado como pagado anteriormente y la opción
ShowPrintingsPayment
ShowPayedPrintings
en caso contrario.
ShowPrintingsPayment:
Esta acción muestra las impresiones realizadas del
documento y el precio total de todas ellas. Pulsando sobre los RadioButton de cada
impresión recarga la página y se muestra la opción
ShowPrintingsCancel,
que
permite cancelar esa impresión. Se puede ejecutar el pago habiendo pulsado el
checkbox primero. Si se marca el documento como pagado en la base de datos se
recarga la página y se muestra la acción ShowPayPanel, en caso contrario se muestra
un error en el pago.
ShowPrintingsCancel:
Permite cancelar una impresión seleccionada anteriormente
desde la tabla de impresiones. Se tiene que escribir el motivo de la cancelación. Se
muestra un mensaje en la página
Message.aspx
indicando si la operación se realizo
correctamente.
ShowPayedPrintings:
Se muestra el nombre del documento y se indica que las
impresiones ya han sido pagadas anteriormente.
ShowPayPanel:
Esta opción se muestra cuando se ha realizado el pago correctamente.
Los métodos declarados en Payment.aspx.cs son los siguientes:
protected void Page_Load(object sender, EventArgs e):
Se ejecuta al cargar la
página.
84
Web Document Store and Printing
private SurfOption.PaymentOption CheckOption():
en la página web. Realiza una llamada la método
Selecciona la opción a realizar
CheckAccessibleFromCenter
y si
no es accesible se muestra un mensaje en la pagina Message.aspx indicando que solo
se puede acceder a la pagina desde un centro.
private
bool
CheckAccessibleFromCenter():
Comprueba si la página se está
accediendo desde un centro. Bien por tener una instancia de la clase
almacenado en la variable de sesión
center,
Center
por tener un parámetro en la dirección
URL que lo indique o por tener un parámetro de configuración que indique el
centro. Si es accesible y no existía la variable de sesión, la crea.
private void CheckSessionItems(SurfOption.PaymentOption option):
Elimina
las variables de sesión que no se necesitan para cada opción.
private void HidePanels(bool code, bool table, bool cancel, bool pay,
bool payLink):
Oculta los paneles que no se usan para cada opción de navegación de
página.
protected void btnPaymentWeb_Click(object sender, EventArgs e):
Evento
que se ejecuta al pulsar el botón para mostrar las impresiones realizadas para el
documento que se introdujo la contraseña.
private
void
FillPrintingTable(string
code):
Rellena la tabla con las
impresiones del documento.
private List<Printing> LeakPrintings(List<Printing> printings):
Filtra las
impresiones que estén no sean de ese centro, las impresiones canceladas y las que no
hayan generado ticket.
protected void btnPay_Click(object sender, EventArgs e):
Evento que se
ejecuta pulsando el botón para marcar el documento como pagado.
85
Web Document Store and Printing
private void DocumentPay(string code):
Intenta marcar el documento de la base
de datos como pagado.
protected void btnCancel_Click(object sender, EventArgs e):
Evento que se
ejecuta la pulsar el botón cancelar, para cancelar una impresión.
protected void btnExitCancel_Click(object sender, EventArgs e):
Evento
que se ejecuta al pulsan el botón para finalizar la cancelación de la impresión.
7.2.2.2. Configuración
La configuración de este componente se realiza a través de su fichero de configuración
“web.config”.
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<!-- Language configuration-->
<add key="default_language" value="es"/>
<add key="languages" value="es,en,pt,fr"/><!-value="ESPAÑOL,INGLES,PORTUGUES,ALEMAN,FRANCES"/>--><!--assigned Locale ID by microsoft
(http://msdn.microsoft.com/es-es/goglobal/bb964664(en-us).aspx)-->
<add key="XmlTranslationFile" value="language\Languages.xml"/>
<!-- Upload file to server folder-->
<add key="tempDocPath" value="WDSFiles"/>
<!--max file size MB (Max value 100 httpRuntime maxRequestLength="102400")-->
<add key="MaxFileSize" value="20"/>
<add key="SizeToShowMessage" value="10"/>
<!-- Refresh page -->
<add key="SecsToIniciateMonitor" value="20"/><!-- If empty, value = 20 -->
<add key="RefreshSecTime" value="5"/><!-- If empty, value = 5 -->
<!-- The extension to be show-->
<add key="supportedFileTypes" value="txt, doc, docx, xls, xlsx, ppt, pdf, bmp, tif, tiff,
gif, jpg, jpeg, png"/>
<add key="center" value=""/>
<!-- Connection strings, WDS database conexion string encrypt with textcrypter -->
<add key="WDSDataBase" value="******************************************************"/>
<!-- AutoTicket webservice-->
<add key="WS_AutoTicket.WebService"
value="http://localhost:11872/webservicefacturacion/WebService.asmx"/>
86
Web Document Store and Printing
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Temp\WDSWeb.log"/>
<param name="AppendToFile" value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
</customErrors>
<httpRuntime executionTimeout="90" maxRequestLength="102400"
useFullyQualifiedRedirectUrl="true" requestLengthDiskThreshold="20480"/><!--100MB tamaño maximo-> <!-- requestLengthDiskThreshold: igual al valor de tamaño maximo en kb (MaxFileSize*1024)-->
<mobileControls cookielessDataDictionaryType="System.Web.Mobile.CookielessData"/>
<deviceFilters>
<filter name="isJPhone" compare="Type" argument="J-Phone"/>
…
<filter name="supportsVoiceCalls" compare="CanInitiateVoiceCall" argument="true"/>
</deviceFilters>
</system.web>
</configuration>
87
Web Document Store and Printing
7.2.3. Servicio Web
El servicio web permite al servicio Windows de monitorización de impresiones comunicarse
con la base de datos del sistema. El servicio web requiere autenticación mediante cabecera
SOAP. El identificador de usuario y contraseña están ofuscados con TextCrypter, usándose la
misma clave de ofuscación para el caso de la cadena de conexión con la base de datos. Hay
que ponerse en contacto con el desarrollador del Sitio Web para obtener la clave de
ofuscación. Hay que tener en cuenta que si cambian estos parámetros, habría que cambiarlos
en las aplicaciones que llamen a los webmethods del servicio web.
7.2.3.1. Componentes
7.2.3.1.1 Webmethods
Tiene publicados cuatro webmethods:
public bool AddPrinting(Guid uniqueIdentifier, int idCenter, DateTime
submittedTime, int totalPages, bool color,int printingState, int idTicket,
string articleDescription, decimal price)
Permite añadir una impresión asociada a un documento almacenado en la base de
datos.
Devuelve un bool indicando si la operación pudo realizarse con éxito o no.
public string GetDocumentPassword(Guid guid)
Permite obtener el código de documento asociado a un Guid.
Devuelve un
string
con el código asociado al
Guid
o un
null
si no encontró un
documento con ese Guid en la base de datos.
88
Web Document Store and Printing
public bool UpdatePrinting(Guid uniqueIdentifier, DateTime submittedTime, int
printingState)
Permite actualizar el estado de una impresión mediante el
Guid
que identifica
externamente al documento y de la fecha de envió a la cola de impresión.
Devuelve un bool indicando si la operación pudo realizarse con éxito o no.
public bool UpdatePrintingWithTicketCancelled(Guid uniqueIdentifier, DateTime
submittedTime, int printingState)
Permite actualizar el estado de una impresión y establecer el campo booleano de
cancelación de ticket como true.
Devuelve un bool indicando si la operación pudo realizarse con éxito o no.
Database.cs
Los métodos de esta clase son utilizados por las webmethodos para realizar operaciones con la
base de datos.
Document.cs
Es una clase de envoltura de la tabla wds01_Document. Es serializable, para que las
aplicaciones que utilizan el servicio web puedan utilizar esta clase.
Printing.cs
Es una clase de envoltura de la tabla wds02_Printing. Es serializable, para que las aplicaciones
que utilizan el servicio web puedan utilizar esta clase.
89
Web Document Store and Printing
7.2.3.2. Configuración
La configuración de este componente se realiza a través de su fichero de configuración
“web.config”.
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<!-- Connection strings, WDS database conexion string encrypt with textcrypter -->
<add key="WDSDataBase" value="*******************************************************"/>
<!-- WDSUser -->
<add key="user" value="*********************" />
<!-- WDSpass -->
<add key="password" value="*********************" />
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Temp\WDSws.log"/>
<param name="AppendToFile" value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" %d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n "/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
90
Web Document Store and Printing
7.2.4. Servicio de monitorización de impresiones
Identificado en el esquema como “WDS Monitor”, es un servicio Windows que monitoriza
la cola de impresión del sistema operativo en el cual está instalado. La monitorización se
realiza mediante un subcomponente llamado SpoolerHook que, además de monitorizar,
permite ejecutar acciones sobre las impresiones que llegan a la cola de impresión.
Cuando llega una impresión a la cola, se comprueba si el nombre del documento contiene
un GUID que lo identifica como un documento gestionado por el sistema. Si no contiene un
GUID válido, se verifica si el nombre del documento cumple con una determinada
expresión regular que habilita su impresión. Si no cumple ninguna de estas condiciones, la
impresión se cancela.
Cuando se trata de un documento gestionado por el sistema, se genera un ticket asociado a
la impresión mediante el servicio web del sistema de facturación, y se monitoriza el estado
de la impresora con la cual se está realizando la impresión. En caso de que durante la
impresión la impresora se encuentre en un estado obstructivo, se cancela el ticket generado
y la impresión. Un estado obstructivo es aquel que impide que un documento se siga
imprimiendo correctamente.
Para la comprobación de documentos, creación y actualización de impresiones dentro del
sistema, se realizan llamadas al Servicio Web del mismo.
La solución de Visual Studio que contiene el código del Servicio está formada por varios
proyectos:
los proyectos Core, NamePipes y SpoolerHook se describen como componentes en
el siguiente apartado.
91
Web Document Store and Printing
Los proyectos HookClient y HookInstaller son proyectos que se emplean para
instalar (desinstalar) el SpoolerHook añadiendo (borrando) una entrada en el registro
de Windows que hace referencia a la librería del SpoolerHook.
El proyecto HookInstallerApp tiene como salida una aplicación de ventana que se
usa para instalar e desinstalar el SpoolerHook. Se apoya en los proyectos HookClient y
HookInstaller.
El proyecto WDSMonitorApp es un proyecto de consola que se emplea para probar
la funcionalidad del Servicio sin tener que instalarlo, permitiendo así hacer
depuraciones de código. Se debe hacer uso de la aplicación de ventana
“HookInstallerApp.exe” que es salida del proyecto con el mismo nombre, para
instalar y desinstalar el SpoolerHook.
El proyecto WDSMonitorService es el proyecto que crea el Servicio Windows en sí.
Depende de las salidas de los proyectos HookClient y HookInstaller para instalar
(desinstalar) el SpoolerHook durante la instalación (desinstalación) del Servicio
Windows.
El proyecto WDSMonitorInstaller genera el instalador (MSI) para el Servicio
Windows.
El proyecto Crypt se usa para descodificar las cadenas de caracteres ofuscadas.
7.2.4.1. Componentes
7.2.4.1.1 Core
Contiene la funcionalidad principal del Servicio Windows. El proyecto homónimo hace
referencia a dos carpetas que agrupan las clases necesarias para procesar información sobre
una impresora y una impresión, y que son respectivamente “Printer” y “Printing”.
92
Web Document Store and Printing
Seguidamente se lista el resto de clases que usa el componente Core:
Core.cs: es una clase que se usa para crear una instancia del objeto
Core
que
desencadena la funcionalidad principal del Servicio, creando una instancia única la de
clase
PrintingMonitor.
Durante la creación de la instancia
está instalado el SpoolerHook, mediante la llamada al método
Core,
se comprueba si
CheckSpoolerHooker()
ubicado en la misma clase.
PrintingMonitor.cs: en esta clase se concentran las operaciones que se realizan
durante el procesamiento de impresiones según su estado, alta y actualización de la
información relativa a las impresiones dentro del sistema mediante su servicio web y
creación de tickets asociados a las impresiones mediante el servicio web del sistema
de facturación. Dentro de esta clase se crean dos tipos de suscripciones a eventos:
notificación sobre impresiones desde la clase
PrintingPipe,
realiza dentro del método
y la notificación del estado de una
ProcessPrinting,
cuyo tratamiento se
impresora desde la clase PrinterStatusMonitor, cuyo tratamiento se realiza dentro
de la llamada al método ProcessInterruptedPrinting.
PrintingPipe.cs: esta clase se encarga de establecer comunicación con el
SpoolerHook mediante el mecanismo de tuberías haciendo uso de la clase
PipeConnection.
Se mantiene a la escucha sobre la tubería hasta que recibe
información sobre una impresión. Cuando se produce esto último, se da formato a la
información recibida como un objeto Printing y se pasa como parámetro al método
delegado OnNotify. Este método delegado dispone de un parámetro de salida que se
usa como respuesta para la acción a realizar con respecto a la impresión notificada:
seguir imprimiendo o cancelar la impresión, enviándose como mensaje al SpoolerHook
mediante la tubería.
93
Web Document Store and Printing
PrinterStatusMonitor.cs: es la clase que contiene la funcionalidad necesaria para
obtener el estado una impresora. Se apoya en funciones importadas desde el
controlador de la cola de impresión del sistema operativo. La frecuencia de
comprobación del estado de una impresora viene determinada por un temporizador
(objeto
Timer)
que, cuando se produce el evento asociado (OnTimedEvent),
comprueba el estado de la impresora invocando un método delegado en caso de que
el estado de la impresora obtenido sea válido. Este invocación recibe como
parámetros la impresión interrumpida a causa del tratamiento del estado y la acción a
tomar dependiendo de si el estado de la impresora es obstructivo o no (cancelar o
seguir imprimiendo respectivamente).
SectionConfigHander.cs: esta clase representa el manejador para las secciones de
configuración de los estados obstructivos de una impresora y los parámetros de la
expresión regular para las impresiones.
7.2.4.1.2 NamePipes
Este componente contiene las clases necesarias para establecer una comunicación basada en
el mecanismo de tuberías con nombre.
Dichas clases son las que se describen seguidamente:
PipeConnection.cs: esta clase contiene los métodos básicos para crear una tubería
(constructor de la clase
PipeConnection),
conectarse a una tubería (Connect),
desconectarse de una tubería (Disconnect), leer de una tubería (ReadBytes), escribir
en una tubería (WriteBytes) y cerrar una tubería (Close). Todos es métodos se
apoyan en métodos de la clase NamedPipeWrapper.
94
Web Document Store and Printing
NamedPipeWrapper.cs: Implementa las operaciones que se realizan sobre
tuberías con nombre. Esta clase hace uso de los métodos importados desde la librería
del sistema kernel32.dll y declarados dentro de la clase PipeNative.
PipeNative.cs: incluye declaraciones de constantes, estructuras e importaciones de
funciones desde librerías del sistema (kernel32.dll y advapi32.dll) que son necesarias
para establecer una comunicación mediante tuberías con nombre.
PipeHandle.cs: clase que declara el manejador de una tubería con nombre. Este
manejador está compuesto por un puntero (IntPtr) y el estado de la conexión con la
tubería, a la que hace referencia el manejador, de tipo enum (PipeConnectionState).
NamedPipeIOException.cs: esta clase se usa para tratar como excepción
cualquier error que se pueda producir durante una comunicación mediante pipe con
nombres. Se lanza como excepción un objeto de tipo NamedPipeIOException.
7.2.4.1.3 SpoolerHook
En el proyecto de librería de C++ SpoolerHook se encuentra la funcionalidad principal del
subcomponente SpoolerHook. Consta de las siguientes clases:
SpoolerHook.cpp: define el punto de entrada de la librería SpoolerHook.dll. En esta
clase se implementan las operaciones que se realizan al interceptar llamadas al sistema
desde el controlador de la cola de impresión. Estas llamadas son:
StartDocPrinterW
y
EndDocPrinter.
SetJobW,
La intercepción se efectúa haciendo uso de la
utilidad Detours. Hay que tener en cuenta que para compilar el proyecto, además de
dicha utilidad, debe estar instalado en la máquina en la cual se realiza el desarrollo el
kit de desarrollo de controladores para Windows (Windows DDK).
95
Web Document Store and Printing
RequestManager.cpp: Esta clase se usa para notificar al Servicio Windows (o
cualquier otro componente) información vinculada a impresiones. La notificación se
efectúa mediante una comunicación basada en una tubería con nombre. Las funciones
que
implementan
el
SendJobNotification.
cometido
de
la
notificación
son
y
AddRequest
También se implementa en esta clase una función con la que
se obtiene información adicional sobre una impresión: GetJobDevMode.
Marshal.cpp: se emplea para serializar en forma de bytes la información relativa a
una impresión, con el fin de escribir dichos bytes en la tubería con nombre. Esta
operación de serialización se realiza mediante la función
que se apoya a su vez en las funciones
MarshallDownStructure
WriteNum, WriteMessage
y
y WriteSystemTime
declaras en la misma clase.
AutoCS.cpp: esta clase implementa un mecanismo de seguridad para la
concurrencia de procesos mediante secciones críticas.
Log.cpp: esta clase define el sistema de log de la librería mediante escritura de las
trazas que genera la librería en un fichero de texto.
utils.cpp: esta clase agrupa una serie de funciones que distinto cometido y de las que
hacen uso las clases SpoolerHook.cpp y RequestManager.cpp.
7.2.4.2. Configuración
Este componente se configura mediante el fichero de configuración con extensión “*.config”,
situado al mismo nivel que el ejecutable dentro de la ruta de destino.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="PrintingRegExLabels" type="Fractalia.GIS.WDSMonitor.SectionConfigHander, Core"
/>
96
Web Document Store and Printing
<section name="ObstructivePrinterStatus" type="Fractalia.GIS.WDSMonitor.SectionConfigHander,
Core" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="c:\temp\WDSMonitorService.log" />
<param name="AppendToFile" value="true" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1000KB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd/MM/yyyy HH:mm:ss} [%t] %-5p - %l - %m%n" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
</layout>
</appender>
<root>
<level value="info" />
<appender-ref ref="RollingFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
<appSettings>
<!-- The ID of the Center where the WDSMonitor is installed -->
<add key="CenterID" value=""/>
<!-- The URL of the WDS Webservice -->
<add key="WDSwsURL" value="http://localhost:1390/WDSws/WebService.asmx"/>
<!-- The encrypted user name for validating against the WDS Webservice -->
<add key="WDSwsEncrypted_user" value="********************"/>
<!-- The encrypted password associated to the user for validating against the WDS Webservice
-->
<add key="WDSwsEncrypted_pwd" value="*************************"/>
<!-- The URL of the AutoTicket Webservice -->
<add key="AutoTicketwsURL" value="http://localhost/webservicefacturacion/WebService.asmx "/>
<!-- The time frequency of refreshing the status of printers in seconds -->
<add key="PrinterStatusRefresh" value="3" />
<!-- The parametrized regular expression for printing documents without valid GUID.-->
<add key="PrintingRegEx" value="regEx1%label1%regEx2%label2%regEx3%"/>
</appSettings>
<!-- A section that contains the values of the regular expression parameters -->
<PrintingRegExLabels>
<label1>Value of label1</label1>
<label2>Value of label2</label2>
</PrintingRegExLabels>
97
Web Document Store and Printing
<!-- A section that contains obstructive printer status -->
<ObstructivePrinterStatus>
<Status>PRINTER_STATUS_ERROR</Status>
<Status>PRINTER_STATUS_NO_TONER</Status>
<Status>PRINTER_STATUS_NOT_AVAILABLE</Status>
<Status>PRINTER_STATUS_OFFLINE</Status>
<Status>PRINTER_STATUS_PAPER_JAM</Status>
<Status>PRINTER_STATUS_PENDING_DELETION</Status>
<Status>PRINTER_STATUS_SERVER_UNKNOWN</Status>
</ObstructivePrinterStatus>
</configuration>
7.2.5. Tarea Programada
WDSDbCleaner es una aplicación de consola que al instalarla crea una tarea programada para
eliminar documentos de la base de datos que cumplan una de las siguientes condiciones:
Si se han pagado las impresiones asociadas a ese documento.
Si el documento lleva almacenado en el servidor más tiempo que el establecido en
configuración.
La tarea programada se llama WDSDatabaseCleaner y se ejecuta diariamente a una hora
determinada en la instalación.
7.2.5.1. Componentes
Program.cs
Es la clase principal del proyecto, crea una instancia de
FileDelete
y llama a su único
método para borrar documentos de la base de datos del sistema.
98
Web Document Store and Printing
FileDelete.cs
El constructor crea una nueva instancia de la clase
operaciones con la base de datos y su único método,
parámetro
MaxStoredDay
DataBase,
que sirve para realizar
public void DeleteFiles(),
lee el
de el fichero de configuración que indica el número de días que
permanecen los documentos almacenados en el servidor. Si este parámetro está vacío llama a
un método de la clase
DataBase
para borrar los archivos marcados como pagados. Si este
parámetro contiene un número entero se llama a un método para borrar los archivos
pagados y los archivos que lleve más días almacenados en el servidor que el número de días
máximo establecido por configuración.
DataBase.cs
Esta clase se encarga de realizar las operaciones con la base de datos. Tiene dos funciones:
public int DeletePayedOrExpiredFiles(int MaxStoredDays),
que elimina los
documentos marcados como pagados y los que hayan sido almacenados hace mas de
el numero de dias pasados como argumento.
public int DeletedPayedFiles(),
que elimina del servidor, los documentos cuyas
empresiones hayan sido pagados.
Ambas devuelven el número de documentos borrados de la base de datos.
7.2.5.2. Configuración
Este componente se configura mediante el fichero de configuración con extensión “*.config”,
situado al mismo nivel que el ejecutable dentro de la ruta de destino.
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<!-- Connection strings, WDS database conexion string encrypt with textcrypter -->
99
Web Document Store and Printing
<add key="WDSDataBase" value="*************************************************"/>
<add key="MaxStoredDays" value="7"/>
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="c:\Temp\WDSDbCleaner.log" />
<param name="AppendToFile" value="true" />
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10" />
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
</configuration>
100
Web Document Store and Printing
8. Planificación
Web Document Store and Printing
8.1. Descripción de las actividades llevadas a cabo.
Desde el punto de vista de la organización de trabajos el presente proyecto se divide en dos
iteraciones, elaborando en primer lugar una primera propuesta de especificación del sistema
y los primeros prototipos de prueba, para en la segunda iteración completar la definición del
sistema y desarrollar todos los módulos completos. La organización de trabajos realizados ha
sido la siguiente:
8.1.1. Iteración 1
Primera iteración en el ciclo de desarrollo, con una duración aproximada de 4 meses, cuyo
resultado fue una primera definición del sistema, junto con los primeros prototipos de la
solución y sus pruebas correspondientes. Se dividió en las siguientes fases:
8.1.1.1. FASE 1 – Análisis y definición de casos de uso. Especificación de requisitos
funcionales.
Inicio: 01/10/2008
Fin: 28/10/2008
En esta fase se analizaron los perfiles de usuario y distintos casos de uso que puedan hacer de
la solución, así como las necesidades de funcionamiento requeridas y derivadas de ellos.
El objetivo de esta fase fue identificar todas las casuísticas que se puedan encontrar en el uso
de la solución por parte de los usuarios finales, derivadas de distintos perfiles de uso, los
distintos flujos de utilización que puedan presentarse y las necesidades concretas que puedan
encontrarse durante su seguimiento.
A partir de los casos de uso encontrados, incluyendo las interfaces software que definidas
para los distintos módulos, se especificaron los requisitos funcionales a cumplir por la
solución, plasmando ambos formalmente en un primer borrador del documento de
especificación de requisitos y diseño de la arquitectura de la solución.
102
Web Document Store and Printing
8.1.1.2. FASE 2 – Elaboración de prototipos de los distintos módulos.
Inicio: 29/10/2008
Fin: 10/01/2009
Durante esta fase se comenzó la construcción del sistema. Atendiendo a todas las
necesidades y requisitos especificados en la fase anterior, se construyeron prototipos de
todos los módulos del sistema, incluidas las interconexiones entre los mismos.
El resultado de esta fase fue un primer sistema con funcionalidades reducidas, a partir del
cual se pretendía evaluar la viabilidad de la solución y las necesidades más específicas que no
se encontraran en la primera fase de definición.
8.1.1.3. FASE 3 – Pruebas iniciales
Inicio: 11/01/2009
Fin: 30/01/2009
Una vez construidos los primeros prototipos, se procedió a realizar las pruebas oportunas,
tanto unitarias para cada módulo como del correcto funcionamiento de los distintos módulos
entre sí.
A pesar de que las pruebas fueron satisfactorias, se detectaron varias carencias en el sistema
que debían ser incluidas en la definición de la solución para que esta aportase una
funcionalidad completa a los distintos perfiles de usuarios detectados.
8.1.2. Iteración 2
Segunda iteración del ciclo de desarrollo, en la cual se realizó la especificación final de todas
las necesidades y requisitos a cubrir a partir de los datos obtenidos en la primera iteración.
Una vez definido el sistema por completo, se pasó a completar su construcción y diseño,
dando lugar a la solución final.
103
Web Document Store and Printing
8.1.2.1. FASE 4 – Definición final de requisitos de la solución
Inicio: 31/01/2009
Fin: 03/03/2009
A partir de los datos obtenidos de las pruebas realizadas con los prototipos iniciales, y
llevando a cabo un análisis más en profundidad de casuísticas no encontradas durante la
primera fase de definición, se completó esta detallándola en la medida de lo necesario.
El resultado de esta fase fue una propuesta funcional completa a partir de la cual se puedo
comenzar la construcción de la solución final.
8.1.2.2. FASE 5 – Desarrollo de la solución
Inicio: 04/01/2009
Fin: 09/07/2009
Una vez se obtuvo una definición completa de la solución, se pasó a su construcción final.
Esta construcción abarca desde el desarrollo de los distintos módulos y de las
interconexiones entre ellos, hasta el diseño de los interfaces finales y su adaptación para
mejorar al máximo la usabilidad de las mismas.
El resultado de esta fase fue un sistema completo y funcional ya preparado para llevar a cabo
las pruebas finales y la validación de los resultados obtenidos.
8.1.2.3. FASE 6 – Pruebas finales
Inicio: 10/07/2009
Fin: 15/08/2009
Una vez construido el sistema completo se procedió a realizar todas las pruebas necesarias
para su validación final, que incluían el funcionamiento aislado de cada componente, las
interconexiones entre los mismos y un análisis de la facilidad en su utilización por parte de
los usuarios finales.
104
Web Document Store and Printing
Durante las pruebas se encontraron pequeños defectos que fueron corregidos, de manera
que al terminar esta fase se disponía de la solución completa, revisada y lista para su puesta
en explotación.
8.1.2.4. FASE 7 – Documentación
Inicio: 01/10/2008
Fin: 31/08/2009
Esta se trata de una fase auxiliar, incluida en esta iteración por mero pragmatismo, cuyo
objetivo es documentar el desarrollo del proyecto desde su inicio hasta las conclusiones
finales.
La documentación del proyecto ha sido una tarea llevada a cabo de manera continua durante
toda la elaboración del proyecto, por lo que abarca todo el tiempo de desarrollo de principio
a fin, e incluso algún tiempo más invertido para completarla a la finalización del proyecto.
8.2. Resumen de la planificación
A continuación se muestra un diagrama resumen de la planificación seguida para el
desarrollo del proyecto:
Año 2008
9
10
11
Año 2009
12
1
2
3
4
5
6
7
8
9
Fase 1 - Definición inicial
ITERACIÓN 1 Fase 2 - Prototipos
Fase 3 - Pruebas iniciales
Fase 6 - Definición completa
ITERACIÓN 2
Fase 7 - Desarrollo de la solución
Fase 8 - Pruebas finales
Fase 9 - Documentación
Figura 4. Resumen de la planificación del proyecto
105
Web Document Store and Printing
9. Estudio económico
Web Document Store and Printing
Los costes definidos para el proyecto incluyen el trabajo de definición y desarrollo, los costes
de materiales y de software necesarios para el desarrollo y los costes indirectos asociados al
mismo.
9.1. Costes de personal
El presente proyecto ha sido desarrollado por un ingeniero informático trabajando una
media de 8 horas a la semana durante 40 semanas., lo que hace un total de 320 horas
Suponiendo un salario de 15€ por hora trabajada, el coste total de personal asciende a
4800€.
Detallándolo según las distintas fases del proyecto, los costes de personal son los siguientes:
FASE
HORAS
COSTE/HORA
PARCIAL
1
30
15,00 €
450,00 €
2
70
15,00 €
1050,00 €
3
24
15,00 €
360,00 €
4
32
15,00 €
480,00 €
5
140
15,00 €
2100,00 €
6
24
15,00 €
360,00 €
7
Todo el proyecto
N/A
N/A
TOTAL
4800,00 €
9.2. Costes en materiales
Los costes de materiales asociados al proyecto incluyen tanto el hardware como el software
necesario para el desarrollo del proyecto.
Además de todos los elementos necesarios para el desarrollo propiamente dicho, se incluyen
los costes de materiales necesarios para las pruebas del sistema. De la misma manera se
incluyen los costes asociados a la publicación del proyecto.
107
Web Document Store and Printing
Sin embargo, se excluyen varios elementos por disponer de ellos de manera previa y
encontrarse completamente amortizados. Entre estos elementos se incluyen los servidores
utilizados junto con sus licencias asociadas de sistemas operativos, y la licencia de la
herramienta de desarrollo de software.
De esta manera, los costes en materiales resultaron como se especifica a continuación:
CONCEPTO
UNIDADES
PRECIO UNITARIO
PARCIAL
Equipo PC de desarrollo
1
700,00 €
700,00 €
Impresora
1
300,00 €
300,00 €
Microsoft Windows XP Professional
1
99,00 €
99,00 €
Microsoft Office 2007
1
129,99 €
129,99 €
Libros de apoyo
1
63,99 €
63,99 €
Reprografía y encuadernación
1
50,60 €
50,60 €
TOTAL
2843,58 €
9.3. Costes indirectos
Los costes indirectos asociados al proyecto incluyen una estimación del coste de suministros
junto con los costes de gestión del proyecto.
Los costes indirectos pueden resumirse de la siguiente manera:
CONCEPTO
PARCIAL
Suministros generales
210,00 €
Gastos de gestión
350,00 €
TOTAL
560,00 €
9.4. Resumen de costes
La suma de todos los costes asociados al proyecto nos proporciona el precio final asociado al
mismo, incluyendo todo lo necesario desde su inicio hasta su posible puesta en explotación.
108
Web Document Store and Printing
Los costes totales del proyecto se resumen como sigue:
CONCEPTO
PARCIAL
Costes de personal
4800,00 €
Costes de materiales
2843,58 €
Costes indirectos
560,00 €
TOTAL DEL PROYECTO
8203,58 €
109
Web Document Store and Printing
10. Conclusiones y líneas futuras
Web Document Store and Printing
10.1. Resumen de resultados
Como resumen de resultados del proyecto, cabe destacar que todos los objetivos definidos
para el mismo, con mayores o menores dificultades técnicas y necesidades de adaptación,
han podido ser llevados a cabo.
Respecto del almacenamiento temporal de documentos, su puesta en funcionamiento
resultó relativamente sencilla, ya que la actual situación de tecnologías aplicables en el
entorno de Internet permite llevar a cabo desarrollos de este tipo con una dedicación de
tiempo y recursos asequible.
Las principales dificultades técnicas surgieron del lado de la monitorización y control de las
colas de impresión. Esto es debido a que resulta necesario establecer un enlace con el núcleo
del sistema operativo, ya que se interviene en su operatividad habitual. Este hecho implicó la
necesidad de utilizar librerías nativas de núcleo de Windows, como puede ser la librería
“kernel32.dll”, ya que son estos elementos los que permiten interactuar con el sistema
operativo a bajo nivel.
Es de destacar que el lenguaje de programación principal que en principio se decidió utilizar
para el desarrollo del proyecto era el C#. Sin embargo, las especificaciones de las interfaces
publicadas por los componentes de bajo nivel del sistema operativo impusieron la necesidad
de uso del lenguaje C++. De esta manera, se crearon en este lenguaje los elementos
necesarios para la comunicación con las librerías y operatividad del sistema operativo,
estableciendo nuevos interfaces que permiten utilizar las funcionalidades de las mismas
mediante código escrito en C#.
111
Web Document Store and Printing
Respecto de la facturación, no se han encontrado obstáculos de relevancia. Este hecho viene
marcado por las propias especificaciones del sistema de facturación con el que interactúa este
sistema, ya que la publicación de un servicio web por su parte, con todos los métodos
necesarios para realizar las tareas especificadas, simplifica en gran medida el desarrollo de los
módulos de interacción con él.
De hecho, el desarrollo de este proyecto ha puesto de manifiesto la gran utilidad y
versatilidad que entraña el uso de estos servicios web, ya que su desarrollo es relativamente
sencillo, constituyen una manera muy útil de abstraer la funcionalidad de un sistema para su
utilización a través de la red, y ofrecen un grado de seguridad más que aceptable mediante la
utilización del protocolo HTTPS y la identificación de acceso a través de las cabeceras
SOAP.
El resto de dificultades del proyecto vinieron del lado del diseño, que resulta un arduo
trabajo cuando se requiere cierta universalidad respecto a los navegadores. Sin embargo, la
experiencia y la reciente voluntad de desarrolladores por adaptarse a los estándares
existentes reduce en gran medida la dedicación necesaria para esta tarea.
10.2. Futuros desarrollos
A pesar de los buenos resultados que se han obtenido en el desarrollo del proyecto, se han
detectado áreas en las que en el futuro se debería hacer hincapié con el objetivo de dotar de
mayor versatilidad al sistema para poder adaptarlo a un espectro más amplio de entornos.
112
Web Document Store and Printing
10.2.1.
Respecto al almacenamiento e impresión
Como se ha comentado, el almacenamiento remoto de documentos no entraña especial
dificultad, y su funcionalidad, por ser bastante básica, no merece un alto grado de
investigación al respecto, ya que actualmente se cubren a la perfección las necesidades
identificadas. Por el lado de la impresión de documentos, sin embargo, sí se han detectado
posibles mejoras sustanciales, que posibilitarían dotar de mayor universalidad a la solución.
Por un lado, es destacable que la solución adoptada requiere la necesidad de, a la hora de la
impresión de los documentos, hacer uso de un sistema operativo Microsoft Windows. Esto
es debido a que el enlace establecido con el sistema operativo es específico de este, por la
utilización realizada de sus librerías nativas, y en principio no es fácilmente exportable a
otros sistemas operativos como pueden ser los MAC OS X o cualquier distribución Linux.
Sería de bastante utilidad desarrollar adaptaciones para estos sistemas para dotar de
universalidad a la solución. A este respecto también cabe mencionar que el desarrollo del
proyecto garantiza la compatibilidad hasta la versión Windows XP de los sistemas operativos
de Microsoft, siendo necesarios estudios y posibles adaptaciones para su operatividad en
versiones posteriores.
Por otro lado actualmente, tanto este sistema como los ya existentes detallados en el estado
del arte, tienen limitaciones respecto a la facilidad de uso por parte del usuario. Esta
facilidad puede entenderse en términos de la necesidad del usuario de establecer algún tipo
de interacción con los sistemas existentes. Esto es, por ejemplo el sistema desarrollado en el
presente proyecto, pasa por la necesidad de que el usuario final utilice en algún momento un
PC gestionado, ya que es desde este recurso donde se puede establecer la monitorización
necesaria para el control y gestión del uso de la impresora. Otros sistemas, como pueden ser
aquellos basados en la utilización del protocolo IPP, pasan por la necesidad de publicar el
driver específico de la impresora, y su instalación local por parte del usuario, para poder
hacer uso de ella.
113
Web Document Store and Printing
Para el desarrollo de este proyecto se descartó el uso del protocolo IPP ya que su adaptación
al alcance del proyecto propuesto hubiera resultado más laboriosa que la solución utilizada.
Sin embargo, la proliferación de impresoras de red, hace vislumbrar la posibilidad de que,
realizando un estudio que integre la solución adoptada en este proyecto junto con un estudio
pormenorizado del protocolo IPP, se pueda desarrollar una solución que permita a los
usuarios la utilización continua de sus propios recursos, sin perder la capacidad de gestión y
control necesarios.
Por último cabe mencionar que, respecto a la seguridad concerniente al almacenamiento de
archivos, se ha adoptado una solución, basada en el almacenamiento de los mismos en forma
binaria, que cumple los mínimos exigidos legalmente. Sin embargo, convendría estudiar la
posibilidad de uso de un método de cifrado más seguro y que no suponga un aumento
significativo de los tiempos de proceso necesarios, como por ejemplo la encriptación DES o
AES.
10.2.2.
Respecto a la facturación
La principal limitación que se puede encontrar respecto de la facturación es que el pago del
servicio se realiza necesariamente en modo pos pago, esto es, una vez el servicio ya ha sido
utilizado, junto con que el cobro debe realizarse de manera manual por parte de un
empleado de la empresa explotadora final.
Un primer desarrollo a tener en cuenta sería la integración con un sistema de facturación
que permita el pago mediante tarjeta de crédito, de manera que la única interacción
necesaria entre el usuario final y el empleado sea la de recoger los trabajos de impresión
realizados.
114
Web Document Store and Printing
Por otro lado, y en relación con la posibilidad de uso de la impresora sin necesidad de
interacción con los sistemas existentes, sería interesante el desarrollo de un sistema que
permita la facturación en modo prepago. De esta el usuario podría disponer de unas
credenciales propias que le permitan, por un lado, la compra y recarga de saldo disponible
para el uso del servicio y, por otra, su utilización desde cualquier lugar, en cualquier
momento y sin necesidad de utilizar nada más que su propio PC para realizar los trabajos.
Las extensiones de este posible sistema son muy amplias. Así, se podría concebir la
utilización del servicio desde el propio hogar del usuario, donde el usuario incluso podría
decidir dónde y cuándo recoger sus trabajos, o incluso establecer un servicio de entrega a
domicilio.
El sistema prepago posibilitaría la eliminación de la necesidad para el usuario de interacción
física con sistemas y empleados, ya que la compra y recarga de saldo podría realizarse a
través de Internet. Además, posibilitaría a los explotadores finales la utilización de las cada
vez más extendidas tarjetas de fidelización de clientes, así como la integración exhaustiva de
este servicio con cualquier otro que se quiera ofertar.
115
Web Document Store and Printing
11. Bibliografía
Web Document Store and Printing
Los siguientes libros, documentos y contenidos on-line han sido consultados por el
programador durante el desarrollo del proyecto:
Libros
[Nagel et al, 2006] C. Nagel, B. Evjen, J. Glynn, M. Skinner, K. Watson, A.
Jones. Professional C# 2005. Wiley Publishing, Inc., 2006.
[Archer, 2001] T. Archer. Inside C#, architectural reference. Microsoft Press,
2001.
[Piattini y Garzás, 2007] M. G. Piattini, J. Garzás. Fábricas de software:
experiencias, tecnologías y organización. Ra-Ma, 2007.
Documentación
[Rubio, 2008] M. Rubio. C# Coding Style Guide. Fractalia Remote Systems, 2008.
[Martin, 2007] C. Martín. Sistema de facturación CajaWeb, documentación
técnica. Fractalia Remote Systems, 2007.
[Hunt y Brubacher, 1999] G. Hunt y D. Brubacher. Detours: Binary Interception
of Win32 Functions. USENIX, 1999.
Contenidos on-line
.NET Framework Reference Information. Microsoft Corporation. Actualizado
en 2009. Disponible en la web: http://msdn.microsoft.com.
Visual C++ reference. Microsoft Corporation. Actualizado en 2009. Disponible
en la web: http://msdn.microsoft.com.
117
Web Document Store and Printing
C# language reference. Microsoft Corporation. Actualizado en 2009. Disponible
en la web: http://msdn.microsoft.com.
Visual Studio 2008. Microsoft Corporation. Actualizado en 2009. Disponible en la
web: http://msdn.microsoft.com.
118
Web Document Store and Printing
12. Glosario de acrónimos
Web Document Store and Printing
Los siguientes acrónimos y abreviaturas han sido utilizados durante la redacción del presente
documento:
AES: Acrónimo de “Advanced Encription Stardard” (estándar avanzado de encriptación),
es un sistema de cifrado simétrico basado en bloques fijos de 128 bits.
DES: Acrónimo de “Data Encryption Standard” (estándar de encriptado de datos), es
un sistema de cifrado simétrico basado en bloques fijos de 64 bits.
GUID: Acrónimo de “Globally Unique Identifier” (identificador global único). Es un
número pseudoaleatorio, empleado habitualmente para identificar distintos
elementos. Aunque no se puede garantizar que cada GUID generado sea única, el
número total de identificadores posibles es tan grande que la posibilidad de que se
genere un mismo número dos veces puede considerarse nula en la práctica.
HTML: Acrónimo de “HyperText Markup Language” (lenguaje de marcado de
hipertexto). Es el lenguaje de marcado predominante para páginas web. Proporciona
una manera de describir la estructura de la información textual en los documentos,
definiendo ciertos elementos como enlaces, cabeceras, párrafos, listas, etc., y para
complementar estos con formularios interactivos, imágenes y otros objetos.
HTTP: Acrónimo de “HyperText Transfer Protocol” (protocolo de transferencia de
hipertexto). Es un protocolo de comunicaciones, usado comúnmente para transmitir
contenidos HTML entre las partes cliente y servidor de una web.
HTTPS: Acrónimo de “HyperText Transfer Protocol Secure” (protocolo de transferencia
segura de hipertexto). Es una implementación de HTTP que utiliza SSL para cifrar las
comunicaciones.
120
Web Document Store and Printing
IIS: Acrónimo de “Internet Information Server” (Servidor de información de Internet).
Es un software de servidor desarrollado por Microsoft que permite almacenar y
publicar contenidos web.
SSL: Acrónimo de “Secure Sockets Layer” (capa de conexión segura). Se trata de un
protocolo que provee seguridad e integridad de datos para las comunicaciones sobre
los protocolos TCP/IP, en redes tales como Internet.
XML: Acrónimo de “Extended Markup Language” (lenguaje extendido de marcado), se
trata de una especificación de propósito general para la creación de lenguajes de
marcado personalizados. Se clasifica como lenguaje extensible debido a que permite a
los usuarios definir sus propios elementos. Su propósito principal es ayudar a los
sistemas de información a compartir datos estructurados, particularmente vía
Internet, y es utilizado tanto para codificar documentos como para serializar datos.
121
Web Document Store and Printing
Anexo A.
Manual de instalación y
operación
Web Document Store and Printing
1. Descripción del sistema
1.1. Arquitectura
Web Document Store and Printing es un sistema creado para permitir a los usuarios de
soluciones de acceso público a Internet poder realizar impresiones de sus documentos. Para
esto se dispondrá de un servidor para almacenar el documento, con la idea de
posteriormente descargarlo en un lugar que disponga de impresoras accesibles. El sistema
monitoriza las impresiones y factura las impresiones realizadas.
Para lograr esta funcionalidad, el sistema dispone de cinco componentes que se detallan
posteriormente y se comunica con un sistema externo de facturación utilizado en Fractalia
denominado “CajaWeb”, mediante un servicio Web que este sistema publica. Los cinco
componentes propios del sistema son los siguientes:
Una base de datos, (WDSDb). Sirve para almacenar los documentos y la información
necesaria acerca de las impresiones asociadas a los documentos almacenados.
Una página Web, (WDSWeb). Va a ser utilizada por dos perfiles de usuarios.
o El cliente final para almacenar un documento, descargarlo desde una ubicación
con impresoras disponibles, realizar impresiones del documento y
monitorizarlas.
o El encargado de las impresiones para saber qué precio tienen las impresiones
realizadas correctamente y realizar el cobro.
123
Web Document Store and Printing
Un Servicio Web, (WDSws). Sirve para comunicar el monitor de impresiones con la
base de datos.
Un Servicio Windows, (WDSMonitor). Es un servicio de monitorización de
impresiones que se envían a la cola de impresión de una impresora.
Una tarea programada, (WDSDbCleaner). Sirve para borrar los documentos pagados
del servidor y para borrar los documentos no pagados con una antigüedad.
El diagrama con la arquitectura sería el siguiente:
Figura 5. Arquitectura del sistema
124
Web Document Store and Printing
2. Componentes
2.1. Base de Datos
Los datos persistentes que maneja el sistema se almacenan en una base de datos y que se
identifica en el esquema como WDSDb.
2.1.1. Esquema
Figura 6. Esquema de la base de datos
125
Web Document Store and Printing
2.1.2. Descripción de los objetos
2.1.2.1.
Tablas
wds01_Document
En esta tabla se almacenan los documentos que se suben al servidor. Tiene declarados los
siguientes campos:
o wds01_id: es el identificador de un documento y actúa como clave primaria.
o wds01_uploadTime: es la fecha y hora en la que se ha almacenado un documento
en el servidor.
o wds01_password: es la contraseña que se usa para descargar un documento y
consultar la impresión o impresiones relacionadas con dicho documento.
o wds01_guid: es un GUID que identifica externamente a un documento.
o wds01_fileData: este campo almacena los datos binarios de un documento.
o wds01_name: es el nombre del documento junto con su extensión.
o wds01_payed: define si la impresión o impresiones de un documento han sido
pagadas.
126
Web Document Store and Printing
wds02_Printing
En esta tabla se almacena información sobre las impresiones de los documentos, detectados
en las colas de impresiones. Se almacena además información de la facturación asociada a
cada impresión que se obtiene a través del sistema “CajaWeb”. Tiene declarados los
siguientes campos:
o wds02_id: es el identificador de la impresión de un documento y actúa como
clave primaria.
o wds02_idDocument: es el identificador del documento del cual se ha realizado
una impresión y actúa como clave ajena referenciando a la tabla
“wds01_Document”.
o wds02_idCenter: es el identificador del Centro en el cual se ha mandado a
imprimir el documento.
o wds02_submittedTime: es la fecha y hora en la que se ha mandado un documento
a una cola de impresión.
o wds02_totalPages: es el número total de páginas impresas.
o wds02_color: define si una impresión se ha realizado en color o en blanco y
negro.
o wds02_idPrintingState: identificador del estado de la impresión. Actúa como
clave ajena referenciando a la tabla “wds03_PrintingState”.
o wds02_idTicket: es el identificador del ticket asociado a la impresión.
o wds02_articleDescription: describe el tipo de artículo asociado a la impresión.
127
Web Document Store and Printing
o wds02_price: es el precio aplicado al total de las páginas impresas y que figura
en el ticket.
o wds02_ticketCancelled: toma valor true cuando se cancela el ticket asociado a la
impresión.
wds03_PrintingState
En esta tabla se almacena información descriptiva sobre el estado de una impresión. Tiene
declarados los siguientes campos:
o wds03_id: es el identificador de un estado de impresión y actúa como clave
primaria.
o wds03_name: es el nombre de un estado de impresión.
2.1.2.2.
Procedimientos Almacenados
AddPrinting: añade la impresión de un documento, detectada en una cola de
impresión, a la base de datos.
CheckPassword: Verifica si existe un documento en la base de datos que tiene asignado
una determinada contraseña.
DeleteFileData: Borra los datos binarios de documentos que cumplen ciertos criterios.
GetDocument: Devuelve un documento con su información y datos.
GetDocumentPassword: devuelve la contraseña asociada a un documento.
GetPrinting: Devuelve la información de una impresión o impresiones realizadas para
un documento.
SetDocumentPayed: actualiza el estado de un documento a pagado.
128
Web Document Store and Printing
SetTicketPrintingToCancelled: actualiza el estado de cancelación del ticket de una
impresión cuyo ticket asociado fue cancelado.
StoreDocument: Almacena en la base de datos un documento.
UpdatePrinting: Actualiza el estado de una impresión de documento.
2.2. Página Web
WDSWeb es una aplicación Web que sirve al usuario final para subir documentos,
descargarlos y monitorizar las impresiones. Al usuario encargado de realizar el cobro, le
sirve para saber lo que hay que facturar por las impresiones realizadas.
El funcionamiento del sitio web se puede agrupar en tres apartados los cuales se
corresponden con una página física.
En la página Upload.aspx se suben los documentos al servidor y se muestra un código
que sirve al usuario para identificar el documento almacenado.
En la página Download.aspx se descargan los documentos almacenados anteriormente y
se realiza la monitorización de los trabajos de impresión enviados del documento
descargado.
En la página Payment.aspx se muestran las impresiones realizadas para el documento y
se calcula el precio total en función de las copias impresas, que están asociadas a un
artículo de impresión del centro.
129
Web Document Store and Printing
2.3. Servicio Web
Identificado en el esquema como “WDSws”, el Servicio Web permite al Servicio Windows
de monitorización de impresiones comunicarse con la base de datos del sistema. Tiene
declarados cuatro métodos Web que sirven para: obtener la contraseña del documento a
través de su GUID, añadir una nueva impresión de un documento, modificar el estado de la
impresión y cancelarla.
2.4. Servicio de monitorización de impresiones
Identificado en el esquema como “WDSMonitor”, es un servicio Windows que monitoriza la
cola de impresión del sistema operativo en el cual está instalado. La monitorización se realiza
mediante un subcomponente llamado SpoolerHook que, además de monitorizar, permite
ejecutar acciones sobre las impresiones que llegan a la cola de impresión.
Cuando llega una impresión a la cola, se comprueba si el nombre del documento contiene
un GUID que lo identifica como un documento gestionado por el sistema. Si no contiene un
GUID válido, se verifica si el nombre del documento cumple con una determinada
expresión regular que habilita su impresión. Si no cumple ninguna de estas condiciones, la
impresión se cancela.
Cuando se trata de un documento gestionado por el sistema, se genera un elemento de
facturación (denominado comúnmente “ticket”) asociado a la impresión mediante el servicio
Web proporcionado por la plataforma “CajaWeb”, y se monitoriza el estado de la impresora
con la cual se está realizando la impresión. En caso de que durante la impresión la impresora
se encuentre en un estado obstructivo, se cancela el ticket generado y la impresión. Un
estado obstructivo es aquel que impide que un documento se siga imprimiendo
correctamente.
130
Web Document Store and Printing
Para la comprobación de documentos, creación y actualización de impresiones dentro del
sistema se realizan llamadas al Servicio Web.
2.5. Tarea Programada
Identificado en el esquema como “WDSDbCleaner”, este componente es una aplicación de
consola que al instalarla crea una tarea programada para eliminar documentos que cumplan
una de las siguientes condiciones.
Si se han pagado las impresiones asociadas a ese documento.
Si el documento lleva almacenado en el servidor más tiempo que el establecido en
configuración.
El servicio se ejecuta diariamente a una hora determinada durante la instalación.
Relación con sistemas externos
Tal y como se ha mencionado, WDS interactúa con el sistema “CajaWeb”. Más en concreto,
haciendo uso del Servicio Web publicado por este sistema externo. Este Servicio Web se
emplea para generar ticket de artículos de impresión, mientras que Web Document Store
and Printing lo utiliza para recoger información de los artículos de impresión de las que
dispone cada Centro y para crear y cancelar un ticket de impresión asociado a una impresión
y a un artículo de impresión del Centro, gracias a llamadas a métodos Web que atacan a la
base de datos de CajaWeb.
131
Web Document Store and Printing
3. Instalación
Para que el sistema funcione correctamente, la instalación de la base de datos debe preceder
a la instalación del resto de componentes.
La página web, el servicio web de comunicación con el servicio de monitorización de
impresiones y la tarea programada para eliminar los documentos deben instalarse
posteriormente, porque necesitan conocer la cadena de conexión a la base de datos.
El monitor de impresiones debe instalarse posteriormente al servicio web de comunicación,
porque necesita saber la dirección del servicio para comunicarse con la base de datos.
Por tanto, el orden lógico de instalación de los componentes del sistema es el siguiente:
1.
Base de datos.
2.
Servicio web de comunicación, página web y tarea programada, siendo el orden
irrelevante.
3.
Servicio de monitorización de impresiones, después de la instalación del servicio web
de comunicación.
3.1. Base de datos
3.1.1. Requisitos previos
Para instalar la base de datos será necesario cumplir los siguientes requisitos:
1.
Tener instalada y configurada una instancia del motor de base de datos SQL Server
2005 Express Edition.
132
Web Document Store and Printing
2.
El SQL Server debe permitir conexiones remotas. Esto se puede consultar en la
herramienta “SQL Server Surface Area Configurator for Services and Connections”,
bajo la opción “Remote Connections”.
Figura 7. Configuración de Microsoft SQL Server para aceptar conexiones remotas
El cortafuegos del sistema debe permitir también el uso del puerto de SQL Server (1433
por defecto).
3.1.2. Detalles del paquete
El paquete de instalación de la base de datos consiste en un fichero comprimido en formato
zip, y cuyo nombre es “WDS Database”.
133
Web Document Store and Printing
3.1.2.1.
Instalación
La instalación de la base de datos se efectuará ejecutando el siguiente script que está incluido
en el fichero comprimido:
WDSDB_Script.sql: Una vez creada la base de datos de Web Document Store, con
un usuario con permisos de creación, se tiene que ejecutar este Script para crear
tablas y procedimientos almacenados.
3.1.2.2.
Configuración
No existen parámetros de configuración para este componente.
3.1.2.3.
Comprobaciones
Para asegurarse de que el script “WDSDB_Script.sql” se ha ejecutado correctamente,
habría que comprobar que se han creado los siguientes objetos:
Tablas:
o “wds01_Document” sin registros pre-insertados.
o “wds02_Printing” sin registros pre-insertados.
o “wds03_PrintingState” con 5 registros pre-insertados en el siguiente orden:
1 Printing
2 Printed
3 Printer Error
4 Ticket Error
5 Interrupted Printing
134
Web Document Store and Printing
Procedimientos almacenados:
o AddPrinting.
o CheckPassword.
o DeleteFileData.
o GetDocument.
o GetDocumentPassword.
o GetPrinting.
o SetDocumentPayed.
o SetTicketPrintingToCancelled.
o StoreDocument.
o UpdatePrinting.
3.1.2.4.
Procedimiento de marcha atrás
Al no disponer de un instalador, en caso de que se produzca un error durante la instalación
de la base de datos, se deben borrar manualmente los objetos generados.
135
Web Document Store and Printing
3.2. Página Web
3.2.1. Requisitos previos
.Net Framework 2.0
Microsoft Internet Information Server con Microsoft .NET Framework 2.0
registrado.
El servidor ha de poder acceder a las URL del sistema “CajaWeb”.
Tener previamente instalada la base de datos del sistema y poder acceder a ella desde
el ordenador donde se instale la Página web.
3.2.2. Detalles del paquete
El paquete de instalación de la Página Web consiste en un fichero autoinstalable (.msi), y
cuyo nombre es “WDS Web”.
3.2.3. Instalación
La instalación se realiza ejecutando el fichero autoinstalable. Durante el proceso de
instalación se especificará el destino del directorio virtual dentro del IIS y su nombre.
Finalizada la instalación, hay que asegurarse de que el directorio virtual esté configurado
dentro del IIS para que ejecute con la versión 2.0 de ASP .NET, y configurar la página web
mediante el fichero web.config ubicado dentro del directorio virtual creado en el IIS.
3.2.4. Configuración
3.2.4.1.
Fichero de configuración “web.config”
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
136
Web Document Store and Printing
<appSettings>
<!-- Language configuration-->
<add key="default_language" value="es"/>
<add key="languages" value="es,en, pt, fr"/><!--value="ESPAÑOL,INGLES, POrTUGUES, FRANCES"/>-><!--assigned Locale ID by microsoft (http://msdn.microsoft.com/es-es/goglobal/bb964664(enus).aspx)-->
<add key="XmlTranslationFile" value="language\Languages.xml"/>
<!-- Upload file to server folder-->
<add key="tempDocPath" value="WDSFiles"/>
<!--max file size MB (Max value 100 httpRuntime maxRequestLength="102400")-->
<add key="MaxFileSize" value="20"/>
<add key="SizeToShowMessage" value="10"/>
<!-- Refresh page -->
<add key="SecsToIniciateMonitor" value="20"/><!-- If empty, value = 20 -->
<add key="RefreshSecTime" value="5"/><!-- If empty, value = 5 -->
<!-- The extension to be show-->
<add key="supportedFileTypes" value="txt, doc, docx, xls, xlsx, ppt, pdf, bmp, tif, tiff,
gif, jpg, jpeg, png"/>
<add key="center" value=""/>
<!-- Connection strings, database conexion string encrypt with textcrypter -->
<add key="WDSDataBase" value="************************************************"/>
<!-- CajaWeb webservice-->
<add key="WS_AutoTicket.WebService" value="http://localhost/facturacion/WebService.asmx"/>
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Temp\WDSWeb.log"/>
<param name="AppendToFile" value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<system.web>
137
Web Document Store and Printing
<compilation debug="true"/>
<authentication mode="Windows"/>
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
</customErrors>
<httpRuntime executionTimeout="90" maxRequestLength="102400"
useFullyQualifiedRedirectUrl="true" requestLengthDiskThreshold="20480"/><!--100MB tamaño maximo-> <!-- requestLengthDiskThreshold: igual al valor de tamaño maximo en kb (MaxFileSize*1024)-->
<mobileControls cookielessDataDictionaryType="System.Web.Mobile.CookielessData"/>
<deviceFilters>
<filter name="isJPhone" compare="Type" argument="J-Phone"/>
…
<filter name="supportsVoiceCalls" compare="CanInitiateVoiceCall" argument="true"/>
</deviceFilters>
</system.web>
</configuration>
3.2.4.2.
Explicación de los parámetros
El fichero de configuración contiene tres secciones. La sección appSettings que contiene la
configuración personalizada, la sección log4net contiene la configuración de las trazas y la
sección system.web contiene la configuración de las aplicaciones Web ASP .NET.
Parámetros de la sección appSettings
o
default_language:
El lenguaje por defecto que se muestra en la página
web, tiene que existir la traducción en el archivo de lenguajes. El valor de este
parámetro se puede modificar, siempre con un valor que exista en el
parámetro “languages”.
o
languages:
Todos los lenguajes en los que están traducidas los textos de la
página. Códigos de lenguaje según el formato de Microsoft en
http://msdn.microsoft.com/es-es/goglobal/bb964664(en-us).aspx. El valor
de este parámetro se puede modificar, siempre que se añadan las nuevas
traducciones en el archivo de lenguajes cuya ruta se encuentra definida en el
parámetro XmlTranslationFile.
138
Web Document Store and Printing
o
XmlTranslationFile:
Ruta física que indica donde se encuentra el archivo
con todas las sentencias mostradas en el sitio web, traducidas en tantos
idiomas como indica el parámetro “languages”. El valor de este parámetro no
debe modificarse a no ser que se cambie de posición el archivo de idiomas.
o
tempDocPath:
Ruta donde se almacenan temporalmente los archivos
almacenados en el servidor web. Si se modifica hay que crear la carpeta
físicamente en el directorio virtual. El valor de este parámetro no debe
modificarse a no ser que se quieran almacenar en otra carpeta los archivos
temporales, pero siempre dentro del directorio virtual donde se instala el sitio
web.
o
MaxFileSize:
Tamaño máximo de los archivos que se permitirán subir en el
servidor. El tamaño se expresa en Megabytes. El valor de este parámetro
puede modificarse, pero si se modifica debe cambiarse también el valor de
requestLengthDiskThreshold
sección
system.web.
puesto en
en el parámetro
httpRuntime
de la
El valor de éste debe ser el mismo que el tamaño
MaxFileSize,
pero en Kilobytes, o lo que es lo mismo, el valor
multiplicado por 1024.
o
SizeToShowMessage:
Tamaño a partir del que se debe mostrar un mensaje
advirtiendo al usuario que el archivo es demasiado grande y puede haber un
fallo al subir, dándole la opción de cancelar la subida en el servidor. El tamaño
se expresa en Megabytes. El valor de este parámetro puede modificarse,
en función de la velocidad de la conexión a internet.
o
SecsToIniciateMonitor:
Segundos que se muestra el enlace para descargar
el documento. Si no se le asigna un valor, por defecto será de 20 segundos. El
valor de este parámetro puede modificarse.
139
Web Document Store and Printing
o
RefreshSecTime:
Periodo de tiempo en segundos que tarda la pagina de
monitorización de impresiones en refrescar la información. Si no se le asigna
valor, por defecto será de 5 segundos. El valor de este parámetro puede
modificarse.
o
supportedFileTypes:
son las extensiones de ficheros marcadas como de
tipo imprimible. Estas extensiones se ponen en lista, separadas por comas. Al
intentar subir archivos cuyas extensiones no se encuentren en la lista, la
aplicación mostrara un mensaje diciendo que los archivos no son de tipo
imprimibles y se necesitar confirmar la subida. El valor de este parámetro
debe modificarse en función de que aplicaciones haya en el centro o
centros desde los que se descarguen los documentos. Hay que asegurarse de
que los ordenadores del centro tengan las aplicaciones necesarias para mostrar
los archivos con las extensiones de esta lista.
o
center:
este parámetro indica el identificador de centro, según la plataforma
de facturación. En entornos centralizados estará en blanco y se pasara el
identificador de centro como parámetro en la barra de direcciones. El valor de
este parámetro debe modificarse en el caso de que se instale el sitio web de
forma que solo vaya a acceder desde un centro. Se debe poner el identificador
que el centro tiene en la plataforma de facturación.
o
WDSDatabase:
Conexión cifrada con TextCrypter de la base de datos del
sistema. El valor de este parámetro tiene que modificarse siempre. Una
vez instalada la base de datos, se ofusca la cadena de conexión con la
herramienta TextCrypter. Hay que ponerse en contacto con el desarrollador
del Sitio Web para obtener la clave de ofuscación.
140
Web Document Store and Printing
o
WS_AutoTicket.WebService:
Dirección URL del servicio web del sistema
de facturación. El valor de este parámetro tiene que modificarse y tiene
que contener la dirección URL del servicio web.
Parámetros de la sección log4net
Para esta sección se comentarán los parámetros más significativos y sujetos a modificaciones.
Consultar la referencia de log4net para más detalles sobre estos parámetros y otros.
o
File:
Ruta absoluta del fichero de trazas (incluyendo el nombre del fichero).
En caso de no existir, se creará automáticamente. Se puede modificar con
la nueva ruta donde se quiera crear el fichero de trazas.
o
appendToFile:
Indica si las nuevas trazas son añadidas al fichero (true) o
sobrescribirán las existentes dentro del fichero (false). No se debe
modificar.
o
maxSizeRollBackups:
Número máximo de ficheros adicionales al de trazas
que se almacenarán. Éstos se llamarán como el original y se les irá añadiendo
el sufijo 0, 2, etc. Cuando se alcance este número, se empezaran a borrar los
ficheros de trazas más antiguos. Se puede modificar.
o
maximumFileSize: Tamaño máximo de cada uno de los ficheros de trazas. Se
expresa en MB. Se puede modificar, cambiando la parte numérica.
o
conversionPattern:
Patrón de conversión para la escritura de trazas. No se
debe modificar.
141
Web Document Store and Printing
o
level:
nivel de log del sitio web. Posibles valores, de mayor a menor
información de log: DEBUG, INFO, WARN, ERROR, FATAL. El modo DEBUG
nos será útil para depurar el servicio. Una vez comprobada la validez del
mismo, podemos pasar a un modo más silencioso, recomendándose INFO. Se
puede modificar.
Parámetros de la sección system.web
Tiene varios parámetros pero solo uno se debe modificar en el caso de que se cambie el
parámetro MaxFileSize de la sección de appSetting.
<httpRuntime executionTimeout="90" maxRequestLength="102400" useFullyQualifiedRedirectUrl="true"
requestLengthDiskThreshold="20480"/>
Si
esto
ocurre
se
debe
requestLengthDiskThreshold
dar
un
nuevo
dentro de
valor
a
httpRuntime.
la
para
la
variable
Este valor se obtiene
multiplicando los MB del tamaño máximo de los archivos por 1024 para obtener los KB.
RequestLengthDiskThreshold
especifica, en bytes, el límite del umbral del
almacenamiento en búfer de las secuencias de entrada. Este valor no debe sobrepasar el valor
del atributo maxRequestLength.
3.2.5. Comprobaciones
Se puede comprobar que el Sitio Web ha sido instalado correctamente accediendo desde un
navegador web a la página Default.aspx (a partir de la ruta completa que proporciona IIS).
3.2.6. Procedimientos de marcha atrás
El instalador del Sitio Web dispone de una opción de desinstalación (además de reparación)
que permite eliminar el directorio virtual del Sitio Web dentro del IIS. Se puede realizar la
desinstalación desde “panel de control -> agregar o quitar programas” seleccionando la
opción “quitar”, o bien volviendo a ejecutar el instalador seleccionando la opción
correspondiente a eliminar el Sitio Web.
142
Web Document Store and Printing
3.3. Servicio Web
3.3.1. Requisitos previos
.Net Framework 2.0
Microsoft Internet Information Server con Microsoft .NET Framework 2.0
registrado.
Tener instalada la base de datos del sistema y poder acceder a ella desde el ordenador
donde se instale el Servicio Web.
3.3.2. Detalles del paquete
El paquete de instalación del Servicio Web consiste en un fichero autoinstalable (.msi), y
cuyo nombre es “WDS Web Service”.
3.3.3. Instalación
La instalación se realiza ejecutando el fichero autoinstalable. Durante el proceso de
instalación se especificará el destino del directorio virtual dentro del IIS y su nombre.
Finalizada la instalación, hay que asegurarse de que el directorio virtual esté configurado
dentro del IIS para que ejecute con la versión 2.0 de ASP .NET, y configurar el servicio web
mediante el fichero web.config ubicado dentro del directorio virtual creado en el IIS.
3.3.4. Configuración
3.3.4.1.
Fichero de configuración “web.config”
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<!-- Connection strings, WDS database conexion string encrypt with textcrypter -->
143
Web Document Store and Printing
<add key="WDSDataBase" value="***********************************************"/>
<!-- WDSUser -->
<add key="user" value="**********************" />
<!-- WDSpass -->
<add key="password" value="***********************" />
</appSettings>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\Temp\WDSws.log"/>
<param name="AppendToFile" value="true"/>
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10"/>
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" %d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n "/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="debug"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
<system.web>
<compilation debug="true"/>
<authentication mode="Windows"/>
</system.web>
</configuration>
3.3.4.2.
Explicación de los parámetros
El fichero de configuración contiene tres secciones. La sección appSettings que contiene la
configuración personalizada, la sección log4net contiene la configuración de las trazas y la
sección system.web contiene la configuración de las aplicaciones Web ASP .NET. Esta
última sección no se no se debe modificar, por lo que detallamos los parámetros de las
otras dos.
144
Web Document Store and Printing
Parámetros de la sección appSettings
o
WDSDatabase:
Conexión cifrada con TextCrypter de la base de datos del
sistema. El valor de este parámetro tiene que modificarse siempre. Una
vez instalada la base de datos, se ofusca la cadena de conexión con la
herramienta TextCrypter. Hay que ponerse en contacto con el desarrollador
del Sitio Web para obtener la clave de ofuscación.
o
user:
identificador de usuario ofuscado que sirve para autenticar las
aplicaciones que llamen a los métodos del WebService, usando la cabecera
SOAP. Por este motivo, no se debe modificar a no que tras realizar el
cambio, se informe a todos los responsables de las aplicaciones que lo usen,
para que cambien el valor de usuario para autenticarse.
o
password:
contraseña ofuscada asociada al identificador de usuario que sirve
para autenticar las aplicaciones que llaman a los métodos del webservice,
usando la cabecera SOAP. Por este motivo, no se debe modificar a no ser
que tras realizar el cambio, se informe a todos los responsables de las
aplicaciones que lo usen, para que cambien el valor de usuario para
autenticarse.
Parámetros de la sección log4net
Para esta sección se comentarán los parámetros más significativos y sujetos a modificaciones.
Consultar la referencia de log4net para más detalles sobre estos parámetros y otros.
o
File:
Ruta absoluta del fichero de trazas (incluyendo el nombre del fichero).
En caso de no existir, se creará automáticamente. Se puede modificar con
la nueva ruta donde se quiera crear el fichero de trazas.
145
Web Document Store and Printing
o
appendToFile:
Indica si las nuevas trazas son añadidas al fichero (true) o
sobrescribirán las existentes dentro del fichero (false). No se debe
modificar.
o
maxSizeRollBackups:
Número máximo de ficheros adicionales al de trazas
que se almacenarán. Éstos se llamarán como el original y se les irá añadiendo
el sufijo 0, 1, 2, etc. Cuando se alcance este número, se empezarán a borrar
los ficheros de trazas más antiguos. Se puede modificar.
o
maximumFileSize: Tamaño máximo de cada uno de los ficheros de trazas. Se
expresa en MB. Se puede modificar, cambiando la parte numérica.
o
conversionPattern:
Patrón de conversión para la escritura de trazas. No se
debe modificar.
o
level:
nivel de log del sitio web. Posibles valores, de mayor a menor
información de log: DEBUG, INFO, WARN, ERROR, FATAL. El modo DEBUG
nos será útil para depurar el servicio. Una vez comprobada la validez del
mismo, podemos pasar a un modo más silencioso, recomendándose INFO. Se
puede modificar.
3.3.5. Comprobaciones
Se puede comprobar que el Servicio Web ha sido instalado correctamente accediendo desde
un navegador web a la página WebService.asmx (a partir de la ruta completa que
proporciona IIS).
El servicio Web publicará cuatro métodos que serán visualizados desde dicha página, tal y
como se muestra en la siguiente captura de pantalla.
146
Web Document Store and Printing
Figura 8. Métodos publicados por el servicio web
3.3.6. Procedimientos de marcha atrás
El instalador del Servicio Web dispone de una opción de desinstalación (además de
reparación) que permite eliminar el directorio virtual del Sitio Web dentro del IIS. Se puede
realizar la desinstalación desde “panel de control -> agregar o quitar programas”
seleccionando la opción “quitar”, o bien volviendo a ejecutar el instalador seleccionando la
opción correspondiente a eliminar el Servicio Web.
3.4. Servicio de monitorización de impresiones
3.4.1. Requisitos previos
.Net Framework 2.0
Tener instalado el Servicio Web del sistema y poder acceder a él desde la
ubicación en la que se va a instalar el Servicio Windows.
El ordenador donde se instale ha de poder acceder a las URL del sistema
“CajaWeb”.
147
Web Document Store and Printing
3.4.2. Detalles del paquete
El paquete de instalación del Servicio Windows consiste en un fichero autoinstalable (.msi),
y cuyo nombre es “WDS Monitor”.
3.4.3. Instalación
La instalación se hace de forma asistida permitiendo elegir la ruta de destino del Servicio
que, después de instalarse, habría que configurarlo debidamente mediante el fichero de
configuración con extensión *.config, situado al mismo nivel que el ejecutable dentro de la
ruta de destino. Al mismo nivel se encuentra también una carpeta “SpoolerHook” que
contiene a su vez las librerías de las que hace uso el subcomponente SpoolerHook y una
carpeta “Log” que contendrá el fichero de trazas (con su backup) de este subcomponente.
Después de configurarlo, se debe iniciar el Servicio manualmente desde Panel de control >
Tareas Administrativas > Servicios. El Servicio llevará el nombre: “WDSMonitorService”.
Este inicio manual sólo se realiza la primera vez que se instala. En caso de querer cambiar
posteriormente la configuración habría que parar el servicio antes de realizar los cambios y
volver a iniciarlo una vez realizados los cambios.
3.4.4. Configuración
3.4.4.1.
Fichero de configuración
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<section name="PrintingRegExLabels" type="Fractalia.GIS.WDSMonitor.SectionConfigHander, Core"
/>
<section name="ObstructivePrinterStatus" type="Fractalia.GIS.WDSMonitor.SectionConfigHander,
Core" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="c:\temp\WDSMonitorService.log" />
<param name="AppendToFile" value="true" />
<appendToFile value="true" />
148
Web Document Store and Printing
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1000KB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd/MM/yyyy HH:mm:ss} [%t] %-5p - %l - %m%n" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n" />
<param name="Footer" value="[Footer]\r\n" />
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" />
</layout>
</appender>
<root>
<level value="info" />
<appender-ref ref="RollingFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>
<appSettings>
<!-- The ID of the Center where the WDSMonitor is installed -->
<add key="CenterID" value=""/>
<!-- The URL of the WDS Webservice -->
<add key="WDSwsURL" value="http://localhost/WDSws/WebService.asmx"/>
<!-- The encrypted user name for validating against the WDS Webservice -->
<add key="WDSwsEncrypted_user" value="***********************"/>
<!-- The encrypted password associated to the user for validating against the WDS Webservice
-->
<add key="WDSwsEncrypted_pwd" value="**********************"/>
<!-- The URL of the AutoTicket Webservice -->
<add key="AutoTicketwsURL" value="http://localhost/facturacion/WebService.asmx"/>
<!-- The time frequency of refreshing the status of printers in seconds -->
<add key="PrinterStatusRefresh" value="3" />
<!-- The parametrized regular expression for printing documents without valid GUID.-->
<add key="PrintingRegEx" value="regEx1%label1%regEx2%label2%regEx3%"/>
</appSettings>
<!-- A section that contains the values of the regular expression parameters -->
<PrintingRegExLabels>
<label1>Value of label1</label1>
<label2>Value of label2</label2>
</PrintingRegExLabels>
<!-- A section that contains obstructive printer status -->
<ObstructivePrinterStatus>
<Status>PRINTER_STATUS_ERROR</Status>
<Status>PRINTER_STATUS_NO_TONER</Status>
<Status>PRINTER_STATUS_NOT_AVAILABLE</Status>
<Status>PRINTER_STATUS_OFFLINE</Status>
<Status>PRINTER_STATUS_PAPER_JAM</Status>
<Status>PRINTER_STATUS_PENDING_DELETION</Status>
149
Web Document Store and Printing
<Status>PRINTER_STATUS_SERVER_UNKNOWN</Status>
</ObstructivePrinterStatus>
</configuration>
3.4.4.2.
Explicación de los parámetros
Sección log4net:
Para esta sección se comentarán los parámetros más significativos y sujetos a modificaciones.
Consultar la referencia de log4net para más detalles sobre estos parámetros y otros.
o
File:
Ruta absoluta del fichero de trazas (incluyendo el nombre del fichero).
En caso de no existir, se creará automáticamente.
o
appendToFile:
Indica si las nuevas trazas son añadidas al fichero (true) o
sobrescribirán las existentes dentro del fichero (false).
o
maxSizeRollBackups:
Número máximo de ficheros adicional al de trazas
que se almacenarán. Éstos se llamarán como el original y se le irá añadiendo el
sufijo .0, .1, etc. Cuando se alcance este número, se empezarán a borrar los
ficheros de trazas más antiguos.
o
maximumFileSize: Tamaño máximo de cada uno de los ficheros de trazas.
o
conversionPattern: Patrón de conversión para la escritura de las trazas.
o
level:
nivel de log del servicio. Posibles valores, de mayor a menor
información de log: DEBUG, INFO, WARN, ERROR, FATAL. El modo DEBUG
nos será útil para depurar el servicio. Una vez comprobada la validez del
mismo, podremos pasar a un modo más silencio, recomendándose INFO.
150
Web Document Store and Printing
Sección appSettings:
CenterID: es el identificador numérico del Centro en el cual se instala el
Servicio Windows.
WDSwsURL: URL donde está alojado el Servicio Web del sistema.
WDSwsEncrypted_user:
identificador de usuario ofuscado que se usará para
autenticarse contra el Servicio Web del sistema mediante cabecera SOAP.
WDSwsEncrypted_pwd:
contraseña ofuscada asociada al identificador de
usuario para la autenticación contra el Servicio Web del sistema mediante
cabecera SOAP.
AutoTicketwsURL:
URL donde está alojado el servicio web de la plataforma
de facturación.
PrinterStatusRefresh: Frecuencia, en segundos, de obtención del estado
de una impresora durante la impresión de documentos. Es un parámetro
común a todas las impresoras.
PrintingRegEx:
Expresión regular con parámetros que se usa para verificar
el nombre de los documentos que se quieran imprimir y que no contengan un
GUID que los identifica como documentos gestionados por el sistema. La
construcción de la expresión regular se explica en la siguiente sección.
151
Web Document Store and Printing
Los valores por defecto de los parámetros que figuran en esta sección, salvo los credenciales
de autenticación contra el Servicio Web del sistema, no son válidos para la instalación. Por
tanto, hay que modificarlos. Si se quiere modificar los credenciales de autenticación contra
el Servicio Web del sistema WDS, estos parámetros deben estar ofuscados usando la
herramienta TextCrypter. La clave de ofuscación se puede obtener contactando con el
desarrollador del Servicio Windows. Por otro lado, dichos parámetros deben de coincidir
(en claro) con los parámetros configurados en el lado del Servicio Web del sistema.
Sección PrintingRegExLabels:
Esta sección se emplea para construir la expresión regular que se usa como excepción que
permite imprimir documentos cuyos nombres cumplen con dicha expresión regular. La
sección contendrá tantas etiquetas como las que estén definidas dentro de la expresión
regular. Una etiqueta se define de tal forma que esté precedida y pospuesta por el carácter
„%‟. En la expresión regular final se sustituyen los parámetros de la expresión regular por
los valores de las etiquetas con las que se corresponden.
Si consideramos el ejemplo de la siguiente expresión regular:
“regEx1%applicationName%regEx2%centerID%regEx3”
Donde regEx1, regEx2 y regEx3 son expresiones regulares que son parte de la expresión
regular con parámetros. applicationName y centerID son parámetros de la expresión
regular.
Por tanto, la sección tiene que estar definida de la siguiente forma:
<PrintingRegExLabels>
< applicationName>CajaWeb</applicationName>
<centerID>147</centerID>
</PrintingRegExLabels>
152
Web Document Store and Printing
La expresión regular que se va tener en cuenta con este ejemplo de configuración es la
siguiente:
“regEx1CajaWebregEx2147regEx3”
Sección ObstructivePrinterStatus:
En esta sección se definen los estados obstructivos de una impresora. La validez de los
estados definidos por defecto en el fichero de configuración dependerá de cada impresora.
Seguidamente, se listan los posibles estados en los que se puede encontrar una impresora.
PRINTER_STATUS_BUSY: la impresora está ocupada.
PRINTER_STATUS_DOOR_OPEN: La puerta de la impresora está abierta.
PRINTER_STATUS_ERROR: La impresora está en un estado de error.
PRINTER_STATUS_INITIALIZING: La impresora se está iniciando.
PRINTER_STATUS_IO_ACTIVE: la impresora está en un estado de
entrada/salida activa.
PRINTER_STATUS_MANUAL_FEED: la impresora está configurada en modo
de alimentación manual de papel.
PRINTER_STATUS_NO_TONER: la impresora se ha quedado sin tinta.
PRINTER_STATUS_NOT_AVAILABLE: la impresora no está disponible para
imprimir.
PRINTER_STATUS_OFFLINE: la impresora está fuera de línea.
153
Web Document Store and Printing
PRINTER_STATUS_OUT_OF_MEMORY: La impresora se ha quedado sin
memoria.
PRINTER_STATUS_OUTPUT_BIN_FULL: la bandeja de salida de la
impresora está llena.
PRINTER_STATUS_PAPER_JAM: la impresora tiene papel atascado.
PRINTER_STATUS_PAPER_OUT: la impresora se ha quedado sin papel.
PRINTER_STATUS_PAPER_PROBLEM: la impresora tiene un problema de
papel.
PRINTER_STATUS_PAUSED: la impresora está pausada.
PRINTER_STATUS_PENDING_DELETION: la impresora se está eliminando.
PRINTER_STATUS_POWER_SAVE: la impresora está en modo de ahorro de
energía.
PRINTER_STATUS_PRINTING: la impresora está imprimiendo.
PRINTER_STATUS_PROCESSING: la impresora está procesando un trabajo de
impresión.
PRINTER_STATUS_SERVER_UNKNOWN: la impresora está en un estado
desconocido.
PRINTER_STATUS_TONER_LOW: La impresora tiene un nivel de tinta bajo.
PRINTER_STATUS_USER_INTERVENTION: la impresora está en un estado
que requiere la intervención del usuario.
154
Web Document Store and Printing
PRINTER_STATUS_WAITING: la impresora está en estado de espera.
PRINTER_STATUS_WARMING_UP: la impresora está en estado de alerta.
En caso de que se quiera añadir a la sección un estado más considerado como obstructivo,
este debe coincidir con el nombre con el que viene definido en el listado anterior y estar
comprendido entre la apertura y cierra de la etiqueta Status.
3.4.5. Comprobaciones
Para comprobar que el Servicio se ha instalado correctamente, habría que poner la
configuración del log en modo INFO y verificar con la información que ofrece el fichero de
log que el SpoolerHook está correctamente instalado y apuntando a la ruta correcta donde está
la libraría que contiene su funcionalidad.
3.4.6. Procedimiento de marcha atrás
El instalador del Servicio Windows dispone de una opción de desinstalación (además de
reparación). Se puede realizar la desinstalación desde “panel de control -> agregar o quitar
programas” seleccionando la opción “quitar”, o bien volviendo a ejecutar el instalador
seleccionando la opción correspondiente a eliminar el Servicio. Al desinstalarlo, se
deshabilita también el control que ejerce el subcomponente SpoolerHook sobre las
impresiones que se mandan a la cola de impresión.
155
Web Document Store and Printing
3.5. Tarea Programada
3.5.1. Requisitos previos
.Net Framework 2.0
Tener instalada la base de datos del sistema y poder acceder a ella desde el
ordenador donde se instale la Tarea Programada.
3.5.2. Detalles del paquete
El paquete de instalación de la Tarea Programada “WDSDatabaseCleaner” consiste en un
fichero instalable (.msi), y cuyo nombre es “WDS Database Cleaner”.
3.5.3. Instalación
La instalación se hace de forma asistida permitiendo elegir la ruta de destino de la tarea
programada. También habrá que introducir la hora a la que se quiere que se ejecute la tarea
programada diariamente para borrar los documentos. El formato tiene que ser HH:MM.
Después de instalarse, habría que configurarlo debidamente mediante el fichero de
configuración con extensión *.config, situado al mismo nivel que el ejecutable dentro de la
ruta de destino.
3.5.4. Configuración
3.5.4.1.
Fichero de configuración
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<appSettings>
<!-- Connection strings, WDS database conexion string encrypt with textcrypter -->
<add key="WDSDataBase" value="*************************************"/>
<add key="MaxStoredDays" value="7"/>
</appSettings>
<log4net>
156
Web Document Store and Printing
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="c:\Temp\WDSDbCleaner.log" />
<param name="AppendToFile" value="true" />
<appendToFile value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="10" />
<maximumFileSize value="3MB"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d{dd-MM-yyyy HH:mm:ss} %-5p - %l - %m%n"/>
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<param name="Header" value="[Header]\r\n"/>
<param name="Footer" value="[Footer]\r\n"/>
<param name="ConversionPattern" value="%d [%t] %-5p %c %m%n"/>
</layout>
</appender>
<root>
<level value="DEBUG"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="ConsoleAppender"/>
</root>
</log4net>
</configuration>
3.5.4.2.
Explicación de los parámetros
El fichero de configuración contiene dos secciones. La sección appSettings que contiene la
configuración personalizada y la sección log4net contiene la configuración de las trazas.
Parámetros de la sección appSettings
o
WDSDatabase:
Conexión cifrada con TextCrypter de la base de datos del
sistema. El valor de este parámetro tiene que modificarse siempre. Una
vez instalada la base de datos, se ofusca la cadena de conexión con la
herramienta TextCrypter. Hay que ponerse en contacto con el desarrollador
de la tarea programada para obtener la clave de ofuscación.
157
Web Document Store and Printing
o
MaxStoredDays:
número de días que permanecen los archivos que no se han
pagados en la base de datos. Se puede modificar. Puede ser necesario
disminuirlo si el número de archivos que se suben en el servidor es muy alto.
Parámetros de la sección log4net
Para esta sección se comentarán los parámetros más significativos y sujetos a modificaciones.
Consultar la referencia de log4net para más detalles sobre estos parámetros y otros.
o
File:
Ruta absoluta del fichero de trazas (incluyendo el nombre del fichero).
En caso de no existir, se creará automáticamente. Se puede modificar con
la nueva ruta donde se quiera crear el fichero de trazas.
o
appendToFile:
Indica si las nuevas trazas son añadidas al fichero (true) o
sobrescribirán las existentes dentro del fichero (false). No se debe
modificar.
o
maxSizeRollBackups:
Número máximo de ficheros adicionales al de trazas
que se almacenarán. Éstos se llamarán como el original y se les irá añadiendo
el sufijo 0, 2, etc. Cuando se alcance este número, se empezaran a borrar los
ficheros de trazas más antiguos. Se puede modificar.
o
maximumFileSize: Tamaño máximo de cada uno de los ficheros de trazas. Se
expresa en MB. Se puede modificar, cambiando la parte numérica.
o
conversionPattern:
Patrón de conversión para la escritura de trazas. No se
debe modificar.
158
Web Document Store and Printing
o
level:
nivel de log del sitio web. Posibles valores, de mayor a menor
información de log: DEBUG, INFO, WARN, ERROR, FATAL. El modo DEBUG
nos será útil para depurar el servicio. Una vez comprobada la validez del
mismo, podemos pasar a un modo más silencioso, recomendándose INFO. Se
debe
modificar
a
INFO
cuando
comprobemos
que
funciona
correctamente.
3.5.5. Comprobaciones
Se puede comprobar que la tarea programada ha sido creada correctamente accediendo a las
tareas programadas de Windows. Se puede ver desde “panel de control -> Tareas
programadas”. Se comprueba que se creó la tarea WDSDatabaseCleaner a la hora
introducida.
3.5.6. Procedimientos de marcha atrás
El instalador de la tarea programada de una opción de desinstalación (además de reparación)
que permite eliminar la tarea programada. Se puede realizar la desinstalación desde “panel
de control -> agregar o quitar programas” seleccionando la opción “quitar”, o bien
volviendo a ejecutar el instalador seleccionando la opción correspondiente a eliminar la tarea
programada.
159
Web Document Store and Printing
4. Mantenimiento
4.1. Base de datos
Se prevé que las tablas “wds01_Document” y “wds02_Printing” tendrán un alto índice de
crecimiento. Por tanto, se recomienda realizar backups de las mismas periódicamente, y un
reprocesado y almacenamiento en un dispositivo secundario de las transacciones y eventos
antiguos, a la vez que se eliminan de la base de datos principal con el fin de agilizar el acceso
a las citadas tablas.
4.2. Página Web
4.2.1. Fichero de log
La información que se muestra en el fichero de log durante un funcionamiento correcto,
cuando está en modo INFO, consiste en las acciones realizadas en la página web a la hora de
subir documentos, descargarlos y realizar el pago. También se refleja el resultado de la
comunicación del sitio web con la base de datos.
Mientras que en el modo DEBUG, se le añade a la información anterior los procedimientos
almacenados ejecutados e información del constructor de las clases. En modo DEBUG se
muestra una gran cantidad de información en los archivos de log y crecerán demasiado. Por
esta razón es muy recomendable poner los log en modo INFO.
4.2.2. Detección de errores
Cuando se produzcan errores durante el funcionamiento del Servicio Web, estos saldrán
reflejados en el fichero de log con la etiqueta identificativa “ERROR” en cada línea de traza,
y que puede estar seguida de un mensaje de excepción en caso de que se haya capturado.
160
Web Document Store and Printing
Se pueden producir los siguientes errores:
El parámetro de configuración WDSDataBase, no puede estar vacio.
Error al desencriptar la cadena de conexión de la base de datos.
Error al conectarse a la base de datos.
Error, la pagina solo es accesible desde un centro.
Error al leer el documento del servidor web.
Error en la subida del documento al servidor web.
Error al añadir el documento en la base de datos.
Error al intentar borrar el documento del servidor web*
El centro no tiene artículos impresión.
Error al comprobar si una contraseña pertenece a algún documento.
Error al obtener el documento de la base de datos.
Error al copiar el documento de la base de datos al servidor web.
Error al obtener las impresiones asociadas a un documento.
Error al pagar un documento.
Error al cancelar una impresión de un documento.
161
Web Document Store and Printing
4.2.3. Previsión de crecimiento
El fichero de log crecerá de forma proporcional al volumen de peticiones de transacciones
que se realicen, y dependerá también de si está en modo INFO o DEBUG.
En la prueba realizada con todas las operaciones principales, subir documento, descargar
documento, monitorizar una impresión y realizar el pago, obtuvimos el siguiente
crecimiento del fichero de log.
En modo DEBUG: 35KB
En modo INFO: 8KB
Se borraran automáticamente los ficheros más antiguos de log cuando se alcance el número
máximo de ficheros configurado.
El tamaño máximo que podrían ocupar los ficheros de log se calcula multiplicando el tamaño
máximo de cada fragmento de log (maximumFileSize) por el numero de ficheros
permitidos (maxSizeRollBackups). Ambos son parámetros de configuración.
<maxSizeRollBackups value="10" />
<maximumFileSize value="3MB"/>
En el ejemplo serian 30MB de tamaño maximo de archivos de log.
4.2.4. Indicadores de funcionamiento
La carpeta virtual en la que está instalado el Servicio Web ocupa aproximadamente 372 KB
en disco, sin contar con el tamaño que podrían ocupar los ficheros de log generados.
162
Web Document Store and Printing
4.3. Servicio Web
4.3.1. Fichero de log
La información que se muestra en el fichero de log durante un funcionamiento correcto,
cuando está en modo INFO, consiste en la inicialización del Servicio Web, las llamadas a sus
webmethods y la inserción/actualización de impresiones en la base de datos del sistema.
Mientras que en el modo DEBUG, se le añade a la información anterior los procedimientos
almacenados ejecutados e información del constructor de las clases.
4.3.2. Detección de errores
Cuando se produzcan errores durante el funcionamiento del Servicio Web, estos saldrán
reflejados en el fichero de log con la etiqueta identificativa “ERROR” en cada línea de traza,
y que puede estar seguida de un mensaje de excepción en caso de que se haya capturado.
Se pueden producir los siguientes errores:
Error al desencriptar los datos de la cadena de conexión.
Error de Autenticación contra el servicio web.
Error de comunicación con la base de datos.
Error al obtener la contraseña del documento con el GUID.
Error al insertar la impresión en la base de datos.
Error al actualizar las impresiones.
163
Web Document Store and Printing
4.3.3. Previsión de crecimiento
El fichero de log crecerá de forma proporcional al volumen de peticiones de transacciones
que se realicen, y dependerá también de si está en modo INFO o DEBUG. Se borraran
automáticamente los ficheros más antiguos de log cuando se alcance el número máximo de
ficheros configurado.
El tamaño máximo que podrían ocupar los ficheros de log se calcula multiplicando el tamaño
máximo de cada fragmento de log (maximumFileSize) por el numero de ficheros
permitidos (maxSizeRollBackups). Ambos son parámetros de configuración.
<maxSizeRollBackups value="10" />
<maximumFileSize value="3MB"/>
En el ejemplo serian 30MB de tamaño maximo de archivos de log.
4.3.4. Indicadores de funcionamiento
La carpeta virtual en la que está instalado el Servicio Web ocupa aproximadamente 372 KB
en disco, sin contar con el tamaño que podrían ocupar los ficheros de log generados.
4.4. Servicio de monitorización de impresiones
4.4.1. Ficheros de Log
La información que se muestra en el fichero de log durante un funcionamiento correcto,
cuando está en modo INFO, consiste primeramente en la inicialización del Servicio
comprobando si está instalado el SpoolerHook mostrando la ruta donde se encuentra la
librería correspondiente, creando las estancias de los Servicios Web de Web Document
Store and Printing y del sistema de facturación a partir de los parámetro que figuran en el
fichero de configuración.
164
Web Document Store and Printing
Cuando llega una impresión gestionada por el sistema, se muestran los estados por los que
pasa la impresión. Se muestra además la confirmación de generación correcta del ticket
asociado a la impresión.
En caso de que la impresión no esté gestionada por el sistema (ausencia de GUID que
identifica al documento), también se registra la situación tanto si el nombre del documento
cumple con la expresión regular como si no.
Cuando la configuración de trazas está en modo DEBUG, además de la información
anterior, se muestra también la inicialización del servicio de la cola de impresión por si
estuviese parado, las llamadas a los webmethods de los Servicios Web de Web Document
Store and Printing y del sistema de facturación, configuración del temporizador, inicio de la
monitorización del estado de una impresora, acciones de monitorización, notificación de que
si el estado de la impresora es obstructivo o no y cancelación de ticket e impresión cuando se
trata de un estado obstructivo de la impresora.
4.4.2. Detección de errores
Cuando se produzcan errores durante el funcionamiento del Servicio, estos saldrán
reflejados en el fichero de log con la etiqueta identificativa “ERROR” en cada línea de traza,
y que puede estar seguida de un mensaje de excepción en caso de que se haya capturado.
Se pueden producir los siguientes errores:
Errores durante la lectura del fichero de configuración del Servicio (parámetros
inexistentes, malformados, etc.).
Errores de comunicación con los Web Services.
Error a la hora de crear un ticket.
El SpoolerHook no está instalado.
165
Web Document Store and Printing
Imposibilidad de extraer el GUID del nombre de un documento.
Detección de estado obstructivo de la impresora.
El nombre de un documento a imprimir no cumple con la expresión regular.
4.4.3. Previsión de crecimiento
El fichero de log crecerá de forma proporcional al número de impresiones que procese el
Servicio Windows. Dependerá también de la frecuencia en la que aparecerán estados
obstructivos y de si las trazas están configuradas en modo INFO o DEBUG.
Se borraran automáticamente los ficheros más antiguos de log cuando se alcance el número
máximo de ficheros configurado.
4.4.4. Indicadores de funcionamiento
La carpeta de instalación del Servicio ocupa 792 KB en disco. Cuando se inicia ocupa 18 MB
de RAM y llega a hacer uso de un máximo de 24% de la CPU. En pleno funcionamiento, la
ocupación de memoria permanece en 25 MB, hace uso de un 3% de la CPU y un 0.3 % de la
red.
Estos últimos indicadores de funcionamiento se han obtenido haciendo pruebas con un equipo de 1.88
GHz y con 8 impresiones simultaneas en un estado obstructivo de la impresora (cancelación de
impresiones y tickets).
166
Web Document Store and Printing
4.5. Tarea Programada
4.5.1. Fichero de log
La información que se muestra en el fichero de log durante la ejecución de la tarea
programada es la información sobre el número de los archivos eliminados de la base de
datos, si se han eliminado solo los documentos pagados o los pagados y los que tienen fecha
expirada.
4.5.2. Detección de errores
Se pueden producir los siguientes errores:
Error al intentar leer el número de días a los que expiran los documentos.
Error al desencriptar los datos de la cadena de conexión.
Error al intentar abrir la conexión a la base de datos.
Error al intentar borrar los archivos pagados
Error al intentar borrar los archivos pagados o expirados.
4.5.3. Previsión de crecimiento
Se borrarán automáticamente los ficheros más antiguos de log cuando se alcance el número
máximo de ficheros configurado. El fichero de log crecerá diariamente 4KB si no se produce
ningún error. Crecerá algo más si se produce algún error.
El tamaño máximo que podrían ocupar los ficheros de log se calcula multiplicando el tamaño
máximo de cada fragmento de log (maximumFileSize) por el numero de ficheros
permitidos (maxSizeRollBackups). Ambos son parámetros de configuración.
<maxSizeRollBackups value="10" />
<maximumFileSize value="3MB"/>
167
Web Document Store and Printing
En el ejemplo serian 30MB de tamaño maximo de archivos de log.
4.5.4. Indicadores de funcionamiento
La carpeta de instalación ocupa aproximadamente 312KB en disco.
168
Web Document Store and Printing
Anexo B.
Manual de usuario final
Web Document Store and Printing
1. Introducción
El objetivo de este documento es que sirva como manual de uso para los usuarios del
servicio Web Document Store and Printing.
Esta herramienta permite el almacén de documentos en nuestros servidores para su
posterior descarga o impresión. Para subir archivos, el acceso es independiente de donde se
encuentre el usuario y el PC o portátil utilizado. La descarga e impresión debe realizarse en
PC gestionado.
2. Requisitos del sistema
Para poder hacer uso de este sistema, necesitará cumplir los siguientes requisitos:
PC u ordenador portátil con conexión a Internet para poder acceder a los servidores
de Web Document Store and Printing.
Un navegador web. Este servicio es disponible desde cualquier navegador existente:
Internet Explorer, Mozilla Firefox, Opera, Chrome, Safari, etc.
170
Web Document Store and Printing
3. Modo de uso
3.1. Página de inicio
Figura 1. Página de inicio
Es la página principal, observada en la Figura 1, donde nos encontramos con dos opciones
principales:
“Subir Archivos”: Pulsando este enlace nos dirige a la página de la Figura 2, donde se
podrá seleccionar el archivo que se quiere almacenar en nuestros servidores.
Explicado más a fondo en el apartado 3.2.
“Descargar e imprimir”: Nos redirecciona a la página de la Figura 5, donde nos pide el
código del documento a descargar.
171
Web Document Store and Printing
Además nos encontramos con una serie de opciones disponibles en todas las páginas del
servicio como son:
Banderas de países donde podremos seleccionar el idioma de los textos. Cómo se
puede ver en la Figura 1, en la parte superior derecha, se dispone de cuatro idiomas
diferentes: español, portugués, inglés y francés.
Una serie de enlaces en la parte superior izquierda:
o Inicio: Desde cualquier página del documento, seleccionando este enlace,
aparece la página de inicio.
o Ayuda: Pequeño documento de ayuda de manejo del servicio.
o Política de privacidad: Se muestran las políticas de privacidad en el uso del
servicio.
o Asistencia técnica: información sobre la compañía que presta el servicio.
o FRACTALIA: Enlace a la página web de Fractalia.
o Mapa del sitio: Mapa web del sitio.
172
Web Document Store and Printing
3.2. Subida de archivos
Figura 2. Página de subida de ficheros
Desde esta página se puede seleccionar el archivo que se desea subir al servidor para
almacenarlo temporalmente.
Para seleccionar el archivo se debe pulsar el botón de búsqueda y una vez encontrado pulsar
el botón “Subir archivo” para comenzar la transferencia.
Antes de subir el archivo observe con atención los parámetros que aparecen en el recuadro:
Tamaño máximo del archivo.
Tamaño máximo recomendado.
Tiempo de permanencia del archivo en el servidor.
173
Web Document Store and Printing
Si el archivo se ha subido correctamente, aparecerá una página de confirmación
indicándonoslo Figura 3. Además nos aparecerá un código que nos será necesario introducir
a la hora de la descarga e impresión del archivo. Es muy importante apuntar este
código para identificar el documento.
Figura 3. Página de confirmación de subida de fichero, desde PC Fractalia
3.3. Descarga e impresión de archivos
A la hora de descargar archivos, podemos encontrarnos con 2 posibilidades:
3.3.1. Descarga desde su propio PC
Desde su PC o portátil no será posible la gestión de este apartado y como se indica en la
Figura 4, se deberá dirigir a un ordenador de un centro gestionado por Fractalia para poder
descargarlo o imprimirlo.
174
Web Document Store and Printing
Figura 4. Mensaje de descarga de fichero, desde PC de usuario
3.3.2. Desde un PC gestionado
Al acceder a la página de descarga desde un PC gestionado, se le mostrará una página como
la que puede ver en la Figura 5, donde puede introducir el código del documento para iniciar
la descarga e impresión.
175
Web Document Store and Printing
Figura 5. Página de introducción de código
Antes de imprimir fíjese en los tipos de impresión disponibles. En función de las propiedades
elegidas a la hora de imprimir se aplicará uno de estos tipos, por lo tanto: Ponga atención
a las propiedades de impresión al imprimir el documento.
Para iniciar la descarga, introduzca el código que se le proporciona después de subir el
archivo y pulse el botón “Iniciar proceso”.
Si el código introducido es incorrecto le saldrá un mensaje de error. Si por el contrario es
correcto nos redirigiremos a la página de la Figura 6, donde aparece un mensaje
confirmándonos que el código es válido y se corresponde con un archivo almacenado.
176
Web Document Store and Printing
Figura 6. Página de descarga de fichero
Una vez realizado este paso existen tres opciones:
Descargar el archivo: Pulse el botón para comenzar la descarga. El archivo descargado
estará formado por el nombre de archivo original, más un código necesario para su
identificación en el servidor. No modifique el nombre del archivo antes de la
impresión, si no ésta no será posible. El archivo seguirá el protocolo de descarga de
su navegador, como cualquier otro documento descargado de Internet.
Cancelar la descarga: Cancela la opción de descarga de este archivo y se redirige, de
nuevo, a la página de solicitud de introducción de código.
Fin del temporizador: Cuando se acaba el tiempo del contador, aparece un mensaje
que nos permite monitorizar las impresiones o volver a introducir un código de
archivo.
177
Web Document Store and Printing
Para descargar el archivo se deberá pulsar el botón “Descargar archivo”.
Cuando finaliza el temporizador que aparece en la página, independientemente de si se ha
descargado el archivo, nos saldrá el mensaje de la Figura 7. En él nos encontramos con dos
opciones:
Pulsar botón “Aceptar”: Nos dirigimos a la página de monitorización, como la
mostrada en la Figura 8.
Pulsar botón “Cancelar”: Volvemos a la página de la Figura 5 que nos vuelve a solicitar
la introducción de código del documento.
Figura 7. Mensaje con opción monitorización
178
Web Document Store and Printing
3.4. Página de monitorización
Figura 8. Página de monitorización
Como vemos en la Figura 8, la página de monitorización nos muestra todas las impresiones
activas y su estado. Esta página es refrescada cada 5 segundos y actualiza el estado
consultando a la impresora.
En esta página existen dos opciones:
Pulsar botón “Pausar monitorización”: Se pausa la monitorización, con lo cual la
página deja de refrescarse y permanece en el estado que tuviera en el momento de
pulsar este botón. En la Figura 9 se observa un ejemplo.
Pulsar botón “Finalizar monitorización”: Aparece un mensaje de final de
monitorización como el de la Figura 10.
179
Web Document Store and Printing
Figura 9. Página de monitorización pausada
Con la monitorización pausada tenemos también la opción de finalizar la monitorización o
volver a reiniciarla.
Si pulsamos “Finalizar monitorización” aparece el mensaje de la Figura 10.
180
Web Document Store and Printing
Figura 10.
Mensaje de fin de monitorización
181
Web Document Store and Printing
Anexo C.
Manual de usuario
gestor
Web Document Store and Printing
1. Introducción
El objetivo de este documento es que sirva como manual de uso para los usuarios
explotadores finales y encargados de la facturación del servicio Web Document Store and
Printing.
Esta herramienta permite ver el estado de las impresiones de un documento, así como
confirmar o cancelar los pagos de éstas.
2. Modo de uso
2.1. Página de inicio
Figura 1. Página de inicio
Como se puede observar en la Figura 1, en la página de inicio nos aparece un formulario para
introducir el código del documento del cual queremos observar los pagos. Este es el código
mostrado en la confirmación de la subida de un fichero.
183
Web Document Store and Printing
Al pulsar el botón “Aceptar”, si el código es correcto, se mostrará una página similar a la
mostrada en la Figura 3, por el contrario si el código es incorrecto se añadirá la línea: “El
código de descarga introducido tiene un formato incorrecto” y se dará la opción de volver a
introducir el código.
Otras opciones de la página:
Banderas de países donde podremos seleccionar el idioma de los textos. Cómo se
puede ver en la Figura 1, en la parte superior derecha, se dispone de dos idiomas:
español e inglés.
Enlace “Inicio”, nos dirige a la página principal de “Web Document Store and
Printing”.
Imagen “Fractalia”. Pulsando en la imagen de Fractalia, que se encuentra en la parte
superior izquierda, redirige a la página Web de Fractalia.
Si se ha introducido el código pero no se ha realizado ningún trabajo de impresión aparecerá
el mensaje de la Figura 2:
Figura 2. Documento sin trabajos de impresión
184
Web Document Store and Printing
2.2. Trabajos de impresión de un documento
Figura 3. Trabajos de impresión
Si ha sido introducido correctamente el código de impresión del documento y existen
trabajos de impresión, nos saldrá un contenido como el ejemplo de la Figura 3.
Como podemos ver en la figura, aparecen todos los trabajos de impresión y por cada uno de
ellos se muestra la siguiente información:
Páginas: Número de páginas del documento.
Color: Con una imagen se puede observar si al imprimir el documento se seleccionó
la opción en color o blanco y negro.
Precio: Precio total que cuesta la impresión del documento.
185
Web Document Store and Printing
Descripción del artículo: Muestra información del tipo artículo asociado.
Estado: Estado de la impresión.
Cancelar ticket: Sirve para cancelar el trabajo de impresión.
Posibles acciones que se pueden realizar en esta página:
Pulsar el botón “Introducir nuevo código de documento”: Vuelve a la página de
inicio, donde se puede volver a introducir el código de cualquier documento.
Pulsar botón “Actualizar tabla de impresiones”: Refresca la tabla donde se muestran
los trabajos de impresión. Vuelve a consultar si hay algún trabajo de impresión más y
actualiza la columna estado.
Aceptar precio y pagar impresiones: Si marcamos la casilla “Aceptar Precio” y
pulsamos el botón “Pagar impresiones”, se realizará el pago. Se explica más en detalle
en el Apartado 2.3.
Pulsar algunas de las casillas que se encuentran en la columna “Cancelar Ticket” de
cualquier trabajo de impresión: Nos saldrá, automáticamente, la página de la Figura 5
para cancelar trabajos de impresión. Más en detalle en el Apartado 2.4.
Como podemos ver en la Figura 3, encima de la tabla de trabajos de impresión, si algún
trabajo está incompleto se avisa con un mensaje y se debe esperar a que esté finalizado.
2.3. Pago de trabajos de impresión
Marcando la casilla “Aceptar Pago” y pulsando el botón “Pagar Impresiones”, se confirmará
el pago y el documento será eliminado del sistema. Como se puede observar, el precio total
a pagar por el cliente es el marcado en rojo como “Precio Total”
186
Web Document Store and Printing
Si la operación de pago se completa correctamente, le aparecerá una página como la que se
muestra en la Figura 4.
Figura 4. Operación de pago completada
187
Web Document Store and Printing
2.4. Cancelación de trabajos de impresión
Figura 5. Cancelación de trabajo de impresión
Cuando pulsamos cualquier casilla de la columna “Cancelar Ticket” se redirige a una página
como la de la Figura 5. Como se observa podremos introducir el motivo de la cancelación y
pulsar “Cancelar Ticket”.
Una vez cancelado saldrá un mensaje de confirmación como el de la Figura 6.
En caso de arrepentimiento siempre se puede pulsar el botón “volver atrás”.
188
Web Document Store and Printing
Figura 6. Mensaje de confirmación de cancelación de trabajo de impresión
189
Descargar