scieee AI-readable full text Open interactive document viewer

Distribució de continguts empresarials per a la força de vendes de STEN

Torroja i Nualart, Oriol

Full text

                     TREBALL DE FI DE CARRERA           TÍTOL DEL TFC TITULACIÓ AUTOR DIRECTOR DATA : Distribució de continguts empresarials per a la força de vendes de STEN : Enginyeria Tècnica de Telecomunicació, especialitat Sistemes de Telecomunicació, pla 2000. : Oriol Torroja i Nualart : Marco A. Peña Basurto : 29 de juny de 2005 Títol Autor Director Data : Distribució de continguts empresarials per a la força de vendes de STEN : Oriol Torroja i Nualart : Marco A. Peña Basurto : 29 de juny de 2005 Resum L’evolució contínua de les comunicacions, especialment l’expansió d’Internet i de la mobilitat, juntament amb l’evolució de les plataformes de desenvolupament (Java, .Net, ...) i una continuada miniaturització dels dispositius (terminals híbrids amb processadors cada cop més potents, limitació superada quant a capacitat de bateries i de pantalles), està comportant una profunda modificació de les formes de treball i dels processos en les empreses. L’ús d’aquestes noves tecnologies permet la possibilitat d’oferir un millor, més ràpid i eficient servei als seus clients, tot reduint costos, aconseguint així distingir-se respecte de la seva competència. En aquest treball oferim una solució a mida per a l’empresa STEN per tal que els seus agents comercials puguin realitzar gestions, estiguin on estiguin, accedint als servidors d’informació de l’empresa mitjançant un terminal PDAPocket PC amb connexió GPRS. Així esperem agilitzar alguns dels procediments actuals, aconseguint un estalvi de temps significatiu. Les solucions que s’estudien en aquest treball són tres: una aplicació web, un servidor d’aplicacions i una aplicació client-servidor basada en serveis web. És aquesta última la que es desenvolupa com a solució, una tria basada en la gestió eficient de la transferència de dades via GPRS, la possibilitat de gestionar l’off-line i de no perdre dades per manca de cobertura, la compatibilitat multiplataforma (accés als serveis via aplicació PDA, pàgina web o un altre servidor), l’escalabilitat, la compatibilitat multidispositiu, la rapidesa i l’amigabilitat d’ús. Expliquem com hem desenvolupat i implementat tan la part de servidor amb els corresponents serveis web com l’aplicació client, un model base al que podria afegir-se més funcionalitat, i que permet a qualsevol representant de l’empresa amb un terminal híbrid buscar informació sobre clients i obres, donar d’alta obres o perspectives d’obres noves, informar de les visites diàries a clients i del quilometratge diari efectuat. A més, en cas de no haver-hi cobertura, l’aplicació emmagatzema en local les dades introduïdes pel comercial, per enviar-les posteriorment al servidor quan es torna a detectar servei. La solució que oferim aquí, doncs, pot acomplir perfectament les expectatives de l’empresa STEN si vol gaudir d’un servei de mobilitat per a la seva força de vendes. S’ha desenvolupat una solució integral, des del disseny general de les comunicacions fins a l’especificitat d’una aplicació integrada en l’entorn informàtic i de sistemes de l’empresa. A part de l’estudi tant de les propostes com de la solució i del disseny, desenvolupament i implementació d’aquesta, el treball comença amb una situació del context empresarial, tecnològic i social actuals que serveix per entendre la idoneïtat de solucions com la que aquí proposem. Title Author Director Date : Enterprise content distribution for STEN sales force. : Oriol Torroja i Nualart : Marco A. Peña Basurto : June, 29th 2005 Overview The continuous evolution in communications, especially the expansion of the Internet and mobility, alongside the evolution of development platforms (Java, .Net...) and the continual miniaturization of devices (hybrid terminals with increasingly more powerful processors, limitations being overcome in both batteries and screen capacities) are resulting in big changes being made in working methods and company processes. The use of these new technologies provides the possibility of offering a better, faster and more efficient client service, reducing costs, and enabling companies to stand out from the competition. Here we offer a made-to-measure solution for the STEN company, so that their representatives can carry out operations wherever they are, accessing to the company information servers through a PDA-Pocket PC device with a GPRS connection. We are sure it will speed up some of the current processes, with the resulting saving in time. There are three solutions that we explore in this report: a web application, an application server and a client-server application, based on web services. The latter is developed as our final proposal, a choice based in the high efficiency in data transmission using GPRS, the chance of managing off-line situations to avoid data loss, the multiplatform compatibility (access to services through a PDA application, website or other server), scalability, multidevice compatibility and speed and user-friendliness. We explain how we have developed and implemented both the server, with respective offer in web services, and the standalone PDA application accessing these web services. This application is a base from where it is possible to extend its operability, and enables any company representative with a hybrid terminal to search for client and work information, insert new work or perspectives about new work, to inform about daily visits to clients and about daily distances. Furthermore, in case of no mobile cover, instead of sending the information to the server the application saves it locally, sending it later when mobile cover is detected. The solution we provide is completely able to accomplish the STEN company’s expectations in implementing a mobility service for its sales force. It has been developed as an integral solution, from the general design in communications to the specific nature of an application integrated into the company’s information systems. Apart from the study of the proposals and the specific study and design, development and implementation of the final one, this work starts with an analysis of the current managerial, technological and social context that helps in understanding the suitability of solutions such as the one we propose. Tot i que van viure i adaptar-se a grans canvis, em sembla que el que aquí explico poc ho haurien entès. Però d’ells m’ha servit conèixer la constància, la dedicació, el treball, l’esforç del dia a dia i l’empenta amb què feien les coses, i que modestament tant m’ha servit aquí. Per això dedico aquestes pàgines als meus avis, i el meu agraïment al suport impagable que m’han donat els meus pares i germans. ÍNDEX  CAPÍTOL 1. INTRODUCCIÓ ............................................................................. 1 CAPÍTOL 2. CONTEXT EMPRESARIAL, TECNOLÒGIC I SOCIAL ............... 3 2.1.  L’empresa STEN................................................................................................................3  2.1.1. Activitat ......................................................................................................................3  2.1.2. Organització i processos...........................................................................................3  2.1.3 Infraestructura i serveis de comunicacions ................................................................5  2.2.  Anàlisi del sector de la construcció................................................................................ 7  2.3.  Tecnologia i societat.........................................................................................................8  CAPÍTOL 3. ANÀLISI D’OBJECTIUS ............................................................. 10 3.1. Motivació............................................................................................................................. 10  3.2. Especificació de la proposta............................................................................................. 11  3.3. Estudi de les solucions tècniques ................................................................................... 11  3.3.1. Característiques bàsiques....................................................................................... 11  3.3.2. Servidor d’aplicacions.............................................................................................. 12  3.3.3. Aplicació web........................................................................................................... 13  3.3.4. Serveis Web ............................................................................................................14  3.4. Estudi de viabilitat.............................................................................................................. 14  3.4.1. Aspectes econòmics................................................................................................ 15  3.4.2. Cobertura GPRS ..................................................................................................... 19  3.4.3. Organització i planificació........................................................................................ 20  CAPÍTOL 4. ANÀLISI I DISSENY DE L’APLICACIÓ...................................... 23 4.1. Tria de la solució tècnica...................................................................................................23  4.1.1. Criteris tècnics......................................................................................................... 23  4.1.2. Criteris econòmics...................................................................................................24  4.1.3. Criteris d’ús..............................................................................................................24  4.2. Estudi de la proposta......................................................................................................... 25  4.2.1. Especificació del sistema ........................................................................................ 25  4.2.2. Requeriments tècnics..............................................................................................26  4.2.3. Planificació...............................................................................................................28  4.2.4. Recursos..................................................................................................................29  4.3. Disseny funcional............................................................................................................... 29  4.3.1. Lògica funcional de l’aplicació client ....................................................................... 29  4.3.2. Lògica funcional serveis web .................................................................................. 33  4.3.3. Disseny de les interfícies gràfiques......................................................................... 33  4.3.4. Model de casos d’ús................................................................................................36  4.4. Disseny orgànic.................................................................................................................. 36  4.4.1. Taules i vistes de referència.................................................................................... 37  4.4.2. Model de relacions ..................................................................................................39  4.4.3. Disseny de les taules i vistes................................................................................... 40  CAPÍTOL 5. DESENVOLUPAMENT, IMPLEMENTACIÓ I PROVES ............. 41 5.1. Desenvolupament ..............................................................................................................41  5.1.1. Adaptació del projecte............................................................................................. 41  5.1.2. Problemes i solucions.............................................................................................. 41  5.1.3. Fases, Organització i Planificació ........................................................................... 43  5.2. Implementació .................................................................................................................... 43  5.2.1. Configuració dels terminals ..................................................................................... 43  5.2.2. Configuració de l’Internet Information Server (IIS)..................................................44  5.2.3. Instal·lació de les aplicacions a les PDA................................................................. 45  5.3. Proves.................................................................................................................................. 45  CAPÍTOL 6. BALANÇ ..................................................................................... 49 6.1. Objectius assolits...............................................................................................................49  6.2. Planificació..........................................................................................................................49  6.3. Anàlisi econòmica.............................................................................................................. 50  6.4. Propostes de millora.......................................................................................................... 51  CAPÍTOL 7. CONCLUSIONS.......................................................................... 53 ANNEX............................................................................................................. 55 A.1. Codi de l’aplicació. ............................................................................................................55  A.1.1. Serveis Web............................................................................................................55  A.1.2. Aplicació client ........................................................................................................ 72  A.2. Definició de taules i vistes................................................................................................ 85  BIBLIOGRAFIA ............................................................................................... 93  Introducció 1 CAPÍTOL 1. INTRODUCCIÓ Durant els últims anys, l’evolució de les comunicacions ha estat incessant. En fa tan sols vint, tant Internet com les comunicacions mòbils tot just començaven a donar els seus primers passos. Actualment, l’extensió i l’ús d’Internet arriba pràcticament a tots els racons del planeta i la connexió a la xarxa es realitza, tan en l’entorn personal com empresarial, amb amples de banda prou elevats i que obren la porta cada dia que passa a nous i millors serveis. També és destacable la millora en les comunicacions mòbils. A l’Estat Espanyol, per exemple, ja s’ha produït l’apagada analògica cel·lular (és el cas de Moviline) i nous terminals mòbils ja incorporen la tecnologia UMTS, que d’aquí a poc temps haurà desbancat del tot el GPRS actual. A part d’aquests dos pilars de les comunicacions actuals, existeixen també tota una sèrie de solucions noves per a xarxes personals (PAN) i locals (LAN) com són la tecnologia Bluetooth, DECT, Wi-Fi i d’altres que complementen perfectament totes les necessitats dels usuaris. Paral·lelament a l’evolució de les comunicacions també s’ha produït l’evolució en les eines de desenvolupament d’aplicacions. I és que les possibilitats de comunicació han obert noves portes a serveis que no existien fins fa poc temps. Així doncs, el llenguatge Java, l’aparició de la tecnologia ASP i .NET i en general l’aprofitament d’Internet per a oferir serveis o aplicacions web obre les portes a noves possibilitats, formes de treball diferents i una millor optimització de processos en les empreses. Un altre element que juga a favor d’aquest procés és la miniaturització dels processadors i de les computadores en general. Els ordinadors portàtils per una banda, però sobretot l’aparició de terminals mòbils cada cop més petits i amb més capacitat de memòria i de processament. Primer, terminals de telefonia mòbil i agendes electròniques o PDA per separat, cada cop amb més funcions, fins arribar a la fusió en els terminals híbrids. La possibilitat d’aplicacions i serveis que ens ofereixen i ens oferiran en el futur aquests terminals és, també, un element clau més. Inicialment tots aquests terminals i sistemes de comunicació eren complicats en el seu funcionament, força costosos i poc eficients. Només dos exemples: la connexió a Internet via mòdem era i és relativament senzilla per a qualsevol usuari, però molt ineficient per la lentitud de connexió que aporta; o bé intentar connectar un portàtil a un telèfon mòbil per connectar-se a Internet per GPRS, que té uns nivells d’eficiència suficients per segons quins serveis però la seva configuració suposa una complicació extrema per a molts usuaris. Actualment, en canvi, parlem de solucions més eficients, senzilles per a l’usuari i econòmicament més assequibles. Tot aquest procés ha facilitat l’aparició de noves solucions molt interessants per a les empreses, tal i com veurem en el cas de l’empresa STEN. Dedicada al sector de la construcció, aplicacions com la ubicació d’obres per GPS, gestió de les notes de despeses, accés ràpid i complet a informació de productes i Distribució de continguts empresarials per a la força de vendes de STEN 8 repercutirà directament en les empreses del sector que habitualment ja estan habituades a una gran competitivitat entre elles. Per fer front a possibles casos de recessió com aquest són diverses les sortides que les empreses poden trobar com a estratègia de negoci, estratègies per altra banda que sense recessió també serien perfectament útils. En primer lloc, les empreses del sector de la construcció que estiguin bàsicament dedicades a un sol dels subsectors tenen la possibilitat d’obrir-se a un nou segment de mercat i de clients engegant noves vies de negoci cap a altres sectors. És el cas de STEN, que inicialment dedicada al negoci d’encofrats per a edificis va obrir fa uns anys les vies de negoci d’obra civil i de rehabilitació, de manera que el risc de negoci no és tan elevat i l’afectació davant una davallada de l’activitat residencial seria menor. 2.2.2. Inversions I+R+D en comunicacions i serveis Finalment, l’altra gran alternativa per fer front a la competitivitat en el sector és la innovació i la recerca del valor afegit. Aquesta alternativa, més senzilla, igualment rendible i generalment d’una inversió menor és independent de la bona o mala marxa del mercat, ja que els clients tenen cada vegada més informació, més preparació i formació i la seva exigència ha anat progressivament en augment. A nivells alts de competitivitat, el valor afegit que pot fer destacar un producte respecte de la resta és el detall, per a satisfacció dels clients i dels propis empleats. I en aquesta direcció hi trobem el camí de la innovació. La innovació ens permet millorar l’eficiència interna de l’empresa, estalviar temps, millorar la qualitat del servei, i a més repercuteix en la imatge que es dóna al client, el qual percep un esperit de canvi, d’estar al dia i de voluntat de millora constant. 2.3. Tecnologia i societat La contínua evolució tecnològica i de les comunicacions ha transformat i continua transformant en cada moment els hàbits i costums de les societats occidentals industrialitzades. L’anomenada “era de la informació” ho és més cada dia que passa, ja que constantment s’obren nous camins i noves vies d’accés a la informació. Si considerem que aquesta etapa va començar amb la consolidació de la telefonia fixa i les emissions de ràdio i televisió, ens adonarem de seguida de la ràpida evolució que s’ha anat seguint: la telefonia mòbil, el GPS, Internet, etc. Per altra banda, la societat occidental actual sembla que està prenent cada cop més consciència per la conservació del medi ambient. En aquest sentit, les tecnologies netes esdevenen més atractives per la població. I és que tot el que es refereix a electrònica i comunicacions té un impacte ambiental pràcticament nul: no hi ha cap generació de residus que puguin contaminar ni els rius ni l’aire, més aviat afavoreix un consum menor de paper i per tant un impacte positiu en aquest sentit. Context empresarial, tecnològic i social 9 L’impacte més immediat serà el de la telefonia de tercera generació (3G). L’UMTS permet la transmissió de dades a velocitats superiors a les aconseguides fins ara amb el GPRS, de fins a 144 Kbps en entorns rurals i 384 Kbps en entorn urbans. Posteriorment, la tecnologia UMTS també millorarà i passarà de fer servir l’actual tecnologia WCDMA a la HSDPA (High Speed Downlink Packet Access), en la que es preveuen millores de rendiment de fins a un factor de 3.5, poguent incrementar les velocitats de dades fins a una velocitat màxima teòrica de 14Mbps i velocitats mitjanes properes a 1Mbps. Tècnicament, aquesta millora s’aconsegueix gràcies a una ampliació de la modulació de quadratura, que passa a ser una 16-QAM, juntament amb altres millores tècniques. La innovació en mobilitat comportarà canvis, com per exemple la interconnexió en temps real amb els equips de carrer de les empreses o la capacitat de mobilitzar el personal de les oficines. Moltes empreses acabaran incorporant la figura de l’expert en mobilitat i integració de sistemes, que hauran de seleccionar acuradament els serveis necessaris i els terminals més convenients. I, per descomptat, els canvis que seguirà comportant quant a costums i hàbits de la societat en general, alguns dels quals ja comencem a entreveure: telefonia fixa gratuïta, tarificació per tràfic de dades enlloc de per temps, un progressiu descens de les tarifes de dades –actualment a preus bastant prohibitius-, millores en la cobertura d’UMTS, .... En qualsevol cas, és de preveure que continuï la gran acceptació social que han tingut les innovacions en comunicacions mòbils. L’ús d’aquestes tecnologies, que serà habitual en la societat a mitjà termini, pot donar a qui ho aprofiti ara una posició d’avantatge pel fet d’adaptar-s’hi i de treure’n el rendiment ja des d’ara mateix.    Distribució de continguts empresarials per a la força de vendes de STEN 10 CAPÍTOL 3. ANÀLISI D’OBJECTIUS 3.1. Motivació El personal comercial de l’empresa dedica pràcticament tota la jornada laboral a visitar les diferents obres dels nostres clients, ja sigui per oferir els productes de STEN com per fer el seguiment corresponent d’una obra a la qual s’ha servit material. La seva tasca a l’empresa és la de captació de clients i fidelització d’aquests, per tant han de destinar el menor temps possible a tasques administratives i el màxim a l’atenció al client. Per a realitzar aquestes tasques més administratives existeix tot un departament d’administració comercial a cada delegació, amb personal administratiu dedicat en exclusiva a les tasques d’un grup molt reduït de comercials. Això no treu, però, que igualment cada representant hagi de realitzar diferents gestions bàsiques com per exemple elaborar una precomanda de material segons l’acord al que hagi arribat amb els client, o bé estudiar una obra per fer la corresponent oferta del material necessari per a cobrir-la, etc. En aquest sentit, una eina que faciliti algunes de les tasques que realitzen els comercials pot ser molt útil, ja que una més gran rapidesa i efectivitat en cada operació comporta més temps disponible per dedicar als clients i, en conseqüència, més possibilitats de vendes. A més, els clients agrairan una millor agilitat en tots els seus tràmits, fins i tot poder ser completament atesos a peu d’obra mateix, sense haver d’esperar que el comercial hagi d’acostar-se fins a l’oficina per a segons quines consultes. Tal i com hem analitzat anteriorment, totes les propostes que, com aquesta, permetin una millor gestió del temps i dels processos s’han de tenir molt en compte de cara a probables escenaris de desacceleració del mercat. Són eines com aquestes les que poden permetre a l’empresa oferir una millor qualitat del seu servei i una imatge innovadora i avançada de cara als clients, fets que es tradueixen en una fidelització més gran dels clients en primer terme i una major captació després, i per tant una millora qualitativa i quantitativa de l’empresa respecte de les seves immediates competidores. Aquestes solucions s’emmarquen un context tecnològic de contínua evolució i que cada dia ofereix noves possibilitats, i són fruit de la unió de diferents tecnologies i serveis. Per una banda, la capacitat de comunicació dels telèfons mòbils amb amples de banda cada cop més elevats (GSM, GPRS, UMTS). Per altra banda, l’aparició de les agendes electròniques, autèntics ordinadors de mà, cada cop amb més capacitat de processament (sistema operatiu potent, processadors cada cop més ràpids i més memòria) i major miniaturització. Aquests dos factors, juntament amb la generalització de l’ús d’Internet i la seva evolució i expansió, l’evolució dels llenguatges de programació (Java, .NET, ...) i un llarg etcètera de factors tecnològics són els que fan possible oferir noves solucions i propostes a les empreses. Anàlisi d’objectius 11 A part dels factors empresarials i tecnològics, també hi ha raons de tipus acadèmic i professional que motiven aquesta proposta de TFC. El fet d’haver tractat les comunicacions mòbils en diverses assignatures i haver-ne conegut les possibilitats de futur que poden tenir, ha fet créixer l’interès per conèixer més d’a prop aquesta branca emergent de la tecnologia, i així poder-ne investigar algunes de les seves principals característiques i funcionalitats. 3.2. Especificació de la proposta Per tal de donar resposta a aquesta necessitat d’una eina que faciliti les gestions més immediates i senzilles del personal comercial de l’empresa, es proposa desenvolupar una aplicació que pugui ser executada des de qualsevol terminal mòbil combinat i que ofereixi els serveis que es considerin oportuns en connexió directa via GPRS amb la base de dades de l’empresa. La solució ha de ser compatible a nivell d’escalabilitat amb les futures tecnologies que puguin anar apareixent a curt o a mig termini, com l’UMTS quan aquest sistema estigui més implementat a tot el territori. Però també ha de permetre créixer amb noves funcionalitats i serveis, posteriorment. Així doncs, es proposa inicialment desenvolupar una aplicació senzilla que permeti avaluar-ne la viabilitat, de forma que requereixi una mínima inversió inicial. Aquestes funcionalitats, inicialment, seran de consulta d’informació bàsica que pot ser més útil per als comercials, com és informació sobre clients i obres, i la introducció d’informació diversa com poden ser les visites diàries efectuades, perspectives d’obres o notes de despeses. El cost inicial de la inversió ha de ser el més baix possible, entenent que és una proposta que necessita demostrar el seu grau d’efectivitat, així com el cost de manteniment del servei ha d’estar proporcionat al benefici que se n’obtingui.  3.3. Estudi de les solucions tècniques 3.3.1. Característiques bàsiques Dintre de la funcionalitat que hem descrit en l’especificació de la proposta, hi ha tota una sèrie de requisits més de caràcter tècnic i de detall que la proposta final hauria d’intentar acomplir al màxim. D’entrada, en ser una solució basada en la transmissió via GPRS, s’ha d’intentar que el tràfic de dades sigui el menor possible per un tema de costos. Això significarà que caldrà buscar solucions en què la interfície gràfica viatgi el menys possible per la xarxa, buscar sistemes de compressió de les dades, etc. També hi ha un factor de velocitat, bastant relacionat amb el tràfic de dades. En principi, com més dades transportem més lenta serà l’aplicació des de la òptica Distribució de continguts empresarials per a la força de vendes de STEN 12 de l’usuari, i per tant menys útil. S’haurà d’intentar, doncs, que l’aplicació final tingui una velocitat de treball considerable per ser una bona eina de treball. Independentment del tràfic de dades, però, la proposta haurà de tenir un cost el més reduït possible. Així doncs, s’haurà d’intentar que l’adquisició de maquinari i de llicències de programari sigui el mínim possible, així com els costos de desenvolupament, implementació en sèrie i manteniment. També serà important la gestió de l’off-line. Perquè l’aplicació sigui realment útil als usuaris finals, és a dir als representants comercials, caldrà que la funcionalitat estigui sempre operativa fins i tot en els casos de manca de cobertura, intentant evitar al màxim la pèrdua de dades. S’intentarà que la lògica de negoci resideixi a l’empresa mateixa, és a dir en un servidor propi corporatiu, i que tota aplicació que pugui córrer sobre terminals clients sigui simplement una eina per interactuar amb les dades, servides des de l’empresa, i que la seva funció principal sigui la de validar les dades introduïdes o de guiar l’usuari en les diferents opcions que pugui utilitzar. Per últim, dues condicions més, no menys importants. En primer lloc la seguretat: es procurarà que aquesta sigui màxima pel que fa a l’accés a les dades de l’empresa (ja sigui per encriptació, per construcció de connexions segures, per certificats d’autentificació o per validació d’usuaris i de sessions, etc.). I en segon lloc, la proposta final haurà de tenir la màxima compatibilitat amb múltiples dispositius i plataformes. 3.3.2. Servidor d’aplicacions Una possible solució seria implementar un servidor d’aplicacions. Tal i com indica el nom, la seva principal finalitat és servir les diferents aplicacions de l’empresa a través d’un sol entorn de navegació. És a dir, les aplicacions que gestionés el servidor no caldria que fossin instal·lades en local a cada màquina que hi volgués accedir, sinó que una sola finestra d’accés al servidor d’aplicacions ens oferiria la possibilitat d’interactuar amb cada aplicació talment com si fos instal·lada en local. Però també ofereix molts altres serveis, com el de servidor de dades, de pàgines web dinàmiques, de disc durs, de missatgeria entre els diferents usuaris i d’altres opcions. L’aspecte positiu d’aquesta solució és que no cal desenvolupar una nova aplicació, sinó que es pot servir qualsevol de les aplicacions corporatives existents en una varietat molt àmplia de plataformes i dispositius. Ara bé, té seriosos inconvenients quan el que més ens interessa és accedir-hi des de terminals PDA. En primer lloc, perquè la reproducció de la imatge a la PDA és difícil a través de GPRS, ja que tot i que s’optimitza molt el volum de dades transmeses, ja sigui via html o java, s’alenteix molt la transmissió i incrementa significativament els costos de GPRS. A banda d’aquests inconvenients, no té forma de solucionar el problema de l’off-line. Anàlisi d’objectius 13 Un últim factor a tenir en compte, però no per això menys important: el cost. Existeixen servidors d’aplicacions de programari lliure, amb la qual cosa el cost per llicència no seria significatiu. Però en un entorn, en aquest cas el de STEN, en el qual tot està sota llicència de Microsoft s’hauria de mirar molt acuradament que la integració no comportés cap problema. I en el cas que calgués adquirir una llicència pel servidor d’aplicacions, el cost es dispararia significativament. 3.3.3. Aplicació web La proposta de desenvolupar una aplicació web neix de la versatilitat d’una solució com aquesta. Per una banda, la facilitat de desenvolupament, ja que no requereix cap inversió en hardware específic (ja existeix un servidor web a l’empresa) ni cap complexitat en les comunicacions (la navegació web està completament estandaritzada) i fins i tot els coneixements del llenguatge de programació són senzills. Aquesta aplicació seria especialment indicada per ser desenvolupada mitjançant la plataforma .NET. Per altra banda, la possibilitat d’accés des de qualsevol navegador web, ja sigui des d’un PC client o des d’un terminal PDA, ja que es podria reconèixer el tipus de terminal client i que l’aplicació web hi adaptés automàticament la interfície gràfica. Es podria, fins i tot, preveure l’accés de telèfons mòbils i habilitar una versió WAP de l’aplicació. En general, però, la interfície podria ser molt rica en funcionalitat, interactivitat i dinamisme gràcies, per exemple, als diferents objectes i controls web que es podrien implementar. Un altre avantatge important és que tota la lògica de negoci residiria en el servidor web, per la qual cosa els canvis només caldria fer-los en aquest servidor i no caldria cap redistribució d’actualitzacions de l’aplicació cap als terminals. Aquests, en tornar a accedir a l’aplicació via navegador ja estarien accedint a la nova versió. Malgrat tots aquests avantatges, no resol algunes de les principals característiques que hauria de tenir la proposta. D’entrada estaríem transmetent sempre tota la interfície gràfica per la xarxa, de forma que el cost per transmissió de dades es dispararia. Com passava en el servidor d’aplicacions, hi ha la possibilitat de guardar en memòria alguns dels formularis o pantalles habituals per estalviar constants descàrregues de les interfícies més habituals. Però si justament estem parlant d’una aplicació dinàmica en què hi pugui haver una interacció elevada entre l’usuari i el servidor web, la possibilitat de tenir interfícies fixes queda molt reduïda. A part, hi ha també la gestió de l’off-line. Tal i com passava amb la proposta de servidor d’aplicacions, en el cas de l’aplicació web tampoc queda resolt aquest problema, que hem convingut que era important. En cas de no haver-hi cobertura no tindríem cap possibilitat d’accés al servidor web i, per tant, l’usuari no podria efectuar cap operació. Distribució de continguts empresarials per a la força de vendes de STEN 14 3.3.4. Serveis Web La tercera proposta consisteix en desenvolupar un servidor de serveis web que ofereixi tota una sèrie de funcions a punt per ser cridades per una aplicació client. És a dir, seria com tenir tota la funcionalitat d’una aplicació web però sense interfície, i que aquesta residís en una aplicació standalone en el terminal o bé en una aplicació web a part. Per tant, estaríem parlant d’un doble desenvolupament: els serveis web d’una banda, i l’aplicació client per l’altra. D’entrada, aquesta proposta té molts avantatges. Un cop disposem dels serveis web, aquests poden ser cridats des de qualsevol aplicació de qualsevol terminal i plataforma, per tant estem garantint la condició de multidispositiu i de multiplataforma. També l’escalabilitat és un punt a favor de la proposta, ja que aquesta solució permet adaptar-se molt millor a possibles canvis de sistemes operatius o a l’aparició de nous dispositius terminals. Un altre aspecte, positiu en aquest cas, és el de la gestió de l’off-line. Si l’aplicació que estem proposant és resident en una terminal PDA, aquesta pot tenir capacitat d’emmagatzemar dades de forma local perquè no es perdin, i posteriorment re-enviar-les al servidor quan torni a detectar cobertura. També es pot arribar a controlar millor la seguretat de les dades. No solament perquè es pot implementar encriptació sinó perquè és possible arribar a gestionar l’inici i l’acabament de les sessions d’usuaris i de terminals. Pel que fa als inconvenients d’aquesta proposta, el més important és el de sincronització de les dades en cas de voler realitzar modificacions de registres des del terminal client. Els casos de consulta i d’alta d’informació no tenen cap dificultat, però sí el de les actualitzacions, per problemes de replicació de dades: la solució de com gestionar una modificació del mateix client, per exemple, per part de dos usuaris diferents en el mateix instant no és fàcil. També podria ser problemàtic el canvi de terminals i la compatibilitat amb l’aplicació client, ja fos perquè apareguessin al mercat dispositius diferents dels actuals o perquè les aplicacions compatibles amb els sistemes operatius actuals no ho fossin amb els posteriors, circumstància bastant improbable. 3.4. Estudi de viabilitat L’estudi de viabilitat d’aquest projecte té la particularitat que s’ha de basar en dues realitats paral·leles. Una és el projecte en sí (el que serà desenvolupat pròpiament com a TFC) i l’altra la implementació real en l’empresa. Així doncs, tan s’ha d’analitzar la viabilitat de portar a la pràctica el TFC, amb els costos que pot implicar, la planificació, etc. com la viabilitat de fer-lo després real en l’empresa: abastir tota la flota de representants comercials amb l’aplicació que proposem, els costos d’adquisició de maquinari i programari, etc. Anàlisi d’objectius 15 3.4.1. Aspectes econòmics  3.4.1.1. Inversió inicial Servidor. La inversió inicial que requereixi el projecte, evidentment dependrà de la proposta final que es vulgui implementar. D’entrada, però, és pràcticament segur que serà necessària l’adquisició d’un servidor que pugui realitzar les funcions ja sigui de servidor d’aplicacions, de servidor web o de serveis web. Per a les proves i implementació d’aquest projecte només serà necessari, però, disposar d’un ordinador en el que poder realitzar les diferents proves i desenvolupaments. Infraestructura de comunicacions. Pel que fa a la resta d’infraestructura telemàtica, es pot fer servir la mateixa que hi ha existent a l’empresa, tan per les proves del projecte com per una implementació real. Això vol dir que es disposa d’accés als servidors de dades, a la xarxa interna corporativa, accés a través dels tallafocs, etcètera. Software. Per al projecte en sí es pot comptar amb el sistema operatiu existent en l’ordinador que fem servir de proves i en el terminal PDA corresponent, però en la implementació real caldrà instal·lar en el servidor nou un sistema operatiu de l’estil d’un Windows 2000 o 2003 Server amb la corresponent llicència, o Linux si preferim programari lliure. A partir d’aquí, la resta de software que necessitem dependrà de la proposta de projecte, però serà convenient adquirir-ne la major part en mode de demostració o de prova. Per a l’entorn real, però, és clar que s’haurà d’adquirir el software sota llicència. Terminals. Inicialment hi haurà una despesa important a tenir en compte, i es tracta de l’adquisició dels terminals PDA per als representants comercials de l’empresa. Si bé pel projecte en sí no serà necessari més que la disponibilitat d’un o dos d’aquests terminals per a les proves, sí que la despesa inicial d’aquests terminals serà significativa si l’aplicació es vol estendre, ja que cada un té un preu aproximat de 600€. Desenvolupament. Pel que fa al desenvolupament de l’aplicació, habitualment suposaria una de les partides importants d’inversió inicial donades la quantitat d’hores que s’hi ha de dedicar, aproximadament estimades en unes 350 hores. Si no fos el cas d’un TFC, doncs, l’empresa hauria d’assumir també el cost d’aquest desenvolupament. Formació i adaptació. Per últim, hi ha d’haver una necessària formació dels usuaris i posterior període d’adaptació que es pot considerar també com a part de la inversió inicial. Preferirem parlar d’inversió més que de cost inicial, perquè encara que requeriria destinar temps dels empleats a formació, i per tant treure’n de feina efectiva, fins i tot durant el període d’adaptació les diferents operacions s’estaran realitzant ja més ràpidament del que es fan en l’actualitat. Distribució de continguts empresarials per a la força de vendes de STEN 16 Així doncs, podríem formar-nos una idea de la inversió inicial observant la taula 3.1 a continuació. Tal i com podrem comprovar posteriorment, totes aquestes inversions inicials seran recuperades ràpidament pels beneficis directes i indirectes de l’ús de l’aplicació. Taula 3.1. Inversió inicial de projecte i d’implementació real Concepte TFC Implementació real Servidor (ordinador personal) 0 € 1.200 € Infraestructura -- -- Llicències software (demos, trials, ...) 0 € (1) 1.200 € Terminals PDA (préstec de 2 unitats) 0 € (2) 15.000 € Desenvolupament -- (3) 12.250 € Formació i adaptació -- -- Còpies i enquadernació 100 € -- TOTAL 100 € 29.650 € (1) Windows 2000 Server i Microsoft Visual Studio .NET Enterprise Architect, i a part el software específic que requereixi la proposta final. (2) Suposant un nombre de 100 unitats, a 500€ cada una, de les quals el 70% es podrien adquirir per acumulació de “punts” amb la operadora de telefonia mòbil. (3) Prenent com a referència una estimació de 350 hores a 35€/h. 3.4.1.2. Cost de manteniment  Un cop feta i testejada la implementació del projecte, s’acaba la part de realització del TFC. Però en l’entorn real de l’empresa, el dia a dia suposaria un cost en manteniment de la funcionalitat que cal analitzar. Infraestructura de comunicacions. D’entrada hi ha el cost de manteniment de tota la infraestructura de comunicacions que fa possible la funcionalitat. En la seva major part, aquesta estructura està ja implementada a l’empresa i per tant els seus costos ja són assumits actualment. El seu increment pel fet d’afegir-hi la funcionalitat aquí proposada seria negligible. Desenvolupaments addicionals. Pel que fa al desenvolupament de l’aplicació, s’entén que no requereix manteniment a no ser que hi hagi canvis en la lògica de negocis de l’empresa o que es vulguin incorporar canvis o afegir funcionalitat a l’aplicació. En aquest cas els costos dependrien de les modificacions a realitzar, cosa que no tindrem en compte aquí. Terminals de renovació. Una partida que sí que pot suposar un cost fix anual és el d’adquisició de terminals en cas que vagi augmentant el nombre de representants als que s’hagi de dotar d’aquesta funcionalitat. Per altra banda, cal tenir en compte que hi haurà d’haver reposicions de terminals ja sigui a causa d’averies o d’accidents diversos. Transmissions GPRS. Però el concepte que més clarament suposarà un cost fix serà el del consum de GPRS per la transmissió de dades entre els terminals i el servidor de l’empresa. Fent una mitjana aproximada entre els preus que ofereixen els diferents proveïdors, tindria un cost d’uns 7€ per dispositiu i mes. Anàlisi d’objectius 17 En resum, els costos mensuals serien els següents: Taula 3.2. Costos de manteniment. Concepte Cost mensual Cost anual Infraestructura comunic. 0 € 0 € Desenvolupament (1) 0 € (1) 0 € Renovació terminals (2) 300 € (2) 3.000 € Dades GPRS (3) 700 € (3) 8.400 € TOTAL 1.000 € 11.400 € (1) Suposem que no es realitzen modificacions en l’aplicació. (2) Càlcul basat en l’adquisició del 50% dels terminals pel sistema de “punts”. (3) Mitjana de les tarifes calculades de les diferents companyies operadores. 3.4.1.3. Beneficis  Temps. D’entrada, tenim un clar estalvi de temps en el moment en què s’eviten desplaçaments inútils cap a la oficina per a recollir certa informació o bé per entregar o recollir formularis. Agilitza el temps de les operacions que prèviament es realitzaven manualment: és el cas, per exemple, de l’entrada de dades. Qualitat. Millora la qualitat dels processos de l’empresa, per exemple per la reducció dels errors en la transmissió de la informació que comporta interpretar formularis, mals entesos en converses telefòniques, etc. En el cas dels serveis de localització o d’assignació de tasques “en directe”, es poden atendre millor les peticions urgents dels clients. I ja no parlem de la millora en general que suposa per al client una ràpida gestió de les seves comandes, ja que abans que això hi ha la mateixa imatge de l’empresa d’estar donant un servei d’última generació, de qualitat, amb la qual cosa s’està aconseguint una major fidelització de clients existents, i una major captació d’altres de nous. Productivitat i beneficis econòmics. I tot el que estem dient que afecta al temps i a la qualitat, evidentment afecta a la producció, ja que millora el rendiment del treball. I si estalviem temps, millorem la qualitat i la producció, en últim terme estem obtenint beneficis evidents, beneficis econòmics. Indirectament, però també de forma directa si una millora de la gestió dels clients o de determinades operacions pot comportar una reducció d’impagats o una millora dels temps de facturació, amb els conseqüents beneficis financers. I beneficis econòmics directes, també, en tots l’estalvi de trucades de veu que es deixen de realitzar gràcies a poder realitzar moltes de les operacions in-situ. Tècnica. A part d’aquests aspectes més de negoci, tècnicament estem parlant de solucions de futur que tindran un gran protagonisme en els propers anys. Solucions que poden ser implementades seguint els últims recursos en llenguatges de programació i plataformes de desenvolupament, com és el cas de la plataforma .NET, amb gran projecció de futur, i que a més són Distribució de continguts empresarials per a la força de vendes de STEN 24 Integració en l’empresa. L’ús de serveis web a l’empresa pot ser realment interessants per la integració de tecnologies que podria arribar a generar. A STEN en concret, un mateix servei web podria ser utilitzat no només per l’aplicació PDA que desenvolupem sinó també des del servidor d’AS-400 o des de SAP o qualsevol altra aplicació. Seguretat. La solució que proposem aporta seguretat. A part de la possibilitat d’encriptar dades, com hem comentat, té capacitat per gestionar usuaris, terminals i sessions. I per descomptat es pot millorar la seguretat del canal de comunicacions. Tecnologia punta. L’ús de serveis web i de la plataforma de desenvolupament .NET implica la utilització de tecnologia d’última generació pel que fa a comunicacions mòbils i informàtiques, amb la conseqüent projecció de futur que i integració amb els diferents sistemes que això li confereix. Alhora, suposa un repte interessant i important com a projecte. Exemples d’empreses amb experiència. Pel que hem pogut comprovar en empreses que es dediquen a oferir productes d’aquest tipus a clients que requereixen solucions en comunicacions mòbils, la majoria es decanten principalment per l’ús de serveis web. 4.1.2. Criteris econòmics Pel que es refereix a criteris econòmics, juntament amb la solució d’una aplicació web és la que requeriria un menor cost d’implementació. La solució d’un servidor d’aplicacions, en canvi, requeriria l’adquisició d’aquest servidor i per tant un cost addicional. La proposta de serveis web encareix el desenvolupament perquè aquest és doble: el dels serveis web i el de l’aplicació client. Però com que el desenvolupament es resoldrà en el marc del TFC, això no suposarà cap encariment respecte de les altres propostes. A part, encara que el desenvolupament signifiqués una despesa real per a l’empresa, valdria la pena la implementació d’una solució d’aquestes característiques ja que se n’obtindria un millor rendiment i benefici a mig i llarg termini. La resta de conceptes que hem analitzat en els apartats d’Inversió Inicial i de Costos de manteniment serien els mateixos en aquesta que en les altres solucions proposades. 4.1.3. Criteris d’ús Els criteris d’ús són també molt importants a l’hora de realitzar una tria de possibles solucions tècniques. Ja podem tenir una aplicació tècnicament molt reeixida o econòmicament molt rendible que si els usuaris no la troben pràctica, funcional o fàcil de manejar, l’aplicació està destinada al fracàs més absolut. Anàlisi i disseny de l’aplicació 25 Estem convençuts que dintre de les solucions proposades, la dels serveis web és, a més, la millor de les solucions de cara als usuaris. En primer lloc, perquè es proposa una aplicació dissenyada específicament per al terminal que aquests utilitzaran, i per tant amb una interfície i una lògica de disseny més ben adaptada. També hi són molt importants la rapidesa, de la qual ja hem comentat que s’afavoria gràcies a minimitzar la transferència de dades, i la gestió de l’off-line. En aquest últim cas, poder garantir que l’usuari no perdrà la informació que hagi entrat és molt important per oferir confiança i fiabilitat, però també per poder desenvolupar altres serveis futurs que requereixin emmagatzemar dades en local. Així doncs, hem escollit la solució de serveis web enlloc de les altres proposades basant-nos en totes aquestes raons tècniques, econòmiques i d’ús que acabem d’analitzar. 4.2. Estudi de la proposta  4.2.1. Especificació del sistema  Havent escollit, doncs, la solució d’utilitzar un servidor de serveis web combinat amb una aplicació client resident a la PDA, se’ns planteja d’entrada com enfocar tot el sistema de comunicacions de l’aplicació. En un entorn real, necessitaríem el servidor de serveis web integrat en la intranet de l’empresa, amb una IP pública fixa i amb accés lliure, és a dir en zona desmilitaritzada (DMZ). D’aquesta forma seria un servidor integrat a la xarxa i per tant amb accés als altres servidors i a les dades corporatives, però per altra banda estaria ubicat “abans” del tallafocs corresponent i per tant seria d’accés públic. D’aquesta forma, l’aplicació client realitzaria les crides corresponents als serveis web a una IP prèviament coneguda i fixa, que seria la del servidor de serveis web. L’esquema d’aquesta estructura de comunicacions seria com el que podem observar en la figura 4.1. Fig. 4.1. Mapa de comunicacions del sistema, en entorn real. Distribució de continguts empresarials per a la força de vendes de STEN 26 Però d’entrada no tindrem la possibilitat de realitzar el sistema en el seu entorn real. Encara que posteriorment s’acabi implementant, en un principi no serà possible disposar d’un servidor de serveis web integrat com dèiem a la xarxa interna de l’empresa, i per tant ens caldrà idear un sistema alternatiu. Aquest sistema alternatiu passa per utilitzar l’ordinador personal de què disposem i que, mitjançant una connexió VPN amb la intranet de l’empresa, actuï de forma idèntica al servidor que necessitem. Amb aquesta connexió, l’ordinador queda integrat a la xarxa informàtica de l’empresa i per tant hi té accés i pot actuar com un servidor més. L’únic inconvenient d’aquest sistema és que és menys estable, ja que intervé una connexió addicional (la de l’ordinador cap a l’empresa, que abans en l’entorn real no teníem), i per tant tenim més possibilitats d’errors i de talls en les comunicacions. A més, l’amplada de banda de la connexió d’aquest ordinador serà sensiblement inferior a la que podríem tenir en l’empresa. Malgrat aquests inconvenients, el sistema en entorn de prova (veure figura 4.2) pot funcionar igualment que el de l’entorn real.   Fig. 4.2. Mapa de comunicacions del sistema, en entorn de proves.  4.2.2. Requeriments tècnics  4.2.2.1 Plataforma de desenvolupament. En primer lloc cal definir la tria de la plataforma de desenvolupament amb la que programar les dues aplicacions, tant els serveis web com l’aplicació client. Tenim la possibilitat d’utilitzar la plataforma Java (J2ME) o .NET CF, però com que en el nostre cas tota la infraestructura informàtica de l’empresa està basada en Windows, així com els dispositius que tenim previst utilitzar que també es basen en aquest sistema operatiu (Windows Ce), la plataforma .NET s’integraria molt millor en aquest entorn. Anàlisi i disseny de l’aplicació 27 Per altra banda, els coneixements del personal informàtic de l’empresa i de qui haurà de desenvolupar aquesta aplicació estan molt més assentats en l’entorn Windows, i flaquegen més en la part de JAVA. Per aquests motius, escollirem la plataforma .NET per a realitzar el desenvolupament. 4.2.2.2 Llenguatge de desenvolupament Tot i basar-nos en un entorn Windows i haver fet la tria de la plataforma de desenvolupament .NET, això no ens limita la tria del llenguatge. De fet, .NET permet desenvolupar en diferents llenguatges: C#, Visual Basic, C++, J#. La tria l’efectuarem per una decisió més subjectiva ja que no hi ha criteris objectius rellevants per a efectuar-ne la tria. Així doncs, l’aplicació client serà desenvolupada amb Visual Basic .NET, del qual ja en tenim coneixements, mentre que els serveis web seran desenvolupats en C# per tal de poder aprendre i conèixer aquest nou llenguatge de programació d’última generació. 4.2.2.3 Bases de dades Per a la selecció dels diferents tipus de bases de dades que necessitarem, es compta amb una molt extensa llista de possibilitats: DB2 (AS-400), Oracle, Sybase, Access, .... Tot i això, l’empresa utilitza DB2 (AS-400) per a les dades que a nosaltres ens interessen, i per tant treballarem bàsicament amb aquest entorn. Les taules de nova creació, per tal de poder conèixer també un sistema diferent, les crearem en Microsoft Access, mentre que la base de dades resident en el dispositiu serà inicialment Pocket Access, i si tinguéssim cap problema sempre tindríem la possibilitat de canviar a SqlCe. 4.2.2.4 Terminals La selecció dels terminals s’ha de realitzar de forma especialment acurada. No només pel cost dels terminals, que tindrà una incidència important en el pressupost del projecte, sinó també pel cost dels accessoris, de les aplicacions que s’hi puguin instal·lar, de la usabilitat que tingui, de la fiabilitat, i per descomptat que el seu sistema operatiu sigui Windows Mobile (ja que hem triat la plataforma de desenvolupament .NET anteriorment) i per tant també tingui un mercat prou ampli de desenvolupadors. Els requisits que haurà de complir són: - Ser un terminal híbrid PDA + telèfon mòbil, amb connexió GSM i GPRS. - Tenir el sistema operatiu Windows Mobile 2002 o posterior. Distribució de continguts empresarials per a la força de vendes de STEN 28 - Tenir una pantalla suficientment gran com per poder garantir una mínima qualitat tan de visualització com de manipulació de l’aplicació. Recomanem una mida de pantalla a partir de 3,4 polzades, i tàctil. - Ser com més lleuger millor, per facilitar-ne la seva manipulació. Per últim caldrà valorar el cost de cada terminal, sobretot tenint en compte que en la implementació real s’haurà de dotar a tota la flota de representants comercials. Un dels terminals que compleix perfectament tots aquests requisits és el model O 2 XDA II (comercialitzat més comunament com a TSM500 de Movistar). També el model anterior (TSM400) o bé el posterior (Qtek 9090) serien terminals que complirien tots els requisits fixats. 4.2.2.5 Altres  Seguretat. La seguretat és un tema molt important quan parlem de la gestió de dades d’una empresa. És per aquest motiu que s’intentarà implementar la màxima seguretat a l’aplicació, ja sigui per un establiment de connexió segura, per autentificació d’usuaris, encriptació de dades o similars. Optimització funcions. Una de les preocupacions principals a l’hora de desenvolupar l’aplicació haurà de ser com es minimitza la transferència de dades per GPRS. Així doncs, totes les funcions que s’encarreguin de transmetre dades hauran d’estar expressament optimitzades, fins i tot pensant amb la possibilitat d’utilitzar mecanismes de compressió. Optimització interfície. Per tal d’aconseguir una aplicació fàcil i agradable d’utilitzar, serà important dissenyar unes interfícies gràfiques especialment pensades i senzilles però alhora eficients. L’objectiu és permetre la màxima visibilitat i facilitat d’ús a l’usuari i el màxim estalvi de temps en l’entrada de dades als formularis. Intentar seguir alguna guia d’estil o recomanacions que puguin existir sobre aquest tema. 4.2.3. Planificació La solució proposada seguirà la planificació general prevista inicialment en l’apartat 3.4.3. Tot i això, hi haurà alguna variació degut a que el desenvolupament de dues aplicacions requereix necessàriament més temps que el desenvolupament d’una de sola. Per aquest motiu, la proposta de modificació de la planificació inicial consisteix en començar 15 dies abans el projecte, per poder tenir el temps suficient per al desenvolupament de les dues aplicacions. Per altra banda, a partir de conèixer quina és la proposta final, es detallen més concretament les accions que es portaran a terme en l’apartat 4 de la planificació (Disseny i desenvolupament), que segons la modificació feta passa de tenir una durada de 6 a 8 setmanes: Anàlisi i disseny de l’aplicació 29 Taula 4.1. Detall de tasques de l’apartat de Disseny i desenvolupament. Tasca Durada 1. Proves de connexió PDA-PC 1 dia 2. Proves de funcionament amb l’IIS. 1 dia 3. Creació de taules i vistes 2 dies 4. Serveis Web. Proves connexió amb BBDD. 2 dies Serveis Web. Elaborar llistat funcions implementar. 1 dia Serveis Web. Desenvolupament. 3 setmanes Aplicació client. Proves de connexió amb S. Web. 1 dia Aplicació client. Proves connexió amb BBDD local. 2 dies Aplicació client. Disseny de les interfícies. 2 dies Aplicació client. Disseny de les funcions. 2 dies Aplicació client. Desenvolupament. 3 setmanes TOTAL 8 setmanes 4.2.4. Recursos Respecte de la previsió de costos realitzada en l’apartat 3.4.1, en principi no observem cap modificació a fer-hi, tret d’alguna despesa menor com per exemple que caldrà adquirir pròpiament una targeta ECO d’Amena per a poder donar servei al terminal PDA de proves i l’abonament de GPRS de 6 MB. Això suposa un cost addicional al previst inicialment de 9 € per a l’entorn de proves. Pel que fa a la resta de recursos, la majoria no caldrà adquirir-los de nou perquè ja els tenim disponibles per diferents mitjans, i el software nou que sigui necessari adquirir s’haurà de mirar que sigui de versions sense cost, tals com demostracions o versions de prova. 4.3. Disseny funcional  4.3.1. Lògica funcional de l’aplicació client  L’aplicació client es basarà en un menú d’opcions a base de pestanyes que oferiran quatre possibilitats d’accions: buscar informació, alta d’obres, introducció de visites i informe de quilometratge. Aquest serà el tronc bàsic, tal i com podem veure en la figura 4.3, a l’entorn del qual hi haurà complements a aquestes funcions. Tal i com s’observa, els serveis web queden a part de l’aplicació client, i més endavant veurem com s’hi enllacen. Abans d’accedir al menú, apareixerà una pantalla d’entrada al programa que serà on es validi l’usuari i la seva clau. Pel que fa a la opció de buscar informació, podrem realitzar la recerca per nom o població d’un client o d’una Distribució de continguts empresarials per a la força de vendes de STEN 30 obra i veure’n la fitxa de dades corresponent, i des de la fitxa d’un client anar a consultar els detalls d’una obra que tingui activa i des de la fitxa d’una obra anar a consultar els detalls del client. També podrem fer servir les dades que obtinguem de la recerca d’informació per omplir parcialment els formularis d’alta d’obres i de visites. L’aplicació client i els serveis web s’enllacen mitjançant crides puntuals. En la figura 4.4 podem observar com la majoria d’accions que realitzen les funcions de l’aplicació client depenen dels resultats que n’obtinguin de realitzar una crida a un servei web. Aquest és el cas, per exemple, de l’inici de sessió. L’aplicació client envia al servei web la identificació del terminal, el nom d’usuari i la seva clau (al servei web es reben les dades per paràmetre i s’executa la funció IniciarSessio) i rep d’aquest un identificador de sessió, segons el valor del qual l’aplicació client continua o no. De forma similar passa en la recerca de clients, on el que se’ns retorna és una llista de clients enlloc d’un id. de sessió, però tot són crides que passen paràmetres i que esperen rebre una sèrie de dades.   Fig. 4.3. Diagrama general de la lògica funcional de l’aplicació.  Anàlisi i disseny de l’aplicació 31   Fig. 4.4. Enllaç de la lògica de l’aplicació client amb els serveis web.  En aquest diagrama hem representat cada un dels webmethods, que més endavant analitzarem, i des d’on són cridats des de l’aplicació client. Alhora, s’hi representa la linealitat de les funcions del programa, tot i que es tracta de relacions molt simples.  4.3.1.1. Gestió de l’off-line  Si fins ara hem vist la part més visible de la lògica de funcionament de l’aplicació client, aquella que té relació directa amb les accions que realitza l’usuari, ara en veurem la part més amagada: com es gestiona l’off-line. Existeixen múltiples punts febles en les comunicacions que realitzem a l’hora de fer una crida a una servei web que consulti informació de l’empresa. Podem no tenir cobertura GSM o GPRS, o bé podem tenir tallat l’enllaç entre l’ordinador personal i l’empresa, o qualsevol altra situació imprevista.  La forma com l’aplicació client resol la gestió de l‘off-line és, de fet, molt senzilla. En cada enviament de dades al servidor, dades que s’hi han de Distribució de continguts empresarials per a la força de vendes de STEN 32 guardar, l’aplicació espera rebre un missatge de conformitat o de noconformitat de part del servei web. En cas de rebre una no-conformitat (per exemple en el cas que la base de dades no estigui operativa en aquest moment) o en el cas de no rebre res (timeout), s’activa un cronòmetre que un cop cada minut comprova si s’ha reestablert o no la connexió i es guarden les dades en la base de dades local. La comprovació de la connexió es realitza cridant el servei web Ping, que l’únic que fa és realitzar una consulta Sql senzilla, i ens retorna si l’ha pogut realitzar correctament o no. Com en el cas d’abans, si ens torna una conformitat entendrem que el servei s’ha reestablert i si ens torna una no-conformitat o no ens retorna res, entendrem que el servei continua inactiu. Suposem, però, que al cap d’uns minuts cridem aquest servei web i rebem una conformitat. Llavors, l’aplicació client envia totes les dades que s’han guardat en local cap al sistema. Si durant aquest enviament tinguéssim altre cop algun problema de connexió, es tornaria a activar el cronòmetre per poder reenviar les dades posteriorment. Tot aquest procés el podem veure esquematitzat en la figura 4.5.   Fig. 4.5. Esquema de funcionament de la gestió de l’off-line en l’aplicació client. 4.3.1.2 Especificació de funcions Per evitar aquí entrar en el detall de l’especificació i en el codi de les diferents, funcions, hem traslladat aquesta part a l’Annex d’aquest treball. Anàlisi i disseny de l’aplicació 33 4.3.2. Lògica funcional serveis web Una aplicació de serveis web no segueix una lògica lineal com la de l’aplicació client, on unes funcions es van enllaçant amb les altres. Consisteix en una sèrie de serveis (funcions) que poden ser cridades remotament, per exemple per l’aplicació client, però que no tenen perquè tenir cap relació entre elles. El cas més típic és el d’una funció que executa una consulta Sql i retorna un resultat. De fet sí que hi pot haver relació entre unes i altres, perquè són funcions que es poden cridar entre elles, i també pot haver-hi funcions no visibles des de l’exterior (que no són serveis web) i que poden ser usades per aquestes. Aquest és el cas de la nostra aplicació de serveis web. Tenim per una banda diferents webmethods que són els que farà servir l’aplicació client, i funcions auxiliars que faciliten la feina a aquestes. Per tant, més que descriure la lògica funcional de l’aplicació en sí, haurem de fer-ho per separat de cada funció, detall que podeu trobar a l’Annex d’aquesta memòria.  4.3.3. Disseny de les interfícies gràfiques  La primera pantalla que ens trobarem en accedir a l’aplicació serà la que ens demanarà el nom d’usuari i la clau d’accés, i que només tindrà els botons d’”Entrar” i “Sortir” (figura 4.6). Seguidament anirem a parar a la pantalla del menú d’opcions (fig. 4.7), on tindrem diferents pestanyes que ens oferiran: una finestra de recerca d’informació; una per donar d’alta a obres; un formulari de visita i un de quilometratge diari. La primera d’elles, la de recerca d’informació, ens permetrà obtenir un llistat de clients o d’obres, segons la selecció que fem, el nom o la població dels quals coincideixi amb el text que haguem introduït. La recerca en funció del nom o de la població es fa prement el botó de “Nom” o de “Població”, respectivament. Un cop ens apareguin els resultats podrem “Veure informació” detallada de l’ítem que seleccionem (se’ns obrirà una fitxa de client o d’obra segons correspongui), o bé portar el nom i el codi de client o d’obra “A Visita” (al formulari de visites) o bé “A Obra” (al formulari d’alta d’obres).    Fig. 4.6 i 4.7. Disseny de les pantalles d’inici i de menú d’opcions, respectivament. Distribució de continguts empresarials per a la força de vendes de STEN 40   Fig. 4.16. Relacions forànies entre taules de l’AS-400.  4.4.3. Disseny de les taules i vistes Les descripcions detallades de cada taula, dels seus camps i de les vistes corresponents, així com exemples de registres d’alguna de les taules, es poden trobar a l’Annex d’aquesta memòria.    Desenvolupament, implementació i proves 41  CAPÍTOL 5. DESENVOLUPAMENT, IMPLEMENTACIÓ I PROVES   5.1. Desenvolupament  5.1.1. Adaptació del projecte  El desenvolupament de l’aplicació es pot considerar un èxit, especialment el funcionament de l’entorn de proves. Aquest entorn, com ja sabem, havia de simular una possible implementació real a posteriori, i l’adaptació que vam idear per simular l’orfinador personal de què disposàvem com si fos un servidor més de l’empresa ha donat resultat. Així doncs, tan la connexió de la PDA amb l’ordinador com la conexió d’aquest amb l’empresa mitjançant una xarxa privada virtual (VPN) ha funcionat, com també ha funcionat el pas del desenvolupament en un dispositiu virtual (que proporciona la mateixa plataforma .NET) a un dispositiu real. Així doncs, una implementació real posterior simplement requeriria instal·lar l’aplicació desenvolupada de serveis web en el servidor corresponent de l’empresa, i funcionaria perfectament com ha funcionat amb l’entorn de proves. 5.1.2. Problemes i solucions.  Però el bon funcionament final de l’aplicació en l’entorn de proves no ha estat exempt de problemes en les diferents fases. Per començar, ha estat especialment conflictiva la configuració de l’Internet Information Server, concretament per la configuració de permisos i per una col·locació inexacta dels arxius de l’aplicació. Després d’una persistent investigació s’han pogut donar els permisos de lectura, escriptura, execució de codi, etcètera necessaris per a poder funcionar. Hem après que la base de dades Access, quan ha de ser accedida des dels serveis web, aquesta ha de residir a la carpeta bin del servei de l’IIS corresponent. També hem tingut problemes d’accés al servei IIS de l’ordinador personal per causa del tallafocs que hi ha instal·lat. Per un defecte en la configuració del tallafocs, les peticions d’accés a l’IIS quedaven bloquejades i no es podia establir connexió. Inicialment això no era evident, perquè no apareixia cap missatge d’error o de notificació que pogués fer sospitar d’aquest problema. Finalment, però, hem pogut resoldre l’inconvenient configurant de forma més correcta i adaptada el tallafocs per a a la nova necessitat d’accés a l’IIS. Distribució de continguts empresarials per a la força de vendes de STEN 42 Un altre contratemps important que hem tingut ha estat alhora d’aconseguir realitzar les diverses connexions amb les bases de dades de l’aplicació. Tan la connexió amb l’AS-400 per ODBC des dels serveis web, com la connexió d’aquests a la base de dades Access, com posteriorment la connexió de l’aplicació client a la base de dades SqlCe han estat problemàtiques. En totes elles no era evident l’string de definició de la connexió que calia, primer perquè per a cada base de dades els paràmetres eren diferents, i a més aquests havien de ser exactes. Així doncs, ens ha estat necessari acudir a diversos recursos d’ajuda per poder fixar en cada cas quins eren els paràmetres necessaris de la connexió. La manca de coneixement inicial de la plataforma .NET i la poca pràctica en la programació de llenguatges orientats a objectes ha comportat també altres contratemps. Aquest és el cas, per exemple, de quan ens ha interessat passar estructures complexes de dades des dels serveis web a l’aplicació client. Primerament vam intentar definir exactament les mateixes estructures de dades o classes en un i altre lloc perquè la recepció de dades pogués ser plenament coincident i per tant la informació es correspongués amb cada camp. L’exemple més clar ha estat el de l’estructura ProcesSql, que tenia una variable de tipus DataSet amb dades retornades de consultes Sql i una variable de tipus Err que ens definia si s’havia produït algun error o no. Doncs no érem capaços de passar aquesta estructura, tota sencera, des dels serveis web a l’aplicació client. Sembla ser que aquest problema es pot resoldre amb un mètode anomenat de serialització d’objectes, amb el qual la definició de les estructures de dades es passa a un format intel·ligible per les dues parts (XML). Però nosaltres hem aconseguit una serialització automàtica simplement definint, en l’aplicació client, una nova variable de tipus ProcesSql definida en el servei web. És a dir, que a part de tenir funcions que podem cridar dels serveis web, hem aprofitat que també es poden “cridar” estructures de dades d’aquests. Així hem aconseguit passar les dades de tota una estructura cap a l’aplicació client. Altres problemes menors, relacionats amb aquesta falta de coneixement que comentàvem de la plataforma .NET, han estat l’activació de processos paral·lels (threads) i la resolució de la gestió off-line. Aquest últim cas és potser el més interessant, perquè hem ideat un sistema de forma que quan es produeix un error en la gravació de dades en el sistema informàtic de l’empresa, ja sigui per manca de cobertura o per error en l’execució de la sentència Sql, les dades es guarden en local en el dispositiu i s’envien automàticament quan es torna a detectar cobertura. També cal destacar la gestió de sessions que s’ha desenvolupat. Malgrat que els serveis web són crides puntuals a funcions, en les que es crea la connexió, s’executa la funció, i es tanca l’enllaç, mitjançant un paràmetre d’entrada d’identificació de sessió en cada funció-servei web aconseguim així una continuïtat en les accions talment com si es tractés d’una mateixa sessió d’usuari. Això ens permet tenir un registre de les accions de cada sessió, així com conèixer els usuaris que tenen sessions actives en cada moment. Desenvolupament, implementació i proves 43 5.1.3. Fases, Organització i Planificació  En quant a les fases de desenvolupament de l’aplicació, modificant lleugerament la planificació prevista inicialment, hem anat alternant el desenvolupament dels serveis web amb el de l’aplicació client. D’aquesta forma ens ha permès anar provant mica en mica la funcionalitat a mesura que s’anava programant. També hem començat per aquelles funcions del programa que podien ser més conflictives o sobre les que teníem menys coneixement a priori, per després continuar amb les que eren repetitives o similars a d’altres ja desenvolupades. Així hem pogut anar provant successivament cada una de les funcions, no només entre l’aplicació client i els serveis web des de la plataforma de desenvolupament sinó també des del mateix dispositiu PDA de prova. Així s’han anat succeïnt proves, correccions i millores, si bé per manca de temps hem hagut de programar molt més i provar molt menys del que hauríem preferit. En qualsevol cas, no ens hem imposat cap limitació per manca de coneixements. Quan ha calgut, hem recorregut a documentació i a informació diversa per solucionar els diferents reptes que hem hagut de superar.  5.2. Implementació El pas de l’entorn de proves a la implementació real de l’aplicació és molt senzill. Caldran simplement tres aspectes a tenir en compte, que són la configuració dels terminals, la instal·lació de l’aplicació de serveis web en el servidor corresponent (configuració de l’Internet Information Server) i la instal·lació de l’aplicació client en els dispositius. Com explicarem en l’últim apartat, tan la configuració d’altres terminals com la implementació de l’aplicació client en ells s’ha provat amb èxit seguint els passos descrits aquí. 5.2.1. Configuració dels terminals Per a la configuració dels terminals, en primer lloc és necessari que la companyia operadora doni d’alta el servei de GPRS en la línia mòbil que utilitzarem. En realitzar aquest tràmit, es poden sol·licitar també les dades necessàries per configurar la connexió en el terminal, que varien segons la companyia operadora. En alguns casos, depenent del terminal, la companyia pot enviar una seqüència de paràmetres directament al terminal perquè quedi configurat automàticament, però en el cas de terminals combinats no és el més habitual. En cas que el terminal no sigui lliure sinó comprat directament a alguna de les operadores, el més segur és que ja vingui pre-configurat de fàbrica i no calgui modificar cap paràmetre. A continuació facilitem un resum dels paràmetres necessaris per a la correcta configuració dels terminals mòbils per a les diferents companyies de telefonia que operen en el nostre territori: Distribució de continguts empresarials per a la força de vendes de STEN 44 Taula 5.1 Taula de paràmetres per a configurar les connexions GPRS segons cada companyia operadora de telefonia mòbil. Amena Movistar (Plus) Vodafone Nom connexió GPRS Amena GPRS Movistar GPRS Vodafone Portador dades GPRS GPRS GPRS Punt d’accés Internet Movistar.es Airtelnet.net Usuari CLIENTE MOVISTAR wap@wap Sol·licitar contrasenya? No No No Contrasenya AMENA Movistar Wap125 Autentificació Estàndard Estàndard Estàndard IP passarel·la 0.0.0.0 0.0.0.0 0.0.0.0 IP telèfon Dinàmica Dinàmica Dinàmica DNS primària 213.143.33.8 194.179.1.100 212.73.32.3 DNS secundària 213.143.32.20 194.179.1.101 212.73.32.67 5.2.2. Configuració de l’Internet Information Server (IIS) Per a instal·lar l’aplicació de serveis web en el servidor definitiu de l’entorn real on es vulgui implementar, primerament caldrà tenir instal·lat i configurat l’Internet Information Server (IIS) en el servidor. La seva instal·lació i configuració és senzilla, ja que és un component més del sistema operatiu Windows 2000. Els passos a seguir són els següents: • Accedir a la ruta Inicio / Configuración / Panel de Control / Agregar o Quitar Programas / Agregar o Quitar componentes de Winows 2000 / Servicios de Internet Information Server (IIS). • Un cop instal·lat, se’ns crea una carpeta C.\Inetpub\wwwroot\ on podem publicar la nostra aplicació de serveis web. • Per a configurar els permisos d’accés a les carpetes de l’IIS, cal anar a Inicio / Configuración / Panel de Control / Herramientas Administrativas / Administrador Personal de Web / Avanzada. Aquí podem donar els permisos que creiem oportuns a les diferents carpetes. Com a norma general, quan tinguem una base de dades Access a la que s’hagi de poder consultar i escriure informació, els permisos hauran de ser tan de lectura com d’escriptura i la BBDD haurà de residir a la carpeta bin de l’aplicació publicada. • Per últim, cal tenir en compte que en cas de tenir instal·lat un tallafocs en el mateix ordinador-servidor, aquest haurà d’estar ben configurat per permetre l’accés a l’IIS. En el cas de l’empresa STEN serà suficient que el servidor es trobi en zona desmilitaritzada (DMZ). Desenvolupament, implementació i proves 45 5.2.3. Instal·lació de les aplicacions a les PDA La instal·lació de l’aplicació client als dispositius PDA és senzilla: • Instal·lar el component de .NET Compact Framework netcf.core.ppc3.arm.cab. • Instal·lar el component de bases de dades SqlCe per a dispositius amb Windows Ce, sqlce.ppc3.arm.cab. • Copiar l’arxiu de base de dades .sdf que tindrem creat prèviament amb el model de taules corresponent, a la carpeta \Mis Documentos \ Trabajo de la PDA. • Copiar l’arxiu executable de l’aplicació client al directori de la PDA que vulguem. • Podem assignar un accés directe del programa a la llista d’inici ràpid de programes de la PDA, i així poder tenir un accés més immediat Amb aquestes poques indicacions tindriem ja instal·lada i a punt d’utilitzar l’aplicació client en el dispositiu PDA, i es completaria tota la operació d’implementar el sistema en l’entorn real. 5.3. Proves Les proves que hem realitzat durant i després del desenvolupament de l’aplicació ens han ajudat a introduir millores i a prendre notes de moltes més que hauria estat desitjable introduir en cas de disposar de més temps. També ens han servit per detectar errors i problemes, com els comentats en l’apartat 5.1.2. Anem a seguir els passos, doncs, d’una prova real feta amb l’aplicació que hem desenvolupat. Les imatges que il·lustren aquest apartat són captures de pantalles autèntiques, i per tant és com si estiguéssim realment fent la prova “en calent”. En primer lloc (fig. 5.1), se’ns presenta la pantalla d’accés a l’aplicació. Se’ns demana únicament que hi introduïm el nom d’usuari i la paraula clau, i dos botons que ens ofereixen l’acció a realitzar: “entrar” o “sortir”. Un cop hem introduït un nom d’usuari i clau vàlids, se’ns presenta la pantalla de menú de funcions (veure la figura 5.2, que inicialment es presenta en blanc, sense dades). Com podem observar, hi ha tres pestanyes de funcions: la que apareix per defecte, que és la de “buscar” informació, la de ”altes” d’obres, la de “visites” i la de “kms”.  Distribució de continguts empresarials per a la força de vendes de STEN 46    Fig. 5.1 i 5.2. Pantalla inicial i menú de funcions de l’aplicació, respectivament. En la finestra de buscar informació, hem buscat tots els clients el nom dels quals contingués la paraula “drag”. Ens n’han aparegut tots els de la llista, amb el seu codi de client al davant, i n’hem seleccionat el primer (veure en blau a la figura 5.2) per consultar-ne la informació detallada prement el botó “Veure info”. Llavors ens apareix la fitxa de client (veure fig. 5.3) que ens mostra tota la informació detallada d’aquest client, més una relació de les obres que té actives en aquest moment. En qualsevol de les finestres on ens apareguin els botons “A Visita” o “A Obra”, significa que ens podem emportar la informació d’aquesta finestra per omplir automàticament els camps dels formularis d’obres o de visites que veurem més tard. En aquest cas, però, el que hem fet ha estat seleccionar la primera de les obres actives que té el client i, prement el botó “Veure”, se’ns ha obert la fitxa d’obra.     Fig. 5.3 i 5.4. Fitxa de client i fixa d’obra, respectivament. Un cop dins la fitxa d’obra (fig. 5.4) observem els detalls de dades de la obra seleccionada, com el mercat, l’adreça i població, o la data d’entrega, entre d’altres. Suposem que ara ens interessa donar d’alta una nova obra a partir de les dades d’aquesta: només ens cal prémer el botó “Alta Obra” i automàticament, com podem observar en la figura 5.5, se’ns han omplert la majoria dels camps del formulari d’alta d’una obra. Desenvolupament, implementació i proves 47    Fig. 5.5 i 5.6. Formulari d’alta d’obres i de visites, respectivament.  Amb aquests camps omplerts, més els que faltéssin, podríem enviar al sistema l’alta d’aquesta nova obra. O bé, com es veu en la figura 5.6, d’una fitxa de client podríem omplir automàticament el formulari d’una visita i enviar-ne la informació a l’instant. En aquest cas, si tinguéssim cobertura suficient per enviar la informació i no hi hagués cap error en el sistema, ens apareixeria la confirmació de “Visita registrada correctament” (fig. 5.7) i la informació s’hauria      Fig. 5.7 i 5.8. Pantalles dels formularis de visita i de quilòmetres, respectivament.  enviat perfectament al sistema informàtic de l’empresa. Imaginem ara que estem introduint la informació del quilometratge diari (figura 5.8) però que estem en una zona sense cobertura de telefonia. En aquest cas, si enviéssim les dades, obtindríem la pantalla de la figura 5.9, on ens indica que les dades seran guardades en local i enviades posteriorment, quan es detecti altre cop cobertura.  Distribució de continguts empresarials per a la força de vendes de STEN 48    Fig. 5.9 i 5.10. Pantalla de quilòmetres amb un missatge d’error (esquerra) i vista dels registres de la taula Kmsrepr (dreta). El mateix hem provocat amb el formulari d’altes d’obres, així ens ha guardat també les dades d’aquesta. D’aquesta forma podem comprovar com les dades s’han guardat en local en la base de dades SqlCe. En la figura 5.10, efectivament, veiem els quilòmetres que havíem introduït i que no s’havien pogut enviar.     Fig. 5.11 i 5.12. Vista del registre guardat a la taula Perspec de la BBDD local (esquerra) i finestra en què ens indica l’enviament correcte de dades (dreta). El mateix podem observar en la figura 5.11, on veiem el registre de la obra que no s’havia pogut enviar. Tornant a l’aplicació nostra, doncs, en no poder enviar les dades s’ha activat el timer que periòdicament va comprovant si s’ha reestablert o no el servei de cobertura. Si detecta connexió, torna a enviar les dades i llavors ens apareix la finestra de la figura 5.12, indicant que “Les dades guardades s’han enviat correctament”. Ara, si comprovem el contingut de les taules locals del dispositiu, tenim que ja no queda cap registre per enviar al sistema informàtic de l’empresa. Aquesta és una prova bastant completa de l’aplicació i de com aquesta funciona perfectament, un cop solucionats els problemes inicials. Balanç 49 CAPÍTOL 6. BALANÇ   6.1. Objectius assolits A nivell funcional, l’aplicació que hem desenvolupat cobreix totes les espectatives inicials. Tan si ens fixem en l’aspecte de les comunicacions, com en l’aspecte de funcionament de l’aplicació com en les espectatives de solució des del punt de vista de l’empresa. Tècnicament és una solució que implementa serveis web mitjançant la tecnologia .NET, i ho fa des de dispositius mòbils PDA mitjançant una aplicació client, que permet millorar les gestions dels usuaris de l’empresa. Podem dir perfectament que disposem d’una solució potent com la que ens havíem proposat. També hem assolit els objectius d’aprenentatge i d’implementació de tecnologies .NET que ens havíem marcat. Un exemple clar d’aquest modest èxit són l’eficient gestió de l’off-line o bé el control de sessions dels usuaris. La recerca i implementació d’aquestes tecnologies i solucions ens ha permès alhora adquirir nous coneixements en múltiples àmbits: en comunicacions, en tecnologia .NET, en la implementació i ús de serveis web, i un millor domini de la planificació de projectes, de com elaborar pressupostos o de recerca d’informació i documentació.   6.2. Planificació Des del punt de vista de la planificació no hi ha hagut modificacions destacables. Cal remarcar que l’orígen d’aquest projecte està en un treball de l’assignatura de Disseny de Sistemes Empotrats i Mòbils (DSEM), i que per tant hem tingut l’avantatge de tenir una petita part ja feta abans d’iniciar oficialment el TFC. L’únic que ens ha proporcionat aquest fet ha estat poder disposar de més temps efectiu per al desenvolupament i per a les proves, però això només ha provocat que acabéssim afegint nova funcionalitat a l’aplicació, quan inicialment no estava prevista. Així doncs, considerem que la planificació original, amb els temps que s’havien marcat, era suficient com per realitzar aquest TFC. Sí que volem mencionar, malgrat considerar vàlida la planificació, que la part destinada a la documentació de la memòria era justa. Podem considerar que era suficient per omplir les 50 pàgines que demana la normativa dels TFC, però massa justa si es volia detallar amb deteniment l’aplicació o si es volia aprofundir en el context del projecte, com hem fet aquí. En qualsevol cas, s’ha assolit l’objectiu d’adequar-nos a la planificació i per tant podem donar per vàlids els càlculs de temps que vam realitzar en començar el projecte. Distribució de continguts empresarials per a la força de vendes de STEN 56 public class Perspectiva { private string Codrepr; private string Obropers; private string Tipuslov; private string Numobra; private string Nomobra; private string Nomclient; private string Adreça; private string Poblacio; private string Probab; private string Termini; private string M2; private string Import; private string Observ; public void Omplir(...) ; } Visita. Classe que contindrà tota la informació d’una visita, que pot introduir un representant comercial. public class Visita { private string Codrepr; private string Nomcli; private string Lloc; private int Dia; private int Mes; private int Any; private string Objectiu1; private string Objectiu2; private string Observ; private string Poblacio; private string Horaent; private string Horasor; private int Numpers; private string Carrec; public void Omplir(...); } Client. Classe que contindrà tota la informació relativa a un client, per quan es realitzi una consulta de les dades d’un client public class Client { private int Codi; private string Nom; private string Adreça; private string Poblacio; private string Telefon; private string Fax; private string Contacte; private string Carrec; Annex 57 private string Mobil; public void Omplir(Client cli); public void Netejar(); } Kmsrepr. Classe que contindrà totes les dades referents als quilòmetres diaris que pot efectuar un representant comercial. public class Kmsrepr { private string Codrepr; private int Dia; private int Mes; private int Any; private int Kmsini; private int Kmsdia; private string Cothab; public void Omplir(); } A.1.1.2. WebMethods   1. IniciarSessio Aquesta funció comprovarà l’autenticitat de l’usuari i la seva clau, i verificarà que tan l’usuari com el terminal des d’on s’està connectant tinguin activat el permís d’accés al servei. En cas correcte, retornarà un Id de sessió aleatori diferent de zero. En cas contrari, retornarà un Id de sessió zero que permetrà a l’aplicació client identificar un error en l’autentificació. En cas que el terminal no estigués donat d’alta, la funció comprovarà si l’usuari que està accedint al sistema és un administrador de sistema i, si n’és el cas, registrarà el nou terminal per permetre’n l’accés. Rep per paràmetres la numeració de terminal, el nom d’usuari i la clau, i retorna un número que és l’identificador de sessió. public int IniciarSessio (string terminal, string usuari, string password) Funcions que crida: ComprovarUsuari (usuari, password) ComprovarTerminal (terminal,usuari) RegistrarSessio (IDsessio,terminal,usuari,"OPN"); BuscarPerfil (usuari); AltaTerminal (usuari,password,terminal); Distribució de continguts empresarials per a la força de vendes de STEN 58 2. TancarSessio Simplement escriurà el tancament de la sessió de l’usuari a l’històric de sessions. public bool TancarSessio (int IDsessio, string terminal, string usuari) { return RegistrarSessio (IDsessio,terminal,usuari,"CLS"); } 3. BuscarCliNom Funció que retornarà una llista amb codi i nom de clients, el nom dels quals coincideixi parcialment amb una sèrie de caràcters introduïts per l’usuari. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la sèrie de caràcters a buscar. Retorna una variable de tipus ProcesSql. public ProcesSql BuscarCliNom (int IDsessio, string terminal, string usuari, string nom) { string Sql; string Taula; string repr; string perfil; DataSet Ds_aux = new DataSet(); ProcesSql PSql = new ProcesSql(); if (ComprovarSessio(IDsessio,terminal,usuari) == false) { PSql.OmplirErr(1); PSql.OmplirDs(Ds_aux); return PSql; } RegistrarSessio(IDsessio,terminal,usuari,"BCN"); perfil = BuscarPerfil(usuari.ToLower()); switch (perfil) { case "": Sql = " "; break; case "RC": try { repr = BuscarRepresentant(usuari.ToLower()); } catch { repr = "000"; } Sql = "SELECT CODCLI, NOMCLI FROM FACCLIE WHERE (NOMCLI LIKE ('%" + nom.ToUpper() + "%') AND REPCLI = '" + repr + "')" + Constants.MaxResStr; break; default: Sql = "SELECT CODCLI, NOMCLI FROM FACCLIE WHERE NOMCLI LIKE ('%" + nom.ToUpper() + "%')" + Constants.MaxResStr; break; Annex 59 } Taula = "FACCLIE"; PSql.Omplir(ProcessarSql("OT",Sql,Taula)); return PSql; } 4. BuscarCliPobl Funció anàloga a l’anterior, que retornarà una llista amb codi i nom de clients, la població dels quals coincideixi parcialment amb una sèrie de caràcters introduïts per l’usuari. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la sèrie de caràcters a buscar. Retorna una variable de tipus ProcesSql. public ProcesSql BuscarCliPobl (int IDsessio, string terminal, string usuari, string pobl) { ... } 5. BuscarObraNom Funció que retornarà una llista amb codi i nom d’obres, el nom de les quals coincideixi parcialment amb una sèrie de caràcters introduïts per l’usuari. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la sèrie de caràcters a buscar. Retorna una variable de tipus ProcesSql. public ProcesSql BuscarObraNom (int IDsessio, string terminal, string usuari, string nom) { ... } 6. BuscarObraPobl Funció anàloga a l’anterior, que retornarà una llista amb codi i nom d’obres, la població de les quals coincideixi parcialment amb una sèrie de caràcters introduïts per l’usuari. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la sèrie de caràcters a buscar. Retorna una variable de tipus ProcesSql. public ProcesSql BuscarObraPobl (int IDsessio, string terminal, string usuari, string pobl) { ... } Distribució de continguts empresarials per a la força de vendes de STEN 60 7. DadesCli Funció que retornarà les dades d’un client tals com el seu codi, nom, adreça, població, telèfon, fax, contacte i observacions, i que en l’aplicació client servirà per omplir una fitxa de client. Verificarà que l’usuari que realitza la petició tingui accés a veure les dades que sol·licita: si és un representant comercial, haurà de tenir en cartera el client; qualsevol altre perfil podrà accedir a les dades. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i el codi de client del que s’han de buscar les dades. Retorna una variable de tipus ProcesSql. public ProcesSql DadesCli(int IDsessio, string terminal, string usuari, int client) { string Sql; string Taula; string repr; string perfil; ProcesSql PSql = new ProcesSql(); if (ComprovarSessio(IDsessio,terminal,usuari) == false) { PSql.OmplirErr(1); PSql.OmplirDs(null); return PSql; } RegistrarSessio(IDsessio,terminal,usuari,"BCP"); perfil = BuscarPerfil(usuari.ToLower()); switch (perfil) { case "": Sql = " "; break; case "RC": try { repr = BuscarRepresentant(usuari.ToLower()); } catch { repr = "000"; } if (client >= 50000) { Sql = "SELECT CODNCLI, NOMNCLI, DIR1NCLI, POBLNCLI, TELNCLI, FAXNCLI, CTONCLI, OBS1NCLI, OBS2NCLI FROM FACNOCLI WHERE CODNCLI = " + client + " AND REPRNCLI = '" + repr + "')"; } else { Sql = "SELECT CODCLI, NOMCLI, DIR1CLI, POBLCLI, TEL1CLI, FAXCLI, CTOCLI, CRLGCLI, TELMOVCLI FROM FACCLIE WHERE (CODCLI = " + client + " AND REPCLI = '" + repr + "')"; } break; default: if (client >= 50000) { Annex 61 Sql = "SELECT CODNCLI, NOMNCLI, DIR1NCLI, POBLNCLI, TELNCLI, FAXNCLI, CTONCLI, OBS1NCLI, OBS2NCLI FROM FACNOCLI WHERE CODNCLI = " + client; } else { Sql = "SELECT CODCLI, NOMCLI, DIR1CLI, POBLCLI, TEL1CLI, FAXCLI, CTOCLI, CRLGCLI, TELMOVCLI FROM FACCLIE WHERE CODCLI = " + client; } break; } if (client >= 50000) { Taula = "FACNOCLI"; } else { Taula = "FACCLIE"; } PSql.Omplir(ProcessarSql("OT",Sql,Taula)); return PSql; } 8. DadesObra Funció que retornarà les dades d’una obra tals com el número d’obra, el nom, codi de client, nom del client, data d’entrega, codi font, població, codi de mercat i adreça, i que en l’aplicació client servirà per omplir la fitxa d’obra. Com en el cas anterior, verificarà que l’usuari que realitza la petició tingui accés a veure les dades que sol·licita: si és un representant comercial, haurà de tenir en cartera el client; qualsevol altre perfil podrà accedir a les dades. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i el codi d’obra del que s’han de buscar les dades. Retorna una variable de tipus ProcesSql. public ProcesSql DadesObra (int IDsessio, string terminal, string usuari, string obra) { ... } 9. LlistaObresCli Funció que retornarà una llista amb el codi i nom de les obres corresponents a un client determinat. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i el codi de client del que s’han de buscar les obres. Retorna una variable de tipus ProcesSql. Distribució de continguts empresarials per a la força de vendes de STEN 62 public ProcesSql LlistaObresCli(int IDsessio, string terminal, string usuari, int client) { string Sql; string Taula; string repr = ""; string perfil; ProcesSql PSql = new ProcesSql(); if (ComprovarSessio(IDsessio,terminal,usuari) == false) { PSql.OmplirErr(1); PSql.OmplirDs(null); return PSql; } RegistrarSessio(IDsessio,terminal,usuari,"LOC"); perfil = BuscarPerfil(usuari.ToLower()); switch (perfil) { case "": Sql = " "; break; case "RC": try { repr = BuscarRepresentant(usuari.ToLower()); } catch { repr = "000"; } Sql = "SELECT NUMOBRA, NOMOBRA FROM FACOBRAS4 WHERE (CODCLI = " + client + " OR CODNCLI = " + client + ") AND CODREPR = '" + repr + "'" + Constants.MaxResStr; break; default: Sql = "SELECT NUMOBRA, NOMOBRA FROM FACOBRAS4 WHERE (CODCLI = " + client + " OR CODNCLI = " + client + ")" + Constants.MaxResStr; break; } Taula = "FACOBRAS4"; PSql.Omplir(ProcessarSql("OT",Sql,Taula)); return PSql; } 10. RegistrarPerspectiva Funció que s’encarregarà de guardar a la taula corresponent del sistema un nou registre amb les dades d’una perspectiva. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la classe Perspectiva amb les dades que l’usuari ha omplert des de l’aplicació client. Retorna una variable de tipus boolean, conforme si s’ha pogut realitzar correctament el registre o no. Annex 63 public bool RegistrarPerspectiva(int IDsessio, string terminal, string usuari, Perspectiva persp) { string Sql; string Taula; string repr; ProcesSql PSql = new ProcesSql(); if (ComprovarSessio(IDsessio,terminal,usuari) == false) { return false; } RegistrarSessio(IDsessio,terminal,usuari,"ENP"); try { repr = BuscarRepresentant(usuari.ToLower()); } catch { repr = "000"; } Sql = "INSERT INTO PERSPEC VALUES ('" + repr + "','" + persp.Obropers + "','" + persp.Tipuslov + "','" + persp.Numobra + "','" + persp.Nomobra + "','" + persp.Nomclient + "','" + persp.Adreça + "','" + persp.Poblacio + "','" + persp.Probab + "','" + persp.Termini + "','" + persp.M2 + "','" + persp.Import + "','" + persp.Observ + "')"; Taula = "PERSPEC"; try { PSql.Omplir(ProcessarSql("OT",Sql,Taula)); if (PSql.RetornaErr() == 0) { return true; } else { return false; } } catch { return false; } } 11. RegistrarVisita Funció que s’encarregarà de guardar a la taula corresponent del sistema un nou registre amb les dades d’una visita. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la classe Visita amb les dades que l’usuari ha omplert des de l’aplicació client. Retorna una variable de tipus boolean, conforme si s’ha pogut realitzar correctament el registre o no. Distribució de continguts empresarials per a la força de vendes de STEN 64 public bool RegistrarVisita (int IDsessio, string terminal, string usuari, Visita visita) { ... } 12. RegistrarKms Funció que s’encarregarà de guardar a la taula corresponent del sistema un nou registre amb les dades dels quilòmetres efectuats per un comercial durant el dia. Rep com a paràmetres l’identificador de sessió, de terminal, el nom d’usuari i la classe Kmsrepr amb les dades que l’usuari ha omplert des de l’aplicació client. Retorna una variable de tipus boolean, conforme si s’ha pogut realitzar correctament el registre o no. public bool RegistrarKms (int IDsessio, string terminal, string usuari, Kmsrepr kms) { ... } 13. Ping Funció que retornarà l’estat de la connexió amb la base de dades del sistema. Realitzarà una consulta SQL senzilla, i si a l’aplicació client li arriba la resposta “true” de la funció, es considerarà que les comunicacions funcionen perfectament. Aquesta funció serà cridada per l’aplicació client per verificar que hi hagi cobertura o bé servei en voler registrar dades. public bool Ping() { ProcesSql PSql; string Taula; string Sql = "SELECT * FROM KMSREPR FETCH FIRST 1 ROWS ONLY"; Taula = "KMSREPR"; PSql = ProcessarSql("OT",Sql,Taula); if (PSql.RetornaErr() == 0) { return true; } else { return false; } } Annex 65 14. VeureVisites Funció que retornarà una llista de les visites introduïdes al sistema per un usuari durant el dia. Haurà de filtrar segons el perfil de l’usuari. Rep com a paràmetres l’identificador de sessió, de terminal i el nom d’usuari. Retorna una variable de tipus ProcesSql, amb les dades de les visites. public ProcesSql VeureVisites(int IDsessio, string terminal, string usuari) { string Sql; string Taula; string repr = ""; string perfil; int any, dia, mes; ProcesSql PSql = new ProcesSql(); if (ComprovarSessio(IDsessio,terminal,usuari) == false) { PSql.OmplirErr(1); PSql.OmplirDs(null); return PSql; } RegistrarSessio(IDsessio,terminal,usuari,"VVD"); any = System.DateTime.Now.Year; mes = System.DateTime.Now.Month; dia = System.DateTime.Now.Day; perfil = BuscarPerfil(usuari.ToLower()); switch (perfil) { case "": Sql = " "; break; case "RC": try { repr = BuscarRepresentant(usuari.ToLower()); } catch { repr = "000"; } Sql = "SELECT NOMCLI, LLOC FROM VISITES WHERE (CODREPR = '" + repr + "' AND ANY = " + any + " AND MES = " + mes + " AND DIA = " + dia + ")"; break; default: Sql = "SELECT NOMCLI, LLOC FROM VISITES WHERE (ANY = " + any + " AND MES = " + mes + " AND DIA = " + dia + ")"; break; } Taula = "VISITES"; PSql.Omplir(ProcessarSql("OT",Sql,Taula)); return PSql; } Distribució de continguts empresarials per a la força de vendes de STEN 72 { foreach(DataRow Fila in Taula.Rows) { foreach(DataColumn Columna in Taula.Columns) { resultat = Fila[Columna].ToString(); } } } return resultat; } 24. ObtenirClient Funció que omple una estructura de Client amb les dades obtingudes d’una consulta Sql. Rep per paràmetre una variable del tipus DataSet i retorna una variable de la classe Client. private Client ObtenirClient (DataSet Ds) { ... } A.1.2. Aplicació client 1. GetDeviceId() S’encarrega de trobar el número de sèrie del terminal. Shared Function GetDeviceID() As String Dim OutputBuffer(256) As Byte Dim OutputBufferSize As Int32 Dim BytesReturned As Int32 = 0 OutputBufferSize = OutputBuffer.Length BytesReturned = 0 Dim retVal As Boolean = KernelIoControl(IOCTL_HAL_GET_DEVICEID, _ IntPtr.Zero, 0, OutputBuffer, OutputBufferSize, BytesReturned) If (retVal = False) Then Return System.DBNull.Value.ToString() End If Dim PresetIDOffset As Int32 = BitConverter.ToInt32(OutputBuffer, &H4) Dim PlatformIDOffset As Int32 = BitConverter.ToInt32(OutputBuffer, &HC) Dim PlatformIDSize As Int32 = BitConverter.ToInt32(OutputBuffer, &H10) Dim sb As StringBuilder = New StringBuilder sb.Append(String.Format("{0:X8}-{1:X4}-{2:X4}-{3:X4}-", _ BitConverter.ToInt32(OutputBuffer, PresetIDOffset), _ BitConverter.ToInt16(OutputBuffer, PresetIDOffset + 4), _ Annex 73 BitConverter.ToInt16(OutputBuffer, PresetIDOffset + 6), _ BitConverter.ToInt16(OutputBuffer, PresetIDOffset + 8))) For i As Integer = PlatformIDOffset To (PlatformIDOffset + PlatformIDSize) sb.Append(String.Format("{0:X2}", OutputBuffer(i))) Next i Return sb.ToString() End Function 2. Button_entrar_click Amb les dades de número de terminal, usuari i clau s’executa el servei web IniciarSessió() i en funció del resultat retornat permet continuar cap al menú de l’aplicació o no. Private Sub button_entrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button_entrar.Click Dim Websvc As New PcTres.Service1 Dim Resposta As Int32 = 0 Dim Error_Cnx As Boolean = False Dim Error_usr As Boolean = False 'Comprovem que no hi hagi espais ni a l'usuari ni a la contrasenya For Each chr_usuari As Char In Me.textbox_usuari.Text.ToString() If (chr_usuari = " ") Then Error_usr = True End If Next For Each chr_usuari As Char In Me.textbox_contrasenya.Text.ToString() If (chr_usuari = " ") Then Error_usr = True End If Next If (Error_usr = True) Then MsgBox("Identificació incorrecta.", MsgBoxStyle.Critical, "Atenció") Me.textbox_usuari.Text = "" Me.textbox_contrasenya.Text = "" Else 'Es permet un accés offline d'administrador If (Me.textbox_usuari.Text = "admin" And Me.textbox_contrasenya.Text = "admin") Then Resposta = -1 Else 'Cridem el SW d'autentificació Try Cursor.Current = Cursors.WaitCursor Resposta = Websvc.IniciarSessio(Terminal, Me.textbox_usuari.Text, Me.textbox_contrasenya.Text) Cursor.Current = Cursors.Default Catch 'Error en cas de no poder connectar Cursor.Current = Cursors.Default MsgBox("No es pot connectar amb el Servidor.", MsgBoxStyle.Critical, "Atenció") Error_Cnx = True Me.textbox_usuari.Text = "" Me.textbox_contrasenya.Text = "" Distribució de continguts empresarials per a la força de vendes de STEN 74 End Try End If If (Resposta <> 0 And Not Error_Cnx) Then Dim Opcions As New Form_opcions Opcions.IDsessio = Resposta IDsessio = Resposta Usuari = Me.textbox_usuari.Text Opcions.Terminal = Terminal Opcions.Usuari = Me.textbox_usuari.Text Me.textbox_usuari.Text = "" Me.textbox_contrasenya.Text = "" Opcions.ShowDialog() Else If (Not Error_Cnx) Then Me.textbox_usuari.Text = "" Me.textbox_contrasenya.Text = "" MsgBox("Identificació incorrecta.", MsgBoxStyle.Critical, "Atenció") End If End If End If End Sub 3. Button_sortir_click. Simplement es fa una crida al servei web TancarSessió() per deixar constància a l’històric d’accions de les sessions de quan s’ha tancat el programa. Finalitza l’aplicació. 4. OmplirFormulari() Crida el servei web DadesCli i omple els camps de la fitxa amb les dades rebudes. Private Sub OmplirFormulari() Dim websvc As New PcTres.Service1 Dim Aux As String Dim PSql As New ProcesSql Dim Compta As Int16 = 0 Try Cursor.Current = Cursors.WaitCursor PSql.Ds = websvc.DadesCli(IDsessio, Terminal, Usuari, GClient).Ds For Each Taula As DataTable In PSql.Ds.Tables For Each Fila As DataRow In Taula.Rows For Each Columna As DataColumn In Taula.Columns Compta = Compta + 1 Aux = Fila(Columna) Select Case (Compta) Case 1 If (Aux.Length > 5) Then Me.label_veurecli_codi1.Text = Aux.Substring(0, 5) ( Else Me.label_veurecli_codi1.Text = Aux End If Case 2 Annex 75 If (Aux.Length > 25) Then Me.label_veurecli_nom1.Text = Aux.Substring(0, 25) Else Me.label_veurecli_nom1.Text = Aux End If Case 3 If (Aux.Length > 23) Then Me.label_veurecli_adr1.Text = Aux.Substring(0, 23) Else Me.label_veurecli_adr1.Text = Aux End If Case 4 If (Aux.Length > 21) Then Me.label_veurecli_pobl1.Text = Aux.Substring(0, 21) Else Me.label_veurecli_pobl1.Text = Aux End If Case 5 If (Aux.Length > 9) Then Me.label_veurecli_telf1.Text = Aux.Substring(0, 9) Else Me.label_veurecli_telf1.Text = Aux End If Case 6 If (Aux.Length > 9) Then Me.label_veurecli_fax1.Text = Aux.Substring(0, 9) Else Me.label_veurecli_fax1.Text = Aux End If Case 7 If (Aux.Length > 20) Then Me.label_veurecli_cont1.Text = Aux.Substring(0, 20) Else Me.label_veurecli_cont1.Text = Aux End If Case 8 If (Aux.Length > 22) Then Me.label_veurecli_carrec1.Text = Aux.Substring(0, 22) Else Me.label_veurecli_carrec1.Text = Aux End If Case 9 If (Aux.Length > 9) Then Me.label_veurecli_mob1.Text = Aux.Substring(0, 9) Else Me.label_veurecli_mob1.Text = Aux End If End Select Next Next Next Cursor.Current = Cursors.Default Catch MsgBox("Error en Fitxa Client.", MsgBoxStyle.Critical, "Atenció") End Try End Sub Distribució de continguts empresarials per a la força de vendes de STEN 76 5. Omplir_Llista_ObresCli() Crida el servei web LlistaObresCli i omple la llista d’obres del client amb les dades rebudes. Private Sub Omplir_Llista_ObresCli() Dim websvc As New PcTres.Service1 Dim PSql As New PcTres.ProcesSql Dim ItemObra As String = " " Dim Compta1, Compta2 As Int16 Llista_ObrCli.Inicialitza() Compta2 = 0 Try Cursor.Current = Cursors.WaitCursor PSql.Ds = websvc.LlistaObresCli(IDsessio, Terminal, Usuari, GClient).Ds For Each Taula As DataTable In PSql.Ds.Tables For Each Fila As DataRow In Taula.Rows For Each Columna As DataColumn In Taula.Columns Compta1 = Compta1 + 1 If Compta1 = 1 Then Llista_ObrCli.NumObra(Compta2) = Fila(Columna) Else Llista_ObrCli.NomObra(Compta2) = Fila(Columna) End If Next ItemObra = Llista_ObrCli.NumObra(Compta2).ToString() + "-" + Llista_ObrCli.NomObra(Compta2).ToString() Me.listbox_veurecli.Items.Add(ItemObra) Compta1 = 0 Compta2 = Compta2 + 1 Next Next Cursor.Current = Cursors.Default Catch Cursor.Current = Cursors.Default MsgBox("No es pot connectar amb el Servidor. Intenti-ho més tard.", MsgBoxStyle.Critical, "Atenció") End Try End Sub 6. OmplirFormulari() S’encarrega d’omplir els camps de la fitxa d’obra amb les dades que rep del servei web DadesObra. Private Sub OmplirFormulari() Dim websvc As New PcTres.Service1 Dim Aux As String Dim PSql As New ProcesSql Dim Compta As Int16 = 0 Try Cursor.Current = Cursors.WaitCursor Annex 77 PSql.Ds = websvc.DadesObra(IDsessio, Terminal, Usuari, GNObra).Ds For Each Taula As DataTable In PSql.Ds.Tables For Each Fila As DataRow In Taula.Rows For Each Columna As DataColumn In Taula.Columns Compta = Compta + 1 Aux = Fila(Columna) Select Case (Compta) Case 1 If (Aux.Length > 8) Then Me.label_veureobr_num1.Text = Aux.Substring(0, 8) Else Me.label_veureobr_num1.Text = Aux End If Case 2 If (Aux.Length > 25) Then Me.label_veureobr_nom1.Text = Aux.Substring(0, 25) Else Me.label_veureobr_nom1.Text = Aux End If Case 3 If (Aux.Length > 5) Then Me.label_veureobr_cli1.Text = Aux.Substring(0, 5) Else Me.label_veureobr_cli1.Text = Aux End If Case 4 If (Aux.Length > 25) Then Me.label_veureobr_cli2.Text = Aux.Substring(0, 25) Else Me.label_veureobr_cli2.Text = Aux End If Case 5 If (Aux.Length > 10) Then Me.label_veureobr_data1.Text = Aux.Substring(0, 10) Else Me.label_veureobr_data1.Text = Aux End If Case 6 If (Aux.Length > 5) Then Me.label_veureobr_font1.Text = Aux.Substring(0, 5) Else Me.label_veureobr_font1.Text = Aux End If Case 7 If (Aux.Length > 21) Then Me.label_veureobr_pobl1.Text = Aux.Substring(0, 21) Else Me.label_veureobr_pobl1.Text = Aux End If Case 8 If (Aux.Length > 5) Then Me.label_veureobr_merc1.Text = Aux.Substring(0, 5) Else Me.label_veureobr_merc1.Text = Aux End If Case 9 If (Aux.Length > 23) Then Me.label_veureobr_adr1.Text = Aux.Substring(0, 23) Else Me.label_veureobr_adr1.Text = Aux Distribució de continguts empresarials per a la força de vendes de STEN 78 End If End Select Next Next Next Cursor.Current = Cursors.Default Catch MsgBox("Error en Fitxa Obra.", MsgBoxStyle.Critical, "Atenció") End Try End Sub 7. NetejarVisita() Esborra totes les dades del formulari de visita. Les funcions NetejarKms i NetejarAlta són anàlogues a aquesta. Private Sub NetejarVisita() Dim avui As String Dim horai, horaf, minut As String If (System.DateTime.Now.Hour < 10) Then horaf = "0" + System.DateTime.Now.Hour.ToString If (System.DateTime.Now.Hour = 0) Then horai = "23" Else horai = "0" + (System.DateTime.Now.Hour - 1).ToString End If Else horaf = System.DateTime.Now.Hour.ToString If (System.DateTime.Now.Hour = 0) Then horai = "23" Else horai = (System.DateTime.Now.Hour - 1).ToString End If End If If (System.DateTime.Now.Minute < 10) Then minut = "0" + System.DateTime.Now.Minute.ToString Else minut = System.DateTime.Now.Minute.ToString End If Me.textbox_pad_horai.Text = horai + ":" + minut Me.textbox_pad_horaf.Text = horaf + ":" + minut Me.numericupdown_pad_numpers.Value = 1 Me.combobox_pad_carrec.Text = "Cap Obra" Me.combobox_pad_lloc.Text = "Obra" Me.combobox_pad_obj1.Text = "Visita Inicial" Me.combobox_pad_obj2.Text = "" Me.textbox_pad_client.Text = "" Me.textbox_pad_comentaris.Text = "" Me.textbox_pad_pobl.Text = "" Me.tab_visites.Refresh() End Sub 8. HiHaRegistresGuardats Private Function HiHaRegistresGuardats() As Boolean If (UltimId("Kmsrepr") > 0 Or _ UltimId("Visites") > 0 Or _ Annex 79 UltimId("Perspec") > 0) Then Return True Else Return False End If End Function 9. UltimID Busca l’identificador de l’últim registre guardat en una taula local (que se li passa per paràmetre), per poder assignar un nou identificador a un nou registre. Private Function UltimId(ByVal Taula As String) As Integer Dim Ds As New DataSet Dim Sql As String Dim Id As Int16 Sql = "SELECT Id FROM " + Taula.ToUpper Dim Cnx As New SqlCeConnection Cnx.ConnectionString = ConnexioDb Cnx.Open() Try Dim Adp As New SqlCeDataAdapter(Sql, Cnx) Adp.Fill(Ds, Taula) Catch TancarConnexio(Cnx) Return 0 Finally TancarConnexio(Cnx) End Try For Each Taula1 As DataTable In Ds.Tables For Each Fila As DataRow In Taula1.Rows For Each Columna As DataColumn In Taula1.Columns If Fila(Columna) Is System.DBNull.Value Then Id = 0 Else If (Fila(Columna)) > Id Then Id = Fila(Columna) End If End If Next Next Next Return Id End Function 10. Timer1_Tick Busca si s’ha reestablert la connexió amb el servidor cridant el servei web Ping. En cas afirmatiu, crida les funcions EnviarPersp, EnviarVisita i EnviarKms per cada registre que troba a la base de dades local, i quan el registre s’ha guardat correctament al sistema executa la funció EsborrarRegistreTaula. Distribució de continguts empresarials per a la força de vendes de STEN 80 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim websvc As New PcTres.Service1 Me.Timer1.Enabled = False CanviarTextMenu("Provant...") Try If (websvc.Ping = True) Then Cursor.Current = Cursors.WaitCursor CanviarTextMenu("Transmetent...") If (EnviarKms() = True And EnviarVisita() = True And EnviarPersp() = True) Then Cursor.Current = Cursors.Default MsgBox("Les dades guardades s'han enviat correctament", MsgBoxStyle.Information, "STENmobile") CanviarTextMenu("") Else CanviarTextMenu("Fora de línia") Me.Timer1.Enabled = True End If Else CanviarTextMenu("Fora de línia") Me.Timer1.Enabled = True End If Catch CanviarTextMenu("Fora de línia") Me.Timer1.Enabled = True End Try Cursor.Current = Cursors.Default End Sub 11. EnviarVisita() Envia les dades d’una visita que prèviament s’ha guardat en la base de dades local. Les funcions EnviarPersp (obra) i EnviarKms són anàlogues a aquesta. Private Function EnviarVisita() As Boolean Dim websvc As New PcTres.Service1 Dim Visita As New PcTres.Visita Dim Ds As New DataSet Dim Taula As String Dim Sql As String Dim Compta1 As Int16 Dim Id As Int32 Taula = "Visites" Sql = "SELECT * FROM VISITES" Dim Cnx As New SqlCeConnection Cnx.ConnectionString = ConnexioDb Cnx.Open() Try Dim Adp As New SqlCeDataAdapter(Sql, Cnx) Adp.Fill(Ds, Taula) Catch TancarConnexio(Cnx) Return False Finally Annex 81 TancarConnexio(Cnx) End Try For Each Taula1 As DataTable In Ds.Tables For Each Fila As DataRow In Taula1.Rows Compta1 = 0 For Each Columna As DataColumn In Taula1.Columns Compta1 = Compta1 + 1 Select Case Compta1 Case 1 Visita.Codrepr = "" Case 2 If Fila(Columna) Is System.DBNull.Value Then Visita.Nomcli = "" Else Visita.Nomcli = Fila(Columna) End If Case 3 If Fila(Columna) Is System.DBNull.Value Then Visita.Lloc = "" Else Visita.Lloc = Fila(Columna) End If Case 4 If Fila(Columna) Is System.DBNull.Value Then Visita.Dia = 0 Else Visita.Dia = Fila(Columna) End If Case 5 If Fila(Columna) Is System.DBNull.Value Then Visita.Mes = 0 Else Visita.Mes = Fila(Columna) End If Case 6 If Fila(Columna) Is System.DBNull.Value Then Visita.Any = 0 Else Visita.Any = Fila(Columna) End If Case 7 If Fila(Columna) Is System.DBNull.Value Then Visita.Objectiu1 = "" Else Visita.Objectiu1 = Fila(Columna) End If Case 8 If Fila(Columna) Is System.DBNull.Value Then Visita.Objectiu2 = "" Else Visita.Objectiu2 = Fila(Columna) End If Case 9 If Fila(Columna) Is System.DBNull.Value Then Visita.Observ = "" Else Visita.Observ = Fila(Columna) End If Case 10 Distribució de continguts empresarials per a la força de vendes de STEN 88 USRADMREPR CHAR (10) CE FACUSR USUARI ADMIN. CIAL. USRRIEREPR CHAR (10) CE FACUSR USUARI RISCOS DELEREPR CHAR (2) CE FACDELE DELEGACIÓ JEFEREPR CHAR (3) CE FACREPR CAP D'EQUIP Taula A.5. FACOBRAS1. Vista de FACOBRAS de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NUMOBRA CHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA CHAR (50) NOM DE L’OBRA CODCLI DECIMAL (7,0) CE FACCLIE CODI DEL CLIENT NOMCLI CHAR (40) NOM DEL CLIENT FENTREGA CHAR (10) DATA D’ENTREGA CODFUENTE DECIMAL (2,0) CODI DE LA FONT POBLOBRA CHAR (40) CE FACPOBL POBLACIÓ DE L’OBRA CODMERCADO DECIMAL (2,0) CE FACMERC CODI DE MERCAT DIROBRA CHAR (60) ADREÇA DE L’OBRA CODREPR CHAR (3) CE FACREPR CODI REPRESENTANT Taula A.6. FACOBRAS2. Vista de FACOBRAS de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NUMOBRA CHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA CHAR (50) NOM DE L’OBRA CODREPR CHAR (3) CE FACREPR CODI REPRESENTANT Taula A.7. FACOBRAS3. Vista de FACOBRAS de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NUMOBRA CHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA CHAR (50) NOM DE L’OBRA POBLOBRA CHAR (40) CE FACPOBL POBLACIÓ DE L’OBRA CODREPR CHAR (3) CE FACREPR CODI REPRESENTANT Taula A.8. FACOBRAS4. Vista de FACOBRAS de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NUMOBRA CHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA CHAR (50) NOM DE L’OBRA CODCLI DECIMAL (7,0) CE FACCLIE CODI DEL CLIENT CODNCLI DECIMAL (7,0) CE FACNOCLI CODI DEL NO-CLIENT CODREPR CHAR (3) CE FACREPR CODI REPRESENTANT Annex 89 Taula A.9. KMSREPR. Taula de quilòmetres diaris per representant de l’AS400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR CHAR (3) CLAU PRIMÀRIA CODI REPRESENTANT DIA DECIMAL (2,0) CLAU PRIMÀRIA DIA QUILOMETRATGE MES DECIMAL (2,0) CLAU PRIMÀRIA MES QUILOMETRATGE ANY DECIMAL (4,0) CLAU PRIMÀRIA ANY QUILOMETRATGE KMSINI DECIMAL (8,0) KM. INICIALS KMSDIA DECIMAL (8,0) KM. REALITZATS DIA COTHAB CHAR (1) COTXE HABITUAL Taula A.10. PERSPEC. Taula de perspectives i obres noves de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR CHAR (3) CODI REPRESENTANT OBROPERS CHAR (1) CLAU PRIMÀRIA OBRA O PERSPECTIVA TIPUSLOV CHAR (1) CLAU PRIMÀRIA LLOGUER O VENDA NUMOBRA CHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA CHAR (50) CLAU PRIMÀRIA NOM D’OBRA NOMCLI CHAR (40) NOM DEL CLIENT ADRECA CHAR (60) ADREÇA OBRA POBLACIÓ CHAR (40) CE FACPOBL POBLACIÓ OBRA PROBAB CHAR (1) PROBABILITAT A/B TERMINI CHAR (15) TERMINI D’ENTREGA M2 CHAR (7) METRES QUADRATS IMPORT CHAR (15) IMPORT OBSERV CHAR (250) OBSERVACIONS Taula A.11. VISITES. Taula de visites a clients de l’AS-400.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR CHAR (3) CE FACREPR CODI REPRESENTANT NOMCLI CHAR (40) CLAU PRIMÀRIA NOM DEL CLIENT LLOC CHAR (20) CLAU PRIMÀRIA LLOC DE LA VISITA DIA DECIMAL (2,0) CLAU PRIMÀRIA DIA VISITA MES DECIMAL (2,0) CLAU PRIMÀRIA MES VISITA ANY DECIMAL (4,0) ANY VISITA OBJECTIU1 CHAR (30) OBJECTIU 1 OBJECTIU2 CHAR (30) OBJECTIU 2 OBSERV CHAR (250) OBSERVACIONS POBLACIO CHAR (40) CE FACPOBL POBLACIÓ LLOC VISITA HORAENT CHAR (15) HORA D’ENTRADA HORASOR CHAR (15) HORA DE SORTIDA NUMPERS DECIMAL (4,0) NÚM. DE PERSONES CARREC CHAR (20) CÀRREC MÀXIM   Distribució de continguts empresarials per a la força de vendes de STEN 90 Taula A.12. KMSREPR. Taula de quilòmetres diaris per representant del terminal client en SqlCe.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR NVARCHAR (3) CLAU PRIMÀRIA CODI REPRESENTANT DIA INTEGER CLAU PRIMÀRIA DIA QUILOMETRATGE MES INTEGER CLAU PRIMÀRIA MES QUILOMETRATGE ANY INTEGER CLAU PRIMÀRIA ANY QUILOMETRATGE KMSINI INTEGER KM. INICIALS KMSDIA INTEGER KM. REALITZATS DIA COTHAB NCHAR(1) COTXE HABITUAL ID INTEGER ID DE LÍNIA Taula A.13. PERSPEC. Taula de perspectives i obres noves del terminal client en SqlCe.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR NVARCHAR (3) CODI REPRESENTANT OBROPERS NVARCHAR (1) CLAU PRIMÀRIA OBRA O PERSPECTIVA TIPUSLOV NVARCHAR (1) CLAU PRIMÀRIA LLOGUER O VENDA NUMOBRA NVARCHAR (8) CLAU PRIMÀRIA NÚMERO D’OBRA NOMOBRA NVARCHAR (50) CLAU PRIMÀRIA NOM D’OBRA NOMCLI NVARCHAR (40) NOM DEL CLIENT ADRECA NVARCHAR (60) ADREÇA OBRA POBLACIÓ NVARCHAR (40) CE FACPOBL POBLACIÓ OBRA PROBAB NVARCHAR (1) PROBABILITAT A/B TERMINI NVARCHAR (15) TERMINI D’ENTREGA M2 NVARCHAR (7) METRES QUADRATS IMPORT NVARCHAR (15) IMPORT OBSERV NVARCHAR (250) OBSERVACIONS ID INTEGER ID DE LÍNIA Taula A.14. VISITES. Taula de visites a clients del terminal client en SqlCe.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ CODREPR NVARCHAR (3) CE FACREPR CODI REPRESENTANT NOMCLI NVARCHAR (40) CLAU PRIMÀRIA NOM DEL CLIENT LLOC NVARCHAR (20) CLAU PRIMÀRIA LLOC DE LA VISITA DIA INTEGER CLAU PRIMÀRIA DIA VISITA MES INTEGER CLAU PRIMÀRIA MES VISITA ANY INTEGER ANY VISITA OBJECTIU1 NVARCHAR (30) OBJECTIU 1 OBJECTIU2 NVARCHAR (30) OBJECTIU 2 OBSERV NVARCHAR (250) OBSERVACIONS POBLACIO NVARCHAR (40) CE FACPOBL POBLACIÓ LLOC VISITA HORAENT NVARCHAR (15) HORA D’ENTRADA HORASOR NVARCHAR (15) HORA DE SORTIDA NUMPERS INTEGER NÚM. DE PERSONES CARREC NVARCHAR (20) CÀRREC MÀXIM ID INTEGER ID DE LÍNIA Annex 91 Taula A.15. T_ACCIONS. Taula d’accions de l’aplicació client, en Microsoft Access.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ ACCIO TEXT (3) CLAU PRIMÀRIA ID. DE L’ACCIÓ DESCRIPCIO TEXT (50) DESCRIP. DE L’ACCIÓ Taula A.16. Exemple dels registres de la taula T_ACCIONS. ACCIO DESCRIPCIO BCN Buscar client pel nom BCP Buscar client per població BON Buscar obra pel nom BOP Buscar obra per població CLS Tancament de la sessió de treball EIV Enviar informe de visita EKD Enviar Kms del dia ENP Enviar nova perspectiva LOC Llista d’obres d’un client OPN Obertura d’una sessió de trebal VDC Veure dades d’un client VDO Veure dades d’una obra VVD Veure visites del dia Taula A.17. T_PERFILS. Taula de definició de perfils d’usuari, en Microsoft Access.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NOM_PERFIL TEXT (2) CLAU PRIMÀRIA ID. DEL PERFIL DESC_PERFIL TEXT (30) DESCRIP. DEL PERFIL   Taula A.18. Exemple dels registres de la taula T_PERFILS. NOM_PERFIL DESC_PERFIL AC Administratiu Comercial AS Administrador del Sistema CE Cap d’Equip RC Representant Comercial   Taula A.19. T_SESSIONS. Taula d’històric de sessions de l’aplicació client, en Microsoft Access.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ ID_SESSIO LONG CLAU PRIMÀRIA ID DE SESSIÓ ID_TERMINAL TEXT (60) CE T_TERMINALS ID DE TERMINAL USUARI TEXT (10) CE T_USUARIS NOM D’USUARI DATA TEXT (10) CLAU PRIMÀRIA DATA DE L’ACCIÓ HORA TEXT (8) CLAU PRIMÀRIA HORA DE L’ACCIÓ ACCIO TEXT (3) CLAU PRIMÀRIA CE T_ACCIONS ID DE L’ACCIÓ Distribució de continguts empresarials per a la força de vendes de STEN 92 Taula A.20. T_TERMINALS. Taula de permisos a terminals per accedir a l’aplicació client, en Microsoft Access.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ NUMSERIE TEXT (60) CLAU PRIMÀRIA NÚM. SÈRIE TERMINAL USUARI TEXT (40) CE T_USUARIS USUARI HABITUAL ACTIU TEXT (1) TERMINAL ACTIU S/N   Taula A.21. T_USUARIS. Taula de permisos a usuaris per accedir a l’aplicació client, en Microsoft Access.  CAMP DEFINICIÓ ATRIBUTS DESCRIPCIÓ ID_USUARI LONG AUTO. CLAU PRIMÀRIA ID D’USUARI EMPLEAT LONG. CE NOMOPER NÚMERO D’EMPLEAT USUARI TEXT (10) NOM D’USUARI PASSWORD TEXT (8) CLAU D’USUARI PERFIL TEXT (2) CE T_PERFILS PERFIL D’USUARI ACTIU TEXT (1) ACTIU S/N  Bibliografia 93 BIBLIOGRAFIA [1] 3rd GENERATION PARTNERSHIP PROJECT (3GPP), 2.005, <www.3gpp.org> (02/02/2005). [2] 5 DÍAS, «España supone el 13% del sector de la construcción de la UE», CINCO DÍAS, 13/12/2004 <www.cincodias.com> (03/03/2005). [3] ALBIOL, R. La innovació i el mercat tecnològic. Esmorzar CIDEM – Business Angels, gener 2.003. [4] ALEMANY EUFRASIO, L. “Los ayuntamientos se embolsan más de 1.250 millones del negocio inmobiliario”, Suplemento El Mundo, núm. 374, 17/12/2004. [5] AMENA, 2.005, <www.amena.es> (23/05/2005). [6] ANALISTAS FINANCIEROS INTERNACIONALES, «La relevancia del sector de la construcción en la economía y los potenciales riesgos de una ralentización brusca», Asociación de Promotores Constructores de España, maig 2.004 <www.apce.es> (26/01/2005). [7] ARELLANO, F. «GPRS: La nueva generación de telefonía móvil», Havet Interactive S.A., 2.001, <www.havet.es> (21/12/2004). [8] AVUI, «El BBVA alerta que com més duri l’alça de l’habitatge més caurà després», 11/03/2005 <www.avui.com> (12/03/2005). [9] AVUI, «El canvi sociocultural generarà el 57% de la demanda de nous habitatges», 02/03/2005 <www.avui.com> (02/03/2005). [10] AVUI, «Els propietaris de pisos són ara 2,5 bilions més rics que fa 9 anys», 04/02/2005 <www.avui.com> (04/02/2005). [11] AVUI, «Les caixes ja superen els bancs en volum de crèdits concedits a famílies», 14/08/2004 <www.avui.com> (04/02/2005). [12] BER, J. «Uso de las TIC en la construcción en el Reino Unido», CONSTRUTIC, Tecnologías de la Información en la Arquitectura, Ingeniería y Construcción, 07/07/2004, <www.construtic.com> (22/01/2005). [13] BURNS, R. Multithreaded Programming with Visual Basic .NET, Microsoft Corporation, febrer 2002. [14] CAIXA CATALUNYA, «Informe sobre la conjuntura econòmica», Publicacions de la Caixa de Catalunya, setembre 2.004 <www.caixacatalunya.es> (25/01/2005). Distribució de continguts empresarials per a la força de vendes de STEN 94 [15] CASTILLO, X. Internet Wireless, reptes i oportunitats (I). Jornada Wireless Fundació I2CAT, 22/04/2004. [16] CENTRO DE SOLUCIONES MICROSOFT VISUAL STUDIO .NET 2.003, 2.005, <http://support.microsoft.com/vsnet2003> (abril-maig 2.005). [17] CIDEM «Més de 900 empreses contracten actiitats d’R+D als centres de la xarxa IT», 02/06/2004 <www.cidem.com/cidem/cat/comunicats/xinnovacio/index.jsp> (02/02/2005). [18] CITRIX «Employee Mobility», 2.005, <www.citrix.com> (22/01/2005). [19] CONSUMER.ES «La vivienda libre se ha encarecido un 120,9% desde 1.991», CONSUMER.ES EROSKI, desembre 2.004, <www.consumer.es> (21/02/2005). [20] DIEZ FERNANDEZ, L. Mediateca del C.O.E.I.C., Facultat d’Informàtica de Barcelona (FIB), Barcelona (2.002). [21] DOHERTY, S. «Enterprise Collaboration Tools», Network Computing, 09/12/2004 <www.networkcomputing.com> (10/03/2005). [22] DURLACHER, «Mobile Commerce Report», novembre 2.003 <www.durlacher.com> (07/03/2005) [23] DURLACHER, «UMTS Report. An Investment Perspective», octubre 2.004 <www.durlacher.com> (07/03/2005) [24] ERICSSON AB. «EDGE, Introduction of high-speed data in GSM/GPRS networks», 2.003, ERICSSON, <www.ericsson.com> (21/12/2004). [25] ESCUDERO MUSOLAS, A. «El mercado residencial en España: “Un futuro con amenazas pero sin grandes sobresaltos», desembre 2.004, URBANIZA.COM <www.urbaniza.com> (06/03/2005). [26] EUROCONSTRUCT, «Euroconstruct Country Report», desembre 2.004 <www.euroconstruct.org> (07/03/2005) [27] FUNDACIÓN BBVA, «Informe CESIfo sobre la Economía Europea 2005», gener 2.005 <www.fbbva.es> (26/01/2005). [28] GORRICHO, M. Ejemplos de Tecnologías de Soporte. Càtedra Amena, 2.004. [29] GRAU-SOLDEVILA, J. “De les empreses tradicionals a la nova economia”, Revista de Qualitat, núm. 41, pàg. 23-24, abril de 2.001. Bibliografia 95 [30] GSM WORLD «GPRS Platform», 2.005, <www.gsmworld.com/technology/gprs/index.shtml> (21/01/2005). [31] GOT DOT NET, 2.005, <www.gotdotnet.com> (abril-maig 2005). [32] HANSON, K. «Mobile workforce management», ERICSSON MOBILITY WORLD, 2.004 <www.ericsson.com> (22/01/2005). [33] HERNANDO RÁBANOS, J. M. Comunicaciones móviles, Ed. Centro de Estudios Ramon Areces (1.997). [34] HERNANDO RÁBANOS, J. M. Transmisión por radio, Ed. Centro de Estudios Ramon Areces, 1.995. [35] INSTITUT D’ESTADÍSTICA DE CATALUNYA «Producte interior brut de Catalunya (PIB). Base 1995.», segon trimestre de 2.004, <www.idescat.net> (22/01/2005). [36] IT CONSTRUCTION FORUM, 2.005, <www.itconstructionforum.org.uk> (11/03/2005). [37] INSTITUT DE TECNOLOGIA DE LA CONSTRUCCIÓ DE CATALUNYA (ITEC), 2.005 <www.itec.es> (15/03/2005) [38] JAKES, W.C. Microwave Mobile Communications, John Wiley & Sons, 1.974. [39] JBOSS, The Professional Open Source Company, «JBoss Application Server 4», 2.005, <www.jboss.org> (02/02/2005). [40] JOnAS, Java Open Application Server, 2.005, <www.objectweb.org/jonas/index.html> (15/02/2005). [41] LA CAIXA, «Indicadors econòmics d’activitat», Servei d’Estudis de La Caixa, 05/01/2005 <www.lacaixa.com> (25/01/2005). [42] LEE, W.C. Mobile Cellular Telecommunications Systems, McGraw-Hill, 1.989. [43] LLEONART, P; GAROLA, A. «Estrategias empresariales en el sector de la construcción 2004», GABINET D’ESTUDIS ECONÒMICS, 2.004 <www.geeconomics.com> (22/01/2005). [44] MICROSOFT CORPORATION, «Global XML Web Services Architecture», octubre de 2.001 <www.microsoft.com> (11/03/2005). [45] MICROSOFT DEVELOPER NETWORK (MSDN), 2005 <http://msdn.microsoft.com> (abril-maig 2.005). [46] MOBILE GPRS «MMS Reports», 2.005, <www.mobilegprs.com> (21/01/2005). Distribució de continguts empresarials per a la força de vendes de STEN 96 [47] MINISTERIO DE EDUCACIÓN Y CIENCIA, 2.005 <www.mec.es> (12/03/2005). [48] MOLTA, D. «Mobile and Wireless in 2004: Three Key Events», Network Computing, 16/12/2004 <www.networkcomputing.com> (10/03/2005). [49] MOVISTAR, 2.005, <www.movistar.es> (21/01/2005). [50] MOVISTAR «Telefónica Móviles España comercializa el nuevo Móvil-PDA MoviStar TSM500», 2.004, <www.empresa.movistar.com/60/60507076.shtml> (22/12/2004). [51] MUNDOPDA, 2.005 <www.mundopda.com> (23/04/2005). [52] OBSERVATORI EMPRESARIAL, «El sector de la construcció: aproximació a la dinàmica de l’activitat residencial», CONFEDERACIÓ EMPRESARIAL DE LA PROVÍNCIA DE TARRAGONA (CEPTA), 08/06/2004 <www.cepta.es> (26/01/2005). [53] OpenCCM, The Open CORBA Component Model Platform, 03/01/2005 <www.objectweb.org/openccm/index.html> (15/02/2005). [54] PINI, M. «Mobile Wireless Applications. What’s the best wat to write them?», INTEL OPTIMIZING CENTER, 01/10/2003 <www.devx.com/Intel/Article/17507?trk=DXRSS_JAVA> (17/02/2005). [55] RIBERA, O. Les aplicacions de les telecomunicacions mòbils. Universitat de Sabadell, juliol 2.003. [56] SALGADO, H. «Alternativas OpenSource para aplicaciones de negocios», 08/03/2002 <www.linuxparatodos.net> (15/02/2005). [57] SHORT S. Creación de Servicios Web Xml para la Plataforma Microsoft .NET, Ed. MkGraw-Hill, Madrid (2.002). [58] STEN, 2.005 <www.sten.es> (març 2.005). [59] STEN. Definición Proyecto SIC-PDA, maig 2.003. [60] STEN. Estructura Organizativa STEN, novembre 2.004. [61] STEN. Gestión Servicios Andamio (GSA), v1.0, abril 2.004. [62] STEN. Mapa de los servidores de STEN, desembre de 2.004. [63] STEN. Parte de Actividad Diaria, Mollet del Vallès, abril de 2.005. [64] TELTARIFAS.COM, 2.005, <www.teltarifas.com> (25/05/2005). [65] TEMPOS 21, 2.005 <www.tempos21.es> (15/04/2005). Bibliografia 97 [66] TEMPOS 21. Aplicaciones Móviles en modo ASP. Desembre 2.004. [67] TORROJA I NUALART O. Comunicacions via GPRS a l'empresa: necessitats, reptes i solucions, Comunicacions Mòbils de Banda Ampla (EPSC), Castelldefels (2.004). [68] UMTS FORUM, 2.005, <www.umts-forum.org> (02/02/2005). [69] VILASECA REQUENA, J. Adaptació de les pimes a les TIC. Situació actual i tendències a Catalunya. Universitat Oberta de Catalunya, novembre 2.004. [70] VODAFONE, 2.005, <www.vodafone.es> (23/05/2005). [71] WILL, M.; PORAK, V. “Corporate Communication in the New Media Environment”, The International Journal on Media Management, University of St. Gailen (Switzerland), vol. 2, any 2.000. [72] XEROX DOCUSHARE, «Why Docushare?», 2.005 <http://docushare.xerox.com/ds/ds.html> (10/03/2005) [73] ZOPE COMMUNITY, «The Zope Book», edició 2.6 (2004), <www.zope.org> (17/02/2005). 