MEMBRESÍA ProyectoJavaEEdeFindeCarrera JulioM.FernándezJiménez Membresía|JulioM.FernándezJiménez Amimaridoyalamúsica(eneseorden). Sinningunodeellospodríahaberculminadomiviaje. 2 Membresía|JulioM.FernándezJiménez Tabladecontenido Descripcióndelproyecto................................................................................................5 Objetivosdelproyecto...................................................................................................6 PlayFramework.............................................................................................................7 ArquitecturayDiseño.....................................................................................................9 Componentedeusuarios.........................................................................................................9 Componentedesubscripciones.............................................................................................10 Componentedecomunicaciones...........................................................................................10 Componentedeestadísticas..................................................................................................11 PlanificacióndelTrabajoRealizado...............................................................................12 PlanificaciónInicial................................................................................................................12 PlanificaciónReal..................................................................................................................13 Casosdeuso.................................................................................................................14 Usuariosadministrativos.......................................................................................................14 Gestióndesocios..................................................................................................................18 Gestióndesubscripciones.....................................................................................................23 Gestióndemensajeríaycomunicación..................................................................................27 Estadísticas...........................................................................................................................29 DiagramadeClases......................................................................................................31 DiagramadeComponentes..........................................................................................33 Diagramageneraldecomponentes.......................................................................................34 Diagramadecomponentesusuarios......................................................................................35 Capadepresentación..............................................................................................................35 Capadenegocios.....................................................................................................................36 Capadeintegración.................................................................................................................36 Diagramadecomponentessubscripción...............................................................................37 Capadepresentación..............................................................................................................37 Capadenegocios.....................................................................................................................38 Capadeintegración.................................................................................................................39 Diagramadecomponentescomunicación.............................................................................40 Capadepresentación..............................................................................................................40 Capadenegocios.....................................................................................................................41 Capadeintegración.................................................................................................................42 Diagramadecomponentesestadísticas.................................................................................43 Capadepresentación..............................................................................................................43 Capadenegocios.....................................................................................................................44 Capadeintegración.................................................................................................................44 LainterfazdeUsuario...................................................................................................45 Plantillageneraldelainterfazdeusuario..............................................................................46 PortalPrincipal......................................................................................................................46 Vistasdelistados...................................................................................................................48 Vistasdeformulario..............................................................................................................49 FormulariodeSocios...............................................................................................................49 3 Membresía|JulioM.FernándezJiménez Formulariodesubscripción.....................................................................................................50 Formularioderegistrodepago...............................................................................................51 Formularioderegistrodepagoporcorreo.............................................................................52 Formulariodeplantillademensajes.......................................................................................53 Formulariodemensajes..........................................................................................................53 Implementación...........................................................................................................55 SoftwareUtilizado.................................................................................................................57 EstructuradelCódigo............................................................................................................59 CapadePresentación............................................................................................................60 CapadeNegocios..................................................................................................................62 LaCapadeIntegración.........................................................................................................62 Conclusiones................................................................................................................65 Fuentes........................................................................................................................66 Recursos................................................................................................................................66 Artículos................................................................................................................................66 4 Membresía|JulioM.FernándezJiménez Descripcióndelproyecto Elproyectocuyoanálisissepresentaacontinuaciónconsistedeunaaplicaciónonlinepara elserviciodelagestióndesociosdelaAgrupaciónAstronómicadeTerrassa,aunquesu funcionalidadpuedeseraplicableacualquierasociaciónindependientementedesu actividad. Laaplicación,denominada“Membresía”,permitegestionarelcobrodelascuotasdelos sociosdeunaagrupaciónasícomolainformaciónpersonaldeéstos.Medianteel componentedesubscripciones,elgestordelsistemapuedecrearunaomás subscripcionesyasociarlasalossociosparticipantes.Lossociospuedenrealizarlospagos deformaparcialodeunasolavez,einclusoaplazarlospagossiasílodesean.Elsistema permitetambiénelenvíodecorreosporpartedeladministradordelsistemaasussocios asícomoelenvíoautomáticodeavisosyalertasdepago. 5 Membresía|JulioM.FernándezJiménez Objetivosdelproyecto Sepuededecir,queanivelprofesionalesteproyectorepresentalamigracióndemis conocimientosendesarrollowebenPHPaunentornodetrabajobasadoenJava.Ésta,y laconsolidacióndelasdestrezasadquiridasdurantemisañosdecarrera,sonsinduda algunalasprincipalesmotivacionesparalacreacióndeestetrabajo.Dentrodelámbito profesional,sebuscaalcanzarunniveldeconocimientodellenguajedeprogramación Java,ydelatecnologíaJavaEE,losuficientementealtocomoparapodercompetirenel mercadolaboralactual. 6 Membresía|JulioM.FernándezJiménez PlayFramework Playesunframeworkdedesarrollobasadoenprogramaciónreactivaparadesarrollosen JAVAyScala.Esteframeworkhasidodesarrolladopensandoenlaproductividaddel desarrolladoryenenelrendimientodelhardware,deformaquepromueveunmodelode hardwarequeescalahorizontalmenteenvezdeltradicionalescalamientoverticaldelos tradicionalessistemaJavaEE. Playpermitelaedicióndecódigoentiemporealsinnecesidaddereiniciarelcontenedor deaplicaciones.Conlafinalidaddeproveerundesarrollocontinuo,Playdetectalos cambiosrealizadosenelcódigo,locompilaycargaenelJMVsinnecesidaddeinteracción porpartedelusuarionidereiniciarlamaquinavirtual. LacapacidadreactivadePlaylohaceúnicoensugéneroalpermitirmúltiplesllamadas asincrónicassimultáneasalservidordeformaquesepuedenactualizarsegmentos concretosdelaaplicación.Porotrolado,PlayesRESTfulpornaturalezagraciasasu sistemaderoutingysusoportenativoparadatosJSON. AunquePlaypuedeserutilizadoparadesarrollaraplicacionesanivelentreprise,éste difieredelsistematradicionalJavaEEalcarecerdeservlets.Laausenciadeservletshacede Playunframeworkstateless,esdecir,sinpersistenciadeinformaciónentresesiones. ConPlayeldesarrolladorpuedatrabajarconellenguajedeprogramaciónJAVAoScalade formadedicadaoenconjunto,aunqueestaúltimaopciónestadesaconsejada.Scalaesun lenguajedeprogramaciónorientadoaobjetospuroenelsentidodequecadavaloresun objetodentrodeladeclaracióndellenguaje. ApesardelasinnovacionesyventajasquePlayofrece,éstenodejadeserunsistema basadoenelmodeloestructuralMVC.EnPlay,todaslaspeticionesHTTPpasanporel sistemadeenrutamientodelframeworkquetraducelaURLydirigelasolicitudal 7 Membresía|JulioM.FernándezJiménez controladoradecuado.Elcontroladorinteraccionaconelmodeloymanipulaelsistema persistentededatosparagenerarlaestructuradedatossolicitada.Actoyseguido,el controlador,atravésdelasvistas,generaelHTMLsolicitadoyloenvíacomorespuesta. LacapademodelodePlayhaceusodeEbeancomosistemaORMparalainteraccióncon lossistemasdepersistenciadedatos.EbeanORMestabasadoenelmodeloJPAdeJava, loquehacequesucurvadeaprendizajeseamínimaparaprogramadoresfamiliarizados conelentornoJavaEE.Enadición,Ebeanpermitequepuedahacerseusodecualquier sistemadegestióndebasededatos. 8 Membresía|JulioM.FernándezJiménez ArquitecturayDiseño Laaplicaciónestácompuestaporunaseriedemódulosocomponentes,cadaunodeellos encargadodeunafunciónconcretaenelsistema.Loscincocomponentesprincipalesdel sistemadeescribenacontinuación. Componentedeusuarios Elcomponentedeusuariosseencargadegestionaraquellosusuariosregistradosde ámbitoadministrativosasícomolagestiónyelaccesoalsistemaatravésdela autenticacióndeusuarios.Laautenticaciónserealizanmedianteelusodelemailyla contraseña.Estecomponentepermitetambiénsolicitarlarestauracióndelaclavede accesoencasodehaberlaolvidado. Enadición,tambiénpermitecrearymodificarusuariosexistentes,realizarcambiosenel perfilpersonaldelusuarioqueestáautenticadoyeliminarusuariosexistentes.Desdeeste componentetambiénesposiblelistartodoslosusuariosactualmenteregistrados,listado desdedondesepuedeaccederaaccionesconcretassobrelosobjetosenumerados,tales comolasdeeditaroeliminarusuario. Estacomponentetambiénpermitelagestióndelossociosdelaasociaciónydelciclode vidadecadaunodelossocios. Elcomponentepermitelistartodoslossociosytomaracciónsobrecadaunodeellos desdeelinterface.Estasaccionespuedenserlasdemodificarlosdatospersonales, eliminarelsocioocreaunonuevo.Enadiciónesposibleañadirunsocioauna subscripciónconcreta,eliminarlodedichasubscripciónyrealizarpagospendientesde formaintegraoparcial. 9 Membresía|JulioM.FernándezJiménez Componentedesubscripciones Lagestióndesubscripcionespermiterealizartodaslasgestionesrelacionadasconel manejodesubscripciones.Atravésdeestecomponentesepodráncrear,modificary eliminardiferentestiposdesubscripcionesasícomodefinirsuperiodicidadyvisualizar gráficamentelosingresosdevengados. Estecomponentecuentacomoactorsecundarioelmismosistema,quecreaperiodosde cobroparalassubscripcionessegúnsehayadefinidosuperiodicidad.Estosperiodosde cobrosongeneradosdeformaautomáticacadavezqueelperiodoanteriorvence. Elconceptodetrásdelagestióndemásdeunasubscripciónestámotivadoporla necesidaddecrearlíneasdecobrosalternativasalaprincipalsegúnseanecesario.Existen unagrancantidaddecasosenlosquepuedasernecesariotenermásdeunasubscripción vigenteparaconungrupocomoporelejemplolarecaudacióndefondosparauna actividadespecial,unviajeounacelebraciónenparticular. Estambiénatravésdeestecomponentequelossociospodránrealizarpagos,mediante Paypal,delassubscripcionespendientesdeabonarydeformaparcialoíntegrahaciendo usodeunaURLencriptadaquerecibiránensucorreoelectrónicoaprincipiodecada periododerecaudacióndecuotas.Deigualforma,losadministradoresdelsistemapodrán manualmenteregistrarunpagosinnecesidaddelaURLencriptada. Componentedecomunicaciones Elcomponentedegestióndemensajesfacilitaelenvíodenotificacionesomensajesalos socios.Estasnotificacionespuedenserpersonalizadas,apartirdeunaplantillao automatizadas. Enadición,elcomponentetambiénhabilitalacapacidaddecreación, ediciónyeliminacióndedichasplantillas. 10 Membresía|JulioM.FernándezJiménez Componentedeestadísticas Elcomponentedeestadísticasanalizalarecaudacióndelascuotasatravésdeltiempo. Existenbásicamentedosfuncionesprincipalesdeestecomponente.Laprimeradeellas muestragráficamente(gráficodebarras)losingresosmensualesporsubscripciónsegúnla recaudacióndelascuotas.Estegráficopuedetambiénmostrarlosingresosdesdeuna perspectivaglobal(todaslassubscripciones). Lasegundafuncionalidaddeestecomponenteeslademostrarunlistadodelossociosha pagadoalgunacuotarecientementeymostrarlosperiodosporcobrarmasrecientes. 11 Membresía|JulioM.FernándezJiménez PlanificacióndelTrabajoRealizado Entodotrabajoplanificadopuedenexistirdiscrepanciasentreelplanestimadoinicialde trabajoyelresultante.Acontinuacióndemuestranlasdiferenciasentreambas planificacionesdondepodremoscomparartantoeltiempoinvertidoencadatareacomo elcostedecadaunadeellas. Paracalcularloscostes,sehanutilizadotrestarifasdiferentessegúneltipodetarea realizada.Lasiguientetablaresumebrevementelosrolesdetareasylatarifaporhoraasí comosucódigodecolorcorrespondiente. Role Precio/hora Gestión/Administración 10€ Diseño 20€ Programación 25€ PlanificaciónInicial Acontinuaciónsemuestralaagendadetrabajopropuestaparaelproyectodesglosadaen sub-tareasdecaráctergeneral.Eltiempoestimadoparacadatareasehacalculadoen baseaunadedicaciónde3horasaldía. Tarea Plandetrabajoinicial Diseñodelsistema Especificacionesporcomponente Definicióndediagramasdecasosdeuso Diagramadeclases Diagramadecomponentes Implementación DiseñoUI(Adaptacion) Definicióndemodelosyfuncionesde interacciónconDB Programacióncontroladores Programacióndeserviciosybusinesslogic Testing Memoriaypresentación Hito Horas Fechaentrega PEC1 30 5/10/15 PEC2 4/11/15 PEC2 15 10/10/15 PEC2 12 14/10/15 PEC2 15 19/10/15 PEC2 18 25/10/15 PEC3 18/12/15 PEC2 24 7/11/15 PEC2 30 17/11/15 Coste 300,00€ 225,00€ 180,00€ 225,00€ 270,00€ 480,00€ 600,00€ PEC2 PEC2 PEC2 PEC4 600,00€ 900,00€ 300,00€ 12 30 45 15 27/11/15 12/12/15 17/12/15 11/1/16 Membresía|JulioM.FernándezJiménez Preparaciónmemoriaescrita Preparaciónmaterialaudiovisual PEC4 PEC4 30 30 27/12/15 6/1/16 300,00€ 300,00€ 4.680,00€ PlanificaciónReal Paralaplanificaciónrealderealizaronjornadasdecincohorascadaunaydediezlosfines desemanasyfestivos.Elcuadrodetiemposdeejecuciónypresupuestorealparael sistemaescomosemuestraacontinuación.Lastareasdeláreadedesarrolloe implementacióncarecendeunafechadefinalizaciónconcretaalhabersidorealizadasde formaintercala. Tarea Plandetrabajoinicial Diseñodelsistema Especificacionesporcomponente Definicióndediagramasdecasosdeuso Diagramadeclases Diagramadecomponentes Implementación DiseñoUI(Adaptacion) Definicióndemodelosyfuncionesde interacciónconDB Programacióncontroladores Programacióndeserviciosybusinesslogic Testing Memoriaypresentación Preparaciónmemoriaescrita Preparaciónmaterialaudiovisual Hito Horas Fechaentrega PEC1 30 5/10/15 PEC2 7/11/15 PEC2 10 20/10/15 PEC2 20 25/10/15 PEC2 10 28/10/15 PEC2 45 7/10/15 PEC3 18/12/15 PEC2 35 PEC2 40 PEC2 PEC2 PEC2 PEC4 PEC4 PEC4 13 45 80 20 30 30 Coste 300,00€ 150,00€ 300,00€ 150,00€ 675,00€ 700,00€ 800,00€ 900,00€ 1.600,00€ 400,00€ 11/1/16 7/1/16 300,00€ 11/1/16 300,00€ 6.575,00€ Membresía|JulioM.FernándezJiménez Casosdeuso Acontinuaciónsedescribenlosdiferentescasosdeusosegúnelcomponentealque pertenecen. Usuariosadministrativos CU_1 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Login Usuarioadministrador. Accederalsistemacomousuarioregistrado. Noestarautenticadoyelusuariodebeestarregistrado previamente. Elusuarioquedaautenticadoenelsistemaytieneaccesoalmenúy lagestióndelsistema. Elusuarioentrasuemailycontraseña. Elusuarioesautenticadoyllevadoalpanelprincipaldelsistema desdeel quesepuedenaccederatodaslasfuncionalidadesdel mismo. 1. Elusuariointroduceunemailocontraseñaerrónea. 2. Elsistemaavisaalusuariodequehaintroducidouna secuenciadedatos deautenticaciónincorrecta. CU_2 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Recoverpassword Usuarioadministrador. Restaurarlaclaveocontraseñadeacceso. Noestarautenticadoyelusuariodebeestarregistrado previamente. Elusuarioadquiereunanuevaclavedeaccesoatravésdesucorreo electrónico. Desdeelpaneloformularioderecuperacióndecontraseña,el usuarioentrasuemailypulsaen“recuperarclave”parainiciarel proceso. Elusuariorecibeporcorreoelectrónicounanuevaclavegenerada de formaautomática. 1. Elemailintroducidoesincorrectoonoperteneceaningún usuario. 2. Elsistemaavisaelusuarioconunmensajedeerroryleinvita aproceder denuevo. CU_3 Actorprincipal Objetivos Logout Usuarioadministrador. Salirdelsistemacomousuarioautenticado. 14 Membresía|JulioM.FernándezJiménez Precondiciones Postcondiciones Escenario principal CU_4 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Estarautenticadoenelsistema. Elusuarioesexpulsadodelsistemaydebevolveraautenticarse parapoderacceder. 1.Elusuariohaceclicsobreelenlacede“salir”o“logout”. Listusers Usuarioadministrador. Mostrarunlistadodetodoslosusuariosregistrados. Estarautenticadoenelsistema. Semuestraenpantallatodoslosusuariosadministradoresdel sistemaactualmenteregistrados. 1. Elusuariohaceclicsobreelenlacedelmenú“Listar usuarios”. 2. Elsistemamuestraunatablacontodoslosusuarios administradoresregistrados. CU_5 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Adduser Usuarioadministrador. Añadirunnuevousuarioalabasededatos Estarautenticadoenelsistema. Queelcorreoelectrónicodelnuevousuarionoesteyaregistrado bajo algúnotrousuario. Elusuarioquedaregistradoenelsistema. Seleenvíaunemailalnuevousuarioconsusdatosdeacceso. 1. Elusuariohaceclicsobreelenlacedelmenú“Nuevo usuario”osobreelbotónenlaesquinasuperiorderechadel listadodeusuarios. 2. Elsistemamuestraelformulariodealtaqueelusuariodebe completarconloscamposmarcadoscomoobligatorios. 3. Elusuariocompletaelformularioypulsaguardar 4. Elusuarioquedaregistradoyseleenvíaunemail notificándoledela acciónasícomodesusdatosdeacceso. 5. Seretornaalalistadeusuariosadministrativos. 1. Sepulsaelbotónguardartrasintroduciruncorreo electrónicoyaregistradoparaotrousuario. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 3. Sepulsaelbotónguardartrasnoproveertodala informaciónsolicitadacomoobligatoria. 4. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 15 Membresía|JulioM.FernándezJiménez CU_6 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Edituser Usuarioadministrador. Modificarlosdatospersonalesdeunusuarioregistrado. Estarautenticadoenelsistema. Accederallistadodeusuariosadministrativos. 1.Losdatosdelusuarioquedanmodificados. 1. Elusuariohaceclicsobreeliconode“modificarusuario” ubicadoenlabarradeherramientasaladerechadelosdatos delusuarioenlatablaolistadodeusuariosadministrativos. 2. Secargaelformulariodedatosdeusuarioconlosdatosde éste. 3. Semodificanlosdatosysepulsaelbotóndeguardar. 4. Losdatosquedanguardados. 5. Seretornaalalistadeusuariosadministrativos. 1. Sepulsaelbotónguardartrasmodificarelcorreoelectrónico porunoyaregistradoparaotrousuario. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 3. Sepulsaelbotónguardartrasnoproveertodalainformación solicitadacomoobligatoria. 4. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_7 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Deleteuser Usuarioadministrador. Eliminarunusuariodelsistema. Estarautenticadoenelsistema. Accederallistadodeusuariosadministrativos. Losdatosdelusuarioquedanmodificados. 1. Elusuariohaceclicsobreeliconode“eliminarusuario” ubicadoenlabarradeherramientasaladerechadelosdatos delusuarioenlatablaolistadodeusuariosadministrativos. 2. Selepresentaalusuarioconunaalertadeconfirmaciónde acción. 3. Elusuarioconfirmalaacción. 4. Seeliminaelusuario. 5. Seretornaalalistadeusuariosadministrativos. 1. Elusuarionoconfirmalaaccióndeeliminarelusuario 2. Seretornaalalistadeusuariosadministrativos. 16 Membresía|JulioM.FernándezJiménez CU_8 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Modifypersonalprofile Usuarioadministrador. Permitemodificarlosdatospersonalesdelusuarioactualmente autenticado. 1.Estarautenticadoenelsistema. 1.Losdatosdelusuarioquedanmodificados. 1. Elusuariohaceclicsobreelenlace“perfil”ubicadoenla barradeinformacióndelusuarioenlazonasuperiorderecha delapantalla. 2. Secargaelformulariodedatosdeusuarioconlosdatosdel usuarioactual. 3. Semodificanlosdatosysepulsaelbotóndeguardar. 4. Losdatosquedanguardados. 5. Seretornaalalistadeusuariosadministrativos. 1. Sepulsaelbotónguardartrasmodificarelcorreoelectrónico porunoyaregistradoparaotrousuario. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 3. Sepulsaelbotónguardartrasnoproveertodala informaciónsolicitadacomoobligatoria. 4. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 17 Membresía|JulioM.FernándezJiménez Gestióndesocios CU_9 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Listmembers Usuarioadministrador. Mostrarunlistadodetodoslosusuariossociosomiembros. Estarautenticadoenelsistema. Semuestraenpantallatodoslosusuariossociosdelsistema actualmenteregistrados. 1. Elusuariohaceclicsobreelenlacedelmenú“Listarsocios”. 2. Elsistemamuestraunatablacontodoslosusuariossocios registrados. CU_10 Actorprincipal Objetivos Precondiciones Postcondiciones Addmember Usuarioadministrador. Añadirunnuevosocioalabasededatos Estarautenticadoenelsistema. Queelcorreoelectrónicodelnuevosocionoestéyaregistradobajo algún otrousuariosocioousuarioadministrador. 1. Elsocioquedaregistradoenelsistema. 18 Membresía|JulioM.FernándezJiménez 2. Elusuariohaceclicsobreelenlacedelmenú“Nuevosocio”o sobreelbotónenlaesquinasuperiorderechadellistadode socios. 3. Elsistemamuestraelformulariodealtaqueelusuariodebe completarconloscamposmarcadoscomoobligatorios. 4. Elusuariocompletaelformularioypulsaguardar. 5. Elsocioquedaregistrado. 6. Seleenvíaalnuevomiembrounemaildebienvenida. 7. Seretornaalalistadesocios. Escenario principal Escenario alternativo Extensiones CU_11 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo 1. Sepulsaelbotónguardartrasintroduciruncorreo electrónicoyaregistradoparaotrosocioousuario administrador. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 3. Sepulsaelbotónguardartrasnoproveertodala informaciónsolicitadacomoobligatoria. 4. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_15,CU_16 Editmember Usuarioadministrador. Modificarlosdatospersonalesdeunusuariosocio. Estarautenticadoenelsistema. Accederallistadodesocios. 1.Losdatosdelusuarioquedanmodificados. 1. Elusuariohaceclicsobreeliconode“modificarsocio” ubicadoenlabarradeherramientasaladerechadelosdatos delusuarioenlatablaolistadodeusuariossocios. 2. Secargaelformulariodedatosdesociosconlosdatosde éste. 3. Semodificanlosdatosysepulsaelbotóndeguardar. 4. Losdatosquedanguardados. 5. Seretornaalalistadeusuariossocios. 1. Sepulsaelbotónguardartrasmodificarelcorreoelectrónico porunoyaregistradoparaotrousuario. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. 3. Sepulsaelbotónguardartrasnoproveertodalainformación solicitadacomoobligatoria. 19 Membresía|JulioM.FernándezJiménez Extensiones CU_12 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo 4. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_15,CU_16 Deletemember Usuarioadministrador. Eliminarunsociodelsistema. Estarautenticadoenelsistema. Accederallistadodeusuariosadministrativos. 1.Elsocioquedaeliminado 1. Elusuariohaceclicsobreeliconode“eliminarsocio”ubicado enlabarradeherramientasaladerechadelosdatosdel usuarioenlatablaolistadodesocio. 2. Selepresentaalusuarioconunaalertadeconfirmaciónde acción. 3. Elusuarioconfirmalaacción. 4. Seeliminaelsocio. 5. Seretornaalalistadeusuariossocio. 1. Elusuarionoconfirmalaaccióndeeliminarelsocio 2. Seretornaalalistadeusuariossocio. 1. Elsociotienepagosasociados 2. Seeliminalainformaciónpersonaldelsocioperose mantienelaentradaenlabasededatosconelfinde conservarlainformacióndelospagos. 3. Seretornaallistadodesocios. CU_13 Actorprincipal Objetivos Showmember Usuarioadministrador. Verlafichadeunsocio Estarautenticadoenelsistema. Precondiciones Accederallistadodeusuariosadministrativos. Postcondiciones 1.Lainformacióndelusuariosemuestraenpantalla 1. Elusuariohaceclicsobreeliconode“versocio”ubicadoenla barradeherramientasaladerechadelosdatosdelusuarioenla tablaolistadodesocio. Escenario principal 2. Selepresentaalusuarioconlafichadelsocio,desdedonde podráverlosdetallesdecontactodelsocio,sussubscripciones activasysuhistorialdepagoporsubscripción. Extensiones CU_17 20 Membresía|JulioM.FernándezJiménez CU_14a Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Extensiones RegisterPayment Usuarioadministrador. Registrarelpagodeunsocioaunasubscripciónconcreta Estarautenticadoenelsistema. Accederallistadodeusuariossocios. 1.Elpagodelsocioquedaregistradoparaunperiodoconcretodela subscripciónseleccionada. 1. Elusuariohaceclicsobreeliconode“registrarpago”ubicadoen labarradeherramientasaladerechadelosdatosdelusuarioen latablaolistadodesocio. 2. Selepresentaalusuarioconunlistadodelassubscripcionesa lascualeselsocioestainscrito. 3. Elusuarioseleccionalasubscripciónalaquedeseaaplicarel pago. 4. Elsistemamuestraaquellosperiodosdelasubscripciónactuales o pasadosparalosqueelsociotieneunbalancependiente. 5. Elusuariointroducelacantidadquedeseaabonar 6. Elsistemaregistraelpago. 7. Seretornaalusuarioallistadodesocios. 1. Elusuariotienetodoslospagosaldía. 2. Elsistemanopermiteregistraningunapago 3. Retornaallistadodesocios 1. Lacantidadintroducidaessuperioralbalanceactualparael periododecobroencurso 2. Elsistemacancelaelpagoyretornaalformulariodepago. CU_17 CU_14b Actorprincipal Objetivos Precondiciones RegisterPayment Usuariosocio Registrarelpagodeunsocioaunasubscripciónconcreta 1.SerposeedordelaURLencriptadapararealizarpagos 1.Elpagodelsocioquedaregistradoparaunperiodoconcretode Postcondiciones lasubscripciónseleccionada. 1. Elsociohaceclicsobreelenlacedepagoenviadopreviamente poremail 2. Elusuarioesdirigidoaunformulariodepago 3. Elusuariodefinelacantidadaabonardeltotalpendiente Escenarioprincipal 4. ElusuarioesdirigidoaPaypalparacompletarsupago 5. Elpagoserealizaconéxito 6. Seretornaalportalinicial 7. Seconfirmaelpago 21 Membresía|JulioM.FernándezJiménez Escenario alternativo 1. 2. 3. 4. Lapasareladepagonopuedecompletarelpago Elpagonoseregistra Seretornaalportal Seinformadelerrordepagoalsocio CU_15 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Assignmembertosubscription Usuarioadministrador. Registraaunusuarioenunasubscripciónconcreta Estarautenticadoenelsistema. Accederallistadodeusuariossocios. Elusuariosocioquedaregistradoenunasubscripción. Quedapendienteelbalancedelperiododecobroencurso. 1. Elusuariohaceclicsobreeliconode“editarsocio”desdeel listadodesocios. 2. Enlaseccióndesubscripciones,elusuarioseleccionala subscripciónalacualdeseasubscribiralsocio 3. Unemailesenviadoalsocioconlainformacióndelanueva subscripción. CU_16 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Removememberfromsubscription Usuarioadministrador. Eliminaaunusuarioenunasubscripciónconcreta Estarautenticadoenelsistema. Accederallistadodeusuariossocios. Elusuariosocioquedaremovidodelasubscripción Quedacanceladoelbalancependientedelperiodoencurso. 1. Elusuariohaceclicksobreeliconode“editarsocio”desdeel listadodesocios. 2. Enlaseccióndesubscripciones,elusuariodeseleccionala subscripciónalacualsedeseadejardesersubscriptor. CU_17 Actorprincipal Objetivos Checkpaymenthistory Usuarioadministrador. Muestraelhistorialdepagodelusuario Estarautenticadoenelsistema. Precondiciones Accederallistadodeusuariossocios. 1.Muestraunlistadodetodoslospagosrealizadosporelsocioen Postcondiciones ordencronológicoasícomolasubscripciónyelperiodoalque corresponde Escenario 1. Elusuarioaccedealafichadedetallesdelsocios. principal 22 Membresía|JulioM.FernándezJiménez 2. Alfinaldelafichadesociopuedevisualizarseelhistorialdepago delsocio. Gestióndesubscripciones CU_18 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Listsubscriptions Usuarioadministrador. Mostrarunlistadodetodaslassubscripcionesactivas Estarautenticadoenelsistema. Semuestraenpantallatodaslassubscripcionesactualmente existentes. 1. Elusuariohaceclicsobreelenlacedelmenú“Listar subscripciones”. 2. Elsistemamuestraunatablacontodaslassubscripciones registradas. CU_19 Actorprincipal Objetivos Precondiciones Postcondiciones Addsubscription Usuarioadministrador. Añadirunanuevasubscripciónalsistema 1.Estarautenticadoenelsistema. 1.Lasubscripciónquedaregistradaenelsistema 23 Membresía|JulioM.FernándezJiménez Escenario principal Extensiones Escenario alternativo 1. Elusuariohaceclicsobreelenlacedelmenú“Nueva subscripción”osobreelbotónenlaesquinasuperiorderecha dellistadodesubscripciones. 2. Elsistemamuestraelformulariodealtaqueelusuariodebe completarconloscamposmarcadoscomoobligatorios. 3. Elusuariocompletaelformularioypulsaguardar. 4. Lasubscripciónquedaregistrada. 5. Secreaelprimerperiododecobroparalanuevasubscripción. 6. Seretornaalalistadesubscripciones. CU_25 1. Sepulsaelbotónguardartrasnoproveertodalainformación solicitadacomoobligatoria. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_20Editsubscription Actorprincipal Usuarioadministrador. Objetivos Modificarlosdatosdeunasubscripciónexistente. Estarautenticadoenelsistema. Precondiciones Accederallistadodesubscripciones. Postcondiciones 1.Losdatosdelasubscripciónquedanmodificados. 1. Elusuariohaceclicsobreeliconode“modificarsubscripción” ubicadoenlabarradeherramientasaladerechadelosdatos delasubscripciónenlatablaolistadodesubscripciones. 2. Secargaelformulariodedatosdesubscripcionesconlos Escenario datosdeésta. principal 3. Semodificanlosdatosysepulsaelbotóndeguardar. 4. Losdatosquedanguardados. 5. Seretornaalalistadesubscripciones. CU_21 Actorprincipal Objetivos Removesubscription Usuarioadministrador. Eliminarunasubscripcióndelsistema. Estarautenticadoenelsistema. Precondiciones Accederallistadodeusuariossubscripciones. Postcondiciones 1.Lasubscripcióneseliminada 1. Elusuariohaceclicsobreeliconode“eliminarsubscripción” ubicadoenlabarradeherramientasaladerechadelosdatos Escenario delasubscripciónenlatablaolistadodesubscripciones. principal 2. Selepresentaalusuarioconunaalertadeconfirmaciónde acción. 24 Membresía|JulioM.FernándezJiménez 3. Elusuarioconfirmalaacción. 4. Seeliminalasubscripción. 5. Seretornaalalistadesubscripciones. CU_22 Actorprincipal Objetivos Showsubscription Usuarioadministrador. Verlafichadeunasubscripción Estarautenticadoenelsistema. Precondiciones Accederallistadodesubscripciones. Postcondiciones 1.Lainformacióndelasubscripciónsemuestraenpantalla 1. Elusuariohaceclicsobreeliconode“versubscripción” ubicadoenlabarradeherramientasaladerechadelosdatos delasubscripciónenlatablaolistadodesubscripciones. Escenario principal 2. Selepresentaalusuarioconlafichadelasubscripción,desde dondepodráverlosdetallesdelamisma,losingresospor mes. Extensiones CU_23,CU_24 CU_23 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal CU_24 Actorprincipal Objetivos Precondiciones Postcondiciones Escenarioprincipal Escenario alternativo Showincomechart Usuarioadministrador. Verlosingresosdeunasubscripciónpormes Estarautenticadoenelsistema. Accederaldetalledeunasubscripción Ungráficodebarrasmuestralosingresosdevengadosdelosúltimos 12meses. 1. Elusuarioaccedealafichadedetalledelasubscripción. 2. Accedealagráfica Showcurrentpayments Usuarioadministrador. Verpagosrealizadosdeunasubscripción Estarautenticadoenelsistema. Accederaldetalledeunasubscripción Semuestraunlistadodeperiodosdepagosylospagos registrados. 1. Elusuarioaccedealafichadedetalledelasubscripción. 2. Accedeallistado 1. Usuarioadministrador. 25 Membresía|JulioM.FernándezJiménez CU_25 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Createinstallment Sistema Crearunperiododecobroparaunasubscripción. Estarautenticadoenelsistema. Habercreadounanuevasubscripciónohabercaducadoelperiodo anterior decobro. 1.Unnuevoperiododecobrosehacreadoynotificadoalossocios inscritos. 1.Secreaunanuevasubscripción 2.Elsistemageneraunnuevoperiodo 2. Elcronjobcorre. 3. Sedetectanaquellassubscripcionescuyociclode periodicidad/recursividad estéporcumplirse. 4. Segeneraunnuevoperiodo. 5. Senotificanalossociosinscritoenlasubscripcióndeque hayunnuevo periodoporcobrar. 26 Membresía|JulioM.FernándezJiménez Gestióndemensajeríaycomunicación CU_28 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Createnotificationtemplate Usuarioadministrador. Crearunnuevaplantillademensajes 1.Estarautenticadoenelsistema. 1.Lanuevaplantillaquedaregistradaenlabasededatos 1. Elusuariohaceclicsobreelenlacedelmenú“Nueva plantilla”osobreelbotónenlaesquinasuperiorderechadel listadodeplantillas. 2. Elsistemamuestraelformulariodecreacióndeplantillas queelusuariodebecompletarconloscamposmarcados comoobligatorios. 3. Elusuariocompletaelformularioypulsaguardar. 4. Laplantillaquedaregistrada.. 5. Seretornaalalistadeplantillas. 1. Sepulsaelbotónguardartrasnoproveertodala informaciónsolicitadacomoobligatoria. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_29 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Editnotificationtemplate Usuarioadministrador. Modificarlosdatosdeunaplantilla Estarautenticadoenelsistema. Accederallistadodeplantillas. 1.Losdatosdelaplantillasquedanmodificados. 1. Elusuariohaceclicsobreeliconode“modificarplantillas” ubicadoenlabarradeherramientasaladerechadelosdatos delaplantillasenlatablaolistadodeplantillas. 2. Secargaelformulariodeplantillasconlosdatosdeésta. 3. Semodificanlosdatosysepulsaelbotóndeguardar. 4. Losdatosquedanguardados. 5. Seretornaalalistadeplantillas. 1. Sepulsaelbotónguardartrasnoproveertodalainformación solicitadacomoobligatoria. 2. Elsistemaretornaalusuarioalformularioylepideque rectifiqueelerror. CU_30 Listnotificationtemplate 27 Membresía|JulioM.FernándezJiménez Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Usuarioadministrador. Mostrarunlistadodetodaslasplantillasdemensajes Estarautenticadoenelsistema. Semuestraenpantallatodaslasplantillasdecomunicacionesdel sistemaactualmenteregistradas. 1. Elusuariohaceclicsobreelenlacedelmenú“Listar plantillas”. 2. Elsistemamuestraunatablacontodaslasplantillas registradas. CU_31 Actorprincipal Objetivos Precondiciones Postcondiciones Escenario principal Escenario alternativo Deletenotificationtemplate Usuarioadministrador. Eliminarunaplantilladecomunicaciones. Estarautenticadoenelsistema. Accederallistadodeplantillas. Lasplantillaquedaeliminada 1. Elusuariohaceclicsobreeliconode“eliminarplantilla” ubicadoenlabarradeherramientasaladerechadelosdatos delusuarioenlatabladellistadodeplantillas. 2. Selepresentaalusuarioconunaalertadeconfirmaciónde acción. 3. Elusuarioconfirmalaacción. 4. Seeliminalaplantilla. 5. Seretornaalalistadeplantilla. Elusuarionoconfirmalaaccióndeeliminarlaplantilla. Seretornaalalistadeplantilla. CU_32 Actorprincipal Objetivos Sendmailfromtemplate Usuarioadministrador. Enviarunemailusandounaplantillademensajes Estarautenticadoenelsistema. Precondiciones Accederallistadodeplantillasdemensajes Postcondiciones 1.Elmensajequedaenviadoconlaplantillademensaje 1. Elusuarioaccedeallistadodeplantillas Escenarioprincipal 2. Elusuariohaceclicenelbotóndeenviarcorreo Extensiones CU_33 CU_33 Actorprincipal Objetivos Precondiciones Sendnotification Usuarioadministrador. Enviarunmensajeaunoomassocios 1.Estarautenticadoenelsistema. 28 Membresía|JulioM.FernándezJiménez Postcondiciones 1.Seenvíaunmensajeaunoomasmiembros 1. Elusuariohaceclicsobreelenlacede“Enviarcomunicado” ubicadoenelmenúdelaizquierdadelinterface. 2. Sedespliegaelformulariodecreacióndenotificaciones. 3. Elusuariocompletaelformulario Escenario 4. Elusuarioseleccionalosoeldestinatario principal 5. Elusuariohaceclicenelbotóndeenviar 6. Elcorreoseenvía 7. Seretornaalapaginapreviadesdedondeseaccedióal formulariode envíodemensajes. Estadísticas CU_34 Actorprincipal Objetivos Precondiciones Postcondiciones Showpaymentbyperiods Usuarioadministrador. Mostrarungráficodeingresospormes 1.Estarautenticadoenelsistema. 1.Semuestraellistadodeperiodos 1. Elusuarioaccedealdashboarddesdeelmenúprincipal Escenarioprincipal 2. Elgráficodeimgresosapareceenpantalla 29 Membresía|JulioM.FernándezJiménez CU_34 Actorprincipal Objetivos Precondiciones Postcondiciones Showlatestpayments Usuarioadministrador. Mostrarunlistadodelosúltimospagosrealizados 1.Estarautenticadoenelsistema. 1.Semuestraellistadodeperiodos 1. Elusuarioaccedealdashboarddesdeelmenúprincipal Escenarioprincipal 2. Ellistadodepagosactivosapareceenpantalla CU_36 Actorprincipal Objetivos Precondiciones Postcondiciones Showlatestinstallments Usuarioadministrador. Mostrarunlistadodeperiodosdepago 1.Estarautenticadoenelsistema. 1.Semuestraellistadodeperiodos 1. Elusuarioaccedealdashboarddesdeelmenúprincipal Escenarioprincipal 2. Ellistadodeperiodosactivosaparaceenpantalla 30 Membresía|JulioM.FernándezJiménez DiagramadeClases LaclaseUserrepresentalaentidadusuariodelaqueheredanlasclasesUserAdminy UserMember.Laideaderelacionarambasentidadesmedianteunaherenciaeslapoder, enunfuturo,escalarelsistemapermitiendoquelossociospuedanaccederala plataformaparahacerusodeserviciosyprestacionesextras. ElsistemacentraldeldiagramaestácompuestoporlaclaseSubscription,losperiodosde pagosoInstallment,lascuotasdemiembrosoMemberInstallmentsylospagoso Payment.LaclaseMemberInstallmentesunaclasedetipoasociativaquecontiene informacióndelascuotasdecadausuarioporsubscripciónyperiododepago.Los usuariossociospodránrealizarpagosmúltiples,ounsólopago,aunperiodoconcreto hastaqueéstequedecubierto.Enestediagramatambiénpuedeapreciarsequeunsocio puedeestarsubscritoamásdeunasubscripción. Porultimotenemoselsistemademensajería.Estesistemaestárepresentadoporlaclase asociativaMessagequecomprendeelmensajeaenviar.Estaclasenonecesita persistenciadedatosyaqueelsistemanoalmacenalosmensajesenviados;siembargo,si esposibleenunfuturoescalarelsistemaanivelesdondelagestiónyelenvíode mensajesseamáscompletaygestionable.LaclaseMessageTemplatecontienetextos predeterminadosutilizadoscomoplantillasparalageneracióndelosmensajes. 31 Membresía|JulioM.FernándezJiménez 32 Membresía|JulioM.FernándezJiménez DiagramadeComponentes Acontinuacióndedefinenlosdiagramasdecomponentesbasadosenladescripciónde componentesdescritaenladescripcióngeneraldelsistema.Losdiagramassiguenel patróndediseñoestructuralModelo-Vista-ControladorparaaplicacionesJavaEE. Losdiagramaspresentadosmuestranelsistemaendiferentesnivelesdegranuralidad, comenzandoporunavistaglobaldondepuedeapreciarselaintegracióndelastrescapas delmodeloMVCínteractuandoentresíatravésdesuscomponentes. Conlafinalidaddeencapsularydelegarlaresponsabilidaddelasaccionesenservicioso clasesconcretas,cadacomponentepuedecontenerunoomasinterfacesdeaccesosegún lanaturalezadelasfuncionesquecontenidas. 33 Membresía|JulioM.FernándezJiménez Diagramageneraldecomponentes 34 Membresía|JulioM.FernándezJiménez Diagramadecomponentesusuarios Capadepresentación 35 Membresía|JulioM.FernándezJiménez Capadenegocios Capadeintegración 36 Membresía|JulioM.FernándezJiménez Diagramadecomponentessubscripción Capadepresentación 37 Membresía|JulioM.FernándezJiménez Capadenegocios 38 Membresía|JulioM.FernándezJiménez Capadeintegración 39 Membresía|JulioM.FernándezJiménez Diagramadecomponentescomunicación Capadepresentación 40 Membresía|JulioM.FernándezJiménez Capadenegocios 41 Membresía|JulioM.FernándezJiménez Capadeintegración 42 Membresía|JulioM.FernándezJiménez Diagramadecomponentesestadísticas Capadepresentación 43 Membresía|JulioM.FernándezJiménez Capadenegocios Capadeintegración 44 Membresía|JulioM.FernándezJiménez LainterfazdeUsuario LainterfazdeusuarioestáimplementadahaciendousodelaplantillaAdminLTEControl PanelTemplatebasadaenelframeworkCSSBootstrapparaproveeralsistemade adaptabilidadycapacidadderespuestaantedispositivosmóviles. Lainterfazestacompuestaporlassiguientesvistassegúnelcomponente: 1. Usuarios a. Listadodeusuariosadministrativos b. Listadodeusuariosmiembros c. Formulariodeusuariosadministrativos d. Formulariodeusuariosmiembros e. Detalledeusuariomiembro 2. Subscripciones a. Listadodesubscripciones b. Formulariodesubscripciones c. Formulariodepago d. Formulariodepagoporenlace e. Detalledesubscripción 3. Comunicación a. Listadodeplantillasdemensajes b. Formulariodeplantillademensaje c. Formulariodeenvíodemensajes d. Plantilladecorreo Acontinuaciónsedescribiráneilustraránalgunosdeloselementosdelainterfacede usuariomasrelevantes. 45 Membresía|JulioM.FernándezJiménez Plantillageneraldelainterfazdeusuario Todaslasvistasinternas,oquerequierendeautenticaciónparaaccederaellas,están montadassobrelamismaplantillaodiseño.Estaplantillasedivideendosáreas principales.Enlaizquierdaseubicanloselementoscomunestalescomolasseñasde identidaddelsistema,elmenúdenavegaciónyelresumendelperfildeusuario.Enla zonaderecha(oáreadetrabajo)seencuentranloselementosespecíficosparacadavista; estoselementos,porlogeneral,puedenserlistados,formulariouhojasdedetalles. Lasvistasexternasnotienenelementoscomunesdeplantillasytodalaplantillaesáreade trabajo. PortalPrincipal Unavezdentrodelsistema,elusuariopuedeaccederalportalprincipaldelaaplicación. Esteportalestacompuestopordoszonasprincipales.Laprimeradeellaseselpanelde control,queescomúnentodaslasseccionesdelaaplicación,yestáubicadoala izquierdaypartesuperiordelainterfacedeusuario. Enlaseccióndelpaneldecontroldelaizquierdapodemoslocalizar,comenzadopor arriba,lainformacióndelusuarioactualmenteidentificadoenelsistema.Aquípodemos versinombreysufotoGravatar(enelcasodequetuviese).Actoyseguidostenemosel buscadordecontenidosyporultimoelmenúdenavegación. Elmenúestaorganizadoporcomponentesyesdeltipodesplegable.Cadaelementodel menúdenavegacióncontieneenlacesalosprincipalespuntosdeentradadecada componente. Enlabarrasuperiorderechatenemoselaccesoalperfildeusuario.Desdeaquíelusuario puedemodificarsuperfilosalirdelsistema. 46 Membresía|JulioM.FernándezJiménez Porultimo,cabemencionarqueelmenúdenavegación,asícomoelpaneldecontrolque locontiene,puedecontraerseparamaximizareláreadetrabajo.Estafuncionalidadesun indicativodelacapacidaddeadaptacióndelsistemaadispositivosmóvilesdecualquier tipo,tamañoyresolución. Enaláreacentralodetrabajo,tambiéndenominadaDASHBOARD,tenemosunaserie cajasquecontieneninformaciónanalíticadelsistemaydesuestadoactual.Laprimerade ellasesunlistadodelosdiezúltimospagosregistrados.Cadaentradaestáilustradaporel socioqueharealizadoelpago,lasubscripciónylacantidadabonada.Tantoelnombredel sociocomoeldelasubscripciónproveenunenlacequepermitenaccederalahojade detallesdecadaunodeellos. Lasiguientecajaesungráficodebarrasqueilustralacantidadglobalrecaudadapormes durantelosúltimosdocemeses.Sipasamoselratónporencima,podemosaccederala informacióndetalladadelmesencuestión. Yporultimolosperiodosdecobroactivosactualmente.Cadaentradaestaacompañada deunabarradeprogreso,yunporcentaje,quemuestraeltotalrecaudadoparadicho periododecobrodeltotalesperado.Estainformaciónessumamenteútilsiqueremos indagarenelprogresodeunpagoenconcreto. 47 Membresía|JulioM.FernándezJiménez Vistasdelistados Laslistassonelpuntodepartidaparacomenzaraoperarencualquieradelos componentes.Eláreadetrabajodeunalistaestacompuestaporelbuscadorenlaparte superior,quepuedevariarsegúnlanaturalezadeloscontenidos;yellistado,ubicado debajodelbuscador.Ellistadoasuvezsedivideendoszonas,quesonlainformacióndel elementolistadoylabarradeherramientasdestinadaarealizaraccionessobreel elementoalqueestarelacionada. Labarradeherramientastienedoselementoscomunesatodosloslistados:editary eliminaelemento.Elcomponentedesocios,sinembargo,tieneasociadadosacciones adicionalesasubarradeherramientasyquesondegranrelevanciaparaeste componente:realizarpagoyenviarmensaje. Otroelementoimportantedelavistadelistadosesenelbotóndecrearunnuevo elemento.Estaacciónestátambiénaccesibledesdedelpaneldenavegacióndela derecha.Esteelementopermiteaccederalformulariocorrespondientealcomponentedel listadoenmodocreación. 48 Membresía|JulioM.FernándezJiménez Vistasdeformulario Aligualqueloslistados,losformulariostambiénhacenusodelaplantillageneralde contenidos,aunquesucomposiciónesmásvariadaydependedelanaturalezadel componente.Losformulariospuedenservirtantoparacrearelementosnuevoscomopara modificarlos.Noexisteunavistadeformulariodiferenteparacadaacción,unamisma vistasirveparaambospropósitosyeslaacciónquiendefinesufunción. FormulariodeSocios Elformulariodesociosestácompuestospordosseccionesclaramentediferenciadaspor sufuncionalidadentérminosdeltipodeinformaciónquegestiona.Laprimeradeellases elformularioquerecogelosdatospersonalesydecontactodelsociotalescomonombre ydirecciónonúmerodeteléfono.Lasegundagestionalassubscripcionesalasqueel usuarioestainscrito. Elselectordesubscripcionesesuncontroldeselecciónmúltipledesdedondese seleccionanlassubscripcionesalasqueelsociodeberádeabonarlacuotaindicada. 49 Membresía|JulioM.FernándezJiménez Formulariodesubscripción Elmodulodesubscripcionesessindudaalgunadelcorazóndelaaplicación.Eseste moduloelquecrealasdependenciasnecesariasquerepresentanlosperiodosdepago,los cobrosalossociossubscriptoresylospagos. Laentidadsubscripciónesdecarácterrecurrente,esdecir,quesuciclodevidacíclico.La subscripcióntieneperiodicidad,cadavezqueunperiodosevencesecreaunonuevoyse informaalossubscriptoresdequeexisteunnuevopagoporrealizar. Elformulariodesubscripcionesrecolectalosdatosnecesariosparageneraruna subscripción.Losdatosrequeridossonelnombreotitulo,lacantidadaabonarencada periododepagoylaperiodicidad.Estaúltimaesdesumaimportanciayaquedefinirá cuandodebencrearselosperiodosdepagosyavisaralossociosconunnuevoemail. 50 Membresía|JulioM.FernándezJiménez Tambiénesnecesarioindicarcuandosevenceelpróximopago.Estafechasetomacomo referenciaparacrearlospagosyavisosfuturos. Formularioderegistrodepago Elformulariodepagospermiterealizarunpagoparcialocompetosobrelacuotadeuna subscripciónconcreta.Pararegistrarunpagodeformamanualesnecesarioindicarla subscripciónyelperiodoalcualsedeseaaplicarlacuotaeintroducireltotaldelimportea pagar. Parafacilitarelproceso,esteformularioestáprovistoconunresumendelosúltimos pagosrealizadosporelsocio. 51 Membresía|JulioM.FernándezJiménez Formularioderegistrodepagoporcorreo Elformulariodepagoatravésdeemail,esidénticoaldelpagomanualsóloquenoes posibleseleccionarlasubscripciónyelperiodo,yaqueéstosvienedefinidosenlaURL encriptada. Altratarsedeunavistapublica(norequiereautenticaciónexplicitaporpartedelusuario), esteformulariocarecedeplantillaconelementosnavegables. 52 Membresía|JulioM.FernándezJiménez Formulariodeplantillademensajes Formulariodemensajes Lafuncióndelformulariodemensajesesladeproveerlasherramientasparacomponer unmensajedecorreoelectrónico.Esteformulariopermitecomenzarlacomposición desdeunformularioenblancoohaciendousodeunaplantilla.Parautilizarunaplantilla sóloesnecesarioseleccionarladesdeelmenúdesplegable. Paraqueelenvíoseaexitoso,esnecesarioqueseseleccioneunoomasusuariossocios comodestinatariosdelmensaje.Estaacciónpuederealizarsedesdeelpanelinferiordel formulario. 53 Membresía|JulioM.FernándezJiménez 54 Membresía|JulioM.FernándezJiménez Implementación Laimplementacióndelsistemaserealizóhaciendousodelframeworkdedesarrollo JavaEEPlay2.Apesardeserunframeworkmuypopular,losinconvenientesnotardaron enaparecerdurantelasprimerasfasesdeldesarrollo.Losfactoresmascríticosque surgieronduranteestaetapainicialdeldesarrollofueroncomoseindicanacontinuación: 1. Sistemainestable:Playesunframeworkrelativamentenuevo(año2012 proximadamente)queactualmenteseencuentraensuversión2.4.Este frameworkhapasadopordiversasetapadedesarrolloadaptándosealas necesidadesdelosusuariosysusdemandas,loquehacausadoquelasdistintas versionesexistentesseanmuydisparejaslasunasdeunadelasotras.Esta diferenciaenlaoperatividaddelframeworkestanmarcadaqueeninternetyase habladePlay1yPlay2comosidedosdiferentesframeworkssetratasen.Existe tantadisparidadenlasversiones,queinclusopuedenpercibirsediferencias marcadasentrelasdistintasversióndePlay2. 2. Faltadedocumentación:Altratarsedeunsistemavivoyencontinuodesarrollo, existepoca,ningunaoinformacióncontradictoriaeninternetreferenteal desarrolloenestaplataforma.Ladocumentaciónoficialesescuetaypococlara, porloquelaúnicafuentedeinformaciónfiabledisponiblesesaquellaextraída desdeforostalescomoStackOverflowoGoogleForums. 3. PocosoporteIDE:ExistemuypocosIDEconcapacidadparadesarrollarenPlay2,y aquellosqueyalohacecarecendeunsoporte100%fiable. 4. Lenguajedeprogramación:AunquePlaysoportaelusodeScalay/oJavacomo lenguajedeprogramación,elusodeambosdeformasimultáneanoes recomendado.AdiferenciadeGroovyandGrails,Playnooperabiencuandose intercalanamboslenguajesesunmismoproyecto.Elproblemareside principalmenteenqueexistendospaquetesdiferentesdelibreríassegúnsehaga usodeScalaoJava,ycadaunadeellosconlasmismasclasesperoadaptadasal lenguajeconcreto.Esteambigüedadprovocaproblemasdeinterpretaciónenel 55 Membresía|JulioM.FernándezJiménez IDEydecompilación.AunqueseseleccionóJavapurocomolenguajede programaciónprincipal,lasvistasestántodasprogramadasenScala.Esta implementacióndualfueposibledadoquelaslibreríasrelacionadasconlasvistas nocreabanconflictoalgunoconaquellasdelalógicadenegocio. Apasardelosinconvenientesyamencionados,Playresultoserunframeworkmuyfácilde trabajaryaltamentefiableunavezcontroladoslosfactoresderiesgo.Algunasdelas funcionalidadesquePlayofreceson: 1. Sistemadegestióndeaplicaciones:Laversiónutilizada,Play2.4,incluyeun sistemadenominadoActivatorquepermitelainicializacióndeplantillasde proyectos,segúnsealenguajedeprogramaciónseleccionadoytipodeproyecto. Activatortambiénhacelasvecesdeservidorocontenedordeaplicaciones,que permiterealizareldesarrolloenunambientedetrabajoespecialmentediseñado paraPlayeindependientedelaconfiguracióndesistemastalescomoTomcato JBoss(WildFly).Activatortambiénseencargadelacompilaciónymantenimiento delcódigo. 2. Soportedelibreríasexternas:Apesardesucortaedad,Playtieneungransoporte delibreríasexternasmedianteMaveny/oTypesafe.Estossistemasdegestiónde libreríaspermitenintegrarnuevasfuncionalidadesenlaaplicaciónconpoco esfuerzo. 3. MVC:Play2espuroMVC.Suinfraestructuradetrescapasbasadaenelpatrónde diseñoMVCpermiteundesarrolloestructuradoyorganizadoquehacedelproceso dedesarrollounodefácilelaboración.Elescalamientoylalocalizacióndeerrores essencilloyeficaz. 4. Compilaciónautomáticaentiemporeal:GraciasaActivator,loscambios realizadosenelcódigosoncompiladosyreemplazadosenelcontenedoren tiemporeal. 56 Membresía|JulioM.FernándezJiménez 5. Evolution:PlayhaceusodeEvolutionparasincronizarelesquemadebasede datosconelmodeloJPAprogramado. Engeneralpuededecirsequeelperíododeimplementaciónfuemuysatisfactorioy eficienteconvirtiendoaPlay2enunodemisframeworkdedesarrolloJavaEEfavoritos. SoftwareUtilizado. Paraeldesarrollodelsistemasehizousodelsiguientesoftwaredeterceros: 1. IntellijIDEAparaeldesarrolloycodificacióndelsistema.Esteharesultadoserel únicoIDEconsoporteglobalparaPlay2.Apesardeello,alequipodeIDEAnoha podidomantenersuproductoalaparconelpolimórficoPlay,especialmenteenla gestióndelasvistasylaintegracióndeJavacomolenguajeprincipaldedesarrollo. 2. PostgresqlyMysqlcomosistemadegestióndebasededatos.Aunque inicialmenteelsistemafuedesarrolladoparatrabajarconMySql,elservidorde desarrolloenHeroku,utilizaPostgresql.Lamigracióndeunsistemaaotroesmuy sencillagraciasaqueEvolutionseencargadegenerarlastablassegúnelSGBD seleccionado. 3. Herokucomoservidordedesarrolloparaaplicacioneswebenlanube.Unodelos grandesinconvenientesdeldesarrolloenJavaEEhasidosiempreelencontrarun alojamientoescalableyfiableparaJavaEEconherramientaseficacesdecontrolde despliegue.Esteeraunatareaprácticamenteimposiblehastahacepoco.Heroku esprecisamentelasoluciónperfectaparaaplicacionesbasadasenJavaEE.Este servidorenlanubepermiteeldesplieguedesistemasdesdelaconsolade comandoasupropiosistemadeversióndegestionesoGit-Hubentreotros. Herokuproveeunplangratuitoparaaplicacionesendesarrolloqueharesultado muyeficazparaesteproyecto.Enadición,esteservicioproveesoporteespecial paraaplicacionesPlay2quehacedelprocesodedespliegueunoaltamenteeficaz. 57 Membresía|JulioM.FernándezJiménez 4. DataGrip:EstegestordeescritoriodebasededatosdeIDEAhasidodegran utilidadparacorroborarlaeficaciadelasentradasenlabasededatosyel comportamientodelosdatoscomoresultadodelasaccionesejecutadasenel códigoydurantelaejecucióndelsistema. 5. Docker:Sistemadevirtualizaciónquepermitecorreraplicacionescomomódulos añadidossobreunamaquinavirtualLinux.Dockerproveelaherramienta Kinematic,ungestordemódulosDockerquefacilitalainstalación,puestaen marchayejecucióndeéstos.Dockerhasidoutilizadoparacorrerlasbasededatos utilizadasduranteeldesarrollo,tantoparaMySQLcomoparaPostgresql. 6. AdminLTEControlPanelTemplate:Aunquenoesunaaplicaciónensi,esta plantilladediseñoparagestoresdecontenidoshasidodegranutilidad.AdminLTE esunsistemaresponsiveyadaptableconherramientasyplug-insenjavascript, quehanresultadoaltamenteadaptablesalsistemadesarrollado. 7. Git:Git-Hubhasidoelrepositorioysistemasdecontroldeversionesoficialdeeste proyecto.Elcódigofuenteestadisponiblealpúblicoengeneralen https://github.com/grananda/membresia 58 Membresía|JulioM.FernándezJiménez EstructuradelCódigo LacarpetaprincipaldelaaplicaciónPlayes app.Esaquídonderesidetodoelcódigo. Estacarpetaestadivididaen: 1. Common:Carpetadondealmacenamos elarchivobootstrapdeinicio.Aquíseubica laclaseGlobal.javadondeseencuentran lasfuncionesquenecesitamosquese ejecutenantesydespuésdeponerel sistemaacorrerocuandodetenemosla ejecucióndelmismo.Aquítambiénse encuentranloscron-jobsutilizadosenel sistema,comoporejemplolacreaciónde periodosdepagos. 2. Controllers:Aquíseencuentranlos controladoresorganizadosenpaquetespor componentesegúneldiseñode componentespreviamentedescrito. 3. Lib:Archivosclasesdelibreríasde tercerosutilizadasenelcódigo. 4. Models:Contienelasclasesmodelos paraladefiniciónJPAenEbean. 5. Services:Estacarpetacontienelacapa denegocios. 6. Views:AquíseencuentranlasvistasenhtmlScala. 7. Conf:Contienelosarchivosdeconfiguraciónglobaldelsistema,parámetrosde conexióndebasesdedatosytraduccionesdelostextos.Estacarpetatambién 59 Membresía|JulioM.FernándezJiménez almacenaloarchivosregionalesque traducenlawebencatalán, castellanooingles. 8. Project:Entreotrascosas,esaquí dondesealmacenaelarchivo configuraciónparalasdependencias olibreríasdePlay. CapadePresentación Lacapadepresentaciónhasidomontada sobreAdminLTEControlPanelTemplate utilizandoplantillasenScalayTwirl (frameworkdePlay2paraejecuciónde plantillasHMTL). Lasvistasestánorganizadasenpaquetes segúnelcomponentealquepertenecen.En adiciónaestospaquetes,lacarpetadelasvistascontienedoscarpetasespeciales.En commontenemosarchivosdeámbitocomún,comoporejemplolaplantillaprincipalyla decorreos(templates);elarchivodenavegación;lapaginacióndelistadosyelperfilde usuario(parts).Estossontodosarchivoscomunesqueseencuentranentodaslaspaginas. Perodetodoslosarchivosdelasvistas,quizáslosmásrelevantessonloscontenidosen formData;estacarpetacontieneclasesquepermitenlavalidacióndelosmodelosdesde elservidor.Estasclasestambiénseencargandetransferirlosobjetosdesdeelmodeloala vistayderecolectarlosdatosqueprovienendeéstasatravésdePOSToGET. Enadición,lascarpetaformcontienefragmentosScalaquegenerancomponentesde formulariosHTMLenformatoTwitterBootstrap. 60 Membresía|JulioM.FernándezJiménez Loscontroladorestambiénformanpartedelacapadepresentaciónyseubicanen controllers,dondetambiénseorganizanporcomponente.Undatoaresaltarsobrelos controladoresesquehacenusoanotacionesparacrearinyeccionesdedependenciaspara elusodeserviciosdelacapadenegociosylaseguridad. Laseguridadestadelegadaenunaclaseoacciónespecialdentrodelcontrolador SecuredActionqueseejecutacadavezqueunaacciónlasolicitayquecompruebala existenciadeunavariabledesesiónconcreta. 61 Membresía|JulioM.FernándezJiménez CapadeNegocios LacapadenegociosesalgoinexistenteenPlay. AunquePlaysigueelpatrónMVC,éstehaceuso delosarchivosparalosmodeloscomomedio paraimplementarlacapadenegocio. Conlafinalidaddecrearunaabstraccióny separaciónderesponsabilidadesmasadecuadaa lasnecesidadesdelsistema,seoptóporcrear unacapadenegociosaisladaamodode servicios.Estacapacontienelosarchivosquese encargandeprocesarlosdatosprovenientesdel controladoryprepararlos,sicabe,paraser transferidosalmodelo.Esaquídondeencontramoslosinterfacesydondeseimplantaría elaccesoRESTfulcomopartedeunservicioweb. LaCapadeIntegración Estacapaestarepresentadaporlosmodelos.Los archivosclasescontenidosenestacapasonlos encargadosdemodelarlasentidadesquecomponen eldiagramaUML.EstosmodeloshaceusodeEbean comosistemadepersistenciadedatos. Enadición,estasclasescontienetodalalógicaque interaccionaentreelobjetoyEbeanparagarantizar lapersistenciaconlabasededatos.Esenestacapatambiéndesdedondeextraemoslos datosnecesariosdesdenuestrabasededatosparamostrarlosenlasvistas. Peronotodoslosmodelosenestacapasonpersistentes.Algunosdeellossonvirtuales,es decir,quecarecendepersistenciaenlabasededatos.Unodelosmodelosvirtualesmas 62 Membresía|JulioM.FernándezJiménez destacadoseseldeestadísticas.Estemodelonotienepersistenciadedatosyaquesu funciónesladerecolectarlainformaciónnecesariaparaconstruirlosinformesygráficos delsistema. EsimportantecomentarqueesteeselúnicomodeloquenoutilizaJPAyhaceusodeSQL puroparasufuncióndeextraccióndedatos.Alevadirelsistemadepersistenciadedatos, elSQLesdependientedelSGBDyporellosehandejadoenelcódigolosSQL correspondienteaPostgresqlyMySQL,aunqueelactualmenteutilizadoeselque correspondeaPostgresql.SisehacerusodeunSGDBdiferentealosmencionados,seria necesarioescribirelSQLcorrespondienteaestenuevosistema. 63 Membresía|JulioM.FernándezJiménez TrabajoFuturo Amedidaqueavanzabaeldesarrollodelproyectonuevasideassobrecomomejorarel productofueronsurgiendo,asícomootraspocasquesefueronquedandoatrásporser consideradaspocoútilesodemasiadolaboriosascomoparacumplimentarconlafecha deentregaacordadaenelcalendariodetrabajo.Algunasdeestasfuncionalidadesen vistasdeserproducidasenunfuturoson: • Listadodepagospendientes:Aunqueoriginalmenteprevista,estafuncionalidad nopudoserincorporadaenelsistema.Sinembargoseconsideraqueesdesuma importanciaparalagestióndeloscobrosdelascuotasyseráimplementadaenun futuro. • ServiciosWeb:Laimplementacióndeservicioswebremotosparafunciones básicasdesistema,comoporejemploejecutarunpagoocrearunainstancia,son funcionalidadesqueestánprevistaaserincorporadascomoservicioswebenuna futuraactualizacióndelsistema. • Ajax:Laexperienciadelusuarioesimportanteyporesounadelasmejorasa implementarenunfuturosonserviciosAJAXquepermitanagilizarlaformaenque elusuariovisualizalainformación.Estaimplementaciónestaprevistainicialmente enlavistadedetalledelassubscripciones,desdedondeelusuariogestorpodrá verlospagosrealizadosporperiodosymiembrosegúndeseeenvezdeunlistado globaldetodoslospagospendientesquepuederesultarpocoviableunavezse hayarecolectadounagrancantidaddepagos. • PortalMiembros:Unadelasfuturasimplementacionesmasambiciosasesun portalpublicoparamiembros.Desdeesteportalunmiembropodrádarsedealtae inscribirsealasubscripcionesquedesee. • SistemaGlobal:Porultimo,ycomocomplementoalpuntoanterior,seesperaque Membresiapuedaconvertirenunportaldemembresíasglobalenelquecualquier asociaciónpuedadarsedealtaygestionarsuspagosysociosdesdeunmismo 64 Membresía|JulioM.FernándezJiménez lugarencomúncondiversosmétodosdepagosyserviciosadicionalescomola gestióndeactividades. Conclusiones DebodecirquealprincipioteniamisdudassobreelusodePlayeneldesarrollodeeste proyecto,perounavezenmarchapudedescubrirunframeworkeficazcapazdehacerel trabajofácil,eficienteypráctico.Sencillamente,sepuededecirquePlayfuncionayno dudoqueenpardeañosseconviertaenelframeworkdedesarrolloporexcelenciapara desarrollosenJavaEE. ComoantiguoprogramadordesistemabasadosenGroovyandGrails,puedodecirque PlayamejoradoeldesarrolloenJavaEEdeunaformanotable.Surobustez,simplicidady altorendimientosuperanconcrecesaGrailscomoframeworkdedesarrolloparaJavaEE. PlayesunbuenejemplodecómounatecnologíatanrobustacomoJavaEEpuedeestaral alcancedetodos. Hasidountrabajoduro.Másdetresmesesdetrabajocontinuoydeaprendizaje constantedenuevastecnologías.Porotroladohasidolaculminacióndeunproyectode vidadeañosdecarrera,unviajedecrecimientointelectualypersonal.Mientras trabajabaenelproyectohepodidorecordarmisprimerosañosdecarreracuandoapenas podíaescribirdoslíneasenJavasinbuscarreferenciasenlaweb;nueveañosmastarde puedodecirqueeldesarrollohasidofluidoymetódico,señalinequívocademidominio sobreellenguajeescogidoparaeldesarrollodelapractica. Sobremisinteresesfuturosprofesionaleshepodidomeditarydefinirhaciadondequiero (ynoquiero)ir,quedestrezasquierodesarrollarycualesdelegar.Esteproyectomeha servidodevehículoparadefinirmismetasamedioylargoplazodentrodelámbito profesional,yestoseresumeenunadedicacióncompletaaldesarrollodesistema puramenteenfocadosalback-end.Programaresloqueséhaceryloquemásdisfruto dentrodetodaslasfacetasquelaingenieríaencomputadoresofrece. 65 Membresía|JulioM.FernándezJiménez Fuentes Recursos JavaOracle http://www.oracle.com/ Ebean https://ebean-orm.github.io/ PlayFramework https://www.playframework.com/ MySQL https://www.mysql.com/ Postgresql http://www.postgresql.org.es/ Docker https://www.docker.com/ VitualBox https://www.virtualbox.org/ Git-Hub https://github.com/ Axure http://www.axure.com/ Fortawesome https://fortawesome.github.io Playmailer https://github.com/playframework/play-mailer Artículos EbeanORM https://ebean-orm.github.io/docs/ 66 Membresía|JulioM.FernándezJiménez JavaServlets http://users.dcc.uchile.cl/~jbarrios/servlets/general.html Scalatour http://docs.scala-lang.org/tutorials/tour/tour-of-scala.html Play,themainconcepts https://www.playframework.com/documentation/1.0/main#lifecycle Day30:PlayFramework–AJavaDeveloperDreamFramework https://blog.openshift.com/day-30-play-framework-a-java-developer-dream-framework/ WhataretheprosandconsofthePlayFramework2,foraJavadeveloper? https://www.quora.com/What-are-the-pros-and-cons-of-the-Play-Framework-2-for-aJava-developer HowdoIgeneratearandomalpha-numericstring? http://kodejava.org/how-do-i-generate-a-random-alpha-numeric-string/ ResponsiveHTMLemailtemplate https://github.com/leemunroe/responsive-html-email-template https://gist.github.com/monteiro/4353448 AuthenticationinPlayFrameworkusingJava http://alexgaribay.com/2014/06/16/authentication-in-play-framework-using-java/ PlayAuthetication https://github.com/alexgaribay/play-authentication Addingauthentication https://www.playframework.com/documentation/2.2.x/JavaGuide4 SOLVING@INJECTNULLPOINTEREXCEPTION http://www.javablog.be/inject-nullpointerexception/ JavaEECDIDependencyInjection(@Inject)tutorial http://www.javacodegeeks.com/2013/05/java-ee-cdi-dependency-injection-injecttutorial.html SchedulingJobsInPlay2 http://brainstep.blogspot.nl/2013/10/scheduling-jobs-in-play-2.html 67