UN NIVERSIIDAD POLITÉC CNICA SALESIIANA DE CUE ENCA SED FAC CULTAD DE IN NGENIE ERÍAS C CARRER RA: ING GENIER RÍA DE SISTEM S MAS Tesis prrevia a laa obtencióón del Títu ulo de Inggeniero en n Sistemaas “DES SARROL LLO DE E PATRO ONES EN GENE EXUS X EVOL LUTION Y APLIICACIÓ ÓN EN MIGRAC M CIÓN DE E OBJET TOS DES SDE LA A VERSIÓN DE GENEX XUS 9.0 A GEN NEXUS X EVOL LUTION N – CASO O ETAP PA EP.” AUTOR R: Cuenca Agudo A Gusttavo Patricio D DIRECTO ORA: In ng. Bertha Tacuri. T Cuenca, Septiemb bre del 20011 DE ESAR RROL LLO DE D PA ATRO ONES EN GE ENEX XUS X EVO OLUT TION NY AP PLICA ACIÓ ÓN EN N MIG GRAC CIÓN N DE OB BJET TOS DESDE D E LA VER RSIÓN N DE GE ENEX XUS 9.0 9 A GEN NEXUS SX EV VOLU UTION N 1– CASO C O ETA APA EP. E Pattricio Cuuenca U – CU UPS UENCA II Responsabilidad de Autoría El análisis de los conceptos y las ideas vertidas en el presente documento de tesis son de total responsabilidad del Autor. Cuenca, Septiembre de 2011 __________________________ Cuenca Agudo Gustavo Patricio III Ing. Bertha Tacuri CERTIFICA: Haber dirigido y revisado prolijamente cada uno de los capítulos del informe de monografía realizada por el Señor Gustavo Patricio Cuenca Agudo, así como, el cumplimiento y desarrollo de la parte práctica de la misma; en base a ello y cumpliendo honrosamente con todos los requisitos necesarios, autorizo la presentación de la misma Cuenca, Septiembre del 2011 Ing. Bertha Tacuri DIRECTORA IV DEDICATORIA: Esta tesis está dedicada a mis Padres por haber sido el pilar fundamental para lograr esta meta. A mi abuelito que estuvo brindándome su apoyo y me acompaño con su presencia durante casi toda mi vida de estudiante. A toda mi familia quienes me brindaron su apoyo ante todos los retos que he tenido que enfrentar. A mis amigos que estuvieron presentes en este trayecto y siempre obtuve palabras de aliento por parte de ellos. Y a una persona especial que siempre me empujaba a seguir adelante. V AGRADECIMIENTO A mis Padres Germán y Mariana, por el apoyo constante que me dieron para cumplir mis propósitos, a mis hermanos Gonzalo, Bertha, Yolanda y Blanca también a mi sobrina Verónica. A mis amigos Pablo, Milton, Lenin, Wilson, Edison, Saúl. También a Jorge, Mauro, Carlos., y a la persona que me dio su apoyo incondicional durante este tramo de mi carrera. Finalmente a los Ingenieros Xavier Mejía, Xavier Espinosa, Galo Criollo quienes me brindaron su ayuda en las distintas etapas del proyecto y a mi directora de Tesis quien me guio en el desarrollo de esta tesis. VI ÍNDICE DE CONTENIDOS Contenido ÍNDICE DE CONTENIDOS ............................................................................... VII ÍNDICE DE ANEXOS……………………………………………………..IX ÍNDICE DE FIGURAS ........................................................................................ IX CAPÍTULO I –INTRODUCCIÓN A LA EMPRESA ETAPA EP. ......................... 11 INTRODUCCIÓN ...................................................................................................................... 11 ORGANIZACIÓN INTERNA .................................................................................................. 12 PENSAMIENTO ESTRATÉGICO DE ETAPA EP. ............................................. 12 Valores Empresariales ............................................................................................... 12 Objetivos Estratégicos ............................................................................................... 13 SERVICIOS QUE BRINDA ETAPA A LA COMUNIDAD .................................................. 13 CAPÍTULO II – INTRODUCCIÓN TEÓRICA ........................................... 17 INTRODUCCIÓN A GENEXUS .............................................................................................. 17 ARTECH..................................................................................................................... 17 GENEXUS .................................................................................................................. 18 GENEXUS PARA LOS DISEÑADORES ............................................................... 21 GENEXUS 9.0 ............................................................................................................ 27 Características ............................................................................................................ 28 GENEXUS X EVOLUTION ..................................................................................... 32 PATTERNS (PATRONES) ....................................................................................... 38 Características ............................................................................................................ 39 Ventajas y Desventajas .............................................................................................. 41 CAPÍTULO III– PROGRAMACIÓN ............................................................. 43 MICROSOFT VISUAL STUDIO 2008 .................................................................................... 43 MICROSOFT .NET FRAMEWORK ....................................................................................... 43 MICROSOFT VISUAL C# ........................................................................................................ 44 ANÁLISIS DEL PATTERN ...................................................................................................... 45 DISEÑO DEL PATTERN.......................................................................................................... 45 PROGRAMACIÓN DEL PATTERN....................................................................................... 46 CAPITULO IV – MIGRACIÓN ...................................................................... 49 DESCRIPCIÓN DEL PROCESO DE MIGRACIÓN ............................................................. 49 Preparación de la Base de Conocimiento ........................................................................... 49 GENEXUS X EV1 CONSIDERACIONES GENERALES ..................................................... 53 VII ANÁLISIS DE LOS OBJETOS A SER MIGRADOS ........................................................... 54 VALIDACIÓN Y VERIFICACIÓN DE PATRONES ............................................................ 55 CONCLUSIONES ....................................................................................... 173 RECOMENDACIONES ............................................................................. 174 VIII ÍNDICE DE ANEXOS ACTA DE ACEPTACION DE PROYECTO ESPECIFICACIÓN DE REQUERIMIENTOS DE SOFTWARE ................... 61 DISEÑO DEL MÓDULO DE SEGURIDAD ...................................................... 72 PATTERN WWETAPA ........................................................................................ 84 MIGRACIÓN DEL MODELO WEB DEL SIGECOM …………….............138 PLAN DE PRUEBAS DEL SISTEMA .............................................................. 154 MANUAL DE USUARIO PATTERN WWETAPA ......................................... 164 ÍNDICE DE ILUSTRACIONES ILUSTRACIÓN 1- CAP. II CICLOS DISEÑO - PROTOTIPO Y DISEÑO - PRODUCCIÓN ..........24 ILUSTRACIÓN 2 CAP. II –INTEGRACIÓN Y EXTENSIÓN DE GENEXUS X EV1 ...................32 ILUSTRACIÓN 3CAP. II –MECANISMOS DE INFERENCIA Y REGLAS DE APLICACIÓN ........33 ILUSTRACIÓN 4 CAP. II – IMAGEN DEL SECTOR DE DOCUMENTACIÓN INTERNA .............36 ILUSTRACIÓN 5 CAP. II – IMAGEN DEL PANEL DE FILES EXTERNOS. ...............................36 ILUSTRACIÓN 6 CAP. II – IMAGEN DEL PANEL DE RELACIONES ENTRE TRANSACCIONES. .......................................................................................................... 36 ILUSTRACIÓN 7 CAP. II – PATTERN COMO UNA MÁQUINA DE PROCESAMIENTO..............39 ILUSTRACIÓN 8 CAP. II – MENÚ EN DE ELEMENTOS DE UN OBJETO EN GENEXUS ..........39 ILUSTRACIÓN 9 CAP. III – PANEL EN VISUAL STUDIO CON GENEXUS SDK. ..................46 ILUSTRACIÓN 10 CAP. IV – ETAPAS DEL PROCESO DE MIGRACIÓN. ................................51 IX CAP PÍTUL LO I IN NTRO ODUC CCIÓN N A LA L EM MPRE ESA ET TAPA EP. INTRODUC CCIÓN A LA EMPR RESA ETAPA EP –– CAPÍTULO I CAPÍTULO I –I – NTROD DUCCIÓ ÓN A LA EMPRE ESA ETA APA EP. INTR RODUCCIIÓN La Em mpresa munnicipal ETA APA EP., haa venido trab bajando dessde hace máás de 42 años al servicio de la población cuencaana ofrecienndo eficientte servicios de agua potab ble, alcantarrillado y teleecomunicacciones. Duraante este larrgo trayectoo ha ido crecieendo acordee a las a lass exigenciass que Cuencca le ha exigido y el deesarrollo tecno ológico lo reequiere. ETAP PA EP., está constituid da como unaa de las mej ejores empreesas del paíís con su recon nocida eficiiencia en laa prestación de los servicios po or los que ETAPA trabajja. Segúnn mandato Constitucioonal, se establece el derecho dee disponer de estos serviccios públicoos en cantiddad y calidad óptima para p satisfaacer adecuadamente las neecesidades básicas. b El éx xito de ETA APA EP., tiene comoo pilar funddamental laa labor de todo su persoonal tanto addministrativvo pero sobrre todo el esfuerzo de los l obreros.. La dinámica d ecconómica y social deel país, el ordenamiennto territorrial y la densidad demoggráfica partticularmentee de la ciuudad de Cuenca, C exiggen que ETAP PA EP., cam mbie y se adapte al ritm mo de los avances. a Co on el afán de d cubrir las nu uevas necessidades de la comunidaad, así comoo el estableecimiento dee nuevas políticas y direcctrices en laa Empresa, han determ minado quee posteriorm mente se aprueeben nuevaas Ordenannzas muniicipales que han ido facilitaando la modeernización de d la estructtura orgánicca y funcio onal de ETA APA, acordde con el proceeso de desaarrollo de laas telecomuunicaciones y de los servicios s dee agua y saneaamiento. - 111 - INTRODUC CCIÓN A LA EMPR RESA ETAPA EP –– CAPÍTULO I ORGA ANIZACIIÓN INT TERNA PENS SAMIENT TO ESTRATÉGICO DE D ETAPA A EP. Miisión "C Contribuir all mejoramieento de la caalidad de viida de la pooblación, a través t de la prestaciónn de serrvicios de Telecomuunicacioness, Agua Potable, neamiento, Gestión Ambiental A y otros de interés pú úblico; busccando la San sattisfacción de nuestros clientes, c conn eficienciaa, calidad, coompromiso social y am mbiental".1 Viisión "Seer un referrente nacioonal e interrnacional en e la presttación de servicios s púb blicos por nuestro lidderazgo, innnovación, calidad y satisfacciónn de los clientes; garanntizando la sostenibiliddad de nuesttra gestión".2 presariales3 Vaalores Emp Trabajjo en Equip ipo: Trabajaamos de la mano paraa alcanzar objetivos o comunnes. Pro acctividad: Po or nuestra inniciativa vam mos más alllá de lo espeerado. Eficien ncia: Utiliizamos respponsablemeente los reecursos en nuestra gestiónn. Vocacción de Servvicio: El Cliiente guía nuestro n accioonar. Comprromiso: Los retos de ETAPA E EP. son mis rettos. Honesstidad: Una gestión trannsparente abbierta al conntrol ciudaddano. 1 http://www.etaapa.net.ec/Empreesa/emp_pla_plaeest_met_obj.aspx http://www.etaapa.net.ec/Empreesa/emp_pla_plaeest_met_obj.aspx 3 http://www.etaapa.net.ec/Empreesa/emp_pla_plaeest_met_obj.aspx 2 - 122 - INTRODUC CCIÓN A LA EMPR RESA ETAPA EP –– CAPÍTULO I Ob bjetivos Esttratégicos “Los objetivos estratégiccos definen y cuantificaan un horizzonte visiblee para la Plaanificación Estratégicaa de ETAP PA EP. Son n aquellas metas quee se van midiendo y quue van a gaarantizar quue está avan nzando en el e camino prropuesto porr la Visión Empresaria E al.” 4 Mejoraar la satisfacción del Cliente C Mejoraar el clima laboral l Garanttizar Eficienncia y Sosteenibilidad Diverssificar los prroductos y servicios s SERV VICIOS QUE Q BRIN NDA ETA APA A LA A COMU UNIDAD5 AG GUA Y SAN NEAMIEN NTO Agua Potaable Alcantarillado Tratamiennto de Aguas Residualees TE ELECOMU UNICACIO ONES Telefonía Fija Local Regionnal Nacionnal Internaacional Celulaar Serviccios especialles Serviccios temporaales Telefonía Pública Teléfoonos Públicoos Inteligenntes Locutoorios Alo ETAPA 4 http://www.etaapa.net.ec/Empreesa/emp_pla_plaeest_met_obj.aspx http://www.etaapa.net.ec/Empreesa/emp_quisom__nue_ser.aspx 5 - 133 - INTRODUC CCIÓN A LA EMPR RESA ETAPA EP –– CAPÍTULO I Tarjetaa Prepago para p Telefonnía Pública Internet de d alta Veloocidad (Ban nda Ancha a) Resideencial ADSL L Familia Net N Corporativo Segu undo Nivel ADSL A Corporativo Prim mer Nivel AD DSL Corporativo Prim mer Nivel SH HDL Serviccio de Intern net y telefonnía fija en Áreas Á Ruralees Red de Datos Serviccio de enlacees Clear Chhanel Serviccios de enlacces FrameR Relay Líneass dedicadas no conmutaadas Enlacees Súper Lin nk de 2 MB B Housinng Hostinng GE ESTIÓN AMBIENTA A AL Recoleccióón de Aceittes Usados Recoleccióón de Pilas Usadas Escuela dee conocimieentos continnuo Educaciónn Ambientall Laboratoriios Ambienntales Análisis Físico Químicos Nutrieentes Indicaadores de Coontaminacióón Bioquím mica Indicaadores de Coontaminacióón Microbio ológica Indicaadores biológicos Metalees (a.a) - 144 - INTRODUC CCIÓN A LA EMPR RESA ETAPA EP –– CAPÍTULO I PA ARQUE NA ACIONAL CAJAS Manejo Inntegral del Parque P Naciional Cajas Visitas Guuiadas Centros dee Interpretacción Educaciónn y Apoyo Comunitario C o Albergue y Cafetería Laa Gestión addecuada y oportuna o enn cada una de d sus áreass, es un retoo el cual ha estado en constante modificación m n, es por esso que La Empresa E M Municipal ET TAPA EP., está consttituida com mo una de las más im mportantes del País connvirtiéndosee en un ejem mplo de connservación del d medio ambiente. - 155 - C ÍTULO CAPÍ O II I RODU INTR UCCIÓ ÓN TE EÓRIICA CAP PÍTUL LO III ANÁL LISIS DE D HERR H RAMIE ENTA AS PA ARA GIS INTRODUCC CIÓN TEÓRICA – CAPÍTULO II CAPÍÍTULO II I – INT TRODU UCCIÓN TEÓ ÓRICA INTR RODUCCIIÓN A GE ENEXUS S ARTECH La emp presa Uruguuaya Artech h lidera el mercado m de las l herramieentas CASE E. Desde 1988 see ha especiaalizado en la l construccción de herrramientas innformáticas con una visión en e la gestiónn automáticca del conoccimiento. Tanto ha h sido el crecimiento y los casoss de éxito qu ue han sido o reflejados que han hecho que q Artech se haya exppandido en muchos paííses como son s Estados Unidos, Méxicoo, Brasil y JJapón y coontando conn una red de d más de 30 3 distribuiddores en todo el mundo. En Ecu uador no ha h sido differente la situación s yaa que muchas empressas muy importaantes del paaís utilizan a su produccto líder (G GeneXus) coomo herram mienta de desarro ollo informáático. Anteceedentes de Artech A Remitiééndonos a los l primeroos sistemas empresarialles y la form ma de funccionar de estos se s veía quee únicamen nte tenían una u visión centrada para p manejjar a un departaamento y potenciar únicamentte los pro ocesos de negocio de ese departaamento, lo cual c repercuutía en la faalta de integ gración en las l aplicacioones que soportaaban los proocesos de neegocio lo cuual dificultabba enormem mente la inteegración de info ormación im mportante paara la toma de decisionnes, surge aquí a la neceesidad de contar con una teccnología quee empiece a eliminar estas debilidades. Era la época “ de infformación”. de las “islas Las apllicaciones ccomenzaron n a formarse e ir integ grándose, todo esto fuee posible por la aparición a d las bases de datos corporativas que en esee entonces fueron de f y hasta la l actualidaad son la base fundaamental paara el desaarrollo de sistemas empressariales. Noo únicamentte para llevvar a cabo los procesoos de negoocio sino - 177 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II tambiénn en recopiilar la inforrmación neccesaria paraa ser analizzada y dotarr de una mejor visión v para lla toma de decisiones. d El éxito de las Baases de Dattos corporaativas fue in nminente y las cantiddades de do a gran vellocidad. informaación que estas almaceenaban fueroon creciend La soluución al probblema de laa integraciónn de las aplicaciones fuue solucionaada pero ante estte se presenntó otro de igual i o mayyor magnituud el cual erra la adminiistración de los cambios c en los procesoos de negoccio a los quee están sujettos las emprresas. El colapsoo de las apliicaciones inntegradas eraa inminentee. La tend dencia de laa globalizaciión de los aaños 90 afecctó a todo ell mundo e hizo h que los procesos de neegocio de laas empresas cambiaran drásticameente y se maantengan nstantes modificacion m nes, entonces surge la l necesidaad de conntar con en con herram mientas de desarrollo d de d softwaree rápidas, y que manttengan la visión v de integrid dad de las aplicaciones a , con un cossto relativam mente bajo. Como respuesta r a todas estas necesidadees es la aparición de GeeneXus “Desdee 1984, Arrtech ha deesarrollado importantes y originaales actividdades de investiggación en el área de las basees de datos relacionaales, desarrrollo de aplicaciones, CASE (Compputer Aidedd Softwaree Engineeriing) e inteeligencia artificiaal. Estas acctividades han h requeriido muchass horas de dedicaciónn, y han producido una excclusiva tecnoología que es e el núcleo o de GeneXuus”6. GENEXUS GeneX Xus, es una de d las prim meras herram mientas CAS SE que fue desarrolladda con el propósiito de creaar, desarrollar y manttener, en forma fo autom mática apliccaciones multipllataforma de d misión crítica c que fácilmente f se adaptan a los cam mbios del negocioo y a las nueevas posibillidades brinndadas por la l evolución n tecnológicca. GeneX Xus tiene com mo objetivoo, brindar apoyo a al an nalista y a los usuarios en todo el ciclo o de vida dee las aplicacciones, conn el fin de reeducir notaablemente el e tiempo de dessarrollo de aplicacionnes informááticas adem más de 6 brrindar la adecuada a http://www.ggenexus.com/portaal/hgxpp001.aspx x?2,69,1103,O,S,,0,MNU;E;252;3;;MNU;,173412;P P;94;167744;S - 188 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II asistenccia en el m manejo de errores, y lo fundam mental que es crear un u mejor acoplam miento de laas aplicaciones a los procesos de negocio n cam mbiantes. GeneX Xus en sus inicios i hasta la versiónn 9.0 maneejaba 3 etap pas de desaarrollo la primeraa que es de diseño y la segunda quue es prototiipo, estos dos d son reallizados y probados en un am mbiente Windows. Cuaando el prototipo es to otalmente approbado, mas de apliicación son generados en la platafforma de la base de datos y los program ollo escogidda y el motoor de Base de d Datos ellegido, estaa es la terceera etapa desarro llamadaa etapa de Producción P La ideea de GenneXus es automatizarr todo aqquello que es automatizable: normallización de los datos y diseño, geeneración y mantenimiento de la base de datos y de los programas de aplicación. a GeneXus trrata de haceer que la geestión de estos aspectos de desarrollo sea s más fáccil y rápida proponienddo metodologías de ollo que perm mitan que los program madores agiliiten el tiemppo de desarrrollo, de desarro esta manera m cubrriendo las expectativvas de los desarrolladores y por ende mejoran ndo los traabajos de deesarrollo. Con C esta ideea se pretennde evitar laas tareas rutinariias y tediosaas que se geeneran en el e transcursoo del desarrrollo de un proyecto p de Softtware. GeneX Xus en el muundo es connsiderada como una dee las herram mientas de diseño d y desarro ollo de apliccaciones em mpresarialess más poderrosas y con n mayores casos c de éxito su s principaal caracterísstica que la l ha diferrenciado dee las demáás es la generacción multipllataforma permitiendo p el cambio de d plataform ma de desarrrollo y/o la Basee de Datos. GeneX Xus ha sido creada con n el propósiito de geneerar el 100% % de la apllicación, básicam mente se paarte del diseeño de la base b de datos y a parttir de eso GeneXus G realiza todo el trabbajo de creaación de objetos tanto de d la Base de d Datos com mo de la e que vayaa a ser construida la aplicación, generaando el códiigo en el leenguaje en el aplicación, sin necesidad de programar, peermite adeemás geneerar procediimientos alm macenados así como taambién la geeneración de d reportes. - 199 - los INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Desarrrollo Basad do en Conoccimiento y Metodolog gía incremeental En loss últimos años a se haa hablado mucho en n la industrria de Knowledge Management y, dentro d de esta teoría eestán involu ucradas muuchas premisas que m distantees del desarrrollo Basaddo en Conoccimiento. están muy La induustria del sooftware se ha h enfocadoo a las form mas de recopilar organiizar y /o accederr a la infoormación para converrtirlo en co onocimientoo el cual debe d ser utilizaddo por la organizaciónn para tomaar decisionees adecuadaas y oportuunas que permitaan darle el rumbo r correecto a la orgganización. Una caaracterística del conociimiento es que q no es entendible e p para la máquuina por ende laa máquina no n puede operar por si sola s sobre el e conocimieento que se obtenga a travéss de la inforrmación reccopilada, coomo el razonnamiento dee los seres humanos h puede lidiar l razonablemente con c la ambiigüedad y, aún, a con la inconsistenncia, este conocim miento mucchas veces no n es riguroso”. El desaarrollo basaddo en conoccimiento debbe cumplir las siguienttes condicioones. • Riguroso • Representaable en form ma objetiva • Operable diendo quee no es El desaarrollo de sistemas innformáticos debe partiir comprend posiblee construir un modeloo de datos estable dee la empreesa, utilizanndo una filosofíía incremenntal y optar por p un Desaarrollo Basaado en Conoocimiento. En un esquema e inccremental no n se manejan grandes problemas,, se van resoolviendo los peq queños problemas a medida m quee se presenntan. Iniciaalmente parrece una solucióón muy senccilla pero noo es así, si nos n remitim mos a hablarr desde el ám mbito de la prog gramación, nos n daremoos cuenta quue esto impllica un cam mbio muy grrande en los sisttemas y sobbretodo llevvaría muchoo tiempo poder adaptaarlos a los cambios que este requiere para p poder solventar s lass necesidaddes que este debe cumplir. Primeraamente se ddebe tener en e cuenta quue el modello de datos estaría en constante c modificcación, porr ende los costos de mantenimiiento llegarrían a elevvarse de - 200 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II maneraa notable. Y la adaptaciión a los cam mbios podría implicar mucho esfuuerzo en la codifficación dell sistema coompleto. GENEXUS PARA A LOS DIS SEÑADOR RES Un asp pecto extremadamentee importantte de GeneeXus es qu ue no es necesario n conocer sobre las plataformas de desarroollo en la que q se generará la apliccación y tampocco de la Baase de Dattos puesto que GeneX Xus se encarga de reaalizar la generacción de toddo el código, por estaas razones se s garantizaa seguridadd ante el cambio o de tecnoloogías porquue con GenneXus la fortaleza del desarrolladdor es el que use conocim miento que tenga del negocio n frennte a los lennguajes o plataformas p el merccado. » GeneXus se encarga dee generar ell 100% de la aplicació ón y de la base de a el e modelo de d datos, datoos así como también dee mantener en forma automática la in nformación y las aplicaaciones. » GeneXus G es una herraamienta conn un entorrno de desaarrollo orieentado a inten nciones y neecesidades del desarrolllador lo cual lo hacen intuitivo. » GeneXus G auttomatiza ell desarrolloo y mantennimiento de las apliccaciones, autoomatizando las tareas ruutinarias. » GeeneXus permite integraar diferentees tecnologíaas a fin de lograr herraamientas más potentes y reciclar trabbajos anteriiores o de teerceras partees. os usuarios”; plasmánndolo en El trabajo de GenneXus parte de las “vissiones de lo d conocim miento, GenneXus es una baase de conoocimiento. A partir dee su base de capaz de diseñarr, generar y manteneer de maneera totalmeente autom mática la estructuura de la baase de datoos y los proogramas de la aplicación, permitiiéndonos cambiaar de platafformas de desarrollo y arquitectuuras cuanndo las necesidades requierran de este proceso. p - 211 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Tipos de d Objetos GeneX Xus para llevvar a cabo el e desarrolloo de softwarre soporta los l siguienttes tipos de objeetos: Transaacciones, Reportes, R Prrocedimienttos, WorkPanels, Webb Panels, Data Views, V Transsacciones dee BI. Transacciones. Una tran nsacción es un procesoo interactivoo o pantallaa (Win o Webb) que perm mite a los ussuarios interractuar conn la base de datos y reaalizar las operraciones creear, modificcar, eliminarr, se puede decir que una u transacción es la interrfaz de la taabla que está incluida en la base de datos. La L transacciión tiene elem mentos esennciales com mo la estrucctura de daatos de la pantalla, p reeglas del negoocio y fórm mulas y elem mentos comoo la forma de d las pantaallas (en estee caso el desaarrollador puede p darle con los edditores dispoonibles la forma f que quiera u optaar por utilizaarla automááticamente innferida por el sistema). Rep portes Un reporte r es un u proceso que permiite generar a los usuuarios la visu ualización de d los datoss de una foorma organizada y cohherente. See pueden definnir desde liistados simpples hasta muy m sofisticcados, en donde existaan varios cortees de controol, múltiplees lecturas a la base dee datos y parametrizacción. Se disp pone ademáss de una heerramienta G GXquery paara realizar reportes diinámicos sobrre la base dee datos. Proccedimientoos. Este objjeto tiene toodas las carracterísticass de los Repportes, y adem más permite actualizzar la basse de datoos. Los Procedimienntos son com múnmente ussados para tres t tipos dee procesos: o Procesos P baatch de acctualizaciónn. Por ejem mplo: cambiiar el valoor de un campo en toddos los regiistros de unaa tabla. o Subrutinas S de uso geeneral. Porr ejemplo: cambiar números n poor letras, (5 5000 = ‘cinnco mil’) o Procesos P a ejecutar en n un serviddor de apliccaciones o servidor s de base de datos: d procesos (generaalmente escrritos en Jav va o .NET) para una MultiTier M Architecture A e, para ser ejecutados e een un servid dor de apliccaciones o de d bases de d datos. WorrkPanels: Son pantaallas que permiten p al usuario interactuar con la inforrmación dee las transaccciones se puede p realiizar consulttas interactiivas a la basee de datos. - 222 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Web b Panels: T Tienen la misma m funciión de los work panells con la diiferencia que son exclusiivos para am mbientes Weeb. Dataa Views: Permiten P reecuperar innformación de tablas de bases de d datos preeexistentes o pertenecienntes a otro sistema s exteerno o del mismo m sistem ma. Desarrollo basado en el conocimiento El moddelo físico de las apliccaciones paarte de la definición dee la Base de d Datos relacionnal la cual debe d estar normalizada n a en su terceera forma noormal. Y a partir de este moodelo se connstruye la applicación y la base de datos. d Múltipless plataform mas, arquiteectura de múltiples m caapas Una dee las principales caraccterísticas de d GeneXuss es el que se puede crear un modeloo de la apliccación en vaarios lenguaajes de proggramación a partir de uno u solo de diseño. Es decirr que podem mos tener unn modelo de d la aplicacción en .Nett, otro en mente en caada modelo creando loss objetos neecesarios Java, ottro en RPG etc. Obviam para traabajar en caada plataforrma. Es imperioso podeer contar coon este tipo de aplicaciones por ejeemplo la applicación de un sistema s banncario debee poder correr en un servidor s iSeeries o Linuux en la oficina central y enn una red dee PC’s en laas sucursalees del banco o. Con ell uso progrresivo de los l ambienntes Clientee/Servidor e Internet /Intranet /Extran net, surge laa necesidad de manteneer un sistem ma de inform mación corriiendo en distintaas plataform mas. En esttos casos, es e también indispensaable que exxista una correcta intercomuunicación enntre las distiintas partes de la platafforma. Desarroollar aplicacciones con GeneXus da d la posibillidad de divvidir una applicación de mannera que cada parte puede serr ejecutada en una plataforma diferente, d utilizánndose el lennguaje más apropiado para p generaar las aplicaaciones en cada c una de estaas plataform mas. Esto haa dado lugaar al advenimiento de las l arquiteccturas de múltiplles capas, quue a la vez optimizan o e uso de loss recursos disponibles. el d - 233 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Etapass de desarroollo en Gen neXus Para lleevar a cabo las tareas de d desarrolloo de softwaare, GeneXuus se maneja en tres etapas. Ilustraciión 1- CAP. II Ciclos Diseño - Prototipo y Diseño D - Produ ucción 1. Diseño: Conssiste en la captación dee las visionees del usuarrio. En esta primera etaapa interviene la particcipación del analista, La L tarea de diseño connsiste en priimera instanncia en idenntificar y deescribir a caada entidad de la base de d datos, GeeneXus sisteematiza el conocimient c to capturado y va consstruyendo, en e forma to. inccremental, la Base de Conocimien C Estta Base dee Conocimiento es unn repositorioo de toda la informacción del disseño, a parttir de la cuual GeneXuus crea el modelo m de datos d físicoo (tablas, atrributos, índiices, redund dancias, regglas de inteegridad refeerencial, etcc.), y los pro ogramas de aplicación. 2. Prrototipo: Esta E etapa está destiinada para poder realizar las pruebas neccesarias dell sistema yaa que en la tarea t de dessarrollo surg gen muchoss traspiés que son norm males pero no dejan de d presentaar un probleema en pérrdida de mpo y gastoo de recurso os, como enn cualquier otra herram mienta de deesarrollo tiem es fundamentaal poder prrobar. Si duurante la pruueba del Prrototipo se detectan e se retorna a la fase de Diseñoo, se realiizan las meejoras o errores moodificacionees correspoondientes y se vuelvee al Protottipo. Este ciclo es connocido com mo Diseño/P Prototipo. Unn prototipoo GeneXuus es unaa aplicació ón completa funcionnalmente equuivalente a la aplicacción de prooducción Laa diferenciaa entre proototipo y pro oducción consiste c enn que la primera see hace en n un ambiiente de microcomputaador, mientrras que la producción se s realiza en n el ambientte objeto dell usuario (IIBM iSeriess, servidor Linux, Clieente / Servidor, JAVA A, .NET, etcc.). El protootipo permitte que la applicación seea totalmentte probada antes de - 244 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II passar a produccción. Duraante estas prruebas, el usuario u finall puede trabbajar con dattos reales, o sea que prueba, p de una u forma natural, n no solamente s f formatos de pantallas, informes, etc. sino también fórmulas, f reeglas del nnegocio, esttructuras de datos, etc. 3. Prroducción: Es la etapa en la que GeneXus G geenera autom máticamentee la Base de Datos y ell código neecesario parra manteneerla, así missmo aquí genera g el códdigo de la aaplicación de manera ínntegra. Tecnollogías que soporta s GeeneXus Platafoormas Platafo ormas de ejeecución JA AVA, Microsoft .NET, Microsoft M .NE ET Compacct Framewoork Sistema as Operativvos IBM M OS/400, LINUX, UNIX, U Wiindows NT//2000/2003 Servers, Wiindows NT//2000/XP/C CE y Wiindows Vistta Interneet JA AVA, ASP.N NET, Visuall Basic (ASP), C/S SQL, HTM ML, Web Serrvices. Bases de d Datos IBM M DB2 for iSeries y UDB, U Inform mix, Miicrosoft SQL L Server, MySQL, M Oraacle y PostgreSQL. Lenguaajes JA AVA, C#, CO OBOL, RPG G, Visual Basic. B Servidoores Web etc. Miicrosoft IIS,, Apache, WebSphere, W Múltiplles Arquiteccturas Arrquitecturas de múltiplees capas, baasadas en weeb, Cliente//Servidor, centralizadass (iSeries) - 255 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Mantenimiento Esta ess una de las l caracterrísticas máss importannte de GeneeXus, y laa que lo diferenncia de maneera más clarra de sus coompetidoress: el mantennimiento, tannto de la base dee datos (esstructura y contenido)) como de los program mas, es tottalmente automáático. Caractterísticas ún nicas de GeeneXus E diseño parrte de las viisiones propporcionadass por los usuuarios. Debiido a sus El acctividades diarias, d ellos son quiennes saben cómo c debenn y como no n deben fuuncionar las cosas. Laa descripcióón de cada objeto o es tottalmente inddependientee de la de loos demás poor lo que, enn el caso dee que se debba modificarr la descripcción de unoo, ello no im mplicará la necesidad n d modificarr manualmeente la descrripción de cualquier de c ottro. Esta característic c ca exclusivva de GenneXus (ortoogonalidad de las deescripcioness) es la que permite unn mantenimiiento totalm mente autom mático de las aplicacionnes. L curva de aprendizajee es corta. La E diseño, creación El c y mantenimie m ento de la base de daatos son tottalmente auutomáticos. Laa aplicaciónn (base de datos d y proggramas) tien ne siempre, sean s cuales sean las m modificacion nes que hayaa sufrido, laa mejor caliddad: - La basse de datos es e siempre la l óptima (ttercera form ma normal). - No se modifican programas: cuando yaa no son adeecuados, se generan otros nuevos, n óptiimos y no reemendados,, que los susstituyen. Uttilización loos archivoss o bases de d datos prreexistentess como proopios de GeeneXus. Leenguajes pooderosos de muy alto nivel n para laa definición de Procesoos, Work Paanels y Weeb Objects. Esta caractterística permite una total t indepeendencia enntre los datos d y diichas espeecificacionees. Como consecuenncia, las esspecificacionnes de alto nivel de GeneXus G no necesitan modificacio m ones ante m modificacion nes de la basse de datos. M Mantenimien nto 100% auutomático: El E conjunto o de estos elementos e ppermite a GeeneXus gennerar y manntener autom máticamentee el 100% de d los progrramas en - 266 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II applicaciones de nego ocios (com merciales, administraativas, finaancieras, inndustriales, etc.). e GeeneXus funnciona en PC Cs, dejando al entorno de producción totalmeente libre paara el processamiento dee las aplicacciones. Fáácil distribuución del co onocimientoo corporativo para facillitar el desarrrollo de nuuevas aplicaaciones. So oluciones dee Reportes y Data Warrehousing siimples y potentes. Veerificación automática de consisteencia, y con nsolidación, entre apliccaciones deesarrolladas separadam mente. Inndependenciia de platafoorma y arquuitectura. Siimplicidad: GeneXus utiliza u los recursos r máás avanzadoos de la inteeligencia arrtificial paraa que el anaalista y los usuarios, u puuedan usarlo o de una forrma muy sim mple. GENEXUS 9.0 La verssión 9.0 de la herramieenta CASE desarrollada d a por la emp presa Artecch ha ido evoluciionando dessde su aparrición y debbido a la grran acogidaa y a la satiisfacción que han n encontraddo sus clienntes en una herramientaa de desarroollo esta haa tomado gran im mportancia en todo ell mundo, sus creadorees han estaado constanntemente trabajanndo en asppectos com mo mejorarr a la herrramienta y adjuntarle nuevas funcionnalidades que q están destinadas d a mejorar los proceesos de deesarrollo, volviénndolos cada más fáciless de manejaarlos. La verssión 9.0 partte con la sigguiente consigna: “Concé éntrese en su s negocio,, GeneXus se s encarga a del resto“ 7 La visió ón que GenneXus tiene es, en la quue la organización debee concentrarrse en lo que la hace h única y la diferenncia del restoo y es preciisamente el conocimiennto de su negocioo. Para lo ograr esto, GeneXus 9.0 9 incorpoora funcionalidades quue permitenn que la empressa desarrollee esta idea y logre mejoores resultaddos en la geestión de la misma. 7 http://www2.ggxtechnical.com/pportal/hgxpp001.aaspx?15,9,65,O,S S,0,MNU;E;10;1;;MNU;, - 277 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II El uso adecuado del d conocim miento del neegocio perm mitirá tomarr mejores deecisiones y estar en constantte actualizacción ante loos cambios de d la globalización. La creaación y manntenimientoo de aplicaciiones críticaas. Aplicaciiones que será cada vez máás difícil desarrollar a mano. Soobre todo por p los requuerimientoss que en cuestiones de tiem mpo vienen a ser solicittados en el menor m tiemp po posible. ograr este propósito GeneXus 9.0 9 ha pueesto énfasiss en las siiguientes Para lo características. Caracterrísticas 1. paraa el Produ uctividad. Uno U de los objetivos de d GeneXuus 9.0 es darr soporte aumeento de la productividdad es deecir mejoraando el tieempo de desaarrollo. Paraa ello se incorporan las siguientes herramientaas: Gen neXus Pattterns. Esta herramiennta permite la generacción autom mática de objeetos a partirr de una trannsacción, essta funcionaalidad perm mite al desarrrollador autoomatizar graan parte del trabajo repeetitivo. Los Patterns puueden ser crreados y/o m modificados en base a las necesiddades de miento de cadaa organizaciión tal es assí que es aquuí en dondee interviene el conocim los programadoores y el ingenio i e iniciativa para poder lograr obteener un d la aplicacción inform mática. Patteern que autoomatice aúnn más la connstrucción de Business Com mponents. Los Busineess Componnents utilizzan como base b a la transsacción ya que cada trransacción posee p una estructura e d datos dife de ferente, a partiir de ese objeto se geenera un prrograma de altas, bajaas y modificcaciones sobrre un conjunnto de tablaas. De esta forma la aplicación a q queda lista para p que con la interface de usuario a través de la cuall se modifiican los datos y se o de la Basee de Datos como c de las reglas de negocio n . conttrola la integgridad tanto Los Business Components C s permiten utilizar las reglas de integridad, i es decir mulas y regglas de neggocio sin laa necesidad d de utilizarr el formullario, un fórm objeetivo de esta funcionaalidad es que q las regglas de inteegridad pueedan ser reutiilizadas poor los demáás objetos de la Baase de connocimiento, incluso prog gramas exteernos puedden invocarr a los Bussiness Com mponents vvía web Serv vices o EJB B el uso dentro de la base deel conocim miento es mediante m - 288 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II prop piedades y métodos qu ue expone el BussineesComponennt. De estaa manera facillita la inteeracción e integraciónn de las ap plicaciones GeneXus con las apliccaciones exxternas Masster Pages. Esta funccionalidad permite p deffinir una plaantilla para páginas web b en la quee es posiblle ubicar varios v Web Panels, laa Master Paage está dividdida en contenedorres, cada web pannel puede invocar a otro indeependientem mente de loo que sucedda en el reesto de la página, p faccilitan el desaarrollo increemental de las aplicacciones web.. Cambianddo una master page cam mbian todas las l asociadaas a la mism ma 2. Desarrrollo de aplicaciones Enterprise E level Inteerface de usuario más m interaactiva. Como una característica muy impoortante es laa implemenntación de laa arquitecturra Ajax. Paraa potenciar el e desarrollo o incorpora las siguienntes funcionnalidades Web b Client-Side Validation: en unaa aplicación n Web, un problema p quue quizá no se lo tome mucho m en cuuenta es quee las pruebaas sobre los cambios reealizados t que hacer h direcctamente o nuuevas características incorporadaas se las tiene ejecuutándola soobre el servvidor, con Web W Clientt-Side Valiidation estee tipo de prueebas no se laas hará en el e servidor loo cual ayuddará a ahorraar tiempo. Inpu utType. En E muchas ocasiones cuando hem mos realizaado aplicaciiones en Gen neXus una molestia haa sido al m momento de relacionar las tablas y extraer inforrmación dee ella a quee necesariam mente siemp pre hemos tenido que trabajar mannipulando el e ID, con Input Typee ya no ess necesario tener que invocar direcctamente all ID se lo puede p hacer mediante otro campo, por ejem mplo una enfeermedad se lo l invocará por su nom mbre y no poor su ID. Suggest: esta propiedad p está asociada al Input Type T y mueestra cualess son los regisstros que vaayan concorrdando mienntras el usuario digita, se van haciiendo las com mparaciones y presentanndo los registros que co oncuerdan. - 299 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Com mbos Dinám micos: Si enn la KB se tiiene una esttructura de países p y proovincias, el coombo de paaíses será esscogido y el e otro combbo directam mente presenntará las prov vincias del país p escogid do en el com mbo anteriorr. Localización de d Aplicaciiones: Sirvve para locaalizar produ uctos desarrrollados por empresas de d softwaree, que quieeren reutilizzar el conoocimiento qque está geneerado en differentes paísses. Ingeeniería Invversa de Baases de Dattos: Esta prropiedad cubre la problemática de cuando c se tiene t una baase de datoos pero la misma m no tiene el diseeño y se quieere construiir la aplicaación sobre esa base de datos, Database Reverse EngineeringToool permite capturar ell conocimiento de esa base de Datos e C to. impoortarlos a laa base del Conocimient Prop piedad Nu ull: Esta proopiedad es para definnir a los atrributos quee pueden almaacenar valoores nulos, esta funcioonalidad tieene como consecuenciaa mayor segu uridad de los datos, mejoras m en los contro oles de inteegridad refferencial, adem más permitee la creaciónn de los Joinns con mejoor rendimien nto. Com municación n Asíncronaa entre apllicaciones: Esta funció ón está inteegrada al nuevvo tipo de datos d Queuee y permite que las apliicaciones see conecten con c otras mensajes, de esta manera m estaableciendo una comunicación a trravés de asíncrona sin laa necesidad d de estar coonectadas a una red all mismo tieempo las dos. Mon nitoreo y Adminisstración d de aplicacciones: M Muchas vecces los desaarrolladores no imagin namos de cuuán grande puede llegar a ser unn sistema com mpleto empreesarial y cuuan laboriosso es el mon nitoreo de la l misma, GeneXus G penssando en este e probleema implem mentó estta funcionaalidad que permite monnitorear los servidores de aplicacioones y las bases b de dattos, el moniitoreo se lo reealiza en applicaciones Web y de 3 capas. Addemás perm mite que se realicen cam mbios en el tiempo t de ejecución e a la configurración de algunas a proppiedades del servidor, s esppecíficamen nte al pool de d conexionnes de los seervidores - 300 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II 3. Proteccción de su u inversión:: más plataaformas y mejor m prep paración para a el futuro.. J2E EE Gen neXus 9.0 soporta la generaciónn de los EJB E de tippo SessionB Beans y MesssageDrivennBeans y uttiliza JDBC C para accedder a las baases de datoos de las apliccaciones geeneradas. De esta e maneraa las aplicacciones creaddas con el generador g Jaava se beneffician de segu uridad, monnitoreo y de la interoperrabilidad qu ue brinda J22EE El principal p o objetivo dee J2EE sirrve exclusivamente para p minim mizar la prog gramación de d acceso a los datos Las transaccionnes definidaas como buussinesCom mponents pu ueden ser exxpuestas mo Web Serrvices de taal forma quue la lógicaa que está encapsulada e a, pueda com geneerar un EJB B que tieneen la posibiilidad de seer utilizadoss en los prrogramas exteernos y otross objetos dee GeneXus u puedde incluir fáácilmente SeessionBeans y/o MessaageDrivenB Beans. El El usuario EAR RDeploymeentWizard de d GeneXuus 9.0 sopoorta los serrvidores J2EE más popu ulares: J/Ruun, JBOSS, Oracle 9iAS, SunOne, Weblogic, y Webspheere. - 311 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Gen nerador .NE ET Mobile.. En esta e versiónn de GeneX Xus se incoorpora el geenerador paara .NET Compact C Fram mework, quue cumple con c todos loos requerim mientos de GeneXus G paara hacer el caambio de plataforma si s el usuarioo lo necesitaa, el único inconveniennte es el tamaaño de las pantallas puede lleegar a vaariar pero no n la lógicca de la apliccación. Gen neXus 9 ya provee p un excelente sopporte para el e trabajo coon MySQL. GENEXUS X EV VOLUTION N GeneX Xus X no esttá consideraada únicameente como una u versión n más, repreesenta un gran saalto adelantee en muchos aspectos y, y muy espeecialmente, en su capacidad de integración y de exxtensión. v quee completaa el soportee para múlltiples plataaformas, faacilita el Es la versión trabajo en equipo, lleva la exp periencia deel desarrollaador a un niv vel superiorr manejar dee manera más m amigabble aplicaciones empreesariales Permitee crear y m mucho más compllejas. “El objjetivo de GeneXus G es (a través de la descrripción de las visioness de los usuario os) conseguiir un muy buen b tratam miento autom mático del conocimient c to de los sistemaas de negocioos.” BreogánnGonda& Niccolás Jodal GeneX Xus es una hherramienta que parte de d las visionnes de los usuarios; u caaptura su conocim miento y loo sistematizza en una base de coonocimientoo. A partir de esta, GeneX Xus es capaz de diseeñar, generrar y man ntener de manera tottalmente automáática la estruuctura de la base de dattos y los proogramas de la aplicacióón. Ilustraación 2 CAP. II I –Integración n y Extensión de d GeneXus X Ev1 Fuente: Libroo_Genexus_x_episodio_uno_ _2da_ed.pdf - 322 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II GeneX Xus desde suus principio os ha venido manejanddo el conceepto de una base de conocim miento, quee inicialmeente tiene asociado a unn conjunto de mecanissmos de inferenncia y algunnas reglas de aplicacción generaal, como laas que asegguran la consistencia. Ilustraciión 3CAP. II –Mecanismos – d inferencia y reglas de apliccación de Fuente: Libroo_Genexus_x_episodio_uno_ _2da_ed.pdf “GeneX Xus trabaja permanenttemente sobbre la Basse de Conocimiento. Todo el conocim miento de laa Base de Conocimient C to es equivaalente al coontenido dell Modelo Externo o (subconjuntto de ella), ya y que consisste en el proppio Modelo Externo E máss reglas y mecanissmos de inferrencia indeppendientes dee él y un conj njunto de otrros elementoss que son automátticamente innferidos a partir del mismo. Ell desarrollaador puede alterar, modificaando objetoss de la realiddad del usuaario, el Moddelo Externo y las modifi ficaciones se propagarán autoomáticamentee a todos loss elementos que q lo necessiten: otros eelementos ase de Datoss y programaas de la apliicación. De la misma de la Baase de conoccimiento, Ba manera,, el desarroollador no puede alterrar directam mente ningúún elemento que no pertenezzca al Modeelo Externo” ”… TODO eel conocimiento está conntenido en el Modelo Externo o y, por ello, mañana pod dríamos sopoortar la Basee de Conocim miento de unaa manera totalmennte diferentee y el conociimiento de nuestros clien ntes seguiría a siendo utiliizable sin problem ma alguno”. BreogánnGonda& Niccolás Jodal ”Es neccesario un ddramático auumento de productivida p d (en el dessarrollo de sistemas) s pero la productividdad de los leenguajes de programaciión ha llega ado hace ya bastante ductividad tiempo a una estabilización”… “¿Cómo lograr, entoncces, el aumento de produ n Haaciendo desarrrollo basaddo en conocim miento y no en e programaación: ¡la que se necesita? soluciónn es describir en vez de programar!” p ”. BreogánnGonda& Niccolás Jodal Beneficcios Princip pales La emp presa Artechh ha queridoo mejorar muchos m aspeectos en GeneXus con el fin de satisfaccer las necesidades quee se van preesentando enn el transcuurso del tiem mpo para ello con n versión X Evolution de GeneXuus se plasmaan los siguieentes benefiicios. Tiempo reecord en la implemenntación del conocimieento del neggocio en solucioness informáticcas - 333 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Validaciónn de los reqquerimientoss usando pro ototipo en la etapa de diseño d Análisis del d impactto y actuaalización au utomática en los programas generados diante Maximizaar los resultaados de la empresa med o Inttegración coon sistemas “Legacy” o Im mplementación de poderrosas soluciiones de Buusiness Intellligence, Woorkflow, y acceso a a dattos Win o Web. W o Perrmite Exploorar todo el potencial de d los Web Services S basados en XM ML Uso del KnowK how de la emprresa para el desarrollo de las apliccaciones críticas. d seerá el encarggado de dessarrollar el negocio n El departaamento de desarrollo Ahorro siggnificativo de dinero ya y que no es necesario la capacitaación del personal en e lenguajess específicoss. GeneXus X no da cabbida a que la l empresa quede atrappada en plattaformas obsoletas Potencia la l productivvidad de loos programaadores graccias a que su s uso y aprendizajje es fácil. GeneXus X incorporra varias caaracterísticaas, un editoor wiki y ambiente a multiusuarrio, que faciilitan la inteegración de todo el equuipo de trabajo. Cara acterísticaas. » DevelooperExperiience Laa versión X Evolution, permite que la applicación este e potencciada en dinnamismo e interaccióón para consultar la informació ón, menorees tareas adm ministrativaas, una inteerface más enriquecidaa, un debuggger integraado y la posibilidad dee desarrollarr sin inconvvenientes pro oyectos de gran g tamañoo. » Team Developmeent Unno de los problemas más com munes en el e desarrolllo de apliccaciones infformáticas siempre s ha sido y hasta ahora ess el trabajo en equipo, por esa - 344 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II razzón GeneXuus ha puesto énfasis en e reducir esa problem mática exisstente en toddas las emppresas, por tal t razón see afirma quue con la veersión Evolution de GeeneXus es mucho más m simple trabajar enn equipo, colaborar c y recibir collaboracionees gracias a GXservver y Chaange Defennder, que proveen meecanismos de d integraciión y propaagación de cambios seeguros, conoocidos y fácciles de usarr. » Entrep prise Levell Applicatioons El crecimientoo del mund do web, el mercado m infformático que q año a añño se ha c solu uciones es realizar idoo fortalecieendo dan paso a exxigencias cuyas traansacciones Online, debido a este temaa GeneXuus X brinda más connocimiento y más teecnología para p crear de forma mucho m más fácil apllicaciones worldclass w q aprovecchen todas laas ventajas de la web 2.0 que 2 y que se adapten a laas exigenciaas del mercaado. » Comp pleteness Al soporte paara web, see suman generadores para p GUI, iSeries y Windows W Moobile. Tambbién se inccorporan edditores para: Work Panels, P Mennu Bars, Meenus y Textt Mode Reports. » Standaard routinees publisheed GeeneXus Evoolution perrmite a los desarrolladdores revisaar el códigoo fuente com mpleto de las aplicaciiones generradas, esto recibe el nombre n de “rutinas esttándar” con la excepcióón de los lennguajes inteerpretados como c es Rubby. » Docum mentando desde d dentrro Laa documentaación es un proceso p muuy importan nte en el desarrollo de cualquier c tipo de aplicacción softwaare mentación inntegradas a la KB. GeeneXus conntiene funciionalidades de docum Doocumentos, archivos, diiagramas, objetos o puedden estar tod dos - 355 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Intterrelacionaados mediaante links, fácilmentte accesibles por cualquier c miembro del equipo. La documentaación es acttiva e integrrada, constiituyendo w un verdadero wiki. Ilustración 4 CAP. III – Imagen del sector de docu umentación intterna » Files xto que sirvan de Estta propiedaad permitee almacenaar documenntos de tex infformación, o manuales.. Ilu ustración 5 CA AP. II – Imagen n del panel de Files externos.. Unna propiedadd muy impoortante de los IDE de desarrollo d e el contar con una es venntana que refleje r gráfficamente laas relacionnes entre taablas de la base de dattos lo que loo conocemo os como Inteegridad Refferencial Ilustración n 6 CAP. II – Imagen del pan nel de relaciones entre transaacciones. Enn este tipo dde diagrama, la punta siimple de la flecha reprresenta la exxistencia de una instanccia de la tabbla apuntadda para cadaa instancia de la otra; es e decir: parra cada ciudad existe sólo un país; Reccíprocamentte, la puntta doble de varias innstancias, es reppresenta la ocurrencia o e decir: parra cada paíss existen mu uchas ciudaddes relacionnadas; para cada ciudadd muchas attracciones. - 366 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II » Determ minando un n Atributo Identificad dor como Autonumbe A er Laa función Autonumber A r provee la facilidad d necesaria por ejempplo para traabajar con los l atributoos Primary Key numééricos sobree los DBM MSs que sopportan esta funcionaliddad. Solucioonando la manera m antigua de trabbajar con genneradores automáticos a s de atribuutos clave,, la cual es e con el uso de pro ocedimientoos almacenaados. Toodos los objjetos de GeeneXus conntienen prop piedades qu ue afectan tanto su apaariencia com mo su comp portamientoo. - 377 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II PATTE ERNS (PATRONES) Definición Loos Patterns son s una proopiedad de GeneXus que q se pued den implem mentar en lass transaccioones de la KB, K como objetivo o tieene crear en n forma auttomática toddos los objeetos necesarrios para prroveer variaas funcionallidades reduundantes en las transaccciones de un na aplicacióón. d conocimiiento. O Unn Pattern ess un generaador de coonocimientoo a partir de tam mbién lo puuede definir como una funcionaliddad que perm mite autom matizar lo auttomatizado.. Los Paatterns son muy potenttes; evita quue se deba crear manuualmente obj bjetos; se puede crear patronnes de acueerdo a la nnecesidad dee cada orgaanización o usuario ndolos a las l necesiddades del negocio. Introducen I un alto nivel n de adaptán producttividad y geeneran apliccaciones dee calidad, coon interfacees más unifoormes, y una lóggica consisteente. Es muyy común teener en lass aplicacionnes formulaarios que sean s muy similares s aunquee no sean loo mismo, pero p compaarten muchaas cosas en n común, coomo son conjunttos de datos para filtraar, la red, oordenacionees, accioness, podemos también crear menús, m las ventanas de mantenimieento, e incluuso los Patteerns son cappaces de cargar en la aplicaación bases de conocim miento com mpletas y haacer que loss nuevos objetoss interactúenn con dich ha base. Perro lo más importante i es que tennemos la posibiliidad de m modificar dichos d objeetos generaados, e im mplementar nuevas funcionnalidades a los patroness existentes y/o desarro ollar nuevoss patrones. Los Paatterns puedden ser la solución s máás óptima cuando se quiere miggrar una aplicación Win a Web. W Podemos pensar al Pattern coomo una mááquina, cuyaa entrada ess una transaacción (y la KB) y cuya salida es un conjunto de nuevos objjetos GeneX Xus (algunoos de los m cambioss en algunaas propiedaddes de la cuales mostramos antes en ejecución), más KB, más m la propiia transacciión modificcada con toodo el conj njunto de fuunciones - 388 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II necesarrias para ell funcionam miento en conjunto c dee la transaccción y loss objetos creadoss con la KB B. Ilustracción 7 CAP. II – Pattern com mo una máquin na de procesam miento Caaracterísticcas Dinamism mo entre laa transaccióón y el Patttern Todos los objetos qu ue son geneerados por los Pattern ns son creaados con on represenntados por los siguientees íconos, en e donde partes por defecto y so c parte deel código quue es necesaario en un objeto. o se encuentrra alojado cada Ilustracióón 8 CAP. II – Menú en de elementos e de un n objeto en GeeneXus La aplicaciión basada en las partees predefiniidas proporcciona el dinnamismo entre la transacción y el Patterrn. Cuando cambia unna propiedaad en la nstancia o hace un definición del Patternn, agrega unn nuevo filltro en la in cambio en la Transaccción, todos los objetoos generadoos por los Patterns a cambio sin s la neceesidad de volver v a reaccionaráán automátticamente al aplicar el Pattern. Auunque en muchas m ocaasiones es necesario volver v a P a la transacción t cuando estaa haya sufriido algún caambio. aplicar el Pattern Para lograrr una verdaadera autom matización, el Pattern permite p reaalizar las acciones prropias de unna transacciión como soon Insertar, modificar, eliminar y visualizarr. Personalizzación: cadda instanciaa de un Patttern puede ser modifiicada de acuerdo a los l requerim mientos del negocio, n es decir se pu uede agregarr nuevos filtros, ordeenamientos, ocultar o visualizar v attributos de las l transaccciones. Configuraación: los Paattern tienenn un archivo o que config guración geeneral en el que se puuede cambiar ciertas prropiedades de los objettos. - 399 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Adaptabiliidad: debiddo a que el funcionamiiento de loss Pattern see basa en plantillas se s puede acceder a al código c de estas para poder moddificar o agregar nueevas funciones sobre loos objetos que q son creaados por el Pattern. P Inclusión de otras KB: K los Paatterns perm miten que en e su conteenido se puedan inccluir bases de conocim miento com mpletas quee pasaran a formar parte de la KB en la quue se está trrabajando. Si bienn es ciertoo los patteerns son usados paraa KB en ambientes a W Web, la program mación de uno de ellos e no requiere quee el códigoo sea basaado para aplicaciones Web,, además quue se puede obtener loss mejores beneficios b yya que se utilizarrá la misma plantilla paara la creaciión de una pantalla p web y esto se reflejará en el asspecto visuaal y uniform midad en toddos los objetos creados por los pattterns. Los paatterns estánn enfocadass específicaamente paraa el desarro ollo de apliccaciones Web poor esta razóón se puede ver la diferrencia en deesarrollar unna aplicacióón Win y una apllicación Weeb. Los paatrones perrmiten que se hagan constantes cambios sobre s elloss lo que conllev va a que las aplicaciones informátticas futurass cada vez requieran r d menos de tiempo para ser construidas c debido a que los Paatterns cadaa vez tendrrán más funcionnalidades, laa capacidadd de incluir partes p o basses de cono ocimiento coompletas en un Pattern coomo por ejemplo e unn módulo de d seguridaad permite que el desarro ollador de laa aplicaciónn no tenga que q preocupparse sobre la l manera en e que se manejee los aspectoos de seguriidad en la applicación. Los paatterns estánn construidos en el leenguaje C#,, y se geneeran a partiir de los ensambblados que proporcioona GeneX Xus para recuperar la informacióón de la transacción. Ademáás se proveeen librerías que dotan los l tipos dee objetos, tippos de datoos que se definenn en GeneX Xus, y a paartir de estaas se crea un u proyectoo desarrolladdo en el lenguajje C#, los Templates T t también se generan a partir p de lo os ensamblaados que proveenn la informaación de la transacción t n y de los obbjetos de GeeneXus. - 400 - INTRODUCC CIÓN TEÓRICA – CAPÍTULO II Uno dee los princiipales inconnvenientes que se enccuentran a la l hora de elaborar patronees es la maanera en la que se deeclararán vaariables y objetos o debbido a la escasa informacióón existentee sobre la forma f de uttilizar las liibrerías quee provee Xus. GeneX En el Anexo A de construcción c n del Patterrn WWEtappa se detalllará más a fondo f la forma de crear vaariables a partir p de atrributos, decclaración dee variables con los tipos de d datos dee GeneXus, el uso dee dominios, creación de d los webb panels, insercióón de eventos, reglas variables v en el proyectoo en C# y enn las plantilllas. Ventaajas y Desvventajas Veentajas: Tiemppo de Prograamación sum mamente coorto, si se desarrolla d unn Pattern para el que implemente i e todas laas funcionaalidades necesarias n funcionamiento correcto c dee los objettos de la KB, K el tieempo de r de foorma notablle. prograamación se reduce Unificcación de Esstándares y Formatos entre e todas las aplicaciones de una orrganización.. Generaación autom mática de cóódigo, el Paattern generra automátiicamente el códdigo necesarrio en cadaa objeto quee se crea a través del Pattern, manejaando los atrributos y noombres prop pios de cadaa transacciónn. Deesventajas: El dessarrollo de Patterns requiere de un u profundoo análisis sobre s las libreríaas de GeneX Xus que prooveen los objetos o e infformación necesaria n de la trransacción para p generaar una Patterrn. Falta de d herramientas de apoyo para el desarrollo d d Patterns. de Escasaa documentaación sobre el desarrollo de Patterrns. - 411 - C CAPÍT TULO O III PROG P GRAM MACIIÓN DEL D PA ATTE ERN PRO OGRAMACIÓN – C CAPÍTULO III CAPÍTU ULO III– PROGRA P AMACIIÓN DEL L PATT TERN MICRO OSOFT VIISUAL ST TUDIO 2008 2 Visual Stuudio 2008 es e una herraamienta quee tiene com mo propósito o ofrecer faccilidades para la caaptura y annálisis de in nformación, dándoles un u trato adeecuado a esttas, para así brindaar soporte al desarrolllo de apliicaciones, para p así ob btener los mejores resultadoss en el mannejo adecuado de la información n. Visual Studio S 20088 ofrece avances cllave para deesarrolladorres en funcióón de los sig guientes trees pilares: Desarrollo D ráápido de aplicaciones Colaboración C n eficiente entre e equipoos In nnovación en e experiencias de usuaario MICRO OSOFT .N NET FRAM MEWOR RK .NET Fram mework prooporciona un u entorno dde ejecución n administraado, un desarrollo e implemenntación simpplificada y la l integracióón con una gran varieddad de lengguajes de programacción. Proporcionnar un entoorno gráficco de proggramación orientada a objetos, para los distintos lenguajes de progrramación que q soporrta. Ademáás provee a los programaddores herraamientas quue facilitann y agilitann el proceso de obtennción de informació ón y el desaarrollo de programas. p N Nombramo os algunas de d las bondaades que brinda Microsoft Visuual Studio. Offrece un enttorno de ejecución de código que e fomente la l ejecuciónn segura del d mismo. Pro oporciona uun entorno de d ejecuciónn de código o que elimin ne los probllemas de reendimiento de los ento ornos en los que se utiliizan secuenncias de com mandos o inntérpretes dde comandoss. Offrecer al pro ogramador una u experiencia cohereente entre tipos de apliccaciones muy m diferenttes, como laas basadas en e Windowss o en el Weeb. Ba asa toda la comunicacción en esttándares del sector paara asegurarr que el código de .N NET Framew work se pueede integrar con otros tiipos de código. - 433 - PRO OGRAMACIÓN – C CAPÍTULO III MICRO OSOFT VIISUAL C# C C# es un lenguaje l de programación que tom ma las mejorres caracterrísticas de leenguajes como Vissual Basic, Java, C++ y los com mbina en unno solo, utiilizando de manera adecuada el uso de reecursos harrdware, al ser s un lengu uaje hibridoo que está eenfocado ogramaciónn orientada a objetoss se ha co onvertido en e un lengguaje lo en la pro suficientem mente potennte para construir aplicaciones sooftware capaces de adm ministrar procesos de d negocios de cualquieer tipo de em mpresas. - 444 - PRO OGRAMACIÓN – C CAPÍTULO III ANÁLISIIS DEL PA ATTERN El Patternn como tal es e un sistem ma que interaactúa directtamente con n otro consttruido en GeneXus con el proppósito de construir c más objetos que dotaránn de una lóógica de miento al sisstema. funcionam El Patternn está constituido por otros o sistem mas o partess de sistem mas desarrolllados en GeneXus, La empresa Artech provee el pproyecto WorkWith, W el mismo que q está #. El proyecto basa su potencial p desarrolladdo en el lennguaje de prrogramaciónn Visual C# en la impo ortación dee las libreríaas que dotaan de la infformación del d o de loss objetos transacció ón que son afectadas por el Patttern y a paartir de estee proyecto con los archivos de d especificcación y con n los Tempplates se coonstruyen loos objetos GeneXus G que pasaráán a formar parte de la base de connocimiento. El análisiss estará bassado en la im mplementacción de un módulo de seguridad que será acoplado a la base dee conocimiiento y meddiante el Paattern se harrá la generaación del código y objetos o neceesarios paraa el funcionaamiento ópttimo del Sisstema. El análisis del móduulo de Seg guridad se detalla en el Anexo B “MODU ULO DE DAD PARA A EL SIGE ECOM DE E ETAPA EP”. ESPE ECIFICACIIÓN DE SEGURID REQUER RIMIENTOS S (ERS). Siguiendo ell formato dee la empresa ETAPA EP. E DISEÑO DEL PATT TERN El diseño del móduloo de seguridad esta detaallado en el Anexo C “D DISEÑO DEL O EN BASE E AL DOCU UMENTO ERS”. E MODULO - 455 - PRO OGRAMACIÓN – C CAPÍTULO III PROGRA AMACIÓN N DEL PAT TTERN WWEtap pa. El Patternn WWEtapa es el objetiivo en la quue se centra el desarrollo de este pproyecto, ya que a partir de esste se crean n las distinttas aplicaciiones clasess y Templates que agregarán la funcionalidad requuerida a las aplicacionees construid das en GeneXus. A e lenguaje C Sharp ell Pattern acccederá a loos ensamblaados que través del proyecto en proveen laas clases neccesarias paara trabajar sobre s los ob bjetos GeneeXus. GeneXus X Evolutioon 1 Platafo orm SDK El Platafo orm SDK de d GeneXuus es una herramienta h a desarrollada por Arttech que provee lass librerías addecuadas paara el desarrrollo de Paatterns mediiante la herrramienta Visual Stu udio en las versiones v 20005 y/o 20008. El SDK tiene probleemas de insstalación coon la versióón Standardd Edition dee Visual Studio yaa que estass no proveeen el sopoorte necesaario para laa instalacióón de la herramien nta SDK. Una vez que q se haya realizado laa instalaciónn exitosa deel SDK se creará c en la bandeja de Visual Studio un icono que permite la construcción de Patteerns y Packkages de GeneXus. Ilustración 9 CAP. IIII – Panel EN V Visual Studio con c GeneXus SDK. S us X Evolution 1 Plataaform SDK trae como ejemplos e el código del El GeneXu proyecto desarrollado d o en lenguajje C# de loss Patterns WorkWith W y Category. - 466 - PRO OGRAMACIÓN – C CAPÍTULO III El proyectto sobre el cual se basa el tema de d Tesis es el e WorkWitth Pattern, para p ello debemos escoger e el proyecto p dessarrollado en e Visual Sttudio, ”Artech.P Patterns.WoorkWith ”; de la siguieente dirección. “C:\Program Files (x86)\Artech\GeneXus\GeneX XusXEv1Pla atformSDK\Patterns\ \WorkWith\ \Source ” En el Exp plorador de solucioness podemos observar o toodo el códig go de la solución y entre ellas encontram mos un dirrectorio llam mado Refeerences, enn este direcctorio se encuentran n incorporaadas las libbrerías DLL L, estas libbrerías son las que prooveen la informació ón de la traansacción y las clasees que se utilizan u paraa la declaraación de variables, dominios, sdt s Web Pannnels, proceedimientos, etc. El proyectto genera unn ensambladdo Dll, que es la que see encarga dee hacer funccionar al Pattern cada vez que esta sea apllicada en unna transacciión. Este ensamblado se genera siempre y cuando se haga algúnn cambio enn el código fuente del proyecto enn C#, no mplates. involucra a los Tem La L librería del Patterrn se geneera en el siguiente s directorio.. C:\Program Files\Artech\GeneXus\Gen neXusXEv1P PlatformSD DK\Pattern ns\ WorkWith\Source\obj\Release Siguiendo o el Formatto de ETAP PA EP., se Elaboró unn Documen nto que capptura las instruccionnes más im mportantes del Patterrn, el cuall interactúaa con el pproyecto WWEtapaa, en la obteención de laa informacióón de la trannsacción, y construccióón de los objeto quee interactúann con ella. El anexo D “PATTE ERN WWEttapa.” Detallla el proceeso de consttrucción dell Pattern haciendo énfasis é en laas sentenciaas más relevvantes del código fuentte. - 477 - CAPÍT TULO O IV MIG GRACIIÓN MIGRACIÓN – C CAPÍTULO IV CAPIITULO IV I – MIIGRAC CIÓN El prooceso de migración m deel sistema que q está connstruido en GeneXus 9.0 9 hacia la verrsión X EV1 de GeneX Xus, es un procedimien p nto de costee elevado, quizás q en las versiones v a anteriores esta no presentaba p un grado de confliictividad imporrtante, paraa la converssión a la veersión Evoluution, hay que q tener enn cuenta much hos ámbitoss, como so on cambios de datos, cambios de d sintaxis, etc., la empreesa Artech,, ha innovad do a su prooducto tal es e así, que muchos m erroores que surgirrán en el prroceso de migración m haarán referenncia al cam mbio de la siintaxis y otros en la declarración de vaariables y attributos. DESC CRIPCIÓN DEL PROCESO P O DE MIG GRACIÓ ÓN Preparración de laa Base de Conocimien C nto La prreparación de d la base de conocim miento hacee referencia a trabajar sobre la base desde GeneeXus 9, busscando errores, adverteencias, elim minando objetos que no see utilicen etc. e Cabe recalcar r quee si se cuennta con objeetos o sistem mas que estén desarrolladdos en verssiones anteriores a la 9, primeroo se debe convertir c estos objetos a la versión 9 para possteriormente convertirrlos a la veersión X ution. La preparación p de la basee de datos se resume en los doss puntos Evolu siguieentes. 1 Crear un respald do de la KB B Una U forma adecuada de d respaldarr el KB es copiar tod do el directoorio que contiene los objetos. 2 Limpiiar la KB El E procesos de limpiezza implica que a travéés de GeneeXus 9 se eeliminen toodos los modelos m inneecesarios, si se contaara con moddelos que no n serán utilizados u el proceso dee conversiónn tardara, si es que exisste algún moodelo de Backup, B tam mbién se lo debe d eliminnar porque, cuando haablamos de bases b de - 499 - MIGRACIÓN – C CAPÍTULO IV conocimientto grandes el e proceso de d conversió ón puede tom mar muchass horas y sii se produjeera un error nuevamentte se deberíaa realizar toodo el proceso. La L versión X de GeneX Xus no sopoorta modeloos Win, estaa versión fuue creada únicamente ú para el desarrollo d d aplicacioones en am de mbientes Web. W La Versión V Evoolution sopoorta aplicacciones desaarrolladas en n ambientes Win y RPG, R pero no n tiene sopporte para Visual Bassic. Los dirrectorios y archivos que q se debenn eliminar son los siguiientes. Los objetos quee no están siiendo usadoos En ell directorio y subdirectoorios de la KB K los archhivos *.ari y *.00 3 Conveertir la KB a GX X Evvo1 Los L pasos más m importan ntes de este punto del proceso p de migración m soon: Convvertir la KB a GX X Evv1 Resoolver problem mas que se presentan GX G 9.0 Convvertir nuevaamente Se S pude defi finir dos forrmas de miggrar de Gen neXus 9 a GeneXus G X Evo. El primero p que es la conveersión y connsiste en abrrir la Base de d Conocim miento en laa Versión X Evo, y el otro que ess exportar e importar. Si bien es cierto el reesultado sería s el mismo m exiisten alguunas difereencias y también innconvenienttes que se generarían g e ambos prrocedimienttos. Las priincipales en diferencias d son las siguuientes: La conveersión no funciona fu en objetos quue tienen errrores por lo que el proceso se detiene cuando c aparrece un erroor mientras que la impportación puede deejar una partte del objetoo y continuaar con el ressto. La convversión trataa de manteener todo el modelo y las prefferencias estableciidas por el usuario enn la versión n anterior, además a cuaando una preferenccia cambia su valor por p defecto en la nuevva versión, el valor anterior se mantienne en la KB K convertida, cosa que q no se produce cuando se s importa lo os objetos a una nuevaa base. - 500 - MIGRACIÓN – C CAPÍTULO IV En E algunos casos es mejor m exporttar e imporrtar en lugaar de la connversión, por p ejemploo si se trataa de la migración m de d una apliccación com mpleta la conversión seria la oppción más adecuada y la que mejores reesultados presentaría p a final dell proceso, por al p el otro lado si se quiere úniicamente extraer una parte de laa KB (por ejemplo unas u cuantaas transacciones) la exportación e importación es el paaso que se debe seguiir debido a que con mos mucho tiempo. t este proceso ahorraríam Cuando C se haga h una coonversión see mostrará la siguientee barra de pprogreso por p cada tareea a realizarrse. Ilu ustración 10 CAP. IV – Etapas del proceso de migración.. Durante D la conversión c algunos errores o adv vertencias pueden p aparrecer, la innformación se muestraa en las venntanas de saalida y una vez que finnalice la innformación completa de salida se guarddará en unn archivo llamado conversión.log.err, cuanndo ocurre un u error en este proceso o, el detallee de este - 511 - MIGRACIÓN – C CAPÍTULO IV see encuentraa en el archhivo nombrrado, y el paso p a seguuir es correegir este problema p en GeneXuus 9.0 paraa nuevameente reiniciiar el procceso de conversión. La L conversiión es considerada exxitosa cuanndo no hann sido encoontrados errores duraante el procceso, si aparrece algún error este se debe ressolver en GeneXus G 9 y volverlo a convertir. Después D de una conveersión exitoosa la KB está lista para p ser ussada con GeneXus G X ev1, Laa Base de conocimiennto de la versión anttigua es guardada g en un directorrio llamado Backup. A continuaciión se deben n configuraar las siguienntes propieddades en la KB. Data D Store, User, passsword. S es neceesario, estaa propiedadd no es Si convertida ddurante la coonversión dee la Kb. • Seleccionnar el theme correcto es e necesarioo • Estableceer el Masterr Page por defecto d • Analizarr las adverteencias durannte el processo de conveersión Si S se usa el control QuueryViewerr, un processo de conveersión tienee que ser ejjecutado 4 Análissis detallad do Realizar R unaa reconstruccción (rebuilld) de toda la l KB. Realizar R unaa comparaciión de naveggación. Comprobar C l problem los mas de comppatibilidad general. g Una U vez quue la base de conocimiento está lista para su uso en GenneXus X ev1 el siguiente paso es e realizar una BuildA All o ejecuttar directam mente un objeto o princiipal, a contiinuación se debe comp parar el procceso de navvegación de d los objetoos con la veersión anteriior de esta manera se puede obtenner más innformación acerca de algunos caambios intro oducidos en e la versióón actual (n nuevas caraacterísticas, corrección de errores, etc.) y com mo estas differencias podrían p afecctar a la apliicación. - 522 - MIGRACIÓN – C CAPÍTULO IV GENE EXUS X EV1 E CON NSIDERA ACIONES S GENER RALES - Modelo de conversiónn para el Am mbiente o veersión. El conceptto de modello ya no exxiste en Gen neXus X evv1. Los prottotipos y modelos de producció ón se conviierten en unn entorno o en una veersión en función de su sincroníía con el moodelo de disseño. Cuando o todos los modelos m so on sincronizados con ell modelo dee diseño esttos serán converttidos como entornos. Si hay un u análisis de impacto pendiente desde d el mo odelo de diseño para ell: Modello Prototippo/Producciión Prototippo/producciión en y aqquí comparació c ón no hay con el e nuevoss de objetos disseño, el en el modelo Prototippo/Producción será convertido c como un entorno dependiendo d o de la plataforrma y de la base de dattos. Si aquíí está pendiiente un anáálisis de im mpacto desdde el modello de diseñoo para el modeloo protootipo/produccción Y algunoss objetos en el modelo prototippo/producciión son máss recientes que q en el moodelo de disseño Interfaace A diferrencia de GX X X la evollution 1 sopporta no sollo interfacess Web sino también formulaarios Windoows y form mularios de Character C Generaadores El geneerador de Visual V Basicc no es expoortado, los modelos qu ue utilizan a este se converttirán en un generador g d C# que detalla de d el sigguiente mennsaje WARNING G: Model \"VB - Ac ccess\" def fault envi ironment is i not sup pported. Changed dto C# Preferrencias Prefereencias con valores v inváálidos in GX X X EV1 serán s conveertidos con un u valor desconocido. - 533 - MIGRACIÓN – C CAPÍTULO IV Objeto os no soportados Los sigguientes objetos no sonn convertidoos: Objeto os de estilo: a pesar dee no soportaar estos objjetos como en GX X,, cuando converttimos a GX X X Ev1, el estilo será aplicado paara estos objjetos basados en él, durantee el procesoo de converssión. Tambiién la refereencia al estiilo se mantiene para casos futuros, f estoo permite saber s fácilm mente cual objeto estáá basado enn estilos específficos a travéés de la venttana de refeerencia de ob bjetos. Se debbe consideraar que todaas las propiedades moodificadas en e el estiloo no son aplicaddas para connversión dee objetos, en e este casoo las propieedades en el e objeto deben ser s cambiaddas manualm mente Objeto os Privadoos: cambia la visibilidaad de los obj bjetos de lo o contrario tendrá t el siguiennte error ERROR: Privatetra ansaction '<ObjectNam ' me>' FONT TY YPES NO SOP PORTADOS Desde GeneXus X los fonts soportadoss en la ID y aplicacion nes generaddas son restringgidas para las fuentes TrueTypees, las fueentes TruTyypes preserrvan las propieddades cuanndo imprim me, es comoo un WYSIWYG (lo que ves ess lo que tienes) para las im mpresoras. ANÁL LISIS DE E LOS OB BJETOS A SER MIGRADO M OS En prim mera instanncia el pro oyecto plannteaba la migración m de varios módulos m perteneecientes a distintos d sisstemas quee conforman n el SIGEC COM. Debido a la problem mática que se s iba a gennerar al sepaarar los mód dulos, y porr la poca o casi c nula funcionnalidad que se iba a tenner del sistem ma se plantteó migrar todo el moddelo Web del SIG GECOM, laa aplicación del Patternn se realizarrá a los móddulos que presenten p mayor nivel de neecesidad porr parte de laa Empresa. El procceso de migrración del Modelo M Web del SIGECOM se deetalla en el anexo a D “MIGR RACIÓN DE EL MODEL LO WEB DEL D SIGECOM”. - 544 - MIGRACIÓN – C CAPÍTULO IV VALIIDACIÓN N Y VERIIFICACIÓ ÓN DE PATRONE P ES Una vez laa migraciónn y verificacción del funncionamientto del sistem ma el siguieente paso con las pruebas p de verificaciónn en donde se comprobara el funcionamie f ento del Pattern. El Patternn para ser aprobado a no n debe perrmitir errorees de dupliicidad de atributos, a índices, nombres de las tablas etc., e debe ggenerar todo os los objettos para intteractuar con el móddulo de segguridad. El primer paso fue aplicar a el Pattern P en una u transaccción y veriificar que toodos los objetos deel módulo de d seguridad d sean creaados en su totalidad y no generenn ningún error con las l demás taablas del sisstema. Este proceedimiento puede llegar a hacer quee se modifiqque el patró ón. El siguiennte paso a seguir s una vez verificcado la creaación de todos los objjetos del Pattern es el funcionaamiento del sistema intteractuando con el mód dulo de seguuridad. Para llevaar a cabo estas pruebaas se definiieron las caaracterísticaas a ser proobadas y estas se encuentrann detalladass en el annexo E “P PLAN DE E PRUEBA AS DEL SISTEMA A” - 555 - AN NEX XO OS C CAPÍT TULO O IV MIG GRACIIÓN C CAPÍT TULO O III P GRAM PROG MACIIÓN ANEXO A OA ACTA A A DE RECEPCIION E PRO OYEC CTO DE C CAPÍT TULO O IV MIG GRACIIÓN ANEX A XOB ESPE ECIF FICAC CIÓN N DE R UERIM REQU MIEN NTOS S DE S TWAR SOFT RE (E ERS) D DEL Módulo de seguridad para el SIGECOM de ETAPA EP. Especificación de Requerimientos de Software (ERS) Versión 1.1 Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 Historial de Revisiones Fecha Versión Descripción Autor 24/02/2011 1.1 Detalle de los requerimientos para el módulo de seguridad. Patricio Cuenca CMM-N2/PLT01 Universidad Politecnica Salesiana, 2011 Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 Tabla de Contenidos 1.INTRODUCCIÓN ................................................................................ 64 1.1. Propósito ...................................................................................................................... 64 1.2. Alcance .......................................................................................................................... 64 1.3. Definiciones, acrónimos y abreviaturas ........................................................... 64 1.4. Referencias .................................................................................................................. 64 1.5. Visión General del Documento............................................................................. 64 2.DESCRIPCIÓN GENERAL .............................................................. 65 2.1. Perspectiva del Sistema ......................................................................................... 65 2.2. Funciones del Sistema ............................................................................................ 65 2.3. Características de los Usuarios ............................................................................ 65 3.REQUERIMIENTOS ESPECIFICOS ........................................... 66 3.1. REQUERIMIENTOS FUNCIONALES .............................................................. 66 3.1.1. Requisitos Funcionales del usuario .................................................................... 66 3.1.2. Requisitos Funcionales del Sistema ................................................................... 66 3.1.3. requerimientos de funcionalidad basados en casos de uso......... 66 4.1. REQUERIMIENTOS NO FUNCIONALES ...................................................... 68 4.APÉNDICES .......................................................................................... 69 CMM-N2/PLT01 Universidad Politecnica Salesiana, 2011 Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad 1. Versión: 1.1 Fecha: 24/02/2011 INTRODUCCIÓN El presente documento refleja la en referencia al manejo de la seguridad en el SIGECOM de la Empres ETAPA EP, y una propuesta de solución para el manejo de seguridad el que será añadido al Pattern Work With Versión ETAPA EP. 1.1. Propósito Crear una especificación funcional del módulo de seguridad que se implementara en el Pattern Work With, detallando la forma en la que el usuario interactuara con el mismo y la manera en la que el sistema responderá ante las acciones del Usuario. 1.2. Alcance Obtener la especificación de requisitos para el desarrollo del módulo de seguridad. Describir la forma en la que responderá el sistema ante las acciones que realice el usuario. 1.3. Definiciones, acrónimos y abreviaturas TERMINO Pattern (Patrón) DEFINICIÓN Conjunto de funciones similares para cada transacción de una aplicación informática. Acción Formas de interactuar con el objeto, pueden ser insertar, modificar, eliminar, consultar 1.4. Referencias http://www.ingenierosoftware.com/analisisydiseno/casosdeuso.php http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software http://www.galeon.com/zuloaga/Doc/AnalisisRequer.pdf 1.5. Visión General del Documento El presente documento parte con la especificación de los requerimientos de usuario, los cuales se van detallando en funciones que debe cumplir el sistema para el manejo de la seguridad, detallando algunos de los atributos que deben utilizarse obligatoriamente para el funcionamiento correcto y oportuno del módulo de seguridad, es importante proveer la forma en la que se plantea que funcionara el modulo con los usuarios que manipulen dicho modulo para eso utilizamos las plantillas de caso de uso con las cuales se detalla más cuidadosamente el funcionamiento del sistema de acuerdo a los requerimientos plateados al inicio. Todo esto con el fin de que el usuario tenga una visión clara sobre el modulo a construirse y el manejo que debe tener con el mismo. CMM-N2/PLT01 ., 2011 - 64 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad 2. Versión: 1.1 Fecha: 24/02/2011 DESCRIPCIÓN GENERAL 2.1. Perspectiva del Sistema El módulo de seguridad que se implemente en el Pattern Work With Versión ETAPA EP., debe ser capaz de brindar soporte para el manejo de usuarios, perfiles, objetos y acciones. El módulo de seguridad se basara en un método recursivo de asignación de permisos sobre los objetos, es decir, el sistema mostrara en pantalla la descripción de los sistemas siguiendo con los módulos que lo componen para finalmente llegar hasta los objetos qué forman parte de cada módulo y precisamente a cada objeto se le asignara un perfil que posteriormente será validado con el perfil de usuario 2.2. Funciones del Sistema FUNCIÓN Presentación de los listados de: Cuentas de usuarios, Sistemas Módulos y Objetos, Roles, y acciones existentes. Creación del usuario Admin Permitir al usuario Admin dar Mantenimiento a cada uno de los registros del módulo. Asignación de Roles a los objetos y asignación de permisos sobre las acciones a los objetos. Visualizar una ventana de Loggin, y visualización en forma de árbol el listado de objetos. Verificación de los permisos y activación de las funciones a las que el usuario tiene acceso sobre el objeto seleccionado. 2.3. Características de los Usuarios USUARIO CARACTERÍSTICA Admin Acceso a todos los objetos del sistema y a todas las acciones. Usuarios Registrados Permisos limitados según el rol asignado. CMM-N2/PLT01 ., 2011 - 65 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad 3. Versión: 1.1 Fecha: 24/02/2011 REQUERIMIENTOS ESPECÍFICOS 3.1. REQUERIMIENTOS FUNCIONALES 3.1.1. RFU.1 RFU.2 Requisitos Funcionales del usuario Autenticación de los usuarios a través de su nombre de usuario y contraseña. Mantenimiento del Módulo de seguridad y relaciones entre objetos 3.1.2. Requisitos Funcionales del Sistema RFS.1 Creación del Usuario Admin. RFS.2 Presentación de listados, de usuarios, roles, acciones, usuarios que tengan un rol, objetos, y objetos que tengan asignado el rol. RFS.3 Ingreso automático del nombre y descripción de los paneles de mantenimiento de cada transacción que haya sido afectada por el Pattern WWetapa. RF.4 Creación automática del árbol recursivo que muestre los objetos dentro del módulo al que pertenece y los módulos dentro de que sistema están anclados DESCRIPCION DE LOS ACTORES: ACTOR Admin DESCRIPCION Creación de Usuarios, Roles, asignación de roles los usuarios. Mantenimiento de los sistemas módulos y objetos Asignación de permisos sobre los objetos a los usuarios Usuarios del sistema 3.1.3. Ingreso de datos, ingreso a los objetos del sistema REQUERIMIENTOS DE FUNCIONALIDAD BASADOS EN CASOS DE USO Caso de Uso Actores Nº 1. Descripción Mantenimiento del módulo de Seguridad Usuario Admin Configuración de Acciones, Roles, Usuarios, Usuarios y Roles, Objetos Roles y Permisos Flujo de Eventos Básico 1. El Usuario Admin ingresara al sistema digitando su nombre de usuario y contraseña. 2. El sistema muestra el árbol de sistemas modulo y objetos 3. EL usuario Selecciona un objeto 4. El sistema mostrara el panel de mantenimiento del objeto seleccionado 5. El usuario Admin dependiendo podrá ingresar, modificar y eliminar los registros de las tablas del objeto seleccionado. 6. El sistema abrirá la transacción dependiendo del modo en la que el usuario lo invoca Flujo de Eventos Alternativo 2. El sistema muestra el árbol de sistemas módulos y objetos, primero validara que los datos ingresados estén correctos caso contrario mostrara en pantalla un mensaje de error. 4. El sistema antes de abrir el panel de mantenimiento verificara que el usuario sea “admin” en caso de no serlo mostrara una pantalla indicando que no tiene privilegios para acceder a ese objeto. Pre-Condición Post-Condición CMM-N2/PLT01 El usuario admin debe ingresar al sistema pasando por la venta de login. El sistema almacenar los cambios realizados por el usuario. ., 2011 - 66 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 Volumen de Datos Frecuencia Diario [] Prioridad Opcional [] Semanal [] Mensual [] Ocasional [X] Deseable [] Necesario [] Obligatorio [X] Características del Producto Caso de Uso Actores Nº 2. Creación del Usuario Admin Usuario Admin Descripción Creación automática del Usuario Admin Flujo de Eventos Básico Automático [X] Flujo de Eventos Alternativo 1. El usuario ingresara al sistema 2. El sistema verificara que no exista el usuario admin y sus dependencias 3. El sistema creara el usuario admin y la contraseña 12345, 4. El sistema creara el rol admin y asignara este rol al usuario admin. 2. El sistema verifica que no exista el usuario admin y sus dependencias, en el inicio del panel de login (Home) primero verificara por medio de un procedimiento que no exista el usuario admin, si no existe crea el rol admin y el usuario con la contraseña, y almacena en la base de datos, enseguida relaciona la el rol admin con el usuario admin Pre-Condición Post-Condición El usuario admin deberá ingresar al sistema y configurar los sistemas módulos y objetos. Volumen de Datos Frecuencia Diario [] Semanal [] Mensual [] Ocasional [X] Prioridad Opcional [] Deseable [] Necesario [] Obligatorio [X] Requerimientos Especiales RE.1.0 Procedimiento almacenado que verifique la existencia del Usuario Admin, y lo cree si este no existe. Caso de Uso Actores Nº 3. Descripción Ingreso de los objetos creados por el Pattern en el sistema Usuario Admin Ingreso Automático de los paneles de mantenimiento de las transacciones en el sistema Flujo de Eventos Básico 1. Automático [x] 2. El sistema ingresara los objetos obtenidos en el procedimiento en la tabla SMO Flujo de Eventos Alternativo 2 El sistema que por cada objeto que este conste en la tabla SMO, si no lo hay, lo Pre-Condición CMM-N2/PLT01 El Usuario arrancara el sistema, y obtendrá en un procedimiento un listado de los paneles de Mantenimiento existentes. ingresara. Existencia correcta del procedimiento con los datos del objeto. ., 2011 - 67 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Post-Condición Versión: 1.1 Fecha: 24/02/2011 Se visualizara el árbol con los sistemas modulo y objetos. Volumen de Datos Frecuencia Diario [x] Prioridad Opcional [] 4.1. Semanal [] Deseable [] Mensual [] Ocasional [] Necesario [] Obligatorio [X] REQUERIMIENTOS NO FUNCIONALES RNF1 - El sistema debe permitir ser usado de manera intuitiva por cualquier usuario, que tenga acceso a él. RNF2 – El módulo debe evitar realizar actividades d repetitivas con el fin de no tardar más de 3 segundos en el acceso a los objetos. RNF3 – El sistema para su correcto funcionamiento deberá trabajar con el navegador Explorer de Microsoft RNF4 - El módulo estará desarrollado formando parte del sistema SIGECOM y no funcionara como un sistema externo que se maneje en base a consumo de servicios. RNF5 - A cada usuario se le asignará un login y una clave del sistema, los cuales le permitirán el ingreso de acuerdo un perfil determinado. RNF6 – se realizara encriptación para pasar variables entre objetos cuando se requiera. CMM-N2/PLT01 ., 2011 - 68 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad 4. APÉNDICES a) Formatos ejemplo de Entrada/Salida Versión: 1.1 Fecha: 24/02/2011 Caso de Uso Nº1 Caso de Uso CMM-N2/PLT01 Nº2 ., 2011 - 69 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad b) Versión: 1.1 Fecha: 24/02/2011 Problema a ser resuelto La aplicación del módulo de seguridad el Pattern WWEtapa., Proveerá de forma sencilla el manejo de seguridad en el SIGECOM. Dotara al sistema de muchos procedimientos automáticos los cuales evitaran que el usuario interactué en el sistema, la creación automática de objetos reducirá los errores. Aprobación de ERS – Modulo de Seguridad NOMBRES CARGO DEPARTAMENTO Gustavo Patricio Cuenca Desarrollador Ingeniero. Xavier Mejía Director Proyecto CMM-N2/PLT01 ., 2011 FIRMA - 70 - C CAPÍT TULO O IV MIG GRACIIÓN ANEXO A OC DISEÑ ÑO DE EL MODU M ULO DE SEGU URID DAD Módulo de seguridad para el SIGECOM de ETAPA EP. Diseño del módulo de Seguridad en base al documento (ERS) Versión 1.1 Módulo de seguridad para el SIGECOM de ETAPA EP. Versión: Nombre del Proyecto Especificación de Casos de Uso: Modulo Fecha: 24/02/2011 de Seguridad Historial de Revisiones Fecha Versión Descripción 24/02/2011 1.1 Aprobacion del Diseño modulo de seguridad. CMM-N2/PLT01 Autor del Universidad Politecnica Salesiana, 2011 1.1 Patricio Cuenca Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 Tabla de Contenidos 1.INTRODUCCIÓN ..................................................................................................... 75 1.6. Propósito..................................................................................................................................... 75 1.7. Alcance ......................................................................................................................................... 75 1.8. Definiciones, acrónimos y abreviaturas ................................................................. 75 1.9. Suposiciones y Dependencias ....................................................................................... 75 1.10. Referencias................................................................................................................................ 75 2.VISIÓN GENERAL LA ARQUITECTURA ...................................................... 75 3.METAS Y RESTRICCIONES DE LA ARQUITECTURA ............................. 76 3.1DIAGRAMAS EN BASE A LOS CASOS DE USO ..................................... 77 4. MODELO LÓGICO Y MODELO CONCEPTUAL ........................................... 79 4.1 Modelo de Diseño .................................................................................................................. 80 4.1.1 Vista de Capas y Subsistemas ....................................................................................... 80 4.1.2 Capa de Interfaces o Elementos Comunes............................................................ 80 CMM-N2/PLT01 Universidad Politecnica Salesiana, 2011 Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo 1. de Seguridad Versión: 1.1 Fecha: 24/02/2011 INTRODUCCIÓN 1.6. Propósito El presente documento provee una visión general de la arquitectura del módulo, usando diferentes vistas para ilustrar los diferentes aspectos del mismo. También intenta capturar y transmitir las decisiones de arquitectura que sean significantes y hayan sido realizadas en el sistema. 1.7. Alcance Dotar un visión más profunda y clara sobre la manera en la que se implementara el modulo de seguridad, definiendo objetos y formas de acceder a las tablas. 1.8. Definiciones, acrónimos y abreviaturas TERMINO DEFINICION Pattern (Patrón) Conjunto de funciones similares para cada transacción de una aplicación informática. Acción Formas de interactuar con el objeto, pueden ser insertar, modificar, eliminar, consultar 1.9. Suposiciones y Dependencias DESCRIPCION La empresa Etapa proveerá los Themes que se aplicaran en el módulo de seguridad. 1.10. Referencias En ciertas partes del documento se harán referencias al documento de “Especificación de Casos de Uso”. 2. VISIÓN GENERAL LA ARQUITECTURA La arquitectura técnica, del módulo de Seguridad se encuentra dividida en 4 capas funcionales, las que proporcionaran un nivel de información más detallado para la construcción del módulo de seguridad. 1. Capa de Interfaces Comunes 2. Capa de Lógica de negocio 3. Capa de Acceso a Datos 4. Capa de Datos Capa de Interfaces Comunes En esta capa se ubica la parte del sistema que será mostrada al usuario. La misma que será desarrollada en GeneXus X Evo 1. Esta se compilara y generara bajo la arquitectura .NET, produciendo como salidas archivos aspx. Capa de Lógica de Negocio En esta capa se llevan a cabo las operaciones necesarias para ejecutar satisfactoriamente el flujo de trabajo del negocio. Lo hace a través de la conjunción de los objetos usados en las siguientes capas a través del uso de Procedimientos almacenados Capa de Acceso a Datos En esta capa se encuentran las interfaces y las clases que las implementan que se encargan de hacer una invocación a los procedimientos almacenados que se encuentran en la capa de datos. En esta capa, se hace uso de Procedimientos Almacenados y eventos en los objetos. Capa de Datos CMM-N2/PLT01 ., 2011 - 75 - Módulo de seguridad para el SIGECOM de ETAPA EP. Versión: Nombre del Proyecto Especificación de Casos de Uso: Modulo 1.1 Fecha: 24/02/2011 de Seguridad Esta capa provee el almacenamiento persistente de la información necesaria para el sistema, allí se guardan los resultados obtenidos a través del correcto y normal flujo de operaciones, además de la lógica a nivel de datos expresada en procedimientos almacenados. Aquí se hace uso del motor de Base de Datos DB2. 3. METAS Y RESTRICCIONES DE LA ARQUITECTURA Clasificación Descripción Se enfoca a las características de estética y consistencia en las interfaces gráficas Usabilidad Rendimiento Se enfoca con características tiempo tiempo las como respuesta, iniciación y término. Se concentra en las características como pruebas, adaptabilidad, mantenimiento, configuración, Instalación, escalabilidad, y localización. Soporte Consideraciones diseño de de Requerimientos RNF1 - El sistema debe permitir ser usado de manera intuitiva por cualquier usuario, que tenga acceso a él. de Especifica del las diseño opciones para el sistema. Aspectos Generales Especifica los requerimientos de seguridad que deben tener el sistema y sus características generales. CMM-N2/PLT01 ., 2011 RNF2 – El módulo debe evitar realizar actividades d repetitivas con el fin de no tardar más de 3 segundos en el acceso a los objetos. RNF3 – El sistema para su correcto funcionamiento deberá trabajar con el navegador Explorer de Microsoft. RNF4 - El módulo estará desarrollado formando parte del sistema SIGECOM y no funcionara como un sistema externo que se maneje en base a consumo de servicios. RNF5 - A un login y cuales le acuerdo un cada usuario se le asignará una clave del sistema, los permitirán el ingreso de perfil determinado. RNF6 – se realizara encriptación para pasar variables entre objetos cuando se requiera. - 76 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 3.1 DIAGRAMAS EN BASE A LOS CASOS DE USO 3.1.1 CU Nº 1 – Mantenimiento de Modulo de Seguridad Escenario: CU Nº 1 Flujo Básico de Eventos El flujo Básico de eventos será el mismo para el ingreso al sistema de todos los usuarios. El primer usuario que arrancara el sistema siempre será el usuario admin. A partir del primer uso del sistema empezara la configuración automática, para dar paso al usuario Admin a la configuración manual del sistema. Diagrama de Secuencia de Análisis 3.1.2 CU Nº 2 – Creación del usuario Admin Escenario: CU Nº 2 Flujo Básico de Eventos La creación del usuario admin se realiza apenas se ingrese por primera vez al sistema, mediante un procedimiento almacenado el cual se encargara de realizar la verificación de la existencia o no del usuario en el sistema CMM-N2/PLT01 ., 2011 - 77 - Módulo de seguridad para el SIGECOM de ETAPA EP. Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad Versión: 1.1 Fecha: 24/02/2011 Diagrama de Secuencia de Análisis 3.1.3 CU Nº 3 – Ingreso de objetos creados por el Pattern al sistema Escenario: CU Nº 3 Flujo Básico de Eventos El ingreso automático de objetos en el sistema al igual que la creación del usuario admin, se realiza mediante la invocación de un procedimiento almacenado, para que se realice esta operación es necesario que el Pattern haya generado correctamente todos los objetos y haya embebido el código en el procedimiento modInit con la información de cada objeto. Diagrama de Secuencia de Análisis CMM-N2/PLT01 ., 2011 - 78 - Módullo de segurida ad para el SIG GECOM de ETA APA EP. Nomb bre del Proyecto Espec cificación de Casos C de Uso: Modulo 4. de Seguridad Versió ón: 1.1 1 Fecha a: 24/02/201 11 M MODELO LÓG GICO Y MODE ELO CONCEPT TUAL Debido a que el sistema se con nstruirá en la herramienta GeneXus, el modelo lógico y modelo conceptual c án basados en n uno solo, ya a que GeneXus s construye automáticamen nte los formularios que inte eractuaran estará directtamente con la a base de Dattos CMM--N2/PLT01 ., 201 11 - 79 - Módullo de segurida ad para el SIG GECOM de ETA APA EP. Nomb bre del Proyecto Espec cificación de Casos C de Uso: Modulo de Seguridad Versió ón: 1.1 1 Fecha a: 24/02/201 11 4.1 Modelo de Diseño 4.1.1 Vista V de Capa as y Subsiste emas No aplicable es este mo odulo 4.1.2 Capa C de Interrfaces o Elem mentos Comu unes Interfaz para login de Usuarios. Estte es el prim mer objeto que se visualiza ara cuando un u usuario ingresa al sistema. Interfaz para p visualiz zación de sistemas, subsistemas, mó ódulos y obje etos. Una vez que el usuario haya iniciado o sesión corre ectamente se visualizara en n pantalla la estructura e egué los enlac ces a los objettos que desple Interfaz para p manten nimiento de las transacc ciones, esta interfaz será la misma para a todas, lo único que cambiara es los atributos que se visua alicen. Y los campos para rrealizar la filtrración por criterios. CMM--N2/PLT01 ., 201 11 - 80 - Módullo de segurida ad para el SIG GECOM de ETA APA EP. Nomb bre del Proyecto Espec cificación de Casos C de Uso: Modulo de Seguridad Versió ón: 1.1 1 Fecha a: 24/02/201 11 mprueba que el usuario sollicitante tenga a permiso de acceso al Panel de error, se dispara cuando no se com objeto o solicitado CMM--N2/PLT01 ., 201 11 - 81 - Módulo de seguridad para el SIGECOM de ETAPA EP. Versión: Nombre del Proyecto Especificación de Casos de Uso: Modulo de Seguridad 1.1 Fecha: 24/02/2011 Aprobación del Modelo de Diseño – Modulo de Seguridad NOMBRES CARGO Gustavo Patricio Cuenca Desarrollador Ingeniero. Xavier Mejía Director Proyecto CMM-N2/PLT01 DEPARTAMENTO ., 2011 FIRMA - 82 - C CAPÍT TULO O IV ANEXO A OD PATTERN N WW WETA APA PAT TTERN WW WETAPA PA ATTER RN WW WETA APA. CMM--N2/PLT03 Revis sión 28/07/2 2011 PAT TTERN WW WETAPA T Tabla de Con ntenido os 1.INTROD DUCCIÓN ................................................................................... 86 1..1. Prop pósito .......................................................................................................................86 1..2. Alcan nce del Document D to .......................................................................................86 1..3. Defin niciones, acrónimo os y abre eviaturas .................... . ...............................86 1..4. Referencias ..................................................................................................................86 1..5. Visió ón Genera al del Doc cumento ........................................................................86 1..6. Supo osiciones y Depend dencias..........................................................................86 2.D DESARR ROLLO DE D PATT TERNS ................ . ....................................... 86 2..1. Escriibir una descripció d ón del patttern ............................................................87 2..2. Programar el ejemplo establecido ................................................................87 2..3. Archivo Patte ern Definiition.................................................................................87 2..4. Patte ern Espec cification Files. .............................................................................90 2.4.1 Instance e file ........................................................................................... 90 2.4.2 Settings s file .......................................................................................... 104 2..5. Patte ern Temp plates (.dkt) ..................................................................................110 2.5.1. Directivas ............................................................................................... 111 2.5.2. Code Tags. ............................................................................................. 112 2.5.3. Objeto Selection S n ............................................................................... 113 2.5.4. SubLink kAttributes.dkt ................................................................... 119 2.5.5. Objeto View V .......................................................................................... 119 2.5.6. Objeto General. G ................................................................................. 122 2.5.7. Objeto tab t wc ...................................................................................... 124 2.5.8. SubStan ndardVar riables.d dkt ......................................................... 125 2.5.9. Procedim miento ModInit M ................................................................. 126 2.5.10. SubChe eckSecurrity.dkt ................................................................. 127 2.5.11. Permis sos.dkt ...................................................................................... 128 2.5.12. Procedimiento ListProg grams ................................................. 129 2..6. Configuración n de objettos que serán s afec ctados po or los Te emplates. ...............................................................................................................................130 2..7. Edita ar el códig go por defecto de el Instanc ce file....................................131 2.7.1. Clase WWEtapaU W UpdateT Transactiion ..................................... 131 2.7.2. Clase Ac ctionElem ment....................................................................... 134 2.7.3. Clase Pa arameter rElement ............................................................ 134 2..8. Módu ulo de Se eguridad ...........................................................................................134 CMM--N2/PLT03 Revis sión 28/07/2 2011 PAT TTERN WW WETAPA 1. INTRODUCC CIÓN 1.1. Propósito Desarrollar la documentación del código del Pattern WW WEtapa. 1.2. Alcance del Docum mento l cambios,, adiciones y/o y eliminaciones de fun nciones en el e código de el Pattern Detallar los Work Witth, indicar la a forma de recuperar información sobre los objetos generados en GeneXus,, proporcion nar la inform mación sobre e cómo crearr nuevas va ariables, la forma f de ingresar código de eventos para los objeto, construcc ción automá ática de Web b Forms, creación de Rules. 1.3. Definicio ones, acrón nimos y abr reviaturas Work Witth Pattern Template e Specificattion file Xpz 1.4. Trabajar Con C Patrón Plantilla archivo de especificac ción (.patterrn) d archivo qu ue exporta GeneXus G formato de cias Referenc http://wiki.gxtechnic cal.com/comm mwiki/servle et/hwiki?How w+to+Create e+a+New+P Pattern, 010 29/10/20 http://wiki.gxtechnic cal.com/comm mwiki/servle et/hwiki?Pattern+Definittion, http://wiki.gxtechnic cal.com/comm mwiki/servle et/hwiki?Pattern+Templa ate+Syntax, http://wiki.gxtechnic cal.com/comm mwiki/servle et/hwiki?Con nfiguration+ffile, http://wiki.gxtechnic cal.com/comm mwiki/servle et/hwiki?Insttance+file, 1.5. Visión General G del Documento o u guía com mpleta sobre e el Pattern WWEtapa., W para p un rápido entendim miento en Proveer una futuras modificacione m es al Pattern. 1.6. pendencias s Suposiciiones y Dep El Pattern n Work With será modificado y no de esarrollado completame c nte. La modifficación del Pattern Wo ork With se e hará en base b el proy yecto que provee p la empresa Artech. La empre esa ETAPA EP. E proveerá á la herramienta GeneX Xus X Evolution1, y el GeneXus SDK para a el desarrolllo de Pattern ns. DESARROLL LO DE PATT TERNS 2. D o regla gene eral para la construcción c de un Patte ern se debe seguir s las sig guientes tare eas. Como a) b) c) d) Escrib bir una descripción del Pattern. P Progrramar el ejem mplo estable ecido. Crearr el archivo Pattern P Defin nition. Defin nir el Pattern n specificatiion file. Se necesita de efinir cada ob bjeto que ge enerara y que parámetros p t tendrá, existten dos tipos s de cada pa arámetro. i. Instance e Paramete ers. Los Insttance Param meters son lo os parámetro os que el usuario establecerá e e el archivo en o Pattern Ins stance Specification. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 86 - PAT TTERN WW WETAPA ii. General Parameterrs. Son los parámetros que aplica a todos los Instance files (com mmon text, location of gxchart, etc c.), a esto os parámetro os se los definen en e el archivo Settings Sp pecification bir los archiv vos .dkt e) Escrib f) Editar el código por defecto o del Instanc ce file. El có ódigo debe ser amigab ble con el pezar una nu ueva instanc cia del archivo, esta es la parte técnica más usuarrio para emp alta de los patte erns, el cua al normalme ente requierre leer el KB (usando los DLL provistos por el Pattern P tool). Desde Visual Studio se generra un archivo o con extens sión DLL, el mismo que contiene info ormación de lo os archivos de d instancia,, especificac ción y eleme entos de los que está co ompuesto el Pattern. Cada vez que modifiquemo m s alguno de e estos arch hivos, los archivos con extensión .CS o el vo .Pattern es necesariio volver a general el proyecto p y conjuntamen c nte con los archivos archiv modificados copia ar el DLL en las carpetas s a las que pertenecen. p 2.1. Escribir una a descripción del patttern apa, será ca apaz de cons struir los pan neles de man ntenimiento de la transa acción, el El Pattern WWEta mism mo que estarrá asociado al a módulo de e seguridad desarrollado o en GeneXus, el Pattern n además crearra el usuario o admin me manera auttomática, ingresara dire ectamente a la base de datos el link de los paneles de mantenimien m nto de cad da transacc ción afectad da por el Pattern, ementara un n árbol que e visualice lo os sistemas módulos y objetos pa ara el acces so de los Imple usuarrios a través s de él. 2.2. Programar el ejemplo o establecid do Usualmente un Pattern tiene un ejem mplo canónico, para ell Pattern WWEtapa W el ejemplo canón nico puede ser s una base e de conocim miento de un na hacienda,, y el ejemp plo se Demo ostrara el funcio onamiento del d Pattern in nteractuando o con el mód dulo de segu uridad. 2.3. A Archivo Patttern Definition. El arc chivo Patterrn Definition lleva la ex xtensión .Patttern. Es la a configuración principal para la definición de los Patterns, en dicho arch hivo se defin nen los obje etos que cre eara el Patte ern, tiene como o restricción que el nomb bre del Patte ern y GUID deben ser únicos. El arrchivo .Patttern incluye e como prim mer punto la definició ón del patrón bajo la sintaxis (<Def finition></D Definition>). . Como o primer paso se prove ee de un nombre de la instancia de el pattern el cual inicia por una caden na por defec cto seguido del d nombre del d objeto, d dentro de la sintaxis <InstanceName> A c continuación n se deffinen <Inst tanceSpecif fication>. la instancia del Pattern dentro de la sintaxis Es ne ecesario inc cluir en la definición d el archivo Se ettings que contiene los s objetos qu ue serán imple ementados a través de la a instancia dentro d de la sintaxis <Se ettingsSpec cification> > Y uno o de los arch hivos más im mportantes es e el que co orre la implementación o el que inte erpreta el códig go generado o en C# y en n este caso se trata de la librería que q se crea cuando c se co ompila el Patte ern desde el lenguaje C# #. <Defi inition> <Inst tanceName>Tr rabajarCon{0} }</InstanceN Name> <Inst tanceSpecification>WWEta apaInstance. .xml</Instan nceSpecifica ation> <Sett tingsSpecification>WWEta apaSettings. .xml</Settin ngsSpecifica ation> <Impl lementation> >PC.Patterns. .WWEtapa.dll l</Implement tation> <P ParentObject ts> <ParentObject Typ pe="Transact tion" /> /ParentObjec cts> </ finition> </Def CMM--N2/PLT03 Revis sión 28/07/2 2011 - 87 - PAT TTERN WW WETAPA La pa arte del <InstanceName> es e el nombre e que toma la l instancia, enlaza el te exto TrabajarCon y el nomb bre de la transacción, la imagen mue estra la insta ancia del Patttern y los objetos o cread dos: El objjeto asociado con el Pattern (ParenttObject) pue ede ser incluido también como instan ncia si es que este e es una Transacción. T . e el Pattern es aplicado,, son invocad Los o objetos que serán s importtados la prim mera vez que dos en la secció ón Resource es del Patttern Definition, en esta a sección es e posible cargar c archivos que conte engan Bases de Conocim miento completas, así como también objetos inde ependientes. Gene eXus brinda la facilidad de d exportar una base de e conocimien nto o ciertos s objetos de ella a un archiv vo xpz que puede ser descomprimid d do y trae intternamente un archivo XML el cual contiene la definición de lo os objetos, y es este arc chivo el que puede ser im mportando en e cuando se e aplique primera vez el e Pattern por p <Resource es> <R Resource Id= ="Resources" " Version="0 0.8" ="Resources\WWEtapaResou urces.xml"/> > File= Resource Id= ="ResourcesS SDTheme" Ver rsion="0.5" <R ="Resources\WWEtapaResou urcesSDTheme e.xml"/> File= Resource Id= ="ResourcesS SD" Version= ="0.3" <R ="Resources\WWEtapaResou urcesSD.xml" "/> File= Resource Id= ="ResourcesExt" Version= ="0.1" <R File= ="Resources\WWEtapaSegur ridad.xml"/> > ces> </Resourc El priimer archivo o WWEtapaR Resources.xm ml contiene: Dominios s: Las carpe etas: Contex xtManageme end, GeneralWeb y Security Los pro ocedimientos s: Get TabImage, Is sAutthorized d, ListProgrrams, Load dContext, SetConte ext Los Strructure Da ata Type: Context, GridState, ProgramNames, Tab bOptions, TransactiionContext Los WebP Panel: Home eWWE, NotA AuthorizedWW WE, TabbedV View El arc chivo WWEtapaResource esSDTheme..xml es el te ema que se puede aplic car a las aplicaciones SmarrtDevise El arc chivo WWEta apaResource esSD.xml contiene el We eb Panel App pMasterSD El arc chivo WWEtapaSegurida ad.xm; contiene la base e de conocim miento del módulo m de se eguridad, imple ementa el prrocedimiento o IsAuthorize edWWE que agrega nuev vo código para la verific cación de perm misos. Finalm mente la sig guiente secc ción indica los objetos que formara an parte de la transacción. Los tipos de objetos que principa almente se generan g son transaccion nes, atributo os, subtypes, groups, Web Pannels, Pro ocedure entre otros. Es s necesario especificar e e qué planttilla está la lógica de en los o objetos que se construirrán como (rules, ( events, forms, etc.) e Esta es s la parte en e la que interv vienen los Te emplates y se s comienzan a crear ins stancias del proyecto en n C#, en las plantillas encon ntraremos código c C# embebido. e <Object Type="WebPan T nel" Id="Sel lection" Name e="WW{Parent t.Name}" Des scription="W Work With ent.Descript tion}" Elemen nt="instance e/level/sele ection"> {Pare <P Part Type="W WebForm" Tem mplate="Temp plates\SelectionWebForm. .dkt" /> <Part Typ pe="Variable es" Template="Templates\ \SelectionVa ariables.dkt t" /> <P Part Type="C Conditions" Template="T Templates\SelectionCondi itions.dkt" /> <P Part Type="E Events" Temp plate="Templ lates\SelectionEvents.dk kt" /> <P Part Type="R Rules" Templ late="Templa ates\SelectionRules.dkt" " /> </Object> > CMM--N2/PLT03 Revis sión 28/07/2 2011 - 88 - PAT TTERN WW WETAPA Los e elementos de el objeto tien nen los siguientes atribu utos: Type = el e tipo del ob bjeto que va a generar. Id = Identificador de el elemento. Name = Nombre dell objeto gene erado. Descripttion = Descrripción del objeto o genera ado. Elementt = El elemento que pue ede ser visua alizado en la instancia. Part = partes que co onforman al objeto y de eclaración de el Template que intervie ene en la creación de la parte. El Ob bjeto Selectiion es el priimer objeto en crearse y este es el e que presenta una grilla con el listad do de los reg gistros y los botones que e con los que se invoca a la transac cción en sus distintos modo os. < <Object Ty ype="WebPane el" Id="Vi iew" Name= ="Vista{Pare ent.Name}" Element="i instance/ l level/view"> < </Object> El Ob bjeto Vista {Parent.Name e} es el Web Panel Vistta que prese enta la inforrmación en forma f de tabla cuando se selecciona s un registro. El ob bjeto TabGrid es un tab al que se e agrega el detalle de una u transacc ción en una relación maes stro detalle, y muestra nuevamente n una grilla co omo la del objeto Element. < <Object T Type="WebCom mponent" Id="TabGrid d" Name=" "{Element.wc cname}" C Count="*" E Element="ins stance/level l/view/tabs/tab[@type=&q quot;Grid&qu uot;]"> El objjeto ExportS Selection es el procedimiento que re ealiza la expo ortación a Ex xcel de los datos d que se en ncuentran en n la grilla dell panel de mantenimient m to de la transacción. < <Object Type="Proce edure" Id="ExportSe I election" Name="Exp portar{Paren nt.Name}" E Element="ins stance/level l/selection"> < </Object> E El Objeto Ex xportTabGrid d Es un proc cedimiento que q exporta los datos de d la grilla pero p esta v vez de la griilla que se en ncuentra en el Tab detalle <O Object Type= ="Procedure" " Id="Expor rtTabGrid" Name="Export tar{Element. .wcname}" C Count="*" El lement="instance/level/v view/tabs/ta ab[@type=&qu uot;Grid&quo ot;]"> </ /Object> El pro ocedimiento ListProgram ms es el que e obtiene los nombres de e los objetos s Selection a los que se ag gregaran los enlaces que e se visualiza aran en la pa antalla de Us suario. < <Object Type="Procedure" " Id="ListPr rograms" Nam me="ListProg grams" Globa al="true" /> El pro ocedimiento modInit obttiene el nom mbre y descrripción de ca ada objeto Selection, S rec corriendo todas s las instanc cias del Pattern o dicho de otra forma de todas s las transacciones a la as que se aplicó ó el Pattern. < <Object Type="Procedure" " Id="modIni it" Name="mo odInit" Glob bal="true" /> Los o objetos defin nidos en el arrchivo de de efinición se crean c con la siguiente sin ntaxis: TrabajarC ConMedicam mentos (Nombre de la ins stancia) TCMedica amentos (ob bjeto Selectio on). VistaMedicamentos (objeto View). MedicamentosGenera al (objeto Ta ab (General)). CMM--N2/PLT03 Revis sión 28/07/2 2011 - 89 - PAT TTERN WW WETAPA MedicamentosMedicin naPresentacionesWC (ob bjeto Tab (M Medicina Pres sentaciones))). Procedim mientos de ex xportación de registros. Im magen 2.3.1 In nstancia de un Pattern aplicaada a la Transacción y objetoos creados. 2.4. Pattern Esp pecification n Files. stos archivos s se definen los objetos que se van a crear en el Pattern y que q parámettros van En es a ten ner establecid dos por defe ecto 2 2.4.1 Insta ance file Es un n archivo XM ML en donde e se encuenttran definido os todos los nodos que contendrá el e Pattern por d defecto, es decir, d tiene toda la inform mación nece esaria para poder p crear a partir de ella e y con la ap plicación de ciertos pro ogramas (Te emplates) un u archivo XPZ X que es s el resultad do de la aplica ación de un Pattern. El archivo de especificación de instancia a lleva en nombre del Pattern seg guido con la a palabra e XML. “W WWEtapaInsttance.xml”. El Instance e File se encarga de Instance y cuya extensión es consttruir la estru uctura del Pattern, P (tod dos los objettos que este e va a conte ener), es un n archivo XML, asociado a la Transacc ción, dicha estructura e puede ser vis sualizada en n forma de TreeView T en el panel de GeneXus G abriendo el Patttern aplicad do en la tran nsacción y puede p ser modificado ncia de estas s en cada trransacción, se s pueden agregar a más s funciones, botones, para cada instan camb biar nombres s etc. El no odo raíz contiene inform mación general (como el e nombre del Pattern, la l plantilla asociada, a etc.) Hay un no odo ElementtType para cada tipo diferente de elemento en e el archivo o Pattern Instance. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 90 - PAT TTERN WW WETAPA I Imagen 2.4.1.11 Instancia apllicada a una trransacción Roott Node <Patt tern xmlns=" "http://sche emas.genexus s.com/Patter rns/InstanceSpecificatio on/v1.0" Na ame="Work With" " Version="1.0" RootElem ment="instan nce" RootTyp pe="Instance e"> </Patter rn> Es el primer Nod do dentro del d archivo, especifica la a informació ón general sobre s el Patttern, los eleme entos que co omponen el root node so on los siguie entes. Name: El E nombre de el Pattern, que debe ser único para cada c Pattern n Version:: La versión del Pattern. Este núm mero de versión se utiliza para determinar si las instan ncias se generaron con n la versión actual del modelo o uno anterior (para la conversió ón, si es nec cesario). RootElem ment: El no ombre utilizado para el elemento e raíz z de cada arrchivo Instan nce. RootTyp pe: El tipo del d root Element, el cu ual debe corrresponder a una entrada de la colección de ElementtTypes. HelperAssembly: Para algun nas tareas que no pueden se er resueltas s en el patternIn nstance, com mo la imple ementación de d las accio ones, el Patttern puede usar un assembly y (a .Net DLL) que prove ee esta func cionalidad. El assembly debe d contener clases .Net que conforman las interface es. DefaultG Generator: El nombre completo de las clas ses usadas para generrar una menú de instancia por defecto o del Pattern (cuando el e "new" o "new " de la Operación" O opciones se ejecu utan. Debe e pertenece er al Helper Assem mbly y ap plicar el IPatternD DefaultGenerrator. Si no se especifica generado or, las insta ancias se cre earán en blanco y el usuario te endrá que re ellenar manu ualmente. VersionA Adapter: (Opcional) una c clase que impleme enta la interfaz "IPatternVersionAdap pter". utiliza a para convertir instancias de un u patrón entre e las s. versiones clase que interfaz MetadattaManager: (Opciona al) una implementa la "IPatternMetadataMa anager", usada para mantener los metadattos asociados a la instancia D Dentro de es ste nodo se define d el nod do <ElementT Types> </Ele ementTypes>. Y es aquí en e donde c comienza a insertarse to odos los ele ementos que e forman la instancia del d Pattern cada c uno d dentro de un <ElementTy ype></Eleme entType> N No necesariamente deben especificarrse todos es stos atributos s en el Root Node. Nodo os ElementT Type Estos s nodos son usados parra describir el tipo de c cada elemen nto que form ma parte de el archivo Instance. Cada elemento co orresponde a un nodo de d elemento o XML, los componentes s de este ento describ ben, la forma a en la que se s visualizara a en el TreeV View en el panel p de Gen neXus. eleme Name: El E nombre de el ElementTy ype, debe se er único. Caption y Caption nParameter rs: Establec cen el nombre con el cual el no odo será presentad do en el edittor. Se lo pu uede relacionar como un n alias. KeyAttriibute: Un attributo se pu uede seleccionar con lo que indica el e Primary Ke ey de los nodos de e este tipo. Es usado en n el compara ador de insttancia para que coincida a con los nodos correspondientes entre do os instancias. Este valor es opcional. Validato or: Esta clas se será empleada para validar los contenidos c d los nodos de s de este tipo. Deb be estar pres sente Helperr Assembly, y usar la inte erface IPatte ernElementV Validator. Icon: es s el icono usado u para los elementos de este e tipo en ell Instance e editor de GeneXus. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 91 - PAT TTERN WW WETAPA Todos es stos compon nentes descrritos son inc cluidos para la presenta ación del no odo en el editor de e GeneXus. Una vez creado un ElementTyp pe se debe e implementtarlo con funcionalidades u otrro tipo de elementos los s que van a ir formando o al nodo ffuncional. Los elementos que co onstituyen un u ElementTy ype son: Una lista de nodos Atttribute, pa ara describir los atributos de estos elementos. e Una lista a de nodos ChildEleme ent, son ottros ElementType que subordinado os por el elemenTy ype padre. Una lista a de nodos Action, des scribiendo la as acciones personaliza adas aplicables a los elemento os de este tip po en el Tree eView. Nodo o Attribute Los a atributos de escriben al elemento e qu ue aparece en el TreeV View del Patttern atribu utos se visua alizan en una cuadricula llamada pro opiedades. GeneXus. Los Name: Nombre N del atributo. a Type: Da atatype del atributo. a Los s valores pos sibles son sttring, "text",, int, bool, and enum {value1; value2;.} estos e se presentan en fo orma de com mbo. Los po osibles valorres que a un usuarrio se le pe ermite seleccionar. Si un asterisco es incluid do como una opción entonces el usuario será capaz de ingresarr un valor arbitrario. a es ste puede ser usado para pro oponer una lista de valores por defecto, por ejemplo pa ara usar "enum {5, 10,20,*}" como el tipo t de un hipotético Row wsPerPage attribute. a "T Text" es simiilar a un” go el usuario puede ser s capaz de e abrir un editor para ingresar String” sin embarg s líneas o tex xto largo. múltiples Category y, Descrip ption, PretttyName, Visible V (opcionales): Determina D como el atributo se s mostrara en la cuadriicula de prop piedades. Si PrettyName no es espe ecificado, el atributto name es el e que aparecerá en la grilla. DefaultV Value: El va alor por deffecto. Cuand do el elemento que con ntiene el atrributo se crea en blanco, b el atributo tiene este valor. Debe coincid dir con el tip po de datos definido, o se prod ducirá una ex xcepción Serializa ationType: Establece co omo el valorr del atributo o será almacenado en el e archivo XML. (po or defecto co omo un atrib buto XML). Los valores posibles son: default, attribute, a element, innertext, CDATA. C ValidVallues: El nom mbre de la clase se utiliz za para mosttrar un comb bo box para a permitir la selección del valor. Debe perrtenecer al Helper H Assem mbly e imp plementar la a interfaz IPattern nAttributeV ValidValues. GXLink, GXLinkClass: indica que q el atribu uto almacen nara una referencia a un u objeto GeneXus, atributo o dominio pa ara el Id inte erno de este e en lugar del d nombre. De esta forma, sii un objeto o atributo se cambia el nombre de entro de Gen neXus, la relación se mantendrá. NotNull:: Indica que e un valor para el atributo es nec cesario (valiidarlo al guardar un ejemplo). Nodo o ChildElem ment Indica cuales elementos perttenecen com mo hijos del elemento e actual, los atriibutos que tiene este uientes. nodo son los sigu Name: nombre n del child c element en el archivo XML. ElementtType: debe e corresponder a un Elem mentType definido d en el e Pattern. Multiple: puede ha aber varios elementos de este tip po, es decirr, corresponde a un elemento o de una colección. "Añadir / Elimin nar" accione es menú con ntextual se generará automáticamente en el editor de árbol. Optional: El elemen nto es opcional (si es trrue, no se crrea de forma predeterm minada, y puede se er eliminado)). Los eleme entos marcados como múltiples m son siempre opc cionales. Nodo o Action CMM--N2/PLT03 Revis sión 28/07/2 2011 - 92 - PAT TTERN WW WETAPA Defin ne una acció ón personalizada eleme entos del ty ype actual. (en el e menú de contexto) que puede ser ejecutado sobre Name: El E nombre de e la acción presentado en el contexto del menú. Class: La L clase para a ejecutar la a acción, que e deben estar presentes s el Helper A Assembly e implem mentar la inte erfaz IPatte ernEditorCu ustomAction n WWE EtapaInstance.xml Es el archivo qu ue construye e la instancia del pattern WWEtapa a, el desarrrollo de este e archivo enza con la inclusion del nodo Root comie <Pat ttern xmlns= ="http://sch hemas.genexus s.com/Patter rns/Instance eSpecificati ion/v1.0" Na ame="Work With" " Version="1.0" RootElem ment="instan nce" RootTyp pe="Instance e"> A con ntinuacion se e inserta el nodo n <Elemen ntTypes> </ /ElementType es> esta parrte es el cuerpo de la instancia del patttern y dentrro de este cuerpo c se in nsertan los distintos d tipo os de elementos que ndo los nodo os <ElementT Type> </EllementType> > cada uno de estos contrruiran el patttern, utilizan crea el objeto y estos son in nvocados pa ara ir formando la estru uctura dentro del mismo o archivo instance. Elem mentType Instance I co ontiene los atributos a del pattern los mismos que e son visualizados en una grilla g en el Panel P de Gen neXus, hace e referencia a la transac ccion y un nodo Level que q es el que d desplegara todos t los demás elemen ntos. A estos s elementos se los defin ne bajo la sin ntaxis de <Chil ldElement ></ChildElemen nt> ="Instance" Caption="In nstancia Wor rk With" Icon="" <ElementType Name= e"> ChildrenOrdered="False <Attributes> Attribute Nam me="generate eForSmartDev vices" Type= ="bool" DefaultValue="fa alse" <A Description=" "/> Attribute Nam me="updateTr ransaction" Type="enum{Do not update;Only rule es and <A events;Apply WW Style; ;Create defa ault}" Categ gory="Genera al" DefaultV Value="Only rules r and events" /> Attribute Nam me="afterIns sert" Type=" "enum{&lt;de efault&gt;;R Return to Cal ller;Go <A to View;Go to Selectio on}" Categor ry="Navigati ion" Default tValue="&lt;default&gt;" " /> Attribute Nam me="afterUpd date" Type=" "enum{&lt;de efault&gt;;R Return to Cal ller;Go <A to View;Go to Selectio on}" Categor ry="Navigati ion" Default tValue="&lt;default&gt;" " /> Attribute Nam me="afterDel lete" Type=" "enum{&lt;de efault&gt;;R Return to Cal ller;Go <A to Selection}" Categor ry="Navigati ion" Default tValue="&lt;default&gt;" /> </Attributes> ts> <ChildrenElement saction" Ele ementType="T Transaction" Multiple="f false" <ChildElement Name="trans Optional="false" /> l" ElementTy ype="Level" Multiple="true" <ChildElement Name="level false" /> CanModifyCollection="f nts> </ChildrenElemen mentType> </Elem El cód digo plasmado denota la a manera en la que se crrea los elementos principales de la instancia. digo se ve re eflejado dentro del TreeV View de la siguiente form ma. El cód CMM--N2/PLT03 Revis sión 28/07/2 2011 - 93 - PAT TTERN WW WETAPA chilldElement atribuutos Imagen 2.4.1.1 Atribu utos y ChildElm ments de la insttancia del Patttern ateTransacttion genera un Web Forrm por defecto para tod das las trans sacciones El atrributo Upda usada as en la insttancia indica a si se modiificará la TR RN asociada en GX cuando se conso oliden los objettos en GX. Estos s cambios so on: Aplicar ell Theme al fo orm de la TR RN Asociar lo os Web Com mponents Hea ader y Foote er al Web forrm de la TRN N Modificarr o Agregar la regla parm dependiendo de la co onfiguración que se reallice en el Pattern. Agregar el evento After A TRN co on el código o necesario para invocar al Controller de la TRN. L Los atributos s After Dellete, AfterI Insert, Afte erUpdate, realizan r una a acción des spués de h hacer una de e estas opera aciones usan ndo un valor de un archivo de config guración C ChildElemen nt transaction invoca al a ElementTy ype Transacttion C ChildElemen nt level invo oca al Eleme entType Leve el. Nombre de e la TRN>) Transaction (<N q se está trabajando t . Indica cual es la TRN con la que <Elem mentType Nam me="Transacti ion" Caption n="Transacti ion ({0})" CaptionParam C meters="trans saction" Icon= ="icons\tran nsaction.ico" "> <Attributes> ute Name="tra ansaction" Type="refere T ence(Transac ction)" <Attribu ription="Tra ansaction Nam me." NotNull l="true" /> Descr </Attribut tes> <ChildrenElements /> e> </ElementType Elem mentType Transaction define los atributos a na ame que esttablece el no ombre del elemento, e captio on que es el e nombre q que se mues stra en el TreeView y el e captionParrameter que e son los parám metros conffigurables y están defin nidos como atributos (<Attributes ( ></Attributes>) del Elemento. el (<Nombr re de la TRN N>) Leve Se u usan los Level para ag gregar niveles para de esplegar objjetos y cua alquier otro tipo de inform mación. <Elem mentType Nam me="Level" Ca aption="Leve el ({0})" Ca aptionParame eters="name" KeyAttribut te="id" Icon= ="icons\level.ico" Child drenOrdered= ="False"> <Attributes> ibute Name=" "id" Type="string" NotNu ull="true" Visible="fal V lse" /> <Attri <Attribu ute Name="nam me" Type="st tring" Descr ription="Lev vel Name." NotNull="true N e" /> <Attribu ute Name="des scription" Type="string T g" Descripti ion="Level Description." D " /> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 94 - PAT TTERN WW WETAPA </Attribut tes> <ChildrenElements> <ChildElement Name=" "description nAttribute" ElementType e="DescriptionAttribute" " iple="false" Optional="t true" /> Multi "selection" ElementType e="Selection n" Multiple= ="false" <ChildElement Name=" onal="true" /> Optio "view" Eleme entType="Vie ew" Multiple e="false" Op ptional="true e" /> <ChildElement Name=" nElements> </Children </Element tType> Este elemento también t deffine los atributos configurables en n la opción propiedade es, y los v en la siguiente imagen. ChildElement se visulizan Imagen 2.4.1.2 2 Elementtos principaless que forma el Pattern WWE Etapa 1. ChildEllement Des scriptionAtttribute <ElementType Name="Des scriptionAtt tribute" Cap ption="Descr riptionAttribute ({0})" tribute" Ico on="icons\de esc_att.ico" "> CaptionParameters="att <Attributes> Attribute Nam me="attribut te" Type="re eference(Att tribute)" /> <A Attribute Nam me="descript tion" Type=" "string" /> <A </Attributes> ts /> <ChildrenElement > <Initialization> onFrom Type= ="Attribute" " ReferenceP Property= "attribute" <Initializatio iption=Descr ription"/> PropertyValues="descri Initializati ion> </I </ElementType> Toma por d defecto el prrimer atributto no clave de d la tabla base. b Este attributo se utiliza para generarlo como c un link k al View de la Transacciión. El atributo debe ser de e tipo edit, ya y que los links solamen nte pueden generarse g so obre este tipo de cam mpos. No es s posible porr ejemplo, qu ue el atributto esté defin nido como un n combo, también to oma el campo description n del atributto. Estas propiedades se visualizan v en n la ventana de propieda ades de Gene eXus. ection 2. ChildEllement Sele CMM--N2/PLT03 Revis sión 28/07/2 2011 - 95 - PAT TTERN WW WETAPA <Eleme entType Name e="Selection n" Caption="S Selection ({ {0})" CaptionParameters="des scription" Icon="icons\ I \webpanel.ic co"> <Attributes> Attribute Nam me="caption" " Type="stri ing" /> <A Attribute Nam me="descript tion" Type=" "string" Des scription="Description." " /> <A Attribute Nam me="page" Ty ype="enum{&l lt;default&g gt;;&lt;unlimited&gt;;*} }" <A DefaultValue="&lt;defa ault&gt;" /> > Attribute Nam me="isMain" Type="bool" " DefaultVal lue="false" /> <A Attribute Nam me="masterPa age" Type="e enum{&lt;def fault&gt;;&lt;none&gt;;* *}" <A DefaultValue="&lt;defa ault&gt;" /> > </Attributes> ts> <ChildrenElement s" ElementTy ype="Modes" Multiple="false" <ChildElement Name="modes Optional="false" /> ibutes" Elem mentType="At ttributes" Multiple="fal M lse" <ChildElement Name="attri Optional="false" /> meters" Elem mentType="Pa arameters" Multiple="fal M lse" <ChildElement Name="param Optional="true" /> rs" ElementT Type="Orders s" Multiple="false" <ChildElement Name="order Optional="true" /> er" ElementT Type="Filter r" Multiple="false" <ChildElement Name="filte Optional="true" /> ons" Element tType="Actio ons" Multiple="false" <ChildElement Name="actio Optional="true" /> nts> </ChildrenElemen mentType> </Elem El atributo o caption muestra m el tíítulo que ap parece como o subtítulo en e los formu ulario por defecto tom ma la descrip pción de la transacción. t El atributo IsMain sirv ve para establecer como Main a la ap plicación. El atributo Page indica a el número de filas que puede mosttrarse en la grilla. El atributo MasterPag ge lista los Master M Page que q se pued de aplicar a toda t la aplica ación. Este eleme ento Selection es un We ebPanel, y contiene a los s siguientes ChildElemen nt Imagen n 2.4.1.3 Child d Elements y prropiedades dell objeto Selectiion C ChildElemen nt Modes: <Eleme entType Name e="Modes" Caption="Ins: {0}, Upd: {1}, { Del: {2 2}, Dis: {3}" Captio onParameters s="Insert;Update;Delete; ;Display" Icon=" "icons\modes s.ico"> <Attributes s> <Attribut te Name="Insert" Type="e enum{true;fa alse;default t}" iption="Inse ert Mode." DefaultValue= ="default" /> / Descri <Attribut te Name="Upd date" Type="e enum{true;fa alse;default t}" iption="Upda ate Mode." DefaultValue= ="default" /> / Descri CMM--N2/PLT03 Revis sión 28/07/2 2011 - 96 - PAT TTERN WW WETAPA <Attribut te Name="Delete" Type="e enum{true;fa alse;default t}" iption="Dele ete Mode." DefaultValue= ="default" /> / Descri <Attribut te Name="Display" Type=" "enum{true;f false;defaul lt}" iption="Disp play Mode." DefaultValue e="true" /> Descri <Attribut te Name="Export" Type="e enum{true;fa alse;default t}" iption="Expo ort mode." DefaultValue= ="true" /> Descri <Attribut te Name="InsertCondition n" Type="cod de(Expressio ons)" ory="Securit ty" /> Catego <Attribut te Name="Upd dateCondition n" Type="cod de(Expressio ons)" ory="Securit ty" /> Catego <Attribut te Name="DeleteCondition n" Type="cod de(Expressio ons)" ory="Securit ty" /> Catego <Attribut te Name="DisplayConditio on" Type="co ode(Expressi ions)" ory="Securit ty"/> Catego <Attribut te Name="ExportCondition n" Type="cod de(Expressio ons)" ory="Securit ty" /> Catego </Attribute es> <ChildrenEl lements /> lementType> </El Los atributos a son n los modos que se habilitan en el web w panel. Por P defecto están habilittados los modo os, Insert, Update U y Delete, los modos m Upda ate y Delete e se generan cada uno o en una colum mna de la grilla, los mod dos Insert y Export E se ge eneran fuera a de la grilla. Los m modos InserrtCondition n, ExportCondition, Up pdateContio on, DeleteC Condition, evalúan si el usu uario puede desplegar dicha d operación sobre la grilla, si la condición es s vacía la acción está dispo onible para el e usuario ElementTy ype Attribu utes: Es un Level que de espliega todo os los atributos de la tra ansacción a través de e un ChildEle ement, los cuales tienen como parám metro Multiple el valor true. <E ElementType Name="Attributes" Capti ion="Attribu utes" Icon=" "icons\attri ibutes.ico" ChildrenOrde ered="True"> > <Attributes s /> <ChildrenEl lements> <ChildEle ement Name="attribute" ElementType= E ="Attribute" " Multiple=" "true" /> <ChildEle ement Name="variable" El lementType=" "Variable" Multiple="tr M rue" /> </ChildrenE Elements> < </ElementTyp pe> ElementTy ype Atributte <Ele ementType Na ame="Attribu ute" Caption n="{0}" Capt tionParameter rs="attribut te" KeyAttri ibute="attri ibute" Icon= ="icons\attr ribute.ico"> > <A Attributes> <Attribute Name="attri ibute" Type= ="reference(Attribute)" tion="Attrib bute." NotNu ull="true" /> / Descript <Attribute Name="descr ription" Typ pe="string" Description= ="Attribute tion." /> descript <Attribute Name="autol link" Type=" "bool" Categ gory="Link" tion="Automa atically gen nerate links s to other pattern p insta ances for Descript descript tion attribu utes and sup pertypes." DefaultValue D e="true" /> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 97 - PAT TTERN WW WETAPA <Attribute Name="visib ble" Type="b bool" Catego ory="Form" tion="Attrib bute is visi ible (if fal lse, in grid ds the column n will be hi idden, Descript and in tabular t tabs s the attrib bute will be e invisible)." DefaultVa alue="true" /> <Attribute Name="theme eClass" Type e="custom(Th hemeClass)" Category="Fo C orm" tion="Theme class for the t attribut te." PrettyN Name="Class" /> Descript <Attribute Name="forma at" Type="en num{&lt;defa ault&gt;;Text t;HTML;Raw xt with mean ningful spac ces}" Catego ory="Form" Description=" D "HTML format t for HTML;Tex the attr ribute." Def faultValue=" "&lt;default t&gt;" /> </ /Attributes> > ChildrenElem ments> <C <ChildEleme ent Name="li ink" Element tType="Link" Multiple="f false" l="true" /> Optional </ /ChildrenEle ements> Initializati ion> <I <Initializa ationFrom Ty ype="Attribu ute" Referen nceProperty=" "attribute" yValues="des scription=De escription" /> Property </ /Initializat tion> </El lementType> So on los atribu utos que se mostrarán en la grilla. En particula ar para esto os atributos existe la prropiedad Au utolink para a crear link ks automátiicos (a Vie ews, identifiicados mediante su De escriptionAtttribute) en los atributos s en que sea a posible. Lo os links se agregan si Au utolink = true y si no ha ay un link de efinido manu ualmente por el usuario. o o o o o o Atttibute: es el nombre del atributo Auttolink: Autom máticamente e genera link ks a otros Pa attern Cla ass: es el tem ma para el atributo a Description: to oma la descripción del attributo Forrmat: Forma ato para el atributo por defecto d es HTML, puede ser texto en ntre otrros Vis sible: Indica si el atributo o estará presente en la grilla g o será ocultado, se e puede esc coger si será á visible o no o. utos que se utilizarán para p ordenarr la grilla. Si se elige más de un Orders: Son los atribu ara el Orderr se generarrá en un com mbo con tod dos los órde ers seleccionados. En atributo pa las propied dades del atrributo es posible indicarr si el orden se tomará en e forma asc cendente o descende ente con el atributo a asce ending. Se puede cambiar el atributo a por el que se quiere q orden nar con a tra aves de la propiedad p attribute. <ElementType Name= ="Orders" Ca aption="Orde ers" Icon="i icons\orders.ico"> <Attributes /> ts> <ChildrenElement r" ElementTy ype="Order" Multiple="true" /> <ChildElement Name="order </ChildrenElements> <ElementType> ="Order" Cap ption="Order r ({0})" Cap ptionParameters="name" <ElementType Name= con="icons\o order.ico"> KeyAttribute="name" Ic <Attributes> Attribute Nam me="name" Ty ype="string" " Descriptio on="Name of the Order, for f user <A selection." NotNull="t true" /> </Attributes> ts> <ChildrenElement CMM--N2/PLT03 Revis sión 28/07/2 2011 - 98 - PAT TTERN WW WETAPA <ChildElement Name="attri ibute" Eleme entType="Ord derAttribute" Multiple=" "true" /> nts> </ChildrenElemen mentType> </Elem derAttribute e" Caption=" "{0}" Captio onParameters="attribute" " <ElementType Name="Ord te" Icon="ic cons\attribu ute.ico"> KeyAttribute="attribut <Attributes> Attribute Nam me="attribut te" Type="re eference(Att tribute)" Category="Orde er <A Attribute" Description n="Attribute e." NotNull= ="true" /> Attribute Nam me="descript tion" Type=" "string" Cat tegory="Order Attribute" " <A Description="Descripti ion." /> Attribute Nam me="ascendin ng" Type="bo ool" Categor ry="Order Attribute" <A Description="Ascending g Order." De efaultValue= ="true" /> </Attributes> ts /> <ChildrenElement > <Initialization> onFrom Type= ="Attribute" " ReferenceP Property="attribute" <Initializatio iption=Descr ription" /> PropertyValues="descri n> </Initialization mentType> </Elem Filter: L estructurra del Filter se compone de distinttos elemento La os ya que comienza c definiendo sus propied dades y med diante los Ch hilElements, FilterAttributes y Conditions forma su estructura. e Esta seccio on pertenece e a las cond diciones que e se utilizan n cuando se hace un filttro de la informacion en las grilllas. <Ele ementType Na ame="Filter" " Caption="F Filter" Icon n="icons\filt ter.ico"> <A Attributes /> / ChildrenElem ments> <C <ChildEleme ent Name="at ttributes" ElementType= E ="FilterAttri ibutes" e="false" Op ptional="fal lse" /> Multiple <ChildEleme ent Name="co onditions" ElementType= E ="Conditions" " Multiple=" "false" l="false" /> > Optional </ /ChildrenEle ements> </El lementType> <Element tType Name=" "FilterAttri ibute" Capti ion="{0}" Ca aptionParamet ters="name" KeyAttri ibute="name" " Icon="icon ns\attribute e.ico"> Attributes> <A " Type="code e(Expression ns)" Descript tion="Attrib bute or <Attribute Name="name" e to be ente ered by the user and us sed in the conditions." c NotNull="tr rue" /> variable <Attribute Name="descr ription" Typ pe="string" Description= ="Descriptio on." /> in" Type="re eference(Dom main)" /> <Attribute Name="domai ult" Type="s string" Cate egory="Values s" <Attribute Name="defau tion="Defaul lt value. Mu ust be an ex xpression of f the same ty ype of the Descript attribut te/variable. ." /> <Attribute Name="allVa alue" Type=" "bool" Categ gory="Values" " Descriptio on="Add ' option in ComboBox. (Use ( only wh hen the attr ribute is a ComboBox)." C an 'all' DefaultV Value="false e" PrettyNam me="All" /> <Attribute Name="promp pt" Type="re eference(Web bPanel)" Cate egory="Value es" tion="Prompt t object use ed to get th he possible values for this t filter Descript attribut te." /> </ /Attributes> > <C ChildrenElem ments /> </El lementType> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 99 - PAT TTERN WW WETAPA ute El filter attribu on: configurables so toma el nombre e del atribu uto para se er visualizad do, sus parametros Name: Es E la expres sion que ing gresa el usu uario mediante la que se filtran la as tuplas coniciden ntes. Domain:: dominio de e la variable, su uso solo o es con varia ables. Default: debe ser un na expresion n del mismo tipo del atrib buto. allValue: es usado unicamente u c cuando el atributo es un ComboBox.. do para obte ener los posibles valores s para el filtrro. Prompt: Objeto usad Imagen 2.44.1.4 Propiedades del objeto Filter <ElementType < e Name="Cond ditions" Cap ption="Conditions" Icon= ="icons\cond ditions.ico" "> <Attribute es /> <ChildrenE Elements> <ChildEl lement Name= ="condition" " ElementTyp pe="Condition n" Multiple= ="true" /> </Children nElements> </ElementTyp < pe> <ElementType < e Name="Cond dition" Capt tion="{0}" CaptionParame C eters="value e" KeyAt ttribute="va alue" Icon=" "icons\condi ition.ico"> <Attribute es> <Attribu ute Name="va alue" Type=" "code(Condit tions)" Descr ription="Fil lter ition." NotN Null="true" /> Condi </Attribut tes> <ChildrenE Elements /> </ElementTyp < pe> Cu uando se agrega a un nuevo atrib buto a los filtros (con n la opción Select Atttributes), au utomáticame ente es posib ble generar la condición por el mism mo. Para esto o aparece un n diálogo qu ue pregunta si se desea agregar la condición c por el atributo seleccionado. 3. Level View V <Element tType Name=" "View" Capti ion="Vista ({ {0})" Captio onParameters s="descripti ion" I Icon="icons\ \webpanel.ic co"> <Attri ibutes> <Att tribute Name e="caption" Type="code(E Expressions) )" /> <Att tribute Name e="descripti ion" Type="st tring" Descr ription="Des scription." /> <Att tribute Name e="backToSel lection" Type e="bool" Def faultValue=" "true" /> <Att tribute Name e="masterPag ge" Type="enu um{&lt;defau ult&gt;;&lt; ;none&gt;;*} }" /> <Attribut te Name="use eAsSearchViewer" Type="b bool" Defaul ltValue="tru ue" /> </Attr ributes> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 100 - PAT TTERN WW WETAPA <Child drenElements s> <Chi ildElement Name="parame N eters" Elemen ntType="Para ameters" Mul ltiple="fals se" O Optional="fa alse" /> <Chi ildElement Name="fixedD N Data" Element tType="Fixed dData" Multi iple="false" " O Optional="tr rue" /> <Chi ildElement Name="tabs" N ElementType= ="Tabs" Mult tiple="false e" Optional= ="false" / /> < </ChildrenEl lements> < </ElementTyp pe> Imagen 3.1 Elementoss del Objeto Viista Es el ob bjeto que se s invoca cuando se presiona p el link del De escriptionAt ttribute. Cuando se s genera el WWEtapa de d una Trans sacción, auto omáticamen nte se genera a el View para cada tabla subordinad da a la tabla p principal. Para generar los View ws se toman n todas las tablas 1? N directamente d e relacionadas con la s por el ee los siguie entes atribu utos que pu ueden ser configurable c tabla principal pose usuario. q aparece en el formulario debe ser una expresión por lo o general Caption:: subtitulo que es la descripción del atributo. BackToS Selection: Idica si el Vie ew tiene un link a la pag gina Selectio on, por defecto toma el valor true. MasterP Page: indica el Objeto MasterPage M que es usad do en el web panel, porr defecto usa uno definido d en el e archivo de e configuraciión. En el View w se genera an varios Tab bs, cada uno o con la inforrmación de cada c tabla. Cada C Tab tiene uno o o más Web b Components para las tablas relacio onadas. earhViewerr: Establece el objeto Search para asociarla co on la transac cción por UseAsSe defecto establece e el valor v true. Dentro de los Tabs, para p cada attributo que representa r la a tabla, se genera g el link al View de esa ta abla relacionada con el objeto o Selecttion. En la esquina superrior derecha del View, se genera un u link que permite eje ecutar el WWEtapa a del objeto que se está visualizando o. uientes ChildElement: El View tiene los sigu metros con lo os que se lllama al View w, por defecto siempre e crea un Parametters: Parám parámetrro con el Id de d la transac cción. <ElementType Name= ="Parameters s" Caption=" "Parameters" " Icon= "icons\ parameters.ico"> <Attributes /> ts> <ChildrenElement meter" Eleme entType="Par rameter" Multiple="true" " /> <ChildElement Name="param nts> </ChildrenElemen mentType> </Elem CMM--N2/PLT03 Revis sión 28/07/2 2011 - 101 - PAT TTERN WW WETAPA <ElementType Name="Pa arameter" Ca aption="{0}" " CaptionPar rameters="name" con="icons\p parameter.ic co"> KeyAttribute="name" Ic <Attributes> Attribute Nam me="name" Ty ype="code(Ex xpressions)" " NotNull="true" /> <A <A Attribute Nam me="domain" Type="refer rence(Domain n)" /> <A Attribute Nam me="null" Ty ype="bool" DefaultValue D e="true" PrettyName="Nul llValue" /> </Attributes> ts /> <ChildrenElement mentType> </Elem Los atribu utos del Pará ámetro indic can el nombrre del parám metro. El atribu uto null si es e establecid do en false el e valor del parámetro p no puede cam mbiar en el insert (ejemplo si insertas una a ciudad en un Pais, paiisId no camb biar cuando llamas a cción ciudad d). la transac Fixer Da ata: Es el dato que se mostrará en n la parte fijja del objeto, por ejem mplo si se está ejec cutando el V View de una a persona, es e el nombrre de la perrsona. Generalmente coincide con c el DescrriptionAttribu ute, es decirr el primer ca ampo no clave de la tran nsacción. <ElementType Name= ="FixedData" " Caption="F Fixed Data" Icon="icons\fixedData.i ico"> <Attributes /> ts> <ChildrenElement ibutes" Elem mentType="At ttributes" Multiple="fal M lse" <ChildElement Name="attri Optional="false" /> nts> </ChildrenElemen mentType>. </Elem Es el cód digo con el que se cre ea el FixedD Data y aparrtir de este invoca a elementos descritos anteriormente como el Attributes. Tabs: So on todos los datos que se visualizarrán en el Vie ew de un ob bjeto. Por de efecto se genera un Tab para todos los da atos planos de la Transacción (Tab General), y uno por el subordina ado. También se genera a un Tab para cada Transacción relacionada cada nive con la principal. </ElementType> ="Tabs" Capt tion="Tabs" Icon="icons s\tabs.ico"> <ElementType Name= <Attributes /> ts> <ChildrenElement e="Tab" Mult tiple="true" /> <ChildElement Name="tab" ElementType nts> </ChildrenElemen mentType> </Elem <ElementType Name= ="Tab" Capti ion="Tab ({0 0})" Caption nParameters="name" con="icons\w webpanel.ico o"> KeyAttribute="code" Ic <Attributes> Attribute Nam me="name" Ty ype="string" " Descriptio on="Literal to appear in nside <A the Tab." PrettyName=" "Caption" /> > Attribute Nam me="code" Ty ype="string" " Descriptio on="Internal name. Must be <A unique." NotNull="true e" /> Attribute Nam me="descript tion" Type=" "string" Des scription="Tab descripti ion." /> <A <A Attribute Nam me="wcname" Type="strin ng" Category y="Component" Description="Component t Name." Pre ettyName="Co omponentName e" NotNull="true" /> Attribute Nam me="page" Ty ype="enum{&l lt;default&g gt;;&lt;unlimited&gt;;*} }" <A Category="Component" Description= D ="numero de registros por p pagina (only for Gri id "&lt;default t&gt;" /> type)." DefaultValue=" Attribute Nam me="type" Ty ype="enum{Gr rid;Tabular;UserDefined}" <A Category="Component" Description= D ="Type of co omponent" De efaultValue="Grid" /> Attribute Nam me="conditio on" Type="st tring" Descr ription="Condicion para <A determinar si el tab sera s present tado." /> </Attributes> ts> <ChildrenElement meters" Elem mentType="Pa arameters" Multiple="fal M lse" <ChildElement Name="param Optional="true" /> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 102 - PAT TTERN WW WETAPA <ChildElement Name="trans saction" Ele ementType="T Transaction" Multiple="f false" Optional="true" /> s" ElementTy ype="Modes" Multiple="false" <ChildElement Name="modes Optional="true" /> ibutes" Elem mentType="At ttributes" Multiple="fal M lse" <ChildElement Name="attri Optional="true" /> rs" ElementT Type="Orders s" Multiple="false" <ChildElement Name="order Optional="true" /> er" ElementT Type="Filter r" Multiple="false" <ChildElement Name="filte Optional="true" /> ons" Element tType="Actio ons" Multiple="false" <ChildElement Name="actio Optional="true" /> nts> </ChildrenElemen Los ElementTyp pe que se inv vocan son: a que e están defin nidos en la transacción. t Attibutes: los atributes son todos los atributos d acciones s las cuales son s ingresad das en la grillla del View y estas son Update y Acttions: crea dos Dele ete. El elemento Action está definido o con el sigu uiente código o: <ElementType Name= ="Actions" Caption="Act C tions" Icon= ="icons\actions.ico"> <Attributes /> ts> <ChildrenElement on" ElementT Type="Action n" Multiple="true" /> <ChildElement Name="actio nts> </ChildrenElemen mentType> </Elem De e esta manera a es como se s genera la instancia y la creación de los objetos o autom mática al mo omento de aplicar el Patttern a una transacción. de e manera CMM--N2/PLT03 Revis sión 28/07/2 2011 - 103 - PAT TTERN WW WETAPA 2 2.4.2 Settiings file Este esquema lle eva el nomb bre del Patte ern seguido de la palab bra settings con extensión XML, s configura cada uno de d los nodos s que apare ecerán en ell Pattern setttings de dentrro de este se Gene eXus y sus correspondie c entes valore es. Las pro opiedades ge enerales qu ue se aplicaran para todas s las instancias son configuradas den ntro de este archivo. De la a misma forma que el archivo Instance.xml está confo ormado por el root node y los eleme entTypes do onde cada un no de ellos tendrán t defin nidos sus atributos y ch hildElements s si asi lo requiere. Este archivo se puede p visua alizar en form ma de TreeV View en Gen neXus en la sección Pre eferences dentrro Knowledge Base Navigator. <ElementType Name="Co onfig" Capti ion="WW Conf figuracion" ChildrenOrd dered="Defaul lt"> <Attributes /> <ChildrenElements> me="Template e" ElementTy ype="Templat te" Multiple="false" <ChildElement Nam ptional="false" /> Op me="Objects" " ElementTyp pe="Objects" " Multiple="false" <ChildElement Nam ptional="false" /> Op me="Theme" ElementType= E ="Theme" Mul ltiple="false" Optional= ="false" <ChildElement Nam > /> me="Labels" ElementType e="Labels" Multiple="fa M lse" <ChildElement Nam ptional="false" /> Op me="Grid" El lementType=" "Grid" Multi iple="false" Optional="f false" <ChildElement Nam > /> me="MasterPa ages" Elemen ntType="Mast terPages" Multiple="fals se" <ChildElement Nam ptional="false" /> Op me="Standard dActions" El lementType=" "StandardActions" <ChildElement Nam ultiple="false" Optional l="false" /> > Mu me="Context" " ElementTyp pe="Context" " Multiple="false" <ChildElement Nam ptional="false" /> Op me="Security y" ElementTy ype="Securit ty" Multiple="false" <ChildElement Nam ptional="false" /> Op drenElements> > </Child </ElementType> El código mos strado visua aliza la estru uctura principal del Patttern Configu uration y los s objetos qu ue el archivo o WWEtapaIn nstance.xml tomara. I Imagen 4.2.2.11 Vista del Patttern Configurration File EllementType e Template: CMM--N2/PLT03 Revis sión 28/07/2 2011 - 104 - PAT TTERN WW WETAPA Es sta sección aplica a funciones que son n tomadas en n los Templa ates y entre ellas una de e las más im mportantes es e UpdateTransaction, dependiendo d o del template se pued de agregar el e código qu ue invoque a clases que contengan la estructura a que será en ncajada en la transacció ón. <ElementType Name="Te emplate" Cap ption="Templ late" Icon=" "icons\template.ico" hildrenOrdered="Default" "> Ch <Attributes> "UpdateTrans saction" Typ pe="enum{Do not update;Only rules and a <Attribute Name=" vents;Apply WW Style;Cre eate default t}" Descript tion="Defaul lt &quot;Upd date ev Tr ransaction&q quot; value for f instance es." Default tValue="Only y rules and events" /> <Attribute Name=" "SelectionIs sMain" Type= ="bool" Desc cription="Default &quot; ;Is ain&quot; value for Sele ection nodes s." DefaultV Value="false e" /> Ma <Attribute Name=" "TabsForPara allelTransac ctions" Type e="bool" Description="Ad dd abular tabs to the view for paralle el transactr rions." Defa aultValue="false" ta Pr rettyName="Tabs for para allel transa actions " /> > <Attribute Name=" "UseTransact tionContext" " Type="bool l" Category="Navigation" " efaultValue="true" /> De <Attribute Name=" "AfterInsert t" Type="enu um{Return to o Caller;Go to View;Go to t election}" Category="Nav vigation" De escription=" "Default act tion perform med after ins serting Se a record." DefaultValue=" "Return to Caller" C /> "AfterUpdate e" Type="enu um{Return to o Caller;Go to View;Go to t <Attribute Name=" election}" Category="Nav vigation" De efaultValue= ="Return to Caller" /> Se <Attribute Name=" "AfterDelete e" Type="enu um{Return to o Caller;Go to Selection n}" ategory="Nav vigation" Def faultValue=" "Return to Caller" C /> Ca <Attribute Name=" "FixVariable eLoadCode" Type="bool" T Advanced"." Category="A efaultValue="true" /> De </Attributes> <ChildrenElements /> / </ /ElementType> Los a atributos AfterInsert, A , AfterUpda ate, AfterDelete ejecu utan una ac cción luego de d haber realiz zado una de dichas operraciones. ansactionCo ontext: afe ecta a la se ección de eventos e de la transacc ción esta Atributo UseTra ucción retorn na al objeto Selection. instru Elem mentType Objects <ElementType Name="Ob bjects" Capt tion="Object ts" Icon="ic cons\objects.ico" hildrenOrdered="Default" "> Ch <Attributes> "View" Type= ="string" De efaultValue= ="View&lt;Object&gt;" /> > <Attribute Name=" "Selection" Type="strin ng" DefaultV Value="TC&lt;Object&gt;" " /> <Attribute Name=" "Controller" " Type="stri ing" Default tValue= <Attribute Name=" Controller&lt;Object&gt; ;" /> "C "Tabular" Ty ype="string" " DefaultVal lue="&lt;Object&gt;Gener ral" /> <Attribute Name=" "Export" Typ pe="string" DefaultValu ue="Export&lt;Object&gt; ;" /> <Attribute Name=" </Attributes> / <ChildrenElements /> </ElementType> El El El El atributo atributo atributo atributo Vie ew establece e el nombre al objeto vis sta del Pattern. Selection estab blece el nom mbre el Panell de manteniimiento de la a transacción. bular estable ece el nombre para el ob bjeto genera al Tab. Tab Exp port establec ce el nombre e para el pro ocedimiento Export. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 105 - PAT TTERN WW WETAPA EllementType e Theme a Parte Them me hace refe erencia el Th heme que se e aplicara al Pattern, en n esta parte e se pude La es scoger las partes p que conforman c a todo el te ema e irlos aplicando a cada partte de los ob bjetos. En el atributo Th heme en el parámetro T Type se configura el tem ma por defe ecto si es qu ue el tema ya y está incluiido en Genex xus. <ElementType Name="Th heme" Captio on="Theme" Icon="icons\ I \theme.ico" hildrenOrdered="Default" "> Ch <Attributes> "Theme" Type e="reference e(Theme)" De escription="Name of the Theme <Attribute Name=" bject. If not specified, , the Knowle edge Base de efault theme e will be used." /> ob "SetObjectTh heme" Type=" "bool" Descr ription="Set the specifi ied <Attribute Name=" heme as the selected the eme for ever ry generated d object (if f false, the default mod del th th heme will be used)." Def faultValue=" "false" /> "Button" Typ pe="custom(T ThemeClass)" " Category="Theme Classe es" <Attribute Name=" escription="" DefaultVal lue="ActionB Buttons" /> De "PlainText" Type="custo om(ThemeClas ss)" Category="Theme <Attribute Name=" </Attributes> / <ChildrenElements /> </ElementType> EllementType e Labels La a seccion de Labels agregan los titulos a los obje etos generad dos. <ElementType Name="La abels" Capti ion="Labels" " Icon="icon ns\textblock k.ico" hildrenOrdered="Default" "> Ch <Attributes> "GeneralTab" " Type="stri ing" Descrip ption="" DefaultValue="G General" <Attribute Name=" > /> <Attribute Name=" "WWEtapaTitl le" Type="st tring" Descr ription="" efaultValue="Trabajar Co on &lt;Objec ct&gt;" /> De <Attribute Name=" "ViewDescrip ption" Type= ="string" Ca ategory="Default Instanc ce" escription="Format strin ng for View Description n." DefaultV Value="&lt;Object&gt; De In nformation" /> <Attribute Name=" "OrderedBy" Type="strin ng" Descript tion="" DefaultValue="Or rdered y" /> by <Attribute Name=" "AllInCombo" " Type="stri ing" Descrip ption="Caption used for the All ption in com mbos." Defaul ltValue="GX_ _AllItems" /> / op <Attribute Name=" "PreviousTab b" Type="str ring" Descri iption="Tooltip to appea ar in he previous tab button" DefaultValu ue="Previous s Tab" /> th <Attribute Name=" "NextTab" Ty ype="string" " Descriptio on="Tooltip to appear in n the ext tab button" DefaultV Value="Next Tab" /> ne <Attribute Name=" "RecordNotFo ound" Type=" "string" Des scription="Text used on Views hen the requested record d is not fou und in the database." d D DefaultValue t found" ="Record not wh /> > </Attributes> / <ChildrenElements /> </ElementType> WWE EtapaTitle agrega a el no ombre título en el formu ulario, concatena un textto con el nombre del objetto. En el ejem mplo se mue estra el WWE EtapaTitle Mantenimientto Tipo Serviicios. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 106 - PAT TTERN WW WETAPA Imagen 4..2.2.2 Titulo en n el objeto Seleection View wDescription: concate ena el nombrre del objeto o con el texto o Informatio on. AllIn nCombo: esta opción es s usada para todos los co ombos. evious Tab:: son Tooltip p text que aparece a cuando se acerrca el mouse e por los Nextt Tab y Pre boton nes next y previous. Reco ordNotFoun nd: Mensaje que aparec ce cuando no n es enconttrada un reg gistro en la base de datos s. Elem mentType Grid <ElementType Name="Gr rid" Caption n="Grid" Ico on="icons\gr rid.ico" hildrenOrdered="Default" "> Ch <Attributes> "BackColorSt tyle" Type=" "string" Des scription="" DefaultValu ue="3" <Attribute Name=" > /> "CellSpacing g" Type="int t" Descripti ion="" DefaultValue="2" /> <Attribute Name=" "CellPadding g" Type="int t" Descripti ion="" DefaultValue="5" /> <Attribute Name=" "Page" Type= ="string" De escription=" "filas por pagina en la <Attribute Name=" rilla." DefaultValue="Pa age.Rows" /> > gr "SaveGridSta ate" Type="b bool" Descri iption="Remember current t page, <Attribute Name=" ilters and selected orde er in select tion objects s." DefaultV Value="true" /> fi "CustomRende er" Type="cu ustom(GridCu ustomRender)" Descriptio on="Use <Attribute Name=" r rendering grids. Appl lies to all selection and grid tab a custom user control for bjects." /> ob </Attributes> / <ChildrenElements /> </ElementType> Es ste ElemtTyp pe Grid conttiene la estru uctura HTML L de una tab bla por medio de los atributos se de efinen los va alores necesa arios como son s los valorres de CellSp pacing, CellP Padding. Ce ellSpacing establece el spacio entre e celdas. Ce ellPadding establece el espacio inte erno de las celdas. c El atributo Pa age indica ell numero de filas que ap parece en en n la tabla po or defecto vie ene dado el valor Page..Rows que son s 11 filas por pagina. Se puede in ngresar un numero ente ero en el va alor por defe ecto. aveGridState indica si los ordenamientos de e la página actual y filtro os serán gua ardados o Sa no o para el objjeto Selection En nableDisablePaging abilitados cu uando la indica si los botones de página son desha co orrespondien nte acción no o está habilittada. Es stos atributo os se ven refflejados en la a grilla de la siguiente fo orma: CMM--N2/PLT03 Revis sión 28/07/2 2011 - 107 - PAT TTERN WW WETAPA Cellpaadding CellSppacing Imaggen 4.2.2.3 Prropiedades de la tabla del ob bjeto Selection Elem mentType MasterPages M s atributos muestras una lista de los MasterPage M d disponibles para p que pue edan ser apliicados al Los a objetto Selection, Transaction n y View por defecto. <Elem mentType Nam me="MasterPag ges" Caption n="MasterPag ges" Icon="i icons\webpan nel.ico" Child drenOrdered= ="Default"> <Attributes> ute Name="Sel lection" Typ pe="referenc ce(MasterPag ge)" Descrip ption="Master r page <Attribu ct name for selection we ebpanels." DefaultValue D e="" /> objec ute Name="Tra ansaction" Type="refere T ence(MasterP Page)" Descr ription="Mast ter page <Attribu ct name for transaction webforms." DefaultValu ue="" /> objec ute Name="Vie ew" Type="re eference(Web bPanel)" Des scription="M Master page object o <Attribu efaultValue= ="AppMasterP Page" /> name for view webpanels." De tes> </Attribut <ChildrenElements /> </ElementType> Ele ementType e StandardS Selection So on todas las acciones qu ue existen co omo son Ins sert, Update, Delete, dis splay, Exportt, Search y estan definid das como Ch hildElements s. pto la accion Export hace en referencia a al ElementT Type Action. Y todos excep <Element tType Name=" "StandardAct tions" Captio on="Standard d Actions" I Icon="icons\ \action.ico" " ChildrenOr rdered="Defau ult"> <Attri ibutes> <Att tribute Name e="DisabledA Appearance" Type="enum{D T Disabled;Hid dden}" P PrettyName=" "Disabled Ac ctions" Desc cription="Whe ether action ns that are disabled du ue to a c custom secur rity check are a shown as disabled or r not shown at all." D DefaultValue e="Disabled" " /> </Attr ributes> <Child drenElements s> <Chi ildElement Name="Insert N t" ElementTyp pe="Action" Multiple="f false" O Optional="fa alse" /> <Chi ildElement Name="Update N e" ElementTyp pe="Action" Multiple="f false" O Optional="fa alse" /> <Chi ildElement Name="Delete N e" ElementTyp pe="Action" Multiple="f false" O Optional="fa alse" /> <Chi ildElement Name="Displa N ay" ElementTy ype="Action" " Multiple=" "false" O Optional="fa alse" /> <Chi ildElement Name="Export N t" ElementTyp pe="ExportAc ction" Multi iple="false" " O Optional="fa alse" /> <Chi ildElement Name="Search N h" ElementTyp pe="Action" Multiple="f false" O Optional="fa alse"/> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 108 - PAT TTERN WW WETAPA </Chil ldrenElement ts> EllementType e Action To odos los atributos indica an la aparien ncia que tom mara el boton n que es agrregado al formulario, y la accion que realizara cuando c el us suario presione sobre el. El atributo Ca aption indica a que utiliza ara un subttitulo si el boton b no tie ene ninguna a imagen an nidada. <ElementType Name= ="Action" Ca aption="{0}" " CaptionPar rameters="[ElementName]" " o" ChildrenO Ordered="Def fault"> Icon="icons\action.ico <Attributes> Attribute Nam me="Caption" " Type="stri ing" /> <A Attribute Nam me="Tooltip" " Type="stri ing"/> <A Attribute Nam me="DefaultM Mode" Type=" "bool" Prett tyName="Enabled by Defau ult" <A DefaultValue="true" /> > Attribute Nam me="DefaultC Condition" Type="code(E T Events)" /> <A Attribute Nam me="Image" Type="refere T ence(Image)" " Category="Style" <A Description="Image to be used for r the action n." /> Attribute Nam me="Disabled dImage" Type e="reference e(Image)" Category="Styl le" <A Description="Image to be used whe en the actio on is disabl led." /> Attribute Nam me="ButtonCl lass" Type=" "custom(Them meClass)" Category="Styl le" <A </Attributes> ts /> <ChildrenElement mentType> </Elem Elem mentType Co ontext mplementa el manejo del d context, por defecto, la impleme entación inc cluye una Esta propiedad im a &Context basada en la estructurra Context SDT y el procedimient p to y un variable llamada edimiento lla amado LoadContext que e es invocad do en el eve ento Start de d cada Web b Pannel, proce esta característic ca es usada a para guard dar informac ción sobre el e usuario qu ue está cone ectado en el sis stema, espec cíficamente para p la autenticación de el usuario. La a estructura Context SD DT puede ser m modificada de e acuerdo a la necesidad d de cada orrganización. <ElementType Name= ="Context" Caption="Con C ntext" Icon= ="icons\variable.ico" ult"> ChildrenOrdered="Defau <Attributes /> ts> <ChildrenElement extVariable" " ElementTyp pe="ContextV Variable" <ChildElement Name="Conte nal="true" /> / Multiple="true" Option nts> </ChildrenElemen mentType> </Elem ="ContextVar riable" Capt tion="{0}" CaptionParam C meters="Name" " <ElementType Name= ico" Childre enOrdered="D Default" Key yAttribute="Name"> Icon="icons\variable.i <Attributes> Attribute Nam me="Name" Ty ype="string" " Descriptio on="Variable name" /> <A <A Attribute Nam me="Type" Ty ype="referen nce(SDT;Doma ain;Attribute)" Description="Name of the t domain, variable, or o SDT on wh hich the variable is bas sed." /> Attribute Nam me="LoadProc cedure" Type e="reference e(Procedure)" <A Description="Procedure e used to lo oad the vari iable from the t context." /> Attribute Nam me="UseIniti ialValue" Ty ype="bool" DefaultValue D <A ="true" /> </Attributes> ts /> <ChildrenElement mentType> </Elem El atrributo LoadP Procedure comienza c inv vocando al procedimient p to LoadContext El atrributo UseIn nitialValue Usa el valorr inicial para iniciar la variable de contexto Elem mentType Se ecurity CMM--N2/PLT03 Revis sión 28/07/2 2011 - 109 - PAT TTERN WW WETAPA <ElementType Name="Sec curity" Capt tion="Securi ity" Icon="i icons\security.ico" ult"> ChildrenOrdered="Defau <Attributes> Attribute Nam me="Enabled" " Type="bool l" DefaultVa alue="true" /> <A Attribute Nam me="Check" T Type="refere ence(Procedu ure)" Description="Proce edure <A used to check whether access to the t current object is authorized. a If blank, no o check > will be performed." /> Attribute Nam me="NotAutho orized" Type e="reference e(WebPanel)" Description n="web <A panel a ser llamado si i el usuario o no esta au utorizado" /> / </Attributes> ts> <ChildrenElement meters" Elem mentType="Pa arameters" Multiple="fal M lse" <ChildElement Name="Param Optional="false" /> nts> </ChildrenElemen mentType> </Elem ="Parameters s" Caption=" "Parameters" " Icon="icons\parameters s.ico" <ElementType Name= ult"> ChildrenOrdered="Defau <Attributes /> ts> <ChildrenElement meter" Eleme entType="Par rameter" Multiple="true" " <ChildElement Name="Param Optional="false" /> nts> </ChildrenElemen mentType> </Elem ="Parameter" " Caption="{ {0}" Caption nParameters="Name" <ElementType Name= .ico" Childr renOrdered=" "Default" Ke eyAttribute="Name"> Icon="icons\parameter. <Attributes> Attribute Nam me="Name" Ty ype="string" " Descriptio on="Parameter name" /> <A </Attributes> ts /> <ChildrenElement mentType> </Elem La pa arte de seguridad verific ca si el usuarrio está auto orizado para realizar el mantenimien m nto sobre las transacciones s y llama al a Web Panel NotAutho orized en ca aso de que el usuario no esté a mantenim miento de las transac cciones a través del atributo autorrizado para acceder al NotA Authorized. La plantilla as están con nfiguradas para que los objetos verrifiquen si el e Pattern tiene activado la a opción de e seguridad en caso de e no tenerlo no se ap plicaría el có ódigo de verificación de se eguridad en los objetos. 2.5. Pattern Tem mplates (.d dkt) vos compue estos, gene eran una salida con procesamiento Los Templates son archiv ucciones. Dic chas instrucc ciones proce esadas están n desarrollad das en lenguaje C#. instru de Templates (..dkt) genera an la estructtura de los Patterns, P estos archivos s son los encargados Los T de in nsertar el có ódigo y la forma f de los objetos co omo WebPannels, grillas, insertar acciones, a orden namientos, y toda la lógica que el Pa attern implementara sob bre la transa acción. Los P Patterns está án basados en Template es (archivos s dkt). Esto es que en base b a las in nstancias generadas, a la aplicación de ciertos archivos de e configurac ción y a cie ertos Templates, se generan los archivos XPZ que e se podrán consolidar en e GX para generar g más s objetos GX. s archivos to oman el arch hivo XML ge enerado por el Pattern, y los archiv vos de config guración, Estos para generar el xpz x que luego se consolidará en GX. Template me ezclan código C# con el e lenguaje KMW que se e utiliza en GX, de esa forma el Los T texto o de salida que se produc ce (XML corrrespondiente e al XPZ) tie ene código copiado c direc ctamente desde e el Templatte y código XML generado por las se entencias C# #. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 110 - PAT TTERN WW WETAPA Los T Templates so on usados pa ara generar el contenido o por defecto o de una KBO ObjectPart re ecibe por lo me enos dos parrámetros, la KBObjectPa art misma, y la KBObjec ct al que corresponde la parte. El Temp plate inicial declara d estas s dos propie edades usand do la directiv va <%@ Pro operty %>. Por d defecto todos s los Templa ate reciben los elemento os que se se eleccionan lo os element attribute, a si no o están hech has especific caciones en el Elementt Attribute, el elementt root es el que sea recibido en la Tem mplate. La prropiedad de la instancia es recibida como c una instancia gené érica del Pattern. Las p plantillas tien nen sus dire ectivas entre e los delimittadores (<% %@ and %>) el código C# está encerrrado bajo los delimita adores (<% and %>), los resultados pueden n incluir exp presiones delim mitadas con (<%= and %>) cua ales serán copiados c como resultad dos en el tie empo de generación El resultado deb be ser un fragmento de e XML que encaje e con la exportaciión para un formato bjectPart. KBOb 2.5.1. Directiv vas directivas so on utilizadas s por los Tem mplates parra indicar las s clases y/o o archivos que están Las d incluiidos en cada plantilla, para agrega ar código C# C e ir form mando la es structura we eb de los eleme entos. ectiva de Plantillas Dire P Es el encabeza ado que se implementa en todas las plantillas s, propiedades del Template. define de forma general las Templatte Languaje e. Indica el lenguaje bajjo el que esttá construido o el Templatte TargetLa anguage. (lenguaje del d código generado),, y una brreve descrip pción del Template e. Descripttion. Para a agregar una descripción de una plantilla <%@ T Template Lan nguage="C#" TargetLangua T age="GX" Des scription=" " %> Direc ctiva Impor rt Esta a directiva agrega a una declaración empleada en e C# o una a declaración n de importe e para el código del Tem mplate. A lo o largo con el e assembly necesita inv vocar clases C#. El Nam mespace ra de espac cios de nom mbres. En el e que se encuentran indica que importara una estructur incluidas las cla ases C# amespace="P PC.Patterns s.WWEtapa" %> <%@ Import Na ctiva Assem mbly Direc dos si se Esta a directiva indica al Template los procesos ex xternos que pueden ser referenciad quie ere usar clases c .NET, XML, se ne ecesitara refferenciar el ¿System.X Xml? assemb bly. El asse embly debe existir en el e Global Ass sembly Cach he en el dire ectorio en donde está alojado a el Tem mplate. <%@ A Assembly Nam me="PC.Patter rns.WWEtapa" " %> Cab be mencionar que las refferencias al System, S Sys stem.Data, System.Draw S wing, System m.Design y Sy ystem.Windo ow.Forms so on incluidas automáticam mente. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 111 - PAT TTERN WW WETAPA Direc ctiva Prope erty Imp porta librería as que propo orcionan los objetos de GeneXus G con n los que se van a traba ajar en el Tem mplate, y dentro de esta as se encuen ntra información sobre la as instancias s del Patrón que han sido o generadas en GeneXus s para ser us sadas como parámetros por el Temp plate, los parámetros que e este necesiita son el name y el Type. <%@ P Property Nam me="Object" Type="Artech T h.Architectu ure.Common.O Objects.KBOb bject" %> Direc ctiva Subte emplate Para aplicar el mismo m fragm mento del Template en v varios lugare es, entonces s para esto se s puede plate e invo ocarlo. El uso del subtem mplate se de escribe en do os procesos: crearr un subtemp 1. P Primero se debe declararlo y en la cabecera del template principal S SubTempla ate se usa la directiva <%@ S SubTemplate Name="GridAt ttributes" Name="GridAt N ttributes.dk kt" MergePro operties="Fal lse" %> El pa arámetro Name determina el nombre lógico del d subtemplate. Mientras el parám metro File indica a el filename e del Templa ate actual Ell parámetro booleano MergeProperties es establecido en son asignadas automáticam “True e”, todas la as propieda ades del Te emplate padre mente al subte emplate si tie ene declarad do las propie edades con el e mismo nombre. 2. L La invocación del subtem mplate mediante la direc ctiva CallSubTemplate <%@ C CallSubTemplate GridAttr ributes Attr ributesList= ="attributes sList" Delet teMode="true" " %> Esta directiva re equiere el nombre n lógic co del subte emplate y los valores para ponerllos a las propiedades del subtemplate s e. 2.5.2. Code Tags. T Los C Code Tags son s usados para incluirr código C# # en el cuerrpo del Tem mplate <% a and %>, estos s Tags son usados u para cualquier cantidad c de código. A partir p de estte código se e realizan instancias a las clases c C# pa ara obtener los objetos, atributos ettc., que conttienen la info ormación saria para in nteractuar co on los objeto os de GeneXus neces <% ected overri ide bool ConvertAfterR C Read(Pattern nInstance prote Versi ion fromVersion, Version n toVersion) ) { verted = fal lse; bool conv i instance, Xm mlDocument rawData, if (fromV Version < ne ew Version(0, 5) && toVe ersion >= ne ew Version(0 0, 5)) { Assig gnLevelIds(in nstance); converted = true; ; } %> Los c comentarios se hacen con los tags y dos signos de d (-) para abrir y cerra ar el comenttario. <%-- comentario --%> Para la generac ción los Templates im mportan libre erías (.Dll) y lo realiz za con la siguiente descrripción: CMM--N2/PLT03 Revis sión 28/07/2 2011 - 112 - PAT TTERN WW WETAPA En e el caso del Pattern WWEtapa W un no de los primeros Templates T en e ejecutars se es el Selec ctionWebForm.dkt 2.5.3. Objeto Selection El objjeto Selectio on es el princ cipal Panel de d toda trans sacción, en este e objeto se s listan los registtros, se pueden filtrar lo os datos de acuerdo a un criterio, y se invoca a la transacción en sus d diferentes mo odos. 2.5.3.1. GridWebF Form.dkt E Este Template construye e la forma Web W del objetto Selection,, la forma de e funcionamiento es c creando una a instancia de el archivo WWEtapaSett W ting.xml, el cual c se usa para p insertarr partes d del Theme en e la estructu ura Web del objeto. P Por esa razó ón comienza realizando la instancia del d archivo, asignándole e a dicha insttancia el m modelo. W WWEtapaSetti ings setting gs = Instanc ce.Settings; S Su inicio de ejecución se lo realiza creando objjetos (instan nciando) las clases Cons stants.cs, W WebFormScrript.cs, SearrchButton.cs s, declarando o el uso dell Namespace e WWEtapaIInstance, e el mismo qu ue se encue entra distrib buido en dos clases con n el nombre e WWEtapaIInstance. C Clases que están e incluidas en el mis smo paquete e Templates. A Además indica que utiliizara la libre ería PC.Patte erns.WWEta apa, el mism mo es invoca ado cada v vez que aplic camos un Pa attern a una transacción n. E El GridwebFo orm.dkt crea a el Web Fo orm del objeto Selection obteniendo o la Descripc ción de la IInstancia, la misma que se crea con n el nombre de d la transac cción. <%= WebForm.T TextBlock("T Title Text", , "", GridOb bject.Description) %> E Este código pertenece a la línea 34 del d Template e. S Si se quisie era agregar otro tipo de e mensaje o añadir má ás texto en el título de el objeto S Selection se deberá tratar a este objjeto como un String y adjuntarle el texto necesa ario. G GridObject.De escription+” ”texto”. L La siguiente e parte del WebForm W es la de los Fiiltros, por de efecto el Patttern toma el e primer a atributo no clave c con el que se realiza los filtros s sobre la griilla. L Lo que hace e en esta se ección la plantilla es obttener todos los filtros establecidos para esa ttransacción y los va inse ertando en el e WebForm. L La forma de obtener los filtros estab blecidos para a la instancia a es con el siguiente s cód digo. F Foreach (Filt terAttribute eElement fil lterVar in GridObject.F G ilter.Attrib butes) D Dentro de es ste bucle se debe inserttar todo el có ódigo tanto HTML y C# para poder hacer las rrespectivas validaciones v s. D Dentro de un na columna <TD> se en ncuentra la línea que se inserta como descripción para el ffiltro. <%= WebForm.T TextBlock("F Filter Text" " + filterVa ar. Name, escription) %> filterVar. De settings.Them me.PlainText t, CMM--N2/PLT03 Revis sión 28/07/2 2011 - 113 - PAT TTERN WW WETAPA A continuación se inserta la variable e por la que se hace realiza el filtrado de registro os d dentro de ottra columna en la línea 110 1 del Template. <%= WebForm. Variable (f filterVar.Na ame) %> E En una nuev va Fila de tab bla se agregan los boton nes de Exporrt y el de Ins sert pero parra poder h hacer esta in nserción la plantilla p veriffica que entrre las acciones este habiilitada la de Export e IInsert. If (GridObjec ct.Actions.E Export != nu ull && !Gene erateForSmartDevices){ ct.Actions.E Export.ToHtm ml() %> <%= GridObjec } ct.Actions.I Insert != nu ull && !Gene erateForSmartDevices){ If (GridObjec <%= GridO Object.Actio ons.Insert.ToHtml () %> } L La sección siguiente es s la de la grilla de registtros, en esta a grilla es en n donde se muestran m llos registros s que están n almacenad dos en la ba ase de dato os, la plantilla en si no o maneja d directamente e esta grilla, la inserc ción de estta se lo realiza directa amente en la clase W WebFormScrript.cs. Prim mero busca todas las acciones que e tiene el Pattern, P y los agrega d dotándolos de una colu umna para cada c acción. Si se tuviera más ac cciones agre egadas al P Pattern aquí se insertarrían sin ning gún inconve eniente. Estta operación n se encuenttra en la llínea 219 de el Template. F Foreach (Acti ionElement inGridAction i n in GridObject.Actions.GridActions s) { tion.ToHtml( () %> <%= inGridAct } A continuaciión se inserttan las los registros r recuperados de e la base de e Datos pero o primero rrecupera lo os atributos de la tra ansacción y nuevame ente con el e uso de la Clase W WebFormScrript agrega las columnas s en la grilla. foreach (IAtt tributesItem m gridItem in i GridObjec ct.Attributes){ cript.GridCo olumn(gridIt tem) %> <%= WebFormSc } L La imagen muestra m la fo orma en la que queda formado el Panel Web Imagen 4.2.2.4 Web b Panel De Man ntenimiento (o objeto Selection n) S Se debe ten ner en cuentta que ese archivo a camb bia su estruc ctura cuando hayamos realizado a alguna modiificación en el proyecto C# del Patte ern, en el ca aso de únicamente maniipular las p plantillas no es necesario volver a generar el pro oyecto. 2.5.3.2. ables.dkt GridVaria C Como su no ombre lo ind dica este Te emplate se encarga de agregar la sección varriables al E Elemento Se election. E En GeneXus existen ade emás de los tipos de dattos de cualquier lenguaje de programación o B Base de Dattos existen datos d propio os de GeneXus, así tamb bién existen dominios qu ue son la d declaración de un nombre y el tipo de datos,, y a este lo o podemos utilizar en múltiples o objetos y trransacciones s, es por eso o que la declaración de e variables difiere d de ac cuerdo al ttipo de datos que se vay yan a utilizarr. E Este Templa ate obtiene los criterios de filtrado de la grilla,, y los decla ara como variable, la fforma de rea alizar esta definición se la hace con la siguiente expresión. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 114 - PAT TTERN WW WETAPA <% foreach (P ParameterEle ement parame eter in Grid dObject.Parameters) s.BasedOnAtt tribute(para ameter.Name, parameter.Name) %> <%= Variables <% }%> {%> L La forma de obtener esttos parámetrros se indica a dentro del Foreach. L Las variables que extienden e de un attributo se declaran con la expresión e V Variables.Ba asedOnAttrib bute, y recibe como parámetros el e nombre de la varia able y el n nombre del atributo, al que GeneXu us se encarg ga de verific car si existe una transac cción que c contenga ese atributo. S Si se necesiita crear variables que deriven de otras funciones es con n la palabra a extend, p pasando com mo parámettros el nomb bre de la va ariable, un valor v nulo y la función a la que p pertenece. <%= Variables s.Extended(" "Session", null, n "WebSe ession") %> s.Extended(" "HTTPRequest t", null, "H HttpRequest") %> <%= Variables O Otro tipo de d variables s son las que q derivan se usan para p obtene er un tipo de dato e estructurado o. La manerra de declarar este tipo de variable es es sencilla, se usa la a palabra rreservada Sd dt y se pasan el nombre e de la variab ble y el objeto Sdt. <%= Variables s.Sdt("TrnCo ontext", "Tr ransactionCo ontext") %> s.Sdt("TrnCo ontextAtt", "Transactio onContext.Attribute") %> > <%= Variables L Las variable es básicas co omo son las s de tipo numérico, varc char, carácter, boolean,, etc., se d declaran con n la palabra reservada Basic, B interna amente decla arando el no ombre, un pa arámetro n nulo, el tipo de dato la longitud del mismo y un parámetro que q indica si es de tipo colección s si lo es se pa asa el parám metro true ca aso contrario o es necesarrio escribir el valor null. <%= Variables s.Basic("NUM MVAL", null, , eDBType.NU UMERIC, 9, 0, false) %> L La Variable NUMVAL es e usada para obtener el valor para la cla ave primaria a de las ttransaccione es del módulo de segurid dad. <%= Variables s.Basic("Cod digoRol", nu ull, eDBType e.NUMERIC, 4, 0, false) %> L La variable CodigoRol C es s usada para a recibir den ntro de la re eglas el códig go del Rol que q tiene a asignado el Objeto con el e usuario qu ue ha ingresado al sistem ma. E El objeto Se election recib be como parámetros el usuario perro por aspec ctos de segu uridad es n necesario que q esta va ariable se envié como o una clave encriptad da. Para re ealizar la e encriptación se utilizan dos d variables de tipo Va archar la una a con longitu ud de 64 y es e la que c contiene el nombre n del usuario, u y la a otra de una a longitud de e 32 caracte eres que es necesaria n p para poder realizar r la en ncriptación o des encripttación. <%= Variables s.Basic("usE Encrypt1", null, n eDBTyp pe.VARCHAR, 64) %> s.Basic("usE Encrypt2", null, n eDBTyp pe.VARCHAR, 32) %> <%= Variables L La validación n de permis sos se realiza a listando la as acciones y se almace enan en una variable p por cada acc ción. foreach (Acti ionElement action a in Gr ridObject.Ac ctions){ String va arName = "Pe ermit" + action.Name;%> efineVariabl le() %> <%= action.De s.Basic(varN Name, null, eDBType.Boo olean) %> } <%= Variables E El foreach obtiene o las acciones, a el atributo va arName conc catena la pa alabra Perm mit con el n nombre de la variable, y estas son agregadas a co omo variable es tipo Boole ean. 2.5.3.3. GridRules.dkt. L La sección de la reglas s únicamente agrega una u línea all objeto Selection la que es la rrecepción de e variables para la valid dación del usuario u y el rol, en esta a plantilla esta es la ú única línea de d código qu ue se agrega. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 115 - PAT TTERN WW WETAPA p parm(&usEncr rypt1, in:&u usEncrypt2, in:&CodigoRo ol); 2.5.3.4. GridCondittions.dkt E El Template recibe la in nstancia de la transacción y revisa a si existen criterios de e filtrado, lluego por ca ada uno reco orre las cond diciones esta ablecidas para realizar lo os filtros en la grilla, p para finalme ente agregarr en la secció ón de Condittions median nte el parámetro Value. i if (GridObje ect.Filter != null){ f foreach (Con nditionEleme ent filterCo ondition in %> < <%= filterCo ondition.Val lue.TrimEnd(';') %>; < <% } } 2.5.3.5. GridOb bject.Filter r.Conditions s){ G GridEvents. .dkt E EL Template e GridEvents s es la parte más extens sa del Objeto o Selection debido d a que e aquí es e en donde se e aloja la lóg gica del Web Pannel, parra realizar ciiertas funcio ones de valid dación de a acciones es necesario obtener una lista con las s acciones que se puede en o no form mar parte d del Web Pa annel. Para ellos crea una lista de d tipo de dato ActionElement en e donde a almacenaran n las accione es para poste eriormente ser s utilizadas s. List<ActionE Element> sta andaloneActi ionsWithSecu urityCheck = new List<Ac ctionElement t>(); E Esta lista ob btiene las acc ciones que no n están inclluidas en la Grilla y son las acciones s Insert y E Export. foreach (Acti ionElement action a in Gr ridObject.Ac ctions.Stand daloneActions s){ if f (action.Co ondition != String.Empt ty) stand daloneActions sWithSecurit tyCheck.Add (action); } E Event Startt: El evento Start es el primero que e se ejecuta a cuando se abre el Web b Pannel, p propiamente e con el cód digo de Gen neXus fuera a de los tag g <%%> se in nserta el código que o obtiene el Sd dt que contie ene el usuarrio y el que tiene t asignad do. E En la segunda línea almacena a nuevamente el nombre del usuario pero hac ciendo la o operación de des encriptación, en la línea 3 almacena el Rol del Us suario el cu ual es un n número que e el Web Pannel Selectiion recibe como parámetro, nueva amente alm macena el u usuario y ro ol en el Sdt,, invoca al procedimien nto IsAuthorrizedWWE ell cual verific ca que el u usuario este e registrado o y el rol de este se ea correcto en caso de d no haber alguna c coincidencia la variable &IsAuthorize ed recibirá un u valor false e e inmediattamente mos strara un W Web Pannel con el mens saje de no Autorizado. LoadContext.C Call(&Contex xt) &Context. .User = Decr rypt64(&usEn ncrypt1, &usE Encrypt2) &Context. .Rol = &Codi igoRol setContex xt(&Context) IsAuthori ized.Call(&P Pgmname.toLower(), &IsAu uthorized) orized) (not &IsAutho NotAu uthorized.Ca all(&PgmName) Endif If E El siguiente elemento Es stablece el número n de filas que se mostraran m en la grilla, este e valor llo toma del archivo WW WEtapaInstan nce, del cual podemos modificar m el valor o incluso para d directamente e en el Temp plate se podrá asignar un u nuevo núm mero. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 116 - PAT TTERN WW WETAPA <%= Constants s.GridName %>.Rows % = <% %= GridObjec ct.Page %> E Es necesario o que se inic cialicen los botones b de la as acciones y agrega el código de ellos, este c código proviiene del proyecto C#. La plantilla obtiene esas instruccion nes, la obten nción del d de estas se hace con la a tercera líne ea, las anterriores valida an que de ex xistan las ac cciones y p posteriormente verifican n que no esté é vacío el attributo que contiene c el có ódigo. foreach (Acti ionElement action a in Gr ridObject.Ac ctions.GridA Actions){ nitializatio onCode() != String.Empt ty){ if (action.In Indent(actio on.Initializ zationCode(), 1) %> Indentation.I } %> <%= <% } E El Evento sttart obtiene la descripció ón del objeto Selection para que es ste se visuallice en la p parte superior de web Pa annel. if (GridObjec ct is Select tionElement){ string fo ormCaption = ((SelectionElement)Gri idObject).Ca aption; if (formC Caption == "") " fo ormCaption = "'" + ((Se electionElem ment)GridObject).Descrip ption + "'"; ; %> tion = <%= formCaption f %> Form.Capt <% } F Finalmente el e evento Sttart invoca a las subruttinas para verificación v de d permisos sobre la ttransacción, cargar el estado e de la grilla. L La Sub Ru utina CheckSecurityForrActions ve erifica si las variable es &PermitIInsert y & &PermitExpo ort tienen el valor true, en caso de no n tenerlo se e bloquean los botones de d Insert y Export. <% foreach (A ActionElemen nt action in n standalone eActionsWithSecurityChec ck) {%> ion.Indent (action.Enab ( bleDisableCo ode(), 1) %> <%= Indentati <%}%> L La verificació ón de permisos Insert y Export se realiza r por medio m de la lista l de accio ones que s se declararo on en el iniciio del Templlate y por ca ada una de ellas invoca al código re espectivo q que lo obtiene directam mente de la clase c ActionElement, la línea Indentation.Inden nt agrega e el código en n la bandeja de Eventos s del Web Pa annel, la ins stancia action.EnableDisa ableCode rrecupera el las l líneas de e código que serán inserttadas. E Event Grid.L Load, este ev vento se dec clara obtenie endo el valo or Grid, desd de una consttante que s se encuentra a definida en n la clase Co onstants. Event <%= Con nstants.Grid dName %>.Loa ad D Dentro de una colección n obtiene las s acciones y por cada un na de ellas agrega a el có ódigo que iinvoca a la Transacción con el mod do pasando como parám metro el mo odo y el prim mary Key p pertenecientte al registtro desde el e cual se llama l a la Transacción n, Para aña adir más p parámetros o cambiarr alguno de e ellos se puede modificar esta línea en la clase A ActionEleme ent en el méttodo SetStan ndardParameters. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 117 - PAT TTERN WW WETAPA <%= Indentati ion.Indent(a action.Enabl leDisableCod de(), 1) %> E Esta sentenc cia se encuentra en la lín nea número 313 de la plantilla. L La acción Views se manipula de otra a forma disttinta a las de emás accion nes y por eso o esta se e encuentra en una Temp plate distinto o, debido a que q esta no invoca a la Transacción n, invoca d directamente e al objeto View. V E El evento qu ue llama a la a Transacción n en modo Insert se obttiene de la clase Variable eElement e en el método o VariableLo oadCode. Y en e este méto odo directam mente se pue ede realizar variantes v e en la forma de llamar a la transacció ón y/o parám metros que se s pasan. foreach (Ac ctionElement action in GridObject.A G Actions.Stan ndaloneActio ons) { if (actio on.Event() != String.Em mpty) {%> on.Event() %> % <%= actio <% } } S Sub Rutina Permission ns E Esta Sub rutina cumple la función de recopilarr los permiso os que tiene e el usuario sobre el o objeto La misma m se enc cuentra implementada e en todos los s objetos qu ue necesitan verificar llos permisos s del usuario conectado o. La forma de trabajarr es invocan ndo al proce edimiento P PermisosV al a que pasa los paráme etros, nomb bre del obje eto, el usuarrio, el rol, recibe r un v valor Boolea an verificando si el usuario es admin n o no y un sdt s con los permisos, p en n caso de q que el usuarrio se admin n se activan todos los permisos sob bre el objeto o, y en el caso de no s serlo se des sactivan todo os los permiisos y entra a verificar los permisos s recorriendo el Sdt, e en esta partte utiliza las variables &P Permit conca atenadas con n el nombre e de la acción n, busca s si el atributo o Premiso es s igual al nombre de la acción a enton nces valor de e la variable e &Permit c concatenada a con el nom mbre de la acción a tomara el valor del atributo o Autorizado o del Sdt q que únicame ente almacen na el valor True. T Sub 'Permissi ions' PermisosV V.Call(&Pgmn name,&Contex xt.User,&Cont text.Rol,&Is sAdmin,&Perm ms) If &IsAdm min <% ionElement action a in Gr ridObject.Ac ctions){ foreach (Acti %> %= action.Na ame %> = Tru ue &Permit<% <%}%> iews = True &PermitVi Else <% ( ent action in GridObject t.Actions) foreach (ActionEleme { %> %= action.Na ame %> = False &Permit<% <% % }%> iews = False e &PermitVi For &Perm msItem in &P Perms Do o Case <% CMM--N2/PLT03 Revis sión 28/07/2 2011 - 118 - PAT TTERN WW WETAPA foreach (Acti ionElement action a in Gr ridObject.Ac ctions) { %> rmsItem.Perm miso = !'<%= = action.Name e %>' Case &Per ction.Name %> % = &PermsI Item.Autoriz zado &Permit<%= ac <% } %> tem.Permiso= = !'Views' Case &PermsIt &PermitVi iews = &Perm msItem.Autor rizado EndCase EndFor E EndI If EndSub 2.5.4. SubLinkAttributes s.dkt ple la funció ón de invoca ar al elemento View (V VistaTransaction), como parámetro envía el Cump prima ary key dell registro seleccionado el código que se ins serta se enc cuentra en la clase LinkE Element, en el atributo LinkExpressio L on. <%= item.Name e %>.Link = <%= item.Li ink.LinkExpr ression %> 2.5.5. Objeto View El ob bjeto View es e el que pre esenta la información del d registro seleccionado o, su uso se e lo hace mediante el botó ón Display, únicamente ú Permite visu ualizar la infformación y no da lugarr a hacer n tipo de ope eración sobrre esa inform mación. La es structura de e Templates que usa parra formar algún su we eb Pannel y toda su lógic ca es similarr a la de los demás objetos. 2.5.5.1. ViewWeb bForm.dkt A Al igual que el elemento o Selection este e Template es usado para constrruir el Web Panel P del o objeto View.. P Primero se debe d obtene er la informa ación de la instancia a la que perte enece este objeto o ya q que a partir de esta se ira recupera ando los dattos necesarios para la construcción c del Web P Pannel. WWEtapaIn nstance wwIn nstance = WW WEtapaInstanc ce.Load(Inst tance); WWEtapaSe ettings sett tings = wwIn nstance.Setti ings; ViewEleme ent view = wwInstance.G w GetElement<Vi iewElement>( (Element); Selection nElement sel lection = view.Parent.Se election; D Debido a qu ue el Objeto o View deriva de un niv vel más deta allado la forma de recuperar las de tratar p partes y la información del mismo tiene un grrado mayor de dificultad la forma d d dicha inform mación. E En la tercerra line se muestra m la fo orma de obttener el Objjeto View de e la instanc cia, en la c cuarta línea se obtiene el objeto selección qu ue está rela acionado. El E Objeto Vie ew se va fformando ag gregando priimero el nom mbre del objeto con el có ódigo que se e detalla. < <%= WebForm. .TextBlock(" "ViewTitle", "" , view.D Description) ) %> E El link hacia a el elementto Selection se agrega obteniendo directamentte la descrip pción del o objeto, debid do a que al inicio se obtuvo la inforrmación de la instancia de d la transac cción a la q que pertenece. < <%= WebForm. .TextBlock(" "ViewAll", settings.Them me.TextToLin nk, selectio on.Descripti ion) %> E Estas dos primeras p partes se enc cuentran de efinidas denttro de una tabla y pe ertenecen p precisamentte a la prime era fila de dic cha tabla. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 119 - PAT TTERN WW WETAPA L La siguiente parte de la tabla consis ste en agregar la descrip pción del reg gistro selecciionado. Y s se comienza a obteniendo o la descripción del atribu uto que va ser s presentado en la cab becera de lla tabla. < <%= WebFor rm.TextBlock k("FixText" f fixedAtt.Des scription) %> % + fixedA Att.Attribute.Name, se ettings.Them me.Label, Y la línea más m importan nte es la pre esentación del d registro seleccionado s o mediante el e primer a atributo no clave. c < <%= WebForm. .Attribute(f fixedAtt.Att tribute.Name) ) %> 2.5.5.2. ViewRule es.dkt L La parte de las Rules en n el objeto View V como en n los demás s objetos obttiene datos mediante m lla instancia de la trans sacción, nue evamente se e utiliza el mismo m códig go que se encuentra e iimplementad do en los demás objetos s para obtener la instanc cia y en este e caso el obje eto view, lla parte pro opia de la Regla la ob btiene de la a clase Parrameter Elem ment en el método R RuleForView w, en dicho método m se encuentra e de efinido un atributo a para ameter, este e método ttoma la clav ve primaria de d la transac cción concate enándola con n la variable e &TabCode. <%= v view.Paramet ters.RuleForV View() %> 2.5.5.3. ViewVariables.dkt T Todos los ob bjetos Web Pannels, Trransactions, WebCompon nents deben n tener varia ables que s sirven para la descripció ón de cada uno u de ellos,, por tal mottivo cuentan n con una pla antilla en lla que se en ncuentran definidas cierrtas variable es que son invocadas por p todos los s objetos q que requiera an contar con las variablles. E En la definic ción de varia ables nuevam mente neces sitamos obte ener la instan ncia y el objjeto View q que se está creando. A partir de e la obtención de esta a informació ón se procede a invo ocar a las variables S SubStandard d. < <%@ CallSubT Template Sub bStandardVar riables Setti ings='wwInst tance.Settin ngs' %> V Variables &T Tabs, &Tab, hacen referencia al SD DT TabOptio ons, en dond de se almac cenan los d distintos tab bs que tienen n relación co on la transac cción y luego o serán carga ados como liinks. <%= Varia ables.Sdt("T Tabs", "TabO Options") %> <%= Varia ables.Sdt("T Tab", "TabOp ptions.TabOpt tionsItem") %> L Los Tabs so on objetos WebCompon nent, cuyo nombre se forma con los nombres de la ttransacción Maestro con n la Detalle y terminan co on el Texto WC. W L Las Variables &usEncryp pt1 y &usEnc crypt2 son utilizadas en la invocación al objeto selection, s y ya que el ob bjeto Selectio on necesaria amente recib be el usuario y el rol. <%= Varia ables.Basic( ("usEncrypt1", null, eDB BType.VARCHA AR, 64) %> <%= Varia ables.Basic( ("usEncrypt2", null, eDB BType.VARCHA AR, 32) %> E En esta plan ntilla también n se declaran las variables provenie entes de la trransacción, y esta es u utilizada parra la invocac ción a los tab bs. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 120 - PAT TTERN WW WETAPA foreach (ParameterEl ( lement param meter in view w.Parameters s) {%> ables.BasedO OnAttribute(parameter.Na ame, paramet ter.Name) %> > <%= Varia <%} 2.5.5.4. ViewEven nts.dkt A través de la instancia a el objeto View, V y la propiedad Se ettings la pla antilla invoca al SDT & &Context pa ara obtener el e Usuario y el rol, y el usuario en código c encriptado es usa ado en la iinvocación al a objeto Sele ection. E El evento Start S da inic cio obtenien ndo la variable &Contex xt que conttiene el nom mbre del u usuario y el, debido a que q este mis smo código se utilizara en muchos objetos el código c se e encuentra en n el Templatte SubLoadC Context. < <%@ CallSubT Template Sub bLoadContext t Settings='settings' In ndentLevel=' '1' IndentLe evelChar= ' '"\t"' %> P Para recuperar el nomb bre del objetto selection al que invocara el obje eto View se utiliza el s siguiente cód digo. if (view. .BackToSelec ction && view.Parent.Sel lection != null){ n %> > ViewAll.L Link = <%= view.Parent t.Selection. .ObjectName %><%= sd %>.Link(&usE % Encrypt1, &usEncryp pt2, &Contex xt.Rol) < <%} E El if compru ueba que la vista tenga a un objeto Selección, y la siguien nte línea obtiene el n nombre del objeto selec ction y le ag grega los pa arámetros en ncriptados co onjuntamente con el R Rol. U Una vez que e se llama al objeto View w de un registro se com mpara si es que q el registtro existe e en caso de que q exista se e llama al ob bjeto Tabbed dView al que e se le pasa la l estructura a de Tabs a almacenados s que tiene la l transacció ón. I If (&Exists) ) D Do 'LoadTabs s' T TabbedView.O Object = <%= = Constants.TabbedViewNa ame %>.Creat te(&Tabs, &T TabCode) E Endif L La subrutina a LoadTabs, es la que se s agrega el código parra la inclusió ón de los Ta abs en la e estructura que almacena a los Tabs. foreach (TabElement ( tab in view w.Tabs) { %> &Tab = new() .Code = "<%= = tab.Code %>" &Tab. &Tab. .Description n = "<%= tab b.Name %>" &Tab.WebC Component = <%= tab.Wcn name %>.Link( (<%= View.Pa arameters. ListWithVari L iables () %>) k &Tab.Link & &Tab.Code) = <%= Ob bject.Name %>.Link(<%= = view.Parameters.ListW WithVariable es() %>, &Tabs.Add d(&Tab) CMM--N2/PLT03 Revis sión 28/07/2 2011 - 121 - PAT TTERN WW WETAPA < <%}%> E En el Foreac ch lista todo os los Tabs que q pertenec cen al Objetto View, o dicho de otra a manera llista las tran nsacciones de etalle de la transacción. t Los Tabs ha acen son los objetos WC C. E El TabCode es el nomb bre de la transacción, el Tab.Desc cription es la descripció ón de la ttransacción, el TabWebc component es el Objeto o WC que se e agrega al Tab, al que e le pasa c como parám metro el Prim mary Key del registro me ediante el cual se haga la invocació ón a este o objeto. El ta ab.Link alma acena la URL L del objeto View. V 2.5.5.5. ViewCond ditions.dkt L La condición n la obtiene e de la clas se Paramete erElement en e el método WhereCon ndition y p posteriormente agrega la condición validando qu ue el atributto condition no sea nulo.. s string condi ition = view w.Parameters.WhereCondit tion(); < <%= view.Par rameters.Whe ereCondition n() %>; 2.5.6. Objeto General. ebComponen nt General está construid do por los Te emplates TabTabular. Se S visualiza una u El We tabla que muesttra toda la in nformación de d un registrro y forma la a tabla con lo os atributos y la ada atributo. Esta tabla presenta p enllaces que inv vocan a la trransacción en los descrripción de ca modo os, update o delete. 2.5.6.1. TabTabullarWebForm m.dkt P Para la cons strucción del Web Form del objeto General el template t comienza crea ando una rreferencia de d la Instan ncia de la transacción t y obteniend do las prop piedades del archivo S Settings, y la informació ón del Tab General. WWEtapaIn nstance wwIn nstance = WW WEtapaInstanc ce.Load(Inst tance); WWEtapaSe ettings sett tings = wwIn nstance.Setti ings; TabElemen nt tab = wwIn nstance.GetE Element<TabE Element>(Ele ement) L La forma de e construir la tabla se hace media ante la sentencia foreac ch, para obttener los a atributos de la transacción. f foreach (IAt ttributesIte em item in tab.Attribute t es) L La siguiente e tarea es as signar la descripción de e cada atribu uto en una columna c de la tabla, m mediante la descripción de los ítems s. < <gxTextBlock k id="TextBl lock<%= item m.Id %>" Capt tion="<%= it tem.Descript tion %>" /> E En una nuev va columna agrega los atributos pe ero hacienda a uso de la clase c WebFo ormScript e en el método o Item que es e el que obttiene el atrib buto. < <%= WebFormS Script.Item( (item) %> L La agregació ón de los bottones se hac ce obteniend do las acciones que tenga el objeto. Foreach (ActionEleme ( ent action in tab.Action ns) CMM--N2/PLT03 Revis sión 28/07/2 2011 - 122 - PAT TTERN WW WETAPA L La inserción n de los botones b se realiza me ediante el método toHtml() de la clase A ActionEleme ent. <%= actio on.ToHtml() %> 2.5.6.2. TabTabullarRules.dk kt L La sección de las reglas el elemento o general rec cibe el Prima ary key del registro selec ccionado. C Con el uso de d la instanc cia obtenemo os el elemen nto tab, adem más se obtie ene el eleme ento View d del cual el Tab general se s deriva. L La regla se obtiene o direc ctamente en n la clase ParameterElem ment en el método m Rule,, y este a s su vez invoc ca a otro mé étodo Rule que q recibe tres t parámetros y arma la cadena que q va a s ser devuelta a a la plantilla. WWEtapaIn nstance wwIn nstance = WW WEtapaInstanc ce.Load(Inst tance); TabElemen nt tab = wwI Instance.GetElement<TabE Element>(Ele ement); ViewEleme ent view = tab.Parent;% t > <%= view. .Parameters.Rule() %> 2.5.6.3. TabTabullarVariables.dkt L Las variable es del objeto o general se e declaran de d igual form ma que en los demás objetos o y m muchas de ellas e son las mismas. L Las variables s para los pa arámetros se obtienen de d la clase ParameterEle P ement y el código c es iigual a como o se ha descrito en los demás objeto os. < <% foreach (ParameterEl ( lement param meter in tab. .Parameters) ) {%> <%= Varia ables.BasedO OnAttribute(parameter.Na ame, paramet ter.Name) %> > L Las variables s que se usa an para el co ontrol de seg guridad es &Context, & la variable Ses sión sirve p para almace enar tempora almente el estado e del o objeto esta parte p es rea alizada con el e uso de S SDT, median nte las variables TrnContext, TrnCon ntextAtt. 2.5.6.4. dkt TabTabullarEvents.d L La parte de los eventos obtiene el objeto o wwIns stance declarado de la misma m mane era de las d demás planttillas, y el ob bjeto Tab de la clase Tab bElement. E En el evento o Start se re ecupera la es structura Co ontext, en es ste caso no se utiliza en n ninguna o operación, pero p si se qu uisiera por ejemplo e asignar niveles de seguridad muchos detallados datos. y cada objetto tenga asig gnado la parrte de seguridad se utiliz zaría esta estructura de d E El Evento Lo oad es declarrado pero no o tiene incide encia en este e objeto. L Los siguienttes eventos son los qu ue se disparran cuando se presiona a en los bottones de a actualizar y eliminar, pa ara esto recu upera las ac cciones del tab llama al método Event de la c clase ActionElement, qu ue es la que e contiene el e código para llamar a la transacciión en el m modo Insertt y delete, pasando p com mo parámetrro el primary y key y el modo m en el que q se la lllama. < <% foreac ch (ActionEl lement actio on in tab.Act tions) { f (action.Ev vent() != St tring.Empty) If CMM--N2/PLT03 Revis sión 28/07/2 2011 - 123 - PAT TTERN WW WETAPA {% %> < <%= action.E Event() %> < <% } } 2.5.7. Objeto tab wc ponent que se forma cuando c existe una relación maestrro detalle entre e dos Es ell Web comp trans sacciones, es ste objeto prácticament p te es el mism mo objeto Selection es s por eso qu ue en las planttillas se invo oca a las plantillas Grid, para el caso o específico de ETAPA EP, E fueron ne ecesarios hacerr algunos ca ambios para a ello se cre earon nueva as plantillas s en donde están realiz zados los camb bios, en la descripción de las plantillas se nomb brara los cam mbios realiza ados en las plantillas Grid, debido a qu ue el resto de código es prácticamen nte el mismo o. En to odas las plan ntillas de este e objeto se obtiene o la in nstancia, y el objeto TabElement y enseguida se prrocede a realizar la invocación de la plantilla qu ue genera el código para a formar el o objeto en toda su integridad. WWEtapaIn nstance wwIn nstance = WW WEtapaInstanc ce.Load(Inst tance); TabElemen nt tab = wwI Instance.GetElement<TabE Element>(Ele ement); 2.5.7.1. TabGridW Webform.dk kt E Este plantilla a invoca a la plantilla GridWebform G m pasando como c parám metros la ins stancia el ttipo de obje eto que se va a construiir, en este caso c se invoca a la plan ntilla con la siguiente llínea de código. < <%@ CallSubT Template Gri idWebForm In nstance='wwIn nstance' Gri idObject='ta ab' %> L La plantilla GridWebForm G m verifica si es que el objeto o contie ene una descripción y co omprara, e esto lo hace e para agreg gar la prime era fila de la tabla, en n el objeto WC no se agrega a la p primera fila. Esta parte de d código es stá escrita en n las líneas 29 hasta la 39. if (GridO Object.Descr ription != String.Empty) ){ %><TR> <TD class s="<%= setti ings.Theme.Subtitle %>" > <%= WebFo orm.TextBloc ck("Title Text", "", Gri idObject.Des scription) %> % </TD> </TR> <% } 2.5.7.2. TabGridR Rules.dkt L La parte de las reglas invoca a la plantilla GrridRulesTG.d dkt y dentro o de este ag grega los p parámetros para el objeto WC. if (GridO Object.Filte er != null){ CMM--N2/PLT03 Revis sión 28/07/2 2011 - 124 - PAT TTERN WW WETAPA IBaseColl lection<Filt terAttributeElement> filterProm mpts = GridObjec ct.Filter.At ttributes.FindAll (delegate (Fil lterAttribut teElement filterAtt tribute) { return r (filterAttribute. .Prompt != null); n }); if (filte erPrompts.Co ount > 0) {%> <% ( ibuteElement filterAttri ibute in fil lterPrompts) ) foreach (FilterAttri { %> %= filterAtt tribute.Prom mpt.Name %>, <%= filterA Attribute.Va ariableName %>); prompt(<% <% } } } E En esta secc ción intervien ne la clase Filter F Atribute e en la que obtiene o el attributo Varia ableName p para agrega ar la regla a su vez este atributto se encue entra implem mentado en la clase V VariableElem ment dentro del método o variableLoa adCode que e es el que devuelve la línea de c código de la regla. 2.5.7.3. Conditions.d dkt TabGridC E Esta plantilla a invoca al Template T GrridConditions sTG.dkt el cual es una réplica r de la a plantilla g gridConditions.dkt que se s ha detalla ado en la parrte del objeto Selection. 2.5.7.4. TabGridV Variables.dk kt L La parte de e las variab bles del objeto WC implementa la as mismas variables v de el objeto S Selection es s así que es ste directam mente vuelve e a invocar al Template e GridVariab blesWC y a agrega las mismas m varia ables que tie ene el objeto o Selection. 2.5.7.5. TabGridE Events.dkt L La parte de e los eventtos es quizá á la más crítica c dentrro del objetto tab WC C y para iimplementarr esta parte e se hizo una u réplica del templatte GridEvents, y se la nombro G GridEventsTG.dkt, debid do a que es ste es un objeto que administra a a una transa acción es n necesario qu ue este obje eto sea trata ado como ell objeto Sele ection, en el evento Sta art , este o objeto pued de obtener la estructura a de contex xto es por eso e que úniicamente ca arga esta v variable, y utiliza u la plan ntilla SubCheckSecurity que proporc ciona el códiigo necesario para la v validación de e seguridad.. < <%@ CallSubT Template Sub bLoadContext t Settings=' 'settings' IndentLevel= I ='1' IndentL LevelChar = ='"\t"' %> < <%@ Call lSubTemplate e SubChec ckSecurity I IndentLevelC Char ='"\t"' %> Settings='settings' IndentL Level='1' D Dentro del evento e start,, se invocan a las subruttinas que proveen la fun ncionalidad rrequerida y cuando se trata del Ta ab WC, no se implementta la subrutiina LoadGrid dState, en re elación al ttemplate Gid dEvents. Es lo único que e cambia. 2.5.8. SubSta andardVaria ables.dkt e definidas variables v que e son necesarias para el e uso de casi todos los objetos. La plantilla tiene Las d dos primera as son utiliz zadas en la a parte de seguridad. Las dos últimas variables son utiliza adas en la presentación de mensa ajes y derivan de una estructura de d datos SD DT, si es neces sario agrega ar más varia ables que va ayan a ser utilizadas en todos los objetos que e crea el patró ón sería conveniente ha acerlo en esta plantilla y no en las s plantillas de d variables de cada objetto. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 125 - PAT TTERN WW WETAPA <%= <%= <%= <%= <%= 2.5.9. Varia ables.Basic( ("IsAuthorized", null, eDBType.Bool e lean) %> Varia ables.Basic( ("PermitView ws", null, eD DBType.Boole ean) %> Setti ings.Context t.DefineVariables() %> Varia ables.Sdt("m messages", "Messages") %> % Varia ables.Sdt("m message", "M Messages.Mess sage") %> Proced dimiento Mo odInit El prrocedimiento o ModInit, tiene por ob bjetivo escribir en un procedimient p to el nombrre de los objettos Selection n y la descrip pción los cua ales se van a almacenarr en la tabla a SMO del m módulo de segurridad. Cada vez que el e usuario in ngrese al sistema s este e procedimie ento se rec correrá y almacenara los nombres n de los objetos si s estos no están almace enados en la tabla. 2.5.9.1. Variables.dk kt ModInitV <%= Varia ables.Basic( ("modsCount", null, eDBT Type.NUMERIC C, 8, 0, fal lse) %> <%= Varia ables.Basic( ("NUMVAL", null, n eDBType e.NUMERIC, 9, 9 0, false) ) %> <%= Varia ables.Basic( ("NUMCOD",nu ull, eDBType. .CHARACTER, 3) %> ables.BasedO OnAttribute(" "Accion", "A Accion") %> <%= Varia Varia ables.BasedO OnAttribute(" "abreviatura a", "abrevia atura") %> <%= Varia ables.BasedO OnDomain("Obj jNombre", "O ObjectName") ) %> Varia ables.BasedO OnDomain("Obj jDescripcion n", "ObjectN Name") %> %= <% %= <% L La variable modsCountt se usa pa ara empezarr a recorrerr el procedimiento y hacer h las iinserciones en e la tabla. L Las variables NUMVAL y NUMCOD se s utilizan pa ara obtener la clave prim maria para las tablas d de seguridad d ya que no o se obtiene el correcto funcionamiento con la función auttonumber d de GeneXus s, el SIGEC COM de ET TAPA actualmente utiliiza esta función para obtener a automáticam mente los Priimary Keys de d todas las tablas. L Las variable es Acción y Abreviatura son usadas s para ingre esar las acciiones en la tabla de a acciones. Las acciones son s Insert, Update, U Expo ort, Views, Display, D Delete. 2.5.9.2. ModInitP Procedure.d dkt E El procedimiento siemprre comienza tratando de ingresar las s acciones en n la tabla L La declaración de las ac cciones se realiza r manu ualmente co on la siguien nte línea de código y ttermina invo ocando a la sub s rutina NewPermissio on. & &Accion=!"In nsert" &abre eviatura=!"Ins" Do 'NewP Permission' S Sub ‘NewPerm mission’ E Esta subrutin na compara a si la acción n está ya en la tabla en caso c de no estarlo e la ing gresa. S Sub 'NewPerm mission' for each cion=&Accion n where Acc When none e New ccion = &Acc cion Ac ab breviatura= &abreviatur ra Endnew endfor E EndSub L La parte de la obtención n de las insttancias aplic cadas en la base de con nocimiento se s realiza m mediante el código Patte ernInstace, la primera parte e es contarr las instan ncias del CMM--N2/PLT03 Revis sión 28/07/2 2011 - 126 - PAT TTERN WW WETAPA P Pattern, esto o se observ va en el com mando Forea ach, luego compara c que e existan los s objetos S Selection y el e número en n una variab ble. foreach (PatternIns stance inst tance in PatternInsta ance.GetInst tances(Objec ct.Model, apaPattern.D Definition, PatternInsta P ance.OpenOpt tions.SkipUp pdate)) WWEta if f (level.Se election != null && l level.Select tion.Paramet ters.Count == 0 && Ob bject.Model. .Objects.Get tKey(ObjClas ss.WebPanel, level.Se election.Obj jectName) != = null) { Count + 1; modsCount = modsC } A continuación asigna es se valor a la variable &m modsCount del d procedimiento. I If &modsCoun nt <> <%= mo odsCount %> C Con el mism mo código qu ue cuenta la as instancias s recorre nue evamente ell for each y esta vez a agrega el có ódigo de obttención de nombre y descripción y la l invocación n a la subrutina New M Module. &ObjNombr re= !"<%= level.Select l tion.ObjectNa ame.ToLower( () %>" &Obj jDescripcion n = "<%= level.Sel lection.Desc cription %>" Do 'NewModu ule' S Sub NewMod dule, esta subrutina ing gresa los nombres de lo os objetos Selection juntto con la d descripción en la tabla SMO del módulo de se eguridad, prrimero obtiene el código o para el p primary key y, compara si el objeto o existe en la tabla en n caso de no n existir procede a iinsertarlo. Sub 'NewM Module' VAL=0 &NUMV &NUMCOD= ="OBT" for each oNombre=&ObjNombre where smo when none e New .Call(&NUMVA AL,&NUMCOD) PNumera. smoId=&NU UMVAL smoNombre e = &ObjNomb bre smoDescri ipcion=&ObjD Descripcion tipos='Ob bjeto' EndNew Endfor EndSub 2.5.10. SubChe eckSecurity y.dkt Las p plantillas sub bCheckSecurrity y subChe eckSecurityT Trn, establec cen el código o para la verificación de se eguridad, en el caso del SubCheckSe ecurityTrn, es e exclusiva para la transacción, la seguridad s en el sistema em mpieza en el objeto Selection, pero o si llegase a darse el caso c de que se logre esar la trans sacción sin haberlo hec cho mediantte las invoc caciones del objeto Selection el ingre usuarrio podrá hacer cualq quier tipo de variante e sobre lo os registros, para evitar este incon nveniente se e debería ta ambién asig gnar los permisos que tiene el ob bjeto Selecttion a la Trans sacción, enttonces deb beríamos ing gresar en el e sistema el nombre y descripció ón de la trans sacción en la a tabla SMO O y asignarle e los permis sos según el e rol, pero esta e tarea s se vuelve repettitiva y conffusa, pero se s tendría más m segurid dad en el sistema, la solución s es hacer la trans sacción tome e los permisos del objeto Selectio on de cada transacción n, para realizar esta CMM--N2/PLT03 Revis sión 28/07/2 2011 - 127 - PAT TTERN WW WETAPA opera ación es se debió asociar al nombrre de la transacción con el texto ‘ttc’ en el inicio de la variable Pgmnam me. Y verifica ar los permis sos que tiene e el usuario sobre el objeto Selection y estos narles a la transacción. asign <%= security.C CheckName %>.Call('t tc'+&<%= rityCustomPa arams %>&IsAu uthorized). secur P ProgramNameV Variable % %>.toLower() ), <%= 2.5.11. Permis sos.dkt misos tambié én es única para el uso de la trans sacción, si esta e es ingre esada de La plantilla Perm algun na forma se verifica los permisos a las accione es que tiene el usuario, en la transacción la verificación de pe ermisos bloq quea los botones, el cód digo de la pla antilla es igu ual al de la subrutina s missions del objeto o Selecttion, pero co on las varian ntes para el bloqueo b de los botones. Perm Esta subrutina pa arte verifican ndo si el usu uario no es admin, a si lo es, le asigna todos los permisos si no o lo es le qu uita todos lo os privilegio os y recorre la estructu ura de permisos devueltta por el proce edimiento Pe ermisosV y va desbloqu ueando las opciones o de acuerdo a los permisos que se vayan n encontran ndo, finalmente verifica los valores sobre las variables v de permisos y si estas están n en estado false f se pro oceden a bloq quear los bo otones. Permi isosV.Call('tc'+&Pgmname e.toLower(), ,&Context.Us ser,&Context t.Rol,&IsAdm min,&Perms) If &IsAdm min &P PermitInsert t=True &P PermitDelete e=True &P PermitUpdate e=True &P PermitDispla ay=True El lse &P PermitInsert t=False &P PermitUpdate e=False &P PermitDelete e=False &P PermitDispla ay= False For &Perm msItem in &P Perms Do Case Case &Per rmsItem.Perm miso = 'Inser rt' &PermitIn nsert = True Case &Per rmsItem.Perm miso = 'Updat te' &PermitUp pdate = True Case &Per rmsItem.Perm miso = 'Delet te' &PermitDe elete = True Case &Per rmsItem.Perm miso = 'Displ lay' &PermitDi isplay= True EndCase ndFor En if f (&Mode = ' 'INS' and &P PermitInsert t = False) btn_enter2.Visibl le=False e=False btn_enter.Visible ndIf en CMM--N2/PLT03 Revis sión 28/07/2 2011 - 128 - PAT TTERN WW WETAPA if f (&Mode = ' 'UPD' and &P PermitUpdate e= False) btn_enter2.Visibl le=False e=False btn_enter.Visible ndIf en if f (&Mode = ' 'DEL' and &P PermitDelete e=False) btn_enter2.Visibl le=False e=False btn_enter.Visible ndIf en if f (&Mode = ' 'DSP' and &P PermitDispla ay=False) re eturn en ndIf EndIf 2.5.12. Proced dimiento Lis stPrograms s ocedimiento ListProgram ms cumple la a función de escribir el nombre n y la descripción de todos El pro los objetos Selec ction en un procedimien nto y cuando o un usuario o ingresa al sistema este e verifica e cada uno de los ob bjetos tenga a o no perm miso, para almacenarlo o en una que el usuario en estructura SDT que será devuelta cuando o se invoque e a este proc cedimiento 2.5.12.1. ListProgrramsVariab bles.dkt L La estructurra de datos que recopillara los obje etos selectio on se llama ProgramNa ames, las v variables name y description son el nombre y la a descripción n del objeto selection la a variable llink guarda la referencia a del objeto Selection us sEncrypt1 y usEncrypt2 son la varia ables que e encriptan la información n del usuario. <%= <%= <%= <%= <%= <%= <%= Varia ables.Sdt("P ProgramNames", "ProgramN Names") %> Varia ables.Sdt("P ProgramName", "ProgramNa ames.Program mName") %> Varia ables.BasedO OnDomain("na ame", "Object tName") %> Varia ables.BasedO OnDomain("description", "ObjectName e") %> Varia ables.BasedO OnDomain("link", "URLStr ring") %> Varia ables.Basic( ("usEncrypt1", null, eDB BType.VARCHA AR, 64) %> Varia ables.Basic( ("usEncrypt2", null, eDB BType.VARCHA AR, 32) %> 2.5.12.2. ListProgrramsProced dure.dkt E Este plantilla escribe en e el proced dimiento ListPrograms el e de cada instancia en n la que rrecopila los atributos principales p d objeto Selection del S y agrega a el lin nk a ese ob bjeto, se o obtiene una lista con las s instancias que q existen en la base de d conocimie ento. L List<WWEtapa aInstance> allInstances a = WWEtapaCa ache.AllInst tances(Objec ct.Model); allInstan nces.Sort(de elegate (WWEtapaInstance e instance1, , WWEtapaIns stance insta ance2) { re eturn instan nce1.Name.Co ompareTo(ins stance2.Name); R Recorriendo las instanc cias, se lleg ga al objeto o Selection,, y se obtie enen el nombre, la d descripción y se asigna al atributo link el nomb bre del objeto y las varia ables que se e pasaran a al objeto Selection como o parámetros s, y se invoc ca a la subru utina AddPro ogram. f foreach (WWE EtapaInstanc ce wwInstanc ce in allInst tances) fo oreach (Leve elElement le evel in wwIn nstance.Levels) if (level.Selecti ion != null && level.Sel lection.Parameters.Count t == 0 O Object.Model l.Objects.Ge etKey(ObjCla ass.WebPanel, , level.Sele ection.Objec ctName) != null) n && CMM--N2/PLT03 Revis sión 28/07/2 2011 - 129 - PAT TTERN WW WETAPA & &name = !"<% %= level.Sel lection.Obje ectName %>" &descr ription = "<%= level l.Selection.Description n %>" &link = <%= l level.Select tion.ObjectN Name %>.Link k(&usEncrypt1 1, &usEncryp pt2, &Contex xt.Rol) D Do 'AddProgr ram' L La subrutina a AddProgra am verifica que el rol del objeto sea igual a al rol del usuario u y d devuelve la variable IsAuthorized, si el valor es true se almacena la l información en la e estructura SDT. S S Sub 'AddProg gram' &IsAuthor rized = True e IsAuthori ized.Call(&n name, &IsAuthorized) If (&IsAu uthorized) &P ProgramName = new Progr ramNames.Pro ogramName() &P ProgramName. . Name = &de escription &P ProgramName. . Descriptio on = &name &P ProgramName. . Link = &li ink &P ProgramNames s. Add(&Prog gramName) Endif E EndSub 2.6. C Configuración de obje etos que serán afectad dos por los Templates s. Los patterns p está án construidos con much hos objetos generados en e GeneXus los cuales pueden p o no ser modificados en un Template, para obten ner este arc chivo XML se debe ha acer una os construidos en una K KB, se gene era un archivo xpz el cual se lo exportación de los elemento debe descomprim mir y ahí se s encuentrra el archiv vo XML que e contiene los objetos con sus respe ectivos atributos, variables, reglas, dominios, a partir de es ste archivo podemos se eleccionar los ob bjetos que queremos q qu ue se genere en la primera a vez que ap plicamos un Pattern P en una KB. Recalcamos que cuando se va a agrega ar cierta fun ncionalidad (código, varriables, reglas) a un o de un temp plate se deb be hacer refe erencia en la a parte del objeto o al que e se va a objetto por medio modificar. <Obje ect parent="Security" gu uid="257a508 85-6bad-45d2 2-9695-13ddc ce13f791" na ame="modInit" " descr ription="mod d Init"> <Part type="528d1c06-a a9c2-420d-bd d35-21dca83f f12ff"> ties> <Propert <Property> me>Defaults</ /Name> <Nam <Value>WWEtapa:( (global)Temp plates\modIn nitProcedure e.dkt</Value> perty> </Prop </Proper rties> </Part> ties> <Propert <Property> me>Defaults</ /Name> <Nam <Value>WWEtapa:( (global)Temp plates\modIn nitVariables s.dkt</Value> perty> </Prop </Proper rties> </Part> < </Object> CMM--N2/PLT03 Revis sión 28/07/2 2011 - 130 - PAT TTERN WW WETAPA La prrimera propie edad invoca al template que escribe e el código de el procedimiiento. La se egunda propiiedad invoca a al template e que crea la as variables para el procedimiento. 2.7. Editar el có ódigo por defecto d del Instance file El pro oyecto desarrrollado en el e Lenguaje C# C provee lo os componen ntes y objeto os necesario os para el mane ejo de los Pa atterns. El Pro oyecto se Ba asa en la definición de un u Namespac ce principal y es en don nde se aloja la mayor cantid dad de códig go. El pro oyecto en C# # contiene una u clase es specífica que e interactúa directamente con la tran nsacción. La de eclaración de e variables difiere d de la forma f en la que se decla aran en los Templates. T Cada vez que se haga un cam mbio sobre este e código, es necesariio volver a generar g la lib brería del Patte ern (PC.Patte erns.WWEtap pa.dll), la cu ual está ubica ada en el dirrectorio. C:\Pro ogram Files (x x86)\Artech\G GeneXus\Gene eXusXEv1PlatfformSDK\Pattterns\WWEtap pa\Source\obj\Release La definición de va ariables s se realiza con el uso de la librería ch.Genexus s.Common.Variable la cual dispensa los tipos de datos que soporta Ge eneXus. Artec 2.7.1. Clase WWEtapaUp W pdateTrans saction Esta clase tiene como c objetiv vo actualizarr a la transac cción cuando o esta sea affectada por el Patte ern, los camb bios que sufrre la transac cción, son bá ásicamente la asignación n de reglas, creación de ev ventos, creac ción de varia ables. 2.7.1.1. Variables s L La declaraciión de varia ables en la transacción n se hace en e un métod do que recibe como p parámetros una instanciia del archivo WWEtapaS Setting, y la instancia de e la Transacc ción. p private stat tic void Upd dateVariable es(WWEtapaSet ttings setti ings, Transa action trans saction) C Como regla general parra la declara ación de variables se debe declara un atributo o de tipo V Variable en donde d se pasa como parrámetros la transacción,, y el nombre e de la varia able. V Variable var r = AddVaria able(transac ction, "IsAut thorized"); Y a continua ación se le as signa un tipo o de dato a la l variable. Boolean Variable var = AddVa ariable(transaction, "Is sAuthorized" "); Type != eDBT Type.Boolean) if (var.T va ar.Type = eD DBType.Boole ean; Varchar Variable e uEc1 = Add dVariable(transaction, " "usEncrypt1" "); if (uEc c1.Type != eDBType.VARC e HAR) { CMM--N2/PLT03 Revis sión 28/07/2 2011 - 131 - PAT TTERN WW WETAPA uE Ec1.Type = eDBType.VARC e HAR; uEc1.Length u = 64; } Characte er Variable uEc1 = AddV Variable(transaction, "u usEncrypt1") ); c1.Type != eDBType.CHAR e RACTER) if (uEc { Ec1.Type = eDBType.CHAR e RACTER; uE uEc1.Length u = 64; } L Las variables s que deriva an de Estructturas de Dattos SDT, o de d funciones propias de GeneXus c como WebSession se de eclaran pasa ando como parámetros la transacciión, el nomb bre de la v variable y el Tipo del cua al deriva AddVariab bleWithType( (transaction, "TrnContex xt", "Trans sactionConte ext" ); AddVariab bleWithType( (transaction, "PermsItem m", "Permiso os.PermisosI Item"); Las variables s que derivan de un atributo se dec claran mane era diferente e. Y en el A método AddBasedOn Variable, priva ate static c void AddBasedOnV Variable(Tra ansaction Trans sactionAttribute baseAtt tribute) { transaction n, string name, Variable var = AddVa ariable(transaction, nam me); AttributeBas sedOn != baseAttribute) if (var.A var.Attri ibuteBasedOn n = baseAttr ribute; } E En la secciion de variiables de la transacció ón se crearon las variables, usE Encrypt1, u usEncrypt2, PermitUpda ate, PermitDe elete, PermittView, PermitInsert, Perrms y Permsitem. 2.7.1.2. Rules L La actualizacion de las reglas es una u parte en e la que no o se realizo o ningun cam mbio, un a atributo nec cesario en esta e seccion n es el Rule es que es de d tipo Strin ngBuilder, y es este a atributo sob bre el cual se s agrega el código que e se aloja en e la seccion de las rules de la ttransacción. S Si es el caso oq ue unicam mente se agrega un textto se utiliza la funcion rules.Append d, cuando s se va a obte ener un atrib buto de la transacción se s utiliza la funcion rules.AppendFo ormat, la c cual establec ce al atributo que contie ene la inform macion de la parte que se e va a agreg gar. foreach (Tr ransactionAtt tribute trnA Att in trans saction.Stru ucture.Root.PrimaryKey) rules.App pendFormat(" ", in:&{0}", trnAtt.Name e); E El código que q esta alojado en los l parentesis agrega la variable e primaryKe ey de la ttransacción. F Finalmente el e método in nvoca al método AppendRules que crrea el bloque e de la regla as. AppendRul les(transact tion, rules.ToString()); ; 2.7.1.3. Events CMM--N2/PLT03 Revis sión 28/07/2 2011 - 132 - PAT TTERN WW WETAPA E El meto que e afecta a los eventos es el Upda ate Events, a traves de e llamado s a otros m métodos gen nera el códig go que está alojado en la a parte de lo os eventos de la transacción. private sta atic void UpdateEvents U (WWEtapaInst tance instance, WWEtap paSettings s settings, Transaction n transaction n) Event AfterTransactio on E El eventos AfterTransa action decla ara una atrributo eventCodeAfterT Trn que es de tipo S StringBuilder, mediante el cual tom ma todas las lineas de có ódigo que se eran agregad das en el b bloque del evento. e private static void d UpdateEv ventAfterTrn n(WWEtapaInstance n, BasicParse er parser) transaction inst tance, Tra ansaction eventCodeAf fterTrn.Appen ndLine("If (&Mode ( = Trn nMode.Delete e and not &TrnContext t.CallerOnDel lete)"); C Con la siguie ente sentenc cia se invoca a al objeto se election de la transaccion. eventCode eAfterTrn.Ap ppendLine(String.Format( ("\t{0}.Call l()", emergency yRedirection n.ObjectName, emergencyR Redirection. .Parameters. .List())); F Finalmente la variable eventCodeAftterTrn pasa al método Update U code Event el cua al agrega e el bloque de el evento en la transacc ción, este método crea el e inicio del evento y el final del m mismo (Even nt, EndEvent) UpdateEve entCode(pars ser, new string[] { "Aft ter", "Trn" }, eventCode eAfterTrn.To oString()); E Event Startt private static s void UpdateEventStart(WWEtap paInstance instance, i WW WEtapaSettin ngs settings, , Transactio on transaction, BasicPar rser parser) ) E El evento Sttart fue el qu ue mas cambios genera en la transa acción, dentro de este evento e se h hace llamadas a las plantillas de se eguridad y de d permisos,, su forma de d elaborar el e código d de los eventtos es simila ar al del Afte erTransacctio on, declara un atributo de tipo Strin ngBuilder p para poder ir recolctand do sentencia as, este atributo se llam ma eventCod deStart, mediante el q que utilizamos la funcion n Append, AppendLine como c en el evento AfterT Transaction. P Para inserttar el cód digo prov veniente de e un Tem mplate se invoca al método A AppendTemp plateOutput,, pasando como c parám metros el no ombre del template y el e objeto p parámeters. Cabe mencionar que no o se debe ag gregar la exttencion de lo os Templates s. if (sett tings.Securi ity.Enabled) { A AppendTempla ateOutput(ev ventCodeStar rt, "SubCheckSecurityTrn n", paramete ers); Ap ppendTemplat teOutput(eve entCodeStart t, "Permisos", parameter rs); } A Al final este invoca nuev vamente al método UpdateEventCo ode que es el e que se en ncarga de e etablecer el bloque del evento. e UpdateEve entCode(pars ser, new string[] { "Sta art" }, even ntCodeStart. .ToString()); CMM--N2/PLT03 Revis sión 28/07/2 2011 - 133 - PAT TTERN WW WETAPA M Método App pendTempllateOutput E Este método o recibe el no ombre de la plantilla y enseguida e la completa co on la extens sion de la m misma , a co ontinuacion crea el Path en donde se e encuentra la plantilla y conjuntam mente con ttodos los parametros ne ecesarios crrea un atribu uto output, que q es el qu ue implanta el código e en el evento o. private static s void AppendTemplateOutput(St tringBuilder r stringBuil lder, string g templateN Name, Genera ator.GeneratorParameters s parameters s) E En la Clase WWEtapaUp W pdateTransac ction estos son s los méto odos en los que q más inte ervencion p por parte de el usuario qu ue trabaje co on los Patterrns existe. Las L demás métodos m no varían v en n nada y sirve en la conform mación total de la transacción. 2.7.2. Clase ActionEleme A ent endiendo de las necesida ades de la organización o n puede dars se el caso que las trans sacciones Depe reciban algún tip po de dato co omo paráme etros de entrada y este se establezc ca por están ndar para todas s las transac cciones, el prroblema radica en que no n se pueden n manipular las reglas ni eventos de la a transacción, una vez que esta sea s afectada a por el Patttern, enton nces necesariamente deberíamos modificar los mé étodos en la a clase WWE EtapaTransactionUpdate er, pero de la misma era los obje etos que in nvocan a la a transacció ón deberían pasar los parámetros s que la mane trans sacción recib be. Entonces s el primer objeto o que in nvoca a la trransacción es e el objeto Selection y com mo habíamos s visto en la plantilla res spectiva esta a o implementaba directamente la sentencia s con la que se llamaba a la transac cción, dicha a sentencia se encuen ntra en el método a clase Actio onElement, mediante m el objeto o AddParameter ag grega las SetSttandardParameters de la sente encias que se e necesiten, por defecto o el valor que se agrega es el modo en el que se e llama a la tra ansacción. Es sa parte no se s debería cambiar. c AddParameter(" "); 2.7.3. Clase ParameterE P Element En esta clase po odemos manipular el método m Rule eforView que obteniend do una insta ancia del Método concaten nate, obtiene e el código para la asignación de la regla r al obje eto View. Me ediante la decla aracion de un n atributo de e tipo String gBuilder, este toma la va ariable prima aryKey y la devuelve al mé étodo el cuall la invoco. StringBui ilder sb = new n StringBu uilder(100); fo or (int i = 0; i < Coun nt; i++) { mPrefix); sb.Append(item b.Append(useV Variables? Variables.Va V ariableName( (this[i].Nam me) : sb th his[i].Name); ; if (i < Count C - 1) sb b.Append(", "); } Nuev vamente en el método R RuleforView,, a través del atributo parameter se s puede as signar las variables necesarrias para arm mar la regla.. 2.8. Módulo de d Seguridad El m módulo de seguridad para p la valid dación de objetos o y us suarios está á dotado co on varias validaciones e interacciones s con la base e de datos que q devuelve en informació ón a los obje etos. esta sección se describirrá las partes s más importtantes en la validación de d los usuarios. En e Pro ocedimiento o IsAuthorizedWWE este e procediimiento se encarga e de hacer la verificación del usuario y el e objeto de esde el cual el usuario hace la pettición de ing greso. Devuelve una CMM--N2/PLT03 Revis sión 28/07/2 2011 - 134 - PAT TTERN WW WETAPA variiable boolea ana que iden ntifica si el usuario solicitante está á autorizado o sobre el objeto. o El usuario se carga desde el SDT S Context.. Pro ocedimiento o PermisosV este proce edimiento re ecibe las varriables con el e nombre de el objeto, el u usuario y el código de rol, y veriffica los permisos que tiene el objjeto para es se rol, y dev vuelve una variable que indica si el usuario u solicitante es adm min o no, y cuando el us suario no es a admin recopila en el SDT T permisos los permisos que tiene asignado el objeto o para ese e rol. Pro ocedimiento o ListProgrrams el procedimiento o ListProgram ms es usado o para recopilar en el SDT T ProgramNa ames todos los objetos a los que pue ede accederr el usuario solicitante. s &name = !"TCProced dencias" &descrip ption = "Ma antenimient to Proceden ncias" &link = TCProceden ncias.Link( () Do 'AddP Program' SetConte ext(&Contex xt) Sub 'Add dProgram' &IsAutho orized = Tr rue IsAuthor rized.Call( (&name, &Is sAuthorized d) If (&IsA Authorized) ) &ProgramNam me = new Pr rogramNames.ProgramNa ame() &ProgramNam me.Name = &descriptio on &ProgramNam me.Description = &nam me &ProgramNam me.Link = &link &ProgramNam mes.Add(&Pr rogramName) Endif EndSub SMOColection es un data provider, es ste objeto presenta una estructura ideal para el e manejo SDT recursiv vos, este objjeto fue el adecuado parra armar el árbol á con los s sistemas módulos m y de S obje etos, la ta abla SMO contiene to odos los a atributos ne ecesarios pa ara armar el SDT Tree eNodeCollec ction. TreeNode eCollection n where sm moId>0 where ti ipos = 'Sis stema' or tipos t ='Mod dulo' or ti ipos = 'Obj jeto' where sm moIdPadre= &smoIdPadr re or (&smo oIdPadre=0 and smoIdP Padre.IsNul ll() ) { Id = str r(smoId) Name = smoNombre s Link = smoLink s //Use th he Tree Nod de Click ev vent now Nodes = SMOColecti ion.udp(smo oId) } Hom me: Es el Web W Pannel principal que e se visualiz zara cada ve ez que se in ngrese al sis stema, la partte más impo ortantes de este e objeto es e la de los eventos. e Eve ent Load enc cripta el usuario y el password y co onjuntamente con el cód digo del rol invoca al Tree e View de ob bjetos. Event Lo oad if not &Context.Us & ser.IsEmpty y() &Usua arioEncrypt t1 = getenc cryptionKey y() &Usua arioEncrypt t = encrypt t64(&Usuari io,&Usuario oEncrypt1) &Pass sWEncrypt = getencryp ptionKey() &Pass sW1Encrypt = encrypt6 64(&Passwor rd,&PassWEn ncrypt) TreeView.Call(&UsuarioEncrypt, &UsuarioEn ncrypt1, &P PassW1Encry ypt, &PassWEn ncrypt, &Us suarioRol) endif CMM--N2/PLT03 Revis sión 28/07/2 2011 - 135 - PAT TTERN WW WETAPA EndEvent t Eve ent Enter: este e evento verifica que los datos de el usuario se ean los corre ectos, busca a la fecha de caducidad del rol, alm macena las variables en e el SDT Context, mediante m el uso del procedimiento setContext. s Event En nter &usrX = '' &session n.Destroy() ) for each h where usNam me = &Usuar rio for each where e activo = True if (F FechaInicio o <= &Today y and Fecha aFIn >= &To oday) or (u usName = 'admin n') &realPsw w = Decrypt t64(usEncry ypt1,usEncr rypt2) if &Real lPsw = &Pas ssword &u usrX = usNa ame &U UsuarioRol= = rolId endif endif f endfor endfor if &usrX X <> '' &Context.User = trim(&usrX) &Context.Rol = &Usuar rioRol &Context.Password=trim(&Passwor rd) SetContext(&Context) else e msg('Usuar rio/Passwor rd Inválido o.') endi if EndEvent t We eb Pannel TreeView: T e este panel re ecibe el usuario, el pass sword y el rol r los des encripta y los almacena en e el SDT Context, C y a continuació ón procede a cargar ell árbol en el e evento tree eview1.Node eClicked. Event St tart &Con ntext.User = Decrypt6 64(&Usuario o1Encrypt, &UsuarioEn ncrypt) &Context t.Rol = &Us suarioRol &Context t.Password = Decrypt6 64( &PassWe encrypt1, &PassWEncry & ypt) SetConte ext(&Contex xt) &treeNod deCollectio onData = SM MOColection n.udp(0) EndEvent t Event tr reeview1.No odeClicked &smoNomb bre = &sele ectedTreeNo ode.Name EndEvent t CMM--N2/PLT03 Revis sión 28/07/2 2011 - 136 - ANE EXO M UAL DE MANU D USUAR U RIO D DEL P PAT ANEXO E A MIGRA ACIÓ ÓN DE EL MODEL LO WEB W DE EL SIIGECOM MIGRACION DEL MODELO M W WEB D DEL SIGEC COM MIGR RACIÓ ÓN DE EL MO ODEL LO WE EB DE EL SI IGECO OM CMM--N2/PLT03 Revis sión 28/07/2 2011 - 138 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM Historia al de Revisio R nes Fech ha Versión De escripción n Autor 28/0 07/2011 1.1 1 De etalle del proceso p de conversión n de e la base de conocimiento de el SIGECOM. Patricio Cuenca CMM--N2/PLT03 Revis sión 28/07/2 2011 - 139 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM T Tabla de Con ntenido os 1.INTROD DUCCIÓN ................................................................................. 141 1..1. Prop pósito .....................................................................................................................141 1..2. Alcan nce del Document D to .....................................................................................141 1..3. Defin niciones, acrónimo os y abre eviaturas .................... . .............................141 1..4. Referencias ................................................................................................................141 1..5. Visió ón Genera al del Doc cumento ......................................................................141 1..6. Supo osiciones y Depend dencias........................................................................141 2.M MIGRAC CIÓN DE EL MOD DELO WE EB DEL SISTEM MA DE GES STIÓN COMER RCIAL DE LA EM MPRESA A MUNIC CIPAL ETA APA EP.. .................................................................................................... 142 2..1 Análisis de los objetos s a ser migrados m ...................................................142 2..2 Defin nición de objetos a ser mig grados .......................................................142 2..3 Corre ección de e errores en GeneX Xus x ev1 1 ...............................................146 2..4 Errorres porqu ue no se generan g l las clases s CS. ......................................146 2..5 Refin namiento o de funciones..............................................................................149 2..6 Camb bios pasa ando a SQ QL Serverr 2008 R2 2 ...............................................151 2..7 ERRO OR con Ge eneXus X Evolutio on1 U5. .....................................................151 3.A APLICAC CIÓN DEL PATTERN ........................................................ 151 3..1 Corre ección de e errores .................... . .....................................................................152 CMM--N2/PLT03 Revis sión 28/07/2 2011 - 140 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM 3. INTRODUCC CIÓN 3.1. Propósito Describir el proceso de migración D m de el modelo Web del Sistem ma de Gestión comercia al de lla empresa municipal m ET TAPA EP. 3.2. Alcance del Docum mento D Detallar el proceso p de an nálisis de ob bjeto a ser migrados, m el proceso de m migración, c cambios en la KB, y cam mbios en los objetos después de ser migrados. Y la aplicació ón del P as transaccio ones seleccio onadas. Pattern en la 3.3. Definicio ones, acrón nimos y abr reviaturas 3.4. Referenc cias http://www22.gxtechnical.com m/portal/hgxpp001.aspx?15,10,533,O,S,0,PAG;CON NC;53;1;D;244200;1;PAG;, http://ealmeeida.blogspot.com m/2008/07/migrando-de-genexus--90-genexus-x.httml 3.5. Visión General G del Documento o Proporcionar la docu umentación que q sirva como guía parra posteriore es conversion nes E e los distinttos Sistemas en s de ETAPA EP. desde GeneXus 9 a GeneXus X Evolution1 3.6. pendencias s Suposiciiones y Dep La empresa Etapa Ep., provee erá la base de conocim miento con el modelo a ser migrado o. ción a los errores e que se presente en será la documentaci d go en ón del códig La soluc donde se e encuentra la inconsiste encia y/o la eliminación de código. esolverán lo errores en el e SIGECOM que no teng gan que ver con la Conve ersión No se re a la vers sión Evolutio on. ebas serán realizadas con c el perso onal de Etap pa ya que ellos e son los que Las prue conocen el funcionam miento del sistema. s Los cam mbios en el Pattern que tengan t que ver v a cambio o de funcion nalidad no es starán contemp plados en el proyecto de e tesis. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 141 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM MIGRACIÓN N DEL MODE ELO WEB DEL D SISTEM MA DE GESTIÓN COMER RCIAL DE L LA 4. M E EMPRESA MUNICIPAL M ETAPA EP. 2 2.1 Análisis de los objetos o a ser s migrado os En n primera instancia el e proyecto o planteaba a la migra ación de varios mó ódulos pe ertenecientes a distintos s sistemas que conforma an el SIGECO OM. Debido a la problem mática qu ue se iba a generar g al separar s los módulos, m y por p la poca o casi nula funcionalidad que se e iba a tene er del sistema se plan nteó migrar todo el mo odelo Web del SIGECO OM, la ap plicación del Pattern se realizara r a lo os módulos que presenten mayor niivel de nece esidad po or parte de la Empresa 2 2.2 Defin nición de objetos a se er migrados s Muchos sistem mas nuevos que se están n desarrollan ndo en ETAP PA son construidos en en ntorno W Web, debido a esto es ne ecesario inte egrarlos al SIGECOM S po or eso se op ptó migrar to odo el modelo Web del d SIGECOM M. d todo el modelo m consis ste en conve ertir la KB de la versión 9.0 a El proceso de migración de la X Ev1, la a corrección de errores en la gene eración se realizaran r a todo el sistema, mientras que la refinación n de módulo os se harán a los definid dos por el personal de E ETAPA EP P. 1. Respald do de la KB, es necesarrio contar co on una copia a de todo ell directorio de d del sistema a. Este proce eso es muy importante ya que se presenta p un error al trattar de abrir la KB en Genexus X Ev1,, indicando que no se puede p abrir el directorio o si es que no existe una copia c de la misma. m 2. Limpiar la KB. Este proceso ha ace referenc cia a la eliminación de los modelos que q no n a migrar y los arc chivos, los modelos que q fueron eliminados s son se van SIGECO OM_Catalogo o, SIGECOM M_PrePro, SIGECOM_Pre eProWin, SIIGECOM_Pro oWeb, SIGECO OM_Win, SIG GECOMWeb_ _Prod. Y todo os los archivos con exten nsión ari. EL L siguiente paso p es verifficar los obje etos que teng gan errores en la KB Original, realiz zando un na nueva especificación y generació ón de toda la a kb. En es ste punto se e detalla el listado de e los objetos que fuero on modificad dos y/o elim minados de la l KB original. Debido a que prresentaban errores e y no permitían la a compilación de la KB. E objeto mostraba un error en la actualizac ción de la ta abla, por ORBTIPIN. Este co omentó la lín nea que hacíía referencia a ese atribu uto ORBTIPIN = &ORBTIIPIN e eso se CTORBA. Nuevamente N e el error se e generaba en e la actualización de la a tabla y en n este AC prrocedimiento o se comentó ó la línea 10 ORBTIPIN = &ORBTIPIIN nto APAjustt. El error co onsistía en que q únicame ente se había a creado el objeto o Prrocedimien pe ero no tenía ninguna fun nción y era necesario n qu ue exista un panel la solu ución fue eliminar el procedimien nto, existen muchos pro ocedimientos s con este errror y se los elimino. nto BorraMi. Como en el procedimiento anterio or genero el mismo prob blema Prrocedimien y se eliminó este e objeto. Prrocedimien nto CamNom m1. Se pro oducía un error en la variable v &CliCod y el prroceso qu ue se siguió fue comenta ar la línea 6 &CliCod = CNTCLI. C nto Cantone es. Generab ba un error en e un bucle for f each, el error e se generaba Prrocedimien en n la línea 2 WHERE CAN NTONPRVCO OD = &XCAN NTONPRVCO OD, en este procedimien nto se co omentó todo el código. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 142 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM Prrocedimien nto Comparra. Se comentaron las líneas 43 y 44 &N N1=CONCAT T(&N1, '"', '')), y el for ea ach de la línea 55 a la 61. &N N1='"'+&GXP PZON, Prrocedimien nto CPYDOC C. Generaba a un error en n el tipo de datos d de la variable v WsE Ebiling y el procediimiento a seguir fue eliminar la variable y comenta ar la línea 317 strResultado o=&WsEBiling.ProcesarDocumentoTrributario(&sttrXML). &s Prrocedimien nto DETLLAMADAS. Ell error se prrodujo debid do a que la variable srv tenía un n tipo de datto erróneo, se s eliminó la a variable srv y se come entaron las lííneas 1 &Tellefono y 57 &srv.s sendMail('ETA APA EP-Detalle de LLamadas pgue errer@etapa a.net.ec', &c cliema ,'','ESTADO DE CUENTA-D DETALLE DE LLAMADAS ',&mesg). nto GesOrde en. El error se producía a en el where del for each debido a ese Prrocedimien inconveniente e se comentó ó todo el cód digo. nto GRabarI Instalacion n. El error se e producía en e la actualiz zación de la tabla Prrocedimien a través de la as variables, se comenttaron las lín neas 94, 96,, 97, 98, 99 9, 100, 101,, 109, 11 19, 121, 122 2, 123, 124, 125, 126. nto GRDETA A. Se elimin nó el código existente en el source, el procedim miento Prrocedimien ta ambién se eliiminó. Prrocedimien nto HabWIffi. Producía a un error en e la asigna ación de un valor al atributo Va allni, se com mentó la línea a 24. nto IDsRedB Ba. Se comentó el for each e de la lín nea 1 a la 16 6. Prrocedimien Prrocedimien nto INGINSM. Se come entó todo el código del source s nto IngInsP Pool. Se com mentó la líne ea 9 ModSerrie=&ModSerrie Prrocedimien nto IngModI Ins. Se com mentó la líne ea 2 ModSerie=&ModSerrie Prrocedimien Prrocedimien nto INGserM Mod. Se com mentó la líne ea 2 ModSerrie=&ModSerrie nto Ins4Tlff. Prrocedimien &IItlIdAux; Se com mentó la línea dos de las condiciones INSID D >= nto Internac cionales. Se S comentó todo t el códig go. Prrocedimien Prrocedimien nto Kardeud das. Se com mentó la líne ea 8 VALORG GX = &Valorr. Prrocedimien nto Migconv vRur. Produ uce un error en la línea 378 3 y 379, se s comentaro on las sig guientes líne eas: & &AUXdate = CONCAT (su ubstr(&OCUF FEC,7,2),sub bstr(&OCUFE EC,5,2), '/'), & &AUXdate = CONCAT (&A AUXdate,sub bstr(&OCUFE EC,3,2),'/') E El if de la línea 397 también genera un error se e procedió a comentar todo t el códig go del bloque if. Prrocedimien nto MigraPredios. Se comentó tod do el código.. Prrocedimien nto MiGRUB BE. Se elim minó y se de ebe quitar la referencia en e la línea 14 1 del prrocedimiento o MigGeneral. Prrocedimien nto MIGREN NERAL. Se borró b la llam mada al procedimiento Migrube M de la a línea 14 4. nto SWNSoA Ac. Se agre egaros valore es numérico os a los atrib butos SOLNUE en Prrocedimien las líneas: 3 where SOLN NUE = 0 CMM--N2/PLT03 Revis sión 28/07/2 2011 - 143 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM L La línea 24 SOLNUE S = 1, uitaron las comillas c del número n 1 PActNumSol.C Call(&SolNum m,1). Línea 29 se qu nto SWNSOREL se asignó un valor numérico al atributo SO OLNUE de la a línea Prrocedimien 3 ya que tenía a asignado un u número en formato ch har. nto ObtTPro oceso se com mentó todo el e for each de d la línea 37 7 Prrocedimien fo or each ORDT TIPID. Prrocedimien nto PagAntC Convenios se comentarron las línea as 4, 8, y el e NEW de la a línea 14 4 la 23. nto Parejas se comentaron las línea as 3 a la 11. Prrocedimien n los prrocedimienttos RDeiI InstEdu, RACatastro R Inconsisten ncias, , RAPLstI En RD DeuTlf, RA APIncPasIn nstalacione es. Se co omenta la línea 25 de las Rules Errror_Handlerr('Maneja_Errror'); Prrocedimien nto Tratel se e comentó la a línea 24, la a línea 25, la a línea 27, 28, 29 y la 30 0. Re eporte CarC Clientes mostraba m el error e en las líneas 14 y 25 y el pro oceso a segu uir fue co omentar dich has líneas de e código &V VAL_MENOS30 = CCMEN NOS30 y &V VAL_TMENOS30 += CCM MENOS30. n error en las reglas es s cual estab ba ubicado en e las Trransacción FNMSRI. Contiene un lín neas 16 y 17 7, el proceso o a seguir fue e comentar las l líneas. errror('Tipo de Identifficación lenght(ltrim(F FNMCRP))<> >10; de Identifficación errror('Tipo lenght(FNMCR RP)<>13; IN NCORRECTA') If FNMTipCRP = 'CED' AND IN NCORRECTA') If FNMTipCRP = 'RUC' AND Trransacción INFPAGO. Se comentó ó la línea 11 de las regla as &T TotalPago=S SUM(ValorPa ago); n. Trransacción Inspeccion ag gregó el rojo o. Se bajó a diseño, se s cambió las propieda ades del WC C y se e eliminó esta transacció ón. Trransacción INTAR4 Se Trransacción Grupos. Se agregó en las reglas la a línea siguie ente p parm(in:&parrId, in:&Mod de,in:TInsCo od, in: SupGrruCed, in: DepID D ); En n lugar del parm p que exiistía parm(& &parId, &Mod de); Ad demás se ag gregaron las s grillas al Web W Form co on los mismo os atributos de las grilla as del W Win Form. Trransacción TIMCHK. Se S agregó en n las reglas la siguiente línea. p parm(in:TIMIID, in: TIMFC CH, in:TIMHOR ); o. Se comen ntó la línea 4 de las rule es. Trransacción TipServicio BloqNum = &b bloqnum IF NOT Insert; Trransaccion desGrp. Nos ubicam mos en la parte de We eb Form, en n la pestaña a edit ha acemos clic en e Create De efault. sacción, nos s ubicamos en la Trransacción pruGRP. Abrimos el Web Form de la trans pe estaña edit seleccionam mos créate de efault. oRIAEN. Se eliminó es ste objeto. Ho GX X190. Se comentó c las s reglas, las condiciones s y se elimin nó la column na DesZona de la grrilla. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 144 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM W Web Panel m mCupos. Se eliminaron n las column nas de la grilla, solamen nte se mantu uvo la co olumna OP de la variable e &op. W Web Panel GetDeudaCl G c la líínea de la ru ule. iente. Se comentó pa arm(in:&iCed dulaRUC, out:&DeudaCliiente); W Web Panel Mig5Intar. M En la grilla dejar d las colu umnas. Ca ategoría, código tarifa, forma pago o, valor Id, Descripción Tarifa, Id pago, p valor costo ac ctual. W Web Panel EnvCorreos. E . Generaba a un error en n la variable srv, se eliminó dicha va ariable y se comentó las líneas 18 8 y 19 de los s eventos. &s srv.sendMaill('jguaman@ @etapa.net.e ec',&correo,'','DETALLE DE D AVISO DE E PAGO',&me esg) &s srv.sendMaill('pagos@eta apa.net.ec',& &correo,'','DETALLE DE AVISO A DE PA AGO',&mesg g). W Web Panel MordG. M Se eliminaron e de la grilla las columnas que tienen la palabra togo. W Web Panel MPareja. co olumnas Op y Estado. Se elimin naron todas las column nas de la grilla g exceptto las W Web Panel PruEmp. P La a grilla únicamente que edo con las columnas TR Raced y TRa anom, las demás fue eron eliminad das. DS SKFACA Atttribute(s).. DIRLOCA is (are) deffined in tab ble DSKFA1 but not in Data view DSKFAA A. Se elimina aron las transacciones. gCosV. Se eliminó. e Ell objeto Mig Ell objeto Mig gInta. Se e eliminó. Ell objeto Mig graHo. Se eliminó. e Objeto OrdenPago. Se eliminó. ChaUlt. Se comentó c tod do el for de la a línea 4 a la a 30. OrdPagBanC Objeto SWIn nsta. Se elimino Ell objeto Títu ulos. Se eliiminó. Ell objeto Usu uario. Se eliminó. n la Tabla ApNvLector A res. Se cam mbió el nomb bre del índice e IapnvLecto ores por Iapn nv1. En n la Tabla TRAAR7. T Se e renombro el índice ITR RAAR7 por IT TRAR7. En Ha aciendo los cambios c a to odos los obje etos mencionado se logró hacer una a regeneraciión de to oda la KB en Genexus 9 y por ende se pudo abrrir la base de e conocimien nto en GeneXus X Ev v1. A continuación n de este prroceso se debieron arreg glar los errorres que géne ero la conve ersión, y algunos que e no los tom mo en cuenta a el proceso de conversió ón. Imagen 2.2.1 2 Tareas a cumplirse c en el e proceso de co onversión. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 145 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM Imagen 2.2.2 Mensaaje de culminacción de la convversión. 2 2.3 Corre ección de errores e en GeneXus G x ev1 W WwIntDep. Se comentó todo el cód digo de las conditions. c W WmIngSup.. Se comenttaron las líne eas 75 y 76. & &axlCod = nu ullvalue( AxlCod ) c call( TAxlT, &axlCod, & &Mo ode ) T También las líneas 54 y 62 6 y la 68 A Además se co omentaron las líneas 3 y 4 de las co ondiciones. B Banzon1. Se comentó el call de la línea 8 &xCod & = AxlCod, la líne ea 12 Call(T TAxlT, A AxlCod, 'DSP P') la línea 22 &xCod = NULLVALU UE(AxlCod), la línea 2 de las rules y las c condiciones AxlDes A .LIKE E. &xDes; T TRAAR6 para soluciona ar este problema se tuv vo que camb biar los nombres a los ín ndices y ya que debid do a que esttá establecido para una longitud l de 6, 6 se duplica aban con otrras. T TRAAR1 se cambió el nombre del ín ndice ITRAAR R L Los índices cambiados c fu ueron, el ITR RAAR101 por TRAR11, eID_XE00001 e 1 por IDXE0 01 E En la conve ersión a la versión Evo olution no se s copiaron los work panel p BanZo on1, y m migSup, los cuales se co omentaron las líneas de etalladas con n anteriorida ad, se hizo un u xpz y se los carg go correctam mente en GXX X EV1. E Ejecutar Re ebiuld All A Al ejecutar el e rebuil all se s genera un n error en la librería IBM.Data.DB2.iS Series.dll' e error CS0 0006: No se pue ede encontrar archivo adatos el de meta ''bin\IBM.Datta.DB2.iSerie es.dll'. e error CS0 0006: No se pue ede encontrar de meta adatos archivo el ''bin\GeneXus.Programs.Common.dlll'. S Solución Files C Copiar la librería IBM.Data.DB2 2.iSeries.dll C en la dirección C:\Program ((x86)\Artech h\GeneXus\G GeneXusXEv v1\gxnet\bin para aplica aciones web y en C:\Pro ogram F Files (x86)\A Artech\Gene eXus\GeneXu usXEv1\gxne etwin\bin para aplicacion nes win, así como e en la carpeta a bin del mo odelo corresp pondiente. E En la transa acción TDB BBORRAR. Se agregó la a siguiente regla. r p parm(in: DB BLinea); 2 2.4 Errorres porque no se gene eran las cla ases CS. ======== === PSWCalle esPorNombre Compilation started s ====== ===== gxexec "C:\Models\SIGE ECOMX\SIGE ECOM_ProWe eb\web\bldapswcallespornom mbre.cs" r:GxBaseB Builder.dll -arg g:csc="C:\Wind dows\Microsoft.NET\Framework\v2.0.507 727\csc.exe" No se pudo encontrar ell archivo 'C:\Modelss\SIGECOMX\\SIGECOM_P ProWeb\web\bldapswcallesp pornombre.cs''. PSWCallesPorNombre Compilation C F Failed CMM--N2/PLT03 Revis sión 28/07/2 2011 - 146 - MIGRACIO M ON DEL MO ODELO WEB DE EL SIGECO OM S Se abrió el procedimien nto PSWCalle esPorNombre e y se le hiz zo un rebuild all y se ha ace el m mismo paso para los sig guientes obje etos. PSWDatR RedTe PswNueC Cli PSWPaise es PSWProfe esiones PSWProvincias PSWVARIIOS PSolRanA AutImp PSWAcDa aRei PSWGrbInstalacion PSWGrInst PSWInsCli mail PEnviarem PSWAGEN NDA PSWBorra aAgenda PSWNuev vaAgenda PSWParejjas PSWDaCliCod PSWGrbS Solicitud PSWLectu uraCliente PSWNove edades PSWNSoA Act PSWNSoR Rel PSWUsua ario PSWVrfPa ago PSWVrfUs suario PSwOrden nes PCCOrden PCCIngOrden SOPA PBANCAS PBANCAC COPA PCCInstalacion n POrdCBan PRNFVC2 2 PConBAN NELE PGBanEnt d PGCatOrd PObtHisto orico PRecCata astro PIngCatastro PObtFactura PSWObtD Deudas PSwGFina anciamientos POrdReg PGetDano os PGRutasM Manazana PSwDetLllamada PswObtIn ns PPerReca audacion PObtDCampanas mCC PRecParm PRecSolO OrdT PRecTipIn nstalacion PRecRepa aradores PregLlam madaCC PCallRepS Sad PCllSadNo ura PregLectu PSADRep porte PRptSad PNotS SAD PGetIdentificadorD Deuda Deuda PGetD PPago oDeuda PSolPa ago Pswprrurec Pvaltrranusuario PConffPago PCrgD DatCC PActFa acElectronica PObtE EstFacElec PSetE EmailFacElec PGetM MailFacElec PGetU URLFacElec PVerP Pago PEstConexion ermisos PSwPe RcRpttAvisos RDocx xLocal RAudT Transaccione es RdigV Ver TMatIns Cantones PSWC Pcalles PSWD DatR1 PEnvia aremail PSWB BorraAgenda PSWN NuevaAgenda a PPago oDeuda Ttmpffix TETCL LIT TETSR RI TETSR RIA CMM--N2/PLT03 Revis sión 28/07/2 2011 - 147 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM E En algunos casos c se presentó el sigu uiente error “CS2001: No se encuen ntra el archivo o de código fue ente pnumerac.cs” E Este error su urge porque es necesario copiar la clase c pnumerac.cs en la carpeta en d donde se e encuentran las demás cllases del pro oyecto, al ha acer esto se solucionan dichos d errore es. ========= == PSWNSoAcct Compilation started ====== ===== gxexec "C:\Models\SIGE ECOMX\SIGE ECOM_ProWe eb\web\bldapswnsoact.cs" -r:GxBaseBuild der.dll arg:csc="C C:\Windows\M Microsoft.NET\F Framework\v2 2.0.50727\csc.exe" Compiling apswnsoact...failed ( error code=1) Compilado or de Microsofft (R) Visual C# # 2005 versi¢n 8.00.50727..4927 para Micro osoft (R) Windows (R) 2005 Framework versi¢n v 2.0.507 727 (C) Microssoft Corporatio on 2001-2005. Reservados todos t los dere echos. apswnsoac ct.cs(504,57): error CS0030 0: No se puede convertir el tipo 'string' en n 'short' PSWNSoA Act Compilatio on Failed E En la línea 29 del objjeto PSWNS SoAct se en ncuentra esttablecida la siguiente sentencia s P PActNumSol.Call(&SolNu um,’1’) L La solución a esto fue po oner el nume ero 1 sin los s apostrofes. ========= == TCnfCobrannza Compilatio on started ==== ======= gxexec "C:\\Models\SIGEC COMX\SIGECO OM_ProWeb\w web\bldtcnfcobrranza.cs" -r:GxB BaseBuilder.dlll arg:csc="C:\Windows\Miccrosoft.NET\Fraamework\v2.0.50727\csc.exe"" h .success Compiling hsprioridades... Compiling ttaresp...successs h Compiling hsrestricciones ...success Compiling tplnrestriccion...success h Compiling hmconfmcab... failed ( error coode=1) Compiladorr de Microsoft (R) ( Visual C# 2005 2 versi¢n 8.00.50727.4927 para Microssoft (R) Window ws (R) 2005 Frramework versi¢n 2.0.50727 (C) Microsooft Corporationn 2001-2005. Reeservados todoss los derechos. e CS0103: El E nombre 'Modde' no existe en el contexto acttual hmconfmcaab.cs(202,41): error hmconfmcaab.cs(656,35): error e CS0103: El E nombre 'Modde' no existe en el contexto acttual hmconfmcaab.cs(1368,35): error CS0103: El nombre 'Moode' no existe en n el contexto acctual ess h Compiling hsvalttar...succ Compiling hstaresp...succe h ess TCnfCobraanza Compilatioon Failed E Este error se e genera en el Web Pan nel hmconfmcab, debido a que en lo os eventos se e trabaja c con una varriable &Modo o, la solució ón es cambiiar la variab ble &Modo po or &Mode y volver a g generar este e objeto. ========= == HwfConvennios Compilatio on started ==== ======= gxexec "C:\\Models\SIGEC COMX\SIGECO OM_ProWeb\w web\bldhwfconv venios.cs" -r:GxxBaseBuilder.ddll arg:csc="C:\Windows\Miccrosoft.NET\Fraamework\v2.0.50727\csc.exe"" h pos...failed ( errror code=1) Compiling hwfpagarantici Compiladorr de Microsoft (R) ( Visual C# 2005 2 versi¢n 8.00.50727.4927 para Microssoft (R) Window ws (R) 2005 Frramework versi¢n 2.0.50727 (C) Microsooft Corporationn 2001-2005. Reeservados todoss los derechos. error CS20001: No se encueentra el archivoo de c¢digo fuennte 'trsolid6.cs' L La solución es e abrir el procedimiento o PVenLin4 y comentar la línea 47, volver a gen nerar ese p procedimiento y a contiinuación volver a generrar todos los s objetos qu ue presentab ban error d debido a ese e inconveniente. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 148 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM Generating to SIGECOM__ProWeb\web\ttvensri.cs m found for f table 476 in model 4 [1th of o 1 superordinaatated of table 725 7 [UdmId 4277]] error: No mapping Specifying TDBBORRAR R (1314 of 1507 7). N (0xc0000005) at address 0x089c2fdf. error: Excepption ACCESS_VIOLATION error: Dumpping Details to:: C:\Models\SIG GECOMX\Rpt77AB7.tmp.dmpp error: Excepption ACCESS_VIOLATION N (0xc0000005) at address 0x089c2fdf. error: Dumpping Details to:: C:\Models\SIG GECOMX\Rpt88755.tmp.dmp error: Referrencia a objeto no n establecida como c instanciaa de un objeto. S Se eliminó la a transacción TDBBORR RAR y se comentó el forr each de las s líneas 1 a la 10 del p procedimiento PRebVal, este for eac ch corre las subrutinas s R Recuperar_in nstalacion y Actualiza K Kardex, y el e for each de las líneas 7 a la 20 de el procedimie ento RDuTlf,, este for each corre lla subrutina busca_insta alacion. P PRedVal. Se S comentó todo t el for each e de la prrimera línea hasta la 10. R RDeuTlf. Se S comentó el e forech de la línea 7 a la 20. 2 2.5 Refin namiento de d funciones La a primera función que se s debe cam mbiar en Gen neXus X evo olution1 es la a función ud df que se uttilizaba en GeneXus 9 y en GeneXus x se llama udp. La a verificación n de objetos s que tengan n implementtado la función udf se realiza con la a utilidad se earch de Gen neXus en donde muestra a el listado de d todos los objetos que traen imple ementada es sta función. Imaggen 2.5.1 Listado de Objetos con la función n buscada Hw wFDomiciliiarias. El ca ambio se rea alizó en la lín nea 150 &IVA = udf(PSa acaValor,12) Y en la línea 170 1 &ClaveFormat = udff(Pcformatea arClave, &Cla ave). Pc cUpdBfcrioT Trabajo. El cambio se realizó en la a línea 8. &nnroBeneficiarioss = udf(PcgetNrroBeneficiariossTrabajo,IdConvenio, IdSectorr, IdTrabajo) Ob bjeto Gx0O6 62. Se cam mbió la funció ón en la línea a 37 de los eventos e &C CatClaveCatastral = udff(Pcformatea arClave,&CattClaveCatasttral Pc cCalcUrbCuo otas se camb bió la línea 2 &IVA = udff(PSacaValorr,12) Hw wFInicio. Se S realizó el cambio en la línea 46 &disid & = udf(PcgetWorkStation n,&ip) Hw wfDatBene eficiarios. La a línea 136 &claveFormatt = udf(PcformaatearClave, &C CatClaveCatastraal) y la 153 &cclaveFormat = udp(Pcformatea u arClave, &CatC ClaveCatastral) W WsOrdenesP Pago. Línea 60 &tieneD Detalle = udf((PcNroOrdenPaagoConvenio, &OPAID) & la línea 80 &ttieneDetalle = udf(PcNroOrde u nPagoConvenio o, &OPAID) La a línea 100 &tieneDetalle & = udf(PcNroOrd denPagoConvennio, &OPAID) Hw wfPagarAn nticipos. La línea 106 &disid & = udf(PcggetWorkStationn,&ip) CMM--N2/PLT03 Revis sión 28/07/2 2011 - 149 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM Hw wfContrato os. La línea 133 &IVA = udf(PSacaValo u or,12), la 176 &ClaveFormatt = udf(PcformatearClave, &C Clave) Hw wfUrbValorres. Línea 97 9 &ClaveForm mat = udf(PcforrmatearClave, &CATCLAVE) & ) La a línea 41 &IIVA = udf(PSaccaValor,12) cCalcTotalA APagar. La línea 3 &IVA A = udf(PSacaV Valor,12). Pc Hw wfIngAntic cipos. La lín nea 348 &claaveFormat = udf(PcformatearC Clave, &claveFoormat) Hw wFInAnInd dividual. Línea 351 &claaveFormat = uddp(PcformatearrClave, &claveF Format) Pc cGenKardex x. Línea 2 &IVA & = udf(PS SacaValor,12). unción Hidd den Fu De e la misma manera que e con el udf mediante bu uscar listamos todos los s objetos que tengan la función hid dden, esta función f es reemplazada a por la pro opiedad visible=0 la forma f de uttilizarla es attributo.visiblle=0 Lo os objetos qu ue tienen im mplementado o dicha funció ón se listan a continuaciión. Gx0G82. la a línea tres de las rule es fue remp plazada por las líneas que se mu uestran a HG co ontinuación. //H Hidden(CONNrro,SECNro); CooNNro.Visible= =0; SE ECNro.Visible= =0; HG Gx031 la líínea 3 de la a función Hiidden fue re eemplazada por la func ción Visible como se muestra a con ntinuación. Hidden(CONNrro); //H CO ONNro.Visible= =0; HG Gx0NP1 lin nea //H Hidden(CONNrro); CO ONNro.Visible= =0; 3 Gx0NS2 lin nea 3 HG //H Hidden(CONNrro,SECNro); CO ONNro.Visible= =0; SE ECNro.Visible= =0; Gx082 linea a3 GG //H Hidden(CONNrro,SECNro); CO ONNro.Visible= =0; SE ECNro.Visible= =0; x08I1 linea 3 Gx //H Hidden(TRAID); TR RAID.Visible=00; Gx0GX2 line ea 3 GG //H Hidden(CONNrro,SECNro); CO ONNro.Visible= =0; SE ECNro.Visible= =0; Gx0NQ2 linea 3 HG //H Hidden(CONNrro,SECNro); CO ONNro.Visible= =0; SE ECNro.Visible= =0; CMM--N2/PLT03 Revis sión 28/07/2 2011 - 150 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM 2 2.6 Cambios pasando a SQL Server 2008 8 R2 En n la transacción tmorde eta en los ev ventos se crreó una sub btina con el nombre llam mar y se co olocó el siguiente bloqu ue de sente encias y es s invocada al final del evento sta art. Las se entencias de e la subrutin na fueron extraídas dell evento sta art puesto a que dentro o de ese ev vento se gen neraban erro ores en la ge eneración del programa en e c#. Su ub 'llamar r' &mora='N' =0 &valor= &FacPen n=0 &confid d='SALCONA AGUA' &confid d2='SALCON NAGUA' PRecMor raClientes s.Call(&in nstalacion n,&confid,&confid2,&meses,&m mora, &valor,&FacPen) &TOTAGU U=&valor ndSub En tap pvalorformulario.cs(886,15): error e CS0103: El nombre 'GX XCursor' no exiiste en el conte exto actual tap pvalorformulario.cs(886,44): error e CS0103: El nombre 'GX XCursor' no exiiste en el conte exto actual La a transacción n TapValor formulario se comentó el if de la línea 15 a la a 18 problem ma con el cu ursor. La a transacción n tapFormu ulario Ca ase de la líne ea 15 a la 20 0. pres sentaba el m mismo error del cursor y se comen ntó el Do a transacción n tmordeta se comentó ó el código de el evento listar de la líne ea 58 a la 64 4. La En n la transacc ción TBDClientes se co omentó el có ódigo del ev vento buscarr de la línea 36 a la 51 1. apnovedad se comentó ó el cursor de e la línea 15 5 a la 17. Trransacción ta El procedimien nto PingOrd dins se com mentó todo el código, ese e procedimie ento lo usan los work pa anels y gene era un error en el ambie ente web. 2 2.7 ERRO OR con Gen neXus X Evo olution1 U5 5. De ebido al cam mbio al upg grade 5 de GeneXus X Ev1, se prroduce un error e muy particular p cu uando se trabaja con .NE ET y DB2, el error se ge enera al mom mento de co onectarse con n la base de e datos desd de la aplicación para reallizar alguna operación. La a solución a este inconv veniente se encuentra e en n el archivo Web.config. En las cad denas de co onexiones se e encuentra a una librerría LibraryList=,GX,*US SRLIBL; reemplazar en todo el do ocumento el ,GX, por un na coma ( , ) 5. A APLICACIÓN N DEL PATT TERN CMM--N2/PLT03 Revis sión 28/07/2 2011 - 151 - MIGRACION DEL MODELO M W WEB D DEL SIGEC COM La a aplicación del Pattern se s realizó al sistema de configuració ón en el mód dulo de cobrranzas, el Pa attern se gen neró correctamente crea ando todos los objetos que q el Patterrn WWEtapa necesita pa ara su funcio onamiento co on la KB. La as primeras inconsistenc cias que se generaron fueron f en lo o referente a los nombre es de los bo otones. 3..1 Corrección de errorres La a aplicación del d Pattern en e las transa acciones produjo el siguiiente error, sp pc0001 Control/object 'B Btn_enter' no ot found/deffined. Is it on n the form? (Source, Lin ne: 56) ebido a que el nombre de d los botone es están cam mbiados, en ciertas transacciones es ste botón De tie ene el nomb bre imgConfirmar, enton nces la soluc ción fue copiar la fila con n los botone es que se crrea en Genex xus x Evolution, (imagen n) o mismo hac cer con los botones b de la a parte baja de la transa acción (imagen) Lo La as transaccio ones que suffrieron este cambio c fuero on: CnfCobranza a, TCnfFacilPago, TCnffFacturacion,, TCnfTarEs sp, TFrmPag go, TPInRestriccion, TC TP Prioridad, TT TarEsp, TTFrmPag, Ta ambién en la as transacciones TJerarrquia, TLinCa aracteristicas, TLineas, TLinLink, TP Producto, TS SubLineas, TTPrdCar, T TT TProducto de e la carpeta TrnsNucPrd T TC Categoria, TP Paquete, TTa arifa, TTarRa angos, TTCo omponente, TTTarifa, T TV Valor ebido a que el Pattern en e la creac ción de título os en las grrillas y asign nación de texto a las De va ariables tom ma la descripción de ca ada objeto o atributo, entonces el e siguiente paso es re enombrar cad da uno de es stos TextBlo oc las columnas de las grillas. g n el sistema se aplicó un nuevo tem ma llamado ETAPA2010,, para que lo os cambios sobre s los En ob bjetos tenga an efecto es necesario volver a realizar r un rebiuld all de toda la base de co onocimiento. Es ste fue el procedimient p to que se realizó r en la migración n del SIGEC COM de la Empresa Municipal ETA APA EP. Y la a aplicación del Pattern sobre distin ntos módulo os que confo orman al SIIGECOM. Lo os pasos deffinidos al prrincipio del documento d s deben seguir como regla se r genera al para la migración, y dependiend do del sistema que sea a sometido a la conve ersión se prroducirán distintos errorres y el tiempo reducirá o aumentara. CMM--N2/PLT03 Revis sión 28/07/2 2011 - 152 - ANE EXO MANU UAL DE D USUAR U RIO DEL PATT TERN NW ANEX A XO F PL LAN DE D PR RUEB BAS D DEL SISTEMA W APA WETA P PLAN DE PRUEBAS P D DEL SISTE EMA PL LAN DE PRU UEBA AS DEL D L SISTE EMA CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 P PLAN DE PRUEBAS P D DEL SISTE EMA Histor rial de Re evisiones Fech ha Versión De escripción 29/0 07/2011 1.1 1 Pla an de p pruebas WW WEtapa. CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 Autor del Pattern n Patricio Cuenca P PLAN DE PRUEBAS P D DEL SISTE EMA T Tabla de Con ntenido os 1. INTRODUCC CIÓN ........................................................................... 157 1..1. Prop pósito .....................................................................................................................157 1..2. Alcan nce del Document D to .....................................................................................157 1..3. Defin niciones, acrónimo os y abre eviaturas .................... . .............................157 1..4. Visió ón Genera al del Doc cumento ......................................................................157 1..5. Supo osiciones y Depend dencias........................................................................157 2. ESTRU UCTURA DEL D PLAN N DE PRUEBAS .......................................... 158 2.1 1. INTR RODUCCIÓN ............................................................................... 158 2.2 2. ELEM MENTO DE PRUEBA .................................................................. 158 2.3 3. CARA ACTERÍST TICAS A SER PROBADAS ........................................ 158 2.4 4. ACTIIVIDADES S Y MÉTO ODOS ........................................................... 158 2.5 5. CRIT TERIOS DE D ACEPT TACIÓN ........................................................ 158 2.6 6. REQUERIMIE ENTOS DE E AMBIEN NTE .............................................. 159 2.7 7. RESP PONSABI ILIDADES S ................................................................... 159 2.8.. REPOR RTES DEL L PROBLEMA, ESCA ALADA Y RESOLUC CIÓN ............ 159 3. ESPEC CIFICACIÓ ÓN DE CA ASOS DE P PRUEBA ...................................... 159 4. RIESG GOS ................................................................................................ 161 5. RESULLTADOS DE D CASOS S DE PRUE EBA ............................................. 162 CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 P PLAN DE PRUEBAS P D DEL SISTE EMA 1. INTRODUCC CIÓN El pllan de Prue ebas para el Pattern WWEtapa. Se llevara a cabo un na vez conc cluida la imple ementación del Pattern, en sus disttintas etapa as. Las prue ebas se realizaran en base b a la definición de requ uerimientos planteados en el ERS. pruebas se realizaran r en primera in nstancia verrificando la construcción n de los objetos que Las p intera actuaran con n la transacción que sea a afectada por p el Patterrn, y consisttirá en la verificación de lo os objetos y el código de cada un no de ellos. Para poste eriormente probar p el módulo de segurridad. 1.1. Propósito s capaz de generar el Web W Panel de mantenim miento de la transacción, t El Patttern debe ser mostrando en cada una de lo os registros los l botones de modificarr eliminar y visualizar. v erificara el co orrecto funcionamiento de los objeto os con las trransacciones s. La creación Se ve corre ecta del códig go que invoc ca a la transacción. En el e aspecto de e la segurida ad se verifica ara que el ing greso de los usuarios al sistema, s ya que deben tener t un esta ado activo de su permisos, los usuarrios podrán acceder a distintos módulos y objeto os dependiendo de su pe erfil, en cuanto a perm misos de accio ones hace re eferencia se verificara qu ue el usuario o únicamentte puede acc ceder a la trans sacción en lo os modos al que q este ten nga privilegio os (insert, de elete, update) 1.2. Alcance e del Docum mento onamiento del Pattern y detectar los s errores pos sibles si existiesen, para tomar Verifiicar el funcio los co orrectivos pe ertinentes. 1.3. Definiciiones, acrónimos y ab breviaturas 1.4. Visión General G dell Documentto El do ocumento de d Plan de Pruebas se e basara en n los casos s de uso del d documen nto ERS, espec cíficamente se regirá al funcionamie ento del módulo de seguridad, para a la verificac ción de la generación de ob bjetos del Pa attern WWEttapa nos basaremos en los errores que se mue estren en la com mpilación. 1.5. Suposic ciones y De ependencias s Las pruebas p se realizaran r ún nicamente en e base a los s requerimie entos definid dos en el ERS. No se erá tomado como error o no cumpllimiento de los l requerim mientos algun na nueva funció ón que se qu uiera agrega ar al Pattern. CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 - 157 - P PLAN DE PRUEBAS P D DEL SISTE EMA 2. E Estructura del d Plan de Pruebas 2 2.1. Introdu ucción El sig guiente es el Plan de Pruebas de e Aceptación n, que serv virá para ve erificar que se haya cump plido con los s requerimientos solicitados por los usuarios, se e supone que los requerrimientos se en ncuentran en n el docume ento ERS. La as pruebas que se ejecu utarán nos permitirán descubrir d los errrores existe entes en la im mplementación del softw ware. 2 2.2. Elemen nto de Prue eba Web Pannels de Mantenimien M nto de las tra ansacciones. Web Components s en las relaciones maes stro detalle. Auten nticación corrrecta de los s usuarios en n el sistema Ingre eso automático de los pa aneles de ma antenimiento o en el sistem ma Creac ción correcta a del usuario o Admin. Funciionalidad del sistema 2 2.3. Caracte erísticas a ser s probada as Las c característica as a ser pro obadas en el Pattern so on la generación correctta y completta de los objettos, la funcio onalidad correcta de los objetos, la validación de d los usuarrios registrad dos en el sistem ma. 2 2.4. Activida ades y Méto odos ón de los objjetos creado os se realizarra las prueba as de: Para la verificació uario Interfaces de usu bas de datos s Prueb Las p pruebas en el e sistema de e seguridad se s realizaran n siguiendo las l pruebas de: Prueb bas de datos s Prueb bas de interffaces de usu uario. Finalm mente será realizada la prueba de fu uncionalidad d. 2 2.5. Criterio os de Aceptación s aprobad da siempre y cuando se e hayan crea ado todos los s objetos La prrueba de las interfaces será con la a misma esttructura en la as grillas y no n presenten n ninguna inconsistencia a y/o e error en la ejjecución de la l aplicación. Prioridad 1 Las p pruebas de datos d serán aceptadas siempre y cuando c en lo os paneles de d mantenim miento se visua alicen los reg gistros alma acenados en las tablas de d la base de d datos, si los nuevos registros son a almacenados s sin generarr ninguna inc consistencia. Prioridad 2 Las p pruebas de funcionalida ad serán rea alizadas al momento m de e ejecutar la a aplicación, creando nuevos usuarios,, verificando o el bloqueo o de funcion nes, accedie endo a las transaccione t es en los ntos modos permitidos, y bloqueando el acceso a cuando el usuario no tenga el permiso distin para realizar la acción solicita ada. Priorida ad 2 Liste los criterios que se emp plearan para determinar si la ejecuciión del plan de prueba estará e comp pleta. E Clasifficación de Errores Calificación D Definición de e gravedad Definiición de prio oridad 1 El error se vu E uelve crítico debido a qu ue la a aplicación no se generara y no será pos sible s ejecución su El erro or debe correg girse lo antes posible. p El errror bloquea el progreso o de la aplicac ción. CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 - 158 - P PLAN DE PRUEBAS P D DEL SISTE EMA 2 El error causa problemas en E n los aspecto os de s seguridad y la funcionalidad d del sistema. El errror debe corregirse c lanzam miento del pro oducto. an ntes del 2 2.6. Requerimientos de e Ambiente e cribe las disttintas clases de herramie entas utilizadas en la prueba del sisttema. Esta sección desc Software e S Se han utiliza ado las siguientes herram mientas dura ante la prueba: Client Access: Se trata de la inte erfaz para la administrac ción de la Base de Datos DB2 por medio de e esta nos co onectaremos s para realiza ar verificacio ones en las tablas t y en lo os registros. n el servidorr de aplicacio ones web de e Windows que es Internet Information Services: en q se ejecutara la aplicación. sobre la que H Hardware Recu ursos Servidor de Base de Datos Computadorr Cantidad 1 1 Desc cripción Servidor de base S b de dato os de p pruebas C Computador robusto parra la g generación d las de a aplicaciones onfiguracio ones de Pru uebas de am mbiente Co N Nombre de la Configuraciión C IIIS Desc cripción Config guración del Internet inform mation Servic ces para aplicaciones Web. a configuración física Implementtación de la Crear un grupo de aplica C aciones con un u nombre c cualquiera. E Escoger el .N Net Framewo ork V2.0.50727 E modo de canalización En n administrad da s seleccionar la a clásica 2 2.7. Responsabilidades s de las prueb cio Cuenca responsable r bas del Patte ern Patric Ing. X Xavier Mejía a Director de el proyecto de la empresa. 2 2.8. Reporte es del problema, escalada y reso olución errores prod ducidos en la a aplicación del d Pattern y en el módu ulo de seguridad serán Los e contrrolados antes s de aplicars se en el siste ema debido a que el sisttema quedarra inservible si se generan errores en e los objeto os creados por p el Pattern n. 3. E Especificación de caso os de prueba Esta sección deta alla las prue ebas planead das a utilizar para comp probar el sistema y gara antizar la ecución de sus s objetivo os con los que q fue dise eñado. Para realizar esttas pruebas se debe conse llevarr a cabo las s configurac ciones neces sarias en el entorno de e prueba, ca ada caso de e prueba puede requerir un conjunto de d especifica aciones deterrminadas. CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 - 159 - P PLAN DE PRUEBAS P D DEL SISTE EMA Para cada caso de prueba pla anteado llene una tabla como la presentada a co ontinuación: Caso de Prueb ba Propó ósito: Nº 4. Prerrrequisitos: Pruebas s de Sistema sin errores. Datos s de Prueba:: ID V Variable V Valor Resu ultado Espera ado IR1 1 Creac ción del usuarrio Admin IR2 1 Creac ción del Rol Ad dministrador IR3 0 Asign nación del Rol Administrado or al Usu uario Admin IR4 U Username T True El sis stema verifica a si los datos son p password correctos, s si lo son se visualiza el web panel con los ma módulos y objetos. sistem IR4 U Username F False El sis stema muestrra un mensaje de datos erróneos y vuelve a p password arse el web pa anel de Login carga Pasos s: 1. 2. 3. 4. Aplic car el Pattern Gene erar la aplicac ción Ejecutar la aplicac ción Ingrreso del usuarrio admin a la aplicación Notas sy Pregu untas: El sistem ma verificara el nombre del usuario y la contraseña c y si s pasa la aute enticación se visualizarán lo panales s de mantenim miento de toda as las transac cciones que ha ayan sido s el Pattern. aplicadas Caso de Prueb ba Propó ósito: Nº 5. Permiso os de usuario os Verificar los permisos que tiene el usuario u con la finalidad de bloquear b las acciones a sobre e determin nado objeto Prerrrequisitos: Usuario logueado en el e sistema Datos s de Prueba:: ID V Variable Valor Res sultado Esperado PU1 I IsAuthorized T Ingrresa al Objeto o solicitado PU2 I Isauthorized F Visu ualización del Panne el las acciones NotA Authorized PU3 I IsAdmin T Hab bilita sobre todas el ntenimiento Man panel de de a la tran nsaccion PU4 I IsAdmin F Bloq quea todos lo os botones de el panel de Manten nimiento de la nsacción. tran PU5 P Permit(Accion ) T Hab bilita el botón n de la acción ya sea Insert, Delete, D Views s, date, Export Upd CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 - 160 - P PLAN DE PRUEBAS P D DEL SISTE EMA PU6 P PermitDisplay F Reto orna al panel Man ntenimiento Pasos s: 1.Selecciionar un objetto 2. Ingres sar a la transa acción en el modo m solicitado o Notas sy Pregu untas: Riesgos 4. R Riesg gos Plan de Conttingencia Impa acto Patterrn WWEtapa incom mpleto Utiliza ar una Kb limp pia es decir que no haya sido s ada anteriormente afecta por ell Pattern No se e crearan todo os los objeto os del Pattern n WWE Etapa, el sistem ma no estará á completo y conte endrá errores Dupliccidad de Tabla as, atribu utos e índices Utilizzar una base de d datoss en la que conte enga una réplicca de la basse de datos de e produ ucción. Se podrían mezcclar los atribu utos en las ta ablas existtentes, No se generaran las tabla as de manera a corre ecta. No se generaran todos los objetos o del Pa attern Se generara una uencia con mucha m secu difere encia entre núme eros. Dupliccidad en los código os para Prima ary Key Estra ategias de Mitig gación CMM--N2/PLANT1 18 Revis sión 29/07/2 2011 - 161 - de PLAN DE PRUEBAS DEL SISTEMA A 5. 5 Resultados de casos de prrueba ID CP FECHA Responsab ble ID DP RESULTAD DOS OBTENIDOS CORR RECTO 1 Patricio Cuencca IR1 El sisstema creo correctam mente el usuario admiin SI[ x ] NO[ ] 1 Patricio Cuencca IR2 El sisstema creo correctam mente el Rol administtrador SI[ x ] NO[ ] 1 Patricio Cuencca IR3 La asignación de Rol a los usuarios se reealizan con SI[ x ] o existo NO[ ] 1 Patricio Cuencca IR4 El sisstema visualiza el web w panel con el listado de los SI[ x ] NO[ ] SOLUC CION sistem mas módulos y objeto os 1 Patricio Cuencca IR4 El sistema visualiza un mensaje de error y vuelve a SI[ x ] ogin cargaar el Web panel de Lo NO[ ] 2 Patricio Cuencca PU1 El siistema permite el ingreso al usuario o al objeto soliciitado 2 Patricio Cuencca PU2 El sisstema visualiza el web w panel con el men nsaje de no SI[ x ] autorizado sobre ese objetto NO[ ] 2 Patricio Cuencca PU3 El sisstema verifica que el e usuario sea admin n y habilita SI[ x ] todoss los botones NO[ ] 2 Patricio Cuencca PU2 El sisstema bloquea todoss los botones si el ussuario no es SI[ x ] NO[ ] admin n 2 Patricio Cuencca PU3 El sistema verifica recu upera los permisos del usuario SI[ x ] sobree el objeto y habilitta las opciones a las uqe tiene accesso NO[ ] 2 Patricio Cuencca PU2 El sisstema verifica que sii el usuario no tienee el permiso SI[ x ] Dispaay retorna al web pan nel de mantenimiento o NO[ ] CMM-N2/PLANT1 C 18 Revisión R 29/07/2011 - 162 - C CAPÍT TULO O IV ANEXO A OD PATTERN N WW WETA APA ANEXO A OG M UAL DE MANU D USUAR U RIO DEL PATTERN N WW WETA APA MANUAL DE US SUARIO MANUAL L DE USUA U ARIO PATT TERN WWETA APA MANUAL DE US SUARIO de Con T Tabla ntenido os 1.A APLICACIIÓN DEL PATTERN N ................................................................... 166 2.C CREACIÓN N DE NUE EVOS FILT TROS EN EL WEB PANEL DE D MANTENIMIIENTO ........................................................................................... 167 3.M MANUAL DEL D MÓD DULO DE SEGURID DAD ............................................. 168 MANUAL DE US SUARIO Aplicación del d Pattern 6. A El Pattern WW E WEtapa se aplicara a únic camente a transacciones s y la aplica ación se pue ede hacer d dos forma de as. La primera es L e haciendo clic derecho o sobre la transacción, t ubicándose e en la fila de Apply P Pattern y esc cogiendo el Pattern P WWE Etapa. La segunda forma L f es abriendo la tra ansacción, a continuació ón se debe ubicar u en la barra de componentes s de la transacción en la pestaña Pattterns. En la parte superior a E aparecerá una barra con c el listad do de los patterns ex xistentes, seleccionar el e Pattern WWEtapa W y a continuaciión marcar la opción Apply this Pa attern on save, a conttinuación se e procede a guardar los cambios y el Patte ern se aplicara a la trransacción. 7. C Creación de e Campos de e Ordenam miento Por defecto el P e Pattern inc cluye un cam mpo de orde enamiento el cual es el atributo no clave de la a transacción n pero si se requiere se puede agregar más cam mpos el cua al será visualizado en la a transacción n en forma de d combo bo ox E la instancia del Patterrn nos ubicam En mos en el nivel de Orderrs dentro del objeto Sele ection - 166 - MANUAL DE US SUARIO Haciendo clic H c derecho no os ubicamos s en la opció ón add y seleccionamos order, ense eguida se creara un nu uevo nivel de order al que q se le tie ene que asig gnar un nom mbre a travé és de las del elemento p propiedades o Acontinuacion A n se le debe asignar el atributo a H Haciendo clic c derecho en el order nue evo seleccionamos Add y Attribute 8. C Creación de e nuevos filttros en el Web W Panel d de Manteniimiento E Pattern WWEtapa porr defecto cre El ea un filtro en e el objeto o Selection, la forma de e agregar m más filtros se e hace modificando la in nstancia del Pattern en cada transa acción en la parte de fiilters del objjeto Selection El primer pas E so es agrega ar el atributo o que será el e filtro, haciendo clic de erecho en la parte de a atributes sele eccionamos la opción Ad dd y finalmen nte Filter Atrribute/Variab ble - 167 - MANUAL DE US SUARIO S creara un atributo sin ninguna descripción Se El siguiente paso es ir a las propied E dades de es se atributo y editar el nombre n del atributo, d debe ser el nombre de un atribu uto existentte en la trransacción y luego ag gregar la d descripción. Automáticam A mente se crea ara la variab ble con el no ombre del attributo, la cu ual será utiliizada por e filtro el E siguiente paso El p es agre egar las condiciones que e se deben cumplir c para a lograr el filtrado de in nformación P Primero crea amos una nueva n condic ción haciend do clic dere echo en la parte de co onditions, seleccionamo os la opción Add A y Condition. Al igual que en A e los atribu utos se crea una condició ón sin ninguna descripción, el siguie ente paso e ir a las prropiedades de es d la condición y editar la propieda ad Value las condiciones s tendrán u una nomenclatura similar a la siguien nte, dependiiendo del tip po de datos de d los atributos. A ALimentoPrese entacion like &ALimentoPres & sentacion whenn not &ALimenntoPresentacion.IsEmpty() se visualizan Por defecto en P e el Panel de d mantenim miento de la transacción t n todos los atributos, a se puede elim minar estos c campos u oc cultarlos. Para ocultar el atributo en P e las propie edades se de ebe modifica ar el campo Visible V y pon nerlo con e valor False el e 9. M Manual del Módulo de Seguridad E la ejecución de la ap En plicación se abrirá a el pan nel de Log in en la que e se debe ingresar el n nombre de us suario y la contraseña c re espectiva. - 168 - MANUAL DE US SUARIO A continuació ón se visuallizara un árbol con los sistemas módulos m y ob bjetos en los que se in ngresara. E mantenimiento al mó El ódulo de seg guridad se realizara de e acuerdo a lo requerid do por el u usuario. Únicamente el usuario Admin Ú A podrá á ingresar al a módulo de e seguridad, los TextFie eld de la cabecera se utilizan u para filtrar por lo os campos: T Todas las transacciones tienen t la mis sma estructu ura física dell web panel de mantenim miento nuevo acctualizar eeliminar Actualizar, Nuevo A N y Eliminar son los tres mo odos en los s que se puede p invocar a las trransacciones s del módulo o de seguridad P Para ingresarr un nuevo usuario u se ha ará clic en e el botón +(nu uevo) que se e encuentra fuera de la a grilla. Y pa ara modifica ar o eliminarr un registro o se utilizara an los boton nes pertenec cientes a cada registro o. T Transacción n Usuarios El web panel de Usuarios E s tiene imple ementado los s siguientes filtros N Nombre Real del usuario, el Departamento y el Username. U Cuando se invoca a la tra C ansacción en n modo insert por prime era vez al tra atar de alma acenar un n nuevo usuariio mostrara un mensaje e indicando que ya existe el registrro, entonces se debe cancelar y nuevamente n volver a ingresar en n modo Insert y ya se podrán h hacer las in nserciones que q el usuario desee. T Transacción n Roles La transacció L ón roles tiene el Web Pa anel Mantenimiento Role es por el cua al se debe acceder a a e los diferen en ntes modos a la transacc ción. - 169 - MANUAL DE US SUARIO Al igual que en A e la transacción de usu uarios cuand do se ingresa a por primerra vez se de cancelar y volver a ing gresar nueva amente. T Transacción n Usuario R Rol El Web Pannel de man E ntenimiento de la tran nsaccion se visualiza como c Mante enimiento U UsuarioRol, los filtros qu ue se aplican n en esta Web W Pannel son s el Atribu uto Activo el e cual se u utiliza la T pa ara verdaderro y F para Falso, Usuarrio que es ell username con c el que in ngresa al sistema y el Rol del usua ario. En la transac E cción Usuario Rol es en donde se ingresara la información n sobre el es stado del u usuario activo o inactivo y la fecha de d inicio y la a fecha en la a que finaliza a el estado activo a de e usuario con ese c el rol asignado. T Transacción n Acciones. E Esta transac cción es ing gresada porr medio del Web Pann nel Mantenim miento accio ones, las acciones más comunes Insert, Delete, Update a e, Views, Export, E Disp play, son ingresadas a automáticam mente al siste ema y no es necesario in ngresarlas nu uevamente. Esta transacc E ción no tiene un campo o número co omo clave primaria, p su clave prima aria es el n nombre de la a acción. - 170 - MANUAL DE US SUARIO T Transacción n SMO Esta transacc E ción almacen na los sistem mas módulos s y objetos, en esta tra ansacción lo o primero q que se debe realizar cuando se utiliz za por prime era vez es crrear los siste emas y módu ulos para a continuació ón modificarr los objetos s que están n ingresados s, este Web Pannel con ntiene los fiiltros de Nom mbre del ob bjeto, el tipo o de objeto (sistema, modulo, m objetto, tab) y el nombre d objeto pa del adre L modificacion de los ob La bjetos hara referencia r al sistema o modulo m al que pertenesca. L tab que se Los s ingresen son s los objettos WC que son generad dos por el pa attern. Cuando se haya creado la relación entre C e sistem ma módulos y objetos ell árbol se visualizara d la siguientte forma. de - 171 - MANUAL DE US SUARIO Transacción T n Objeto Ro ol. Esta transacción cum mple la funció ón de asigna ar un rol a un u objeto y asignarle lo os permisos necesarios El web panel de mantenimiento de esta E e transacc ción se visua aliza como Mantenimient M to Objeto R Rol, y permitte filtrar por el nombre del d objeto y por el rol En la transa E acción para a ingresar un nuevo registro priimero se selecciona s u rol a un continuación el objeto al a que se le e asignara e el rol y postterior a ese e paso se procede a seleccionar la as acciones q que van a se er asignadas s a ese objetto con el rol seleccionado o. A cada acción n se le asign nara un Identificador num mérico. - 172 - CONCLUSIONES Genexus X Ev1 muestra una gran versatilidad y robustez en el desarrollo de aplicaciones informáticas y más aun sobre las aplicaciones en ambiente WEB, Genexus X Ev1 es una herramienta CASE que potencializa el funcionamiento de las aplicaciones, y minimiza en gran cantidad el tiempo de desarrollo, automatizando al máximo la construcción de paneles y objetos de interacción con la base de datos. La empresa Municipal ETAPA EP. debido a su constane crecimiento, los cambios sobre sus aplicaciones y la creación de nuevos sistemas, hace que sea indispensable el uso de una herramienta CASE como lo es GeneXus en sus departamentos de dasarrollo. El manejo oportuno de los recursos y la atención al cliente se ha convertido en un reto para todas las empresas, un reto que será imposible solventarlo sin el uso de sistemas informáticos lo suficientemente robustos. Genexus a través de su lógica de trabajo brinda el apoyo necesario para el desarrollo rápido de aplicaciones, y así ETAPA EP., logre solventar sus necesidades informáticas para el apoyo a sus operaciones como empresa pública. Los Patterns son aplicaciones que potencializan la automatización de GeneXus. El desarrollo de un sistema desde cero en Genexus EV 1, con la aplicación de un pattern se reduce a tal punto que lo único que debemos hacer es construir la transacción puesto que el pattern haría el resto. El desarrollo de patterns no es una tarea sencilla, requiere de un profundo conocimiento de genexus y las librerías que proveen la informacion de la KB. Además es necesario tener una buena habilidad para el manejo del Lenguaje Visual C#, aparentemente el concepto de Patterns es una nueva rama que se va expandiendo en el mundo de la informática. RECOMENDACIONES Para obtener una máxima automatización en la construcción de aplicaciones informáticas con el uso de los patterns, es necesario que se haga un análisis profundo sobre todas las operaciones comunes que se pueden integrar al pattern ya que la construcción de este puede tomar mucho tiempo, y si las necesidades varían en un lapso corto de tiempo el Pattern puede quedar inservible, o simplemente el pattern no se acoplaría a las verdaderas necesidades de la empresa. La empresa ETAPA EP. aparte de integrar un módulo de seguridad al pattern podría integrar servicios Web que le permitan comunicarce con sistemas externos. En lo que hace referencia al Sistema de Gestión Comercial, se debería migrar en su totalidad a GeneXus Evo1. Ya que las nuevas aplicaciones se están desarrollando en esta versión. Y funcionan como sistemas externos del SIGECOM., y si se tratara de integrarlos los principales inconvenientes que se generarán serán sobre los nombres de los atributos, indices y tablas, dichos inconvenientes pueden llegar a ser muy molestos ya que las soluciones son cambiar los nombres de las tablas, atributos y/o índices lo cual puede conllevar a que se generen errores en la aplicación y la otra es simplemente dejarlo como un sistema externo y no integrarlo al SIGECOM, y esto empeorará si siguen aumentando el número de sistemas y el tamaño de cada uno de ellos. Además si se deseara migrar el sistema a una futura versión de GeneXus el primer paso será convertirlo a Genexus Evo1. BIBLIOGRAFÍA Artech - http://www.genexus.com/portal/hgxpp001.aspx?2,69,1102,O,S,0,MNU;E;241;1;MNU;, http://www.genexus.com/portal/hgxpp001.aspx?2,69,1103,O,S,0,MNU;E;252;3;MNU;,173 412;P;94;167744;S GeneXus - http://www.genexus.com/portal/hgxpp001.aspx?2,61,1006,O,S,0,MNU;E;226;1;236;2;MN U;, http://www.genexus.com/portal/hgxpp001.aspx?2,61,1022,O,S,0,MNU;E;250;3;MNU;, - - GeneXus 9.0 - GeneXus X Evolution http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,9,65,O,S,0,MNU;E;10;1;MNU;, http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,9,89 http://www.genexus.com/portal/hgxpp001.aspx?2,61,1085,O,S,0,MNU;E;248;4;MNU;, http://wiki.gxtechnical.com/commwiki/servlet/hwiki?GeneXus+X+Evolution+1+Overview , - http://www.genexus.com/portal/hgxpp001.aspx?2,61,1006,O,S,0,MNU;E;226;1;236;2;MN U;, http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Dynamism+between+Transaction+an d+Pattern, Patterns - http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Dynamism+between+Transaction+an d+Pattern Microsoft Visual Studio 2008 - http://msdn.microsoft.com/es-es/library/bb386063(v=VS.90).aspx#SP1 Microsoft .net framework - 1http://msdn.microsoft.com/es-es/library/zw4w595w(v=VS.90).aspx Fundamentos c# - http://msdn.microsoft.com/es-es/library/ms228632(v=vs.80).aspx Aplicaciones y ejemplos - http://www.clikear.com/manuales/csharp/c32.aspx Descripción del proceso de migración - http://ealmeida.blogspot.com/2008/07/migrando-de-genexus-90-genexus-x.html http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Converting+a+KB+From+GeneXus+ 9.0+%28or+prior%29+To+GeneXus+X+%2F+X+Evolution+1,\ \ http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3AGeneXus+X+Compatib ility+Section, http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Category%3AGeneXus+X+Evolution +1+Compatibility+Section, - GeneXus x evo1 consideraciones generales - http://wiki.gxtechnical.com/commwiki/servlet/hwiki?Video%3AConversi%C3%B3n+de+ KBs+-+Curso+%22Actualizaci%C3%B3n+de+GeneXus+X%22,