Sei sulla pagina 1di 15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

GuiadeMigracindeMdulos
DeiDempierees Autor:JavierPrezVillamizar Compaia:SETSOFTWARES.A.S.(http://www.setsoftware.net) Email:javier.p.villamizar@setsoftware.net Nota:elpresentearticuloesunatraduccindelarticulooriginalescritoporRedhuanD.Oon ArticuloIngles(http://http://sourceforge.net/projects/red1/files/iDempiereMigration/iDempiereMigrationGuide.pdf/download)

Contenido
1UnPlandeMigracinParaDesarrolladores 2PorquMigrar? 3QueMigrar? 4ComorealizarlaMigracin? 5MigracindeunMdulo 6LanzandoIDempiere 7HaciendoPackOut 8RevisandoelCodigoFuente 9PreparandoambienteconEclipse 10CreandounnuevoProyectoPlugin 11RevisandoelPlugin 12ActivandoelPlugin 13Conclusiones 14EpilogoUsandoPuntosdeExtensin

UnPlandeMigracinParaDesarrolladores

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

1/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

PorquMigrar?
Esampliamenteconocidoportodosaquellosqueestanvinculadosalaindustriadelsoftware,queelprincipaldolordecabezaeslagestinde actualizacines,decorreccindebugsydeversionesdelcodigofuente.Entremascambioshayarealizadoelusuarioalcodigofuentedela aplicacinoalmodelodeconfiguracindelamisma,existeunamayorprobabilidaddequesepresentenconflictosconlasactualizacioneso correccionesrealizadasporlacasamatrizdelsoftwareodelacomunidadqueestesoportandolaaplicacin.UnERPpuedeconvertirsefacilmente enunmostruodemuchascabezas,debidoasucomplejidadycrecientetamaoesporesaraznqueesbuenaideatenerunnucleocomndela aplicacinparalamayoriadelosusuariosyqueaquellosquenecesitenrealizarcambiosoagregarfuncionalidadpuedanhacerloatravsdel desarrollodenuevosmdulosocomoeselcasodeIDempieredemodulosencapsuladosenPlugins. Eldesafioesentoncesmigrardemaneraconsistenteyseguraevitando"romper"lafuncionalidadexistente.Lafigura2ilustralalaborquedeben realizarlosusuariosqueactualmenteutilizanunSistemaA(comoADempiere3.6)ydeseanutilizarenelfuturoelSistemaB(como Idempiere),queincluyegrandesmejorasdearquitecturaymayorfuncionalidadsinemabargolalabormasdelicadaesmigraralsistemaB,todos loscambiosypersonalizacionesqueelusuarioarealizadoalSistemaA.

QueMigrar?
Lassiguientespreguntasquesepresentanson: Qumigrar? Setratasolodecodigo? Larespuestaessiyno.EnlasaplicacionesbasadasenCompiere,comolossonADempiereeIDempiere,loscambiospuedensertantocodigo comodatos.Estosdatosson"Metadatos"quepermitenconfigurarelDiccionariodelaAplicacin,loquedeterminaellookandfeel,yelmodelo deconfiguracin,incluyendoesteultimoelementoscomoMens,ventanas,Tablas,Pestaas,Procesosyotrascaracteristicasqueaunquenoestan "quemadas"(HardCoded)enelcodigofuente,siestanalmacenasenlabasededatosdemaneraseparadaenunformatodeterminado.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

2/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Simiramoscondetenimientoeldiagramaanteriorytenemospresenteloqueacabamosdeexponer,entoncescobrasentidoelhechodequeesten resaltadasconrojolaspalabrasADyCODE. ADeslasigladeDiccionariodeAplicacin,querepresentalosmetadatosmencionadosantes.Loquelafiguraanteriorilustraesentocesquepara migraraIDempierelosmetadatossonenviadosatravesde2Packyelcodigofuenteesenviadocomounnuevoplugindesarrolladoconla herramientaparaeldesarrollodeplugins(PDE)deEclipse.

ComorealizarlaMigracin?
Elsiguientepasoescompletarlamigracindelosmetadatosydelcodigodemaneraexitosa.Talcomolomencionamosanteriormente,laprimera partelarealizamosutilizando2Pack,queexportaenunarchivoZIP(2pack.zip),quecontienetodaladescripcindeloscambiosrealizadosalAD enformatoXML.LasegundaparteconsisteentoncesenformatearlospaquetesJAVAdeacuerdoalaestructuradePlugindeEclipse.Mas adelanteveremosconmasdetallecadaunodeestospasos,porahoraexaminandolaFigura3podemosverdemaneraclaraelprocesode migracindelADatravesdelascajassealadasporlaflecharoja.Enotrasfigurasquepresentaremosmasadelanteexaminaremosendetalleel procesodemigracindecodigo,porahoralosrepresentamossoloconlacajadecontonrnorojoquedice"Eclipse".

Enlafigura3presentamostambiennuevosterminos,porunladopodemosverenelSistemaAdelaIzquierdaqueelcodigoanteriorJavaesta envueltoenelantiguoestiloenlaMaquinaVirtualJava(JVM)queesunaespeciadecontenedorcerradoquenopermiteningunaformadeacceso almismo.PorotroladovemosenelladoderechoelSistemaBtieneunContenedorOSGIquepermite"Conectar"nuevafuncionalidadalmismo atravesdePluginsEclipseyademaspermiteaccederymonitorearlosmismosatravesdeComandos'SS'.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

3/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

EnelnuevosistematambienpodemosverunarelacionentrePluginsdeterminadaporelarchivoMANIFEST,queseencuentraenlacarpeta METAINF.EnesearchivoMANIFESTtambienestadescritosupropio"Activador"quedetectaautomaticamentecualquierarchivo2pack.zipen lacarpetayejecutael"PackIn"alabasededatosdelaaplicacin. Deaquienadelanteveremoscomorealizarelprocesodeunmodulopersonalizado,ademasenlossiguientesenlacespodremosverlosvideos(en Ingles)delprocesoquedetallaremosacontinuacin: PackOutdelModulo(http://www.youtube.com/watch?feature=player_embedded&v=oZSnsfW2A2Y) DesarrollodelPluginenEclipse(http://www.youtube.com/watch?feature=player_embedded&v=JjUgGJiXDD0) PackIndelModulocomoPlugin(http://www.youtube.com/watch?feature=player_embedded&v=TnqizjaCEm8) Ademaspresentamoslafigura4enlacualintroducimosloselementossobreloscualesseguiremosanalizandomasadelante.

1.ElmdulodelPlugin. 2.ElactivadordelPluginllamadoenelarchivoMANIFEST. 3.ElarchivoMANIFEST. 4.Elcodigo"quemado"quellamaelarchivo2Pack.zipenlacarpetaMETAINF.

MigracindeunMdulo
AcontinuacinanalizaremosunejemplodeunmodulorealdeADempiereelcualmigraremosaIDempierecomoplugin.Paranuestroejemplo usaremoselmodulodeintegracindeOpenBravoPOSyADempiereERPquefueuntrabajoquedesarrollamosypublicamoselaopasado. ParaesemdulocreamosunMenllamadoIntegracinPOS,elcualcontiene3tressubitemsqueson2procesosllamadosExportarColae ImportarColadeOrdenesyunaventanallamadaProcesarOrdenesImportadas.

LosItemsanterioresnohacenpartedelaversionestandardeADempiereoIDempiere,aunqueexistendiferentesformasenlascualesesos cambiossepuedenincorporaraIDempiere.UnadeesasformasesatravesdelLogdeMigracinqueseguardocuandolacustomizacinse realiz.Otraformadehacerloesusandolaherramienta2PackquehaestadodisponibleporalgunosaosenADempiere.Detodasformases necesariotenerencuentaqueLowHengSinrealizconsiderablesmejorasal2PackdeIDempiereasiquenoesnecesariamenteigualasuantigua versinporloqueparausarelPackIndeIDempiereesnecesariousarelPackOutdeIDempiere.ComoestamosutilizandoIDempierev1.0 usaremoslosscriptsqueseencuetranenelsiguientelink https://sourceforge.net/p/red1/small/101/tree/trunk/POSIntegration/migration/

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

4/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

EnelenlaceanteriorencontrarunlistadodescriptsSQLcomoloilustralafiguraanterior.Losiguienteeselcodigofuentedelmodulo,sepuede obtenerlosScriptsdemigracin,elarchivo2pack.zipyelsoftwaredeOpenBravoPOSqueseutilizar,aunqueesimportanteanotarqueenel presentedocumentonoscentraremossoloenelcodigodecustomizacinqueestamosmigrando.Enelsiguienteenlacepodrdescargarel productocompletoparausar http://sourceforge.net/projects/red1/files/Software%20Packages/IntegratedPOSplugin.zip/download

LanzandoIDempiere
SiestausandoambienteWindowspuedeinstalarIDempieredeformasencillaenuncomputadoronotebookquenotengainstaladoJAVAni POSTGRESutilizandoelInstalador(http://sourceforge.net/projects/red1/files/Software%20Packages/iDempiere1.0.a_Setup.exe/download),silo necesitapuedeverlaguiaescritadecomoutilizarelinstaladorenconjuntoconelasistentedeactualizacin.Siestausandounambientediferentea WindowspuedeverlasinstrucionesdecomodesplegarIDempiereenhttp://wiki.idempiere.org. UnavezqueIDempiereestecorriendo,estarlistoparaaplicarlosscriptsdemigracionyhacerelPackOutparaobtenerelarchivo2pack.zipdel nuevoplugin.Sinecesitaayudaadicionalconlosscriptsdemigracinpuedeirnuestraayudaenlinea.Veamosahoracomorealizarelprocesode PackOut.Pararealizaresteprocesoconsuspropiascustomizacionesesimportanteasegurarsedequetenganungrupodemencomoeselcaso deestaintegracionconOpenBravoPOS.

HaciendoPackOut
EsnecesariologuearseconelusuarioSystemeiralmenPackOutsubrayadoenlasiguienteimagenconelnmero(1).Alabrirlaventana ingreselainformacincomosedetallaenlasiguienteimagenenelnmero(2).EnlasegundatablaseleccionaAplicacinoMdulodemanera queelmendeseleccinsealadoen(3)aparezca,luegoseleccionaelmendelmoduloamigraryunavezhechoestoregresaalapestaapadre yseleccionaelbotonExportarPaquetecomoseilustraen(4).Elprocesotardarunosmomentosdependiendodelacomplejidaddelmdulo. AlterminarelprocesoenlaparteinferiordelaventanaaparecerelPathenelqueelarchivo2pack.zipfuecreado,talycomosepuedeapreciar en(5),masadelanteusaremoselarchivocreadoparaempaquetarlojuntoconelplugin,porahoraleecharemosunvistazoalcodigofuentedel mduloquetambienincluiremosdentrodelplugin.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

5/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

RevisandoelCodigoFuente
Elcodigofuentedebeestarenpaquetesdemanerasimilaracomosepresentaelejemplo,aunquelaintegracindeADempiereconOpenBravo POSnoesmuyextensaenterminosdenrodeclasesolineasdecodigo,elpresenteejemploesperfectoparapropositosilustrativosyaqueutiliza varioscomponenetesdelNucleodelERP.Unejemploclarosevisualizaalverelparqueteorg.adempiere.processqueincluyenvariasclasesque determinanelcompartamientodelprocesoImportOrder.java,queasuvezextiendelaclaseoriginaldelmismopaquetedeADempiere. ParahaceralgocomoloanteriorenADempieresobreescribiamoselarchivocustomization.jar,perocomoIDempiereutilizalaarquitecturaOSGI, estoyanoesnecesario.Lounicoquedebemoshacerahoraesincluirelnuevocodigoenunplugindeclarandoelmismopaquete (org.adempiere.process)yactivarloduranteeltiempodeejecucin,loqueharqueseejecutenuestracustomizacinenlugardelcodigobasede ADempiere. EsteesbasicamenteelpoderdelaarquitecturaOSGI,queatravesdelamodularizacin,permitequenoseanecesariorecompilaroreemplazarel archivocustomization.jarcadavezqueserealiceuncambio,sinoquesoloconagregarnuestropluginauncontenedordeotrosplugins,loque facilitaenormementeelmantenimientodelaaplicacin,eldebugyelseguimientodeerroresencasodequesepresenten,puesbastarsolocon desactivarelpluginparaatravesdelaconsolaOSGI,inclusoenejecucin.

PreparandoambienteconEclipse
EnnuestrawikipuedeobtenermasinformacindecomoconfigurarelambientededesarrolloEclipsejuntoconlafuncionalidaddeBuckminstery Mercurial.MercurialesnecesarioparaaccederanuestrorepositorioonlinedeIDempierealojadoenBitbucket.Unavezhechoestamoslistospara nuestroprimerPlugin.

CreandounnuevoProyectoPlugin
SeleccionaNuevo>Otro(1)>PluginProject(3)eingresaelnombredelmoduloamigrar.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

6/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Deseleccionalaopcion>GenerarActivator(4).PuesusaremoselActivatorqueADempiereActivator

EnlacarpetaMETAINFseencuentraelarchivoMANIFEST.MF(1)enlatablaOverview.SeleccionalaopcinActivatoryenelbotnde buscaseleccionalaclaseAdempiereActivator,noseraposibleseleccionarlohastaquedefinalasdependenciasdelplugin,parahacerloes necesarioiralapestaadedependencias(2)yagregaelpluginorg.adempiere.pluginsquecontieneelActivador(3),ademasagregueelplugin org.adempiere.basequeeselnucleoparalospaquetesorg.adempiere.processyorg.compiere.processquesesobreescribenenelnuevoplugin. NotaquedentrodelospaquetesimportadosheseleccionadolalibreriaparaquemiActiveMQfuncione(4).

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

7/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

LuegovuelvealapestaaOverview(1)seleccionaelbotonbuscar(2)yahorasiserposibleseleccionarelActivador(3).

RevisandoelPlugin
Ahoraechemosleunvistazoalcodigofuentedenuestracustomizacionyaseguremonosquelasclasesestendentrodepaquetesdemanera apropiada(1),ademaslasdependenciasdebenestarresueltas(2).EsimportantenotarqueenlaarquitecturaOSGIlaslibreriasimportadasson resueltaspor(a)PlataformaDestinoo(B)OtrosPluginsdeclaradosenelarchivoMANIFEST(3),otambienpuedenserJarsdeclaradosenel MANIFEST.Acontinuacinseilustracomoseveunpluginalestarterminado.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

8/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Sinembargoesonoestodo,antesdequeelnuevopluginfuncioneesnecesarioconelnucleodeADempiereatravesdelplugin org.adempiere.base,pueselclasspathincluidoenOSGIfuncionademaneradiferenteenelqueelplugindelnucleoesunaseriedepaquetesde clasescomoporejemploorg.adempeire.process,parahacerestodebescolocarlalineaEclipseRegisterBuddy(1)enalgunlugarenelarchivo MANIFEST.Tambienesposibleexportarpaquetesenlapestaadeejecucin(2)demaneraqueseavivibleparaotrospluginsqueloutilicen, ademasenlapestaa(3)puedesdeclararjarsinternosquesequieranutilizar.

Conestospasosrealizadosestamoslistosparaavanzar.

ActivandoelPlugin
Contodoensulugarysinerroresrojosennuestroambienteeclipsevamosaejecutarelplugindesdeaqui.(Enunfuturotutorialcubriremosen detalleeldesplieguedeplugins).

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

9/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Primero,esnecesariocorrerelscriptImportIDempiere(1)deformaquelabasededatosquedecomonueva.

Segundo,enEclipsedarclicenRun>RunConfigurations(2)

Tercero,SeleccionamosSwingclient.product(3) Cuarto,Seleccionamoslaopcindelaizquierdadenuestronuevopluginyconfiguramoselarranquepordefecto.(4)

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

10/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

CuandoaparezcalaopcindelogueodelclienteJAVA,noseloguee,puesestoobstruiraelprocesodeempaquetadoqueseestallevandoacabo. Enlugardeesovayaalapestaadeconsolayescribalasigla'ss'(1)(ShortStatus),deesaformavisualizaremosellistadodepluginsconsu respectivoestado.

AcontinuacinidentificamosnuestropluginenlalistaeidentificamossuId,ennuestroejemplovemosqueeselId=2,asiqueparaactivarlo escribimosenlaconsola:'start2'(2),acontinuacinveraelpackinenaccinysernecesarioesperarhastaquelapalabraOSGIaparezcaenla ultimalinea(3)

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

11/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Ahorayapodemosiralaventanadelogueoparaingresaralaaplicacin,sinembargosernecesarioejecutarelprocesoRoleAccesUpdate,y despuesloguearsenuevamenteparateneraccesoalmendelnuevomodlo.

Unadelasprincipalescaracteristicasdeesteenfoqueesquenoesnecesariopreocuparseporelmantenimientodelaaplicacinoloscambiosde codigo,puescontansoloescribirenlaconsola'stop2'IDempieredejadeutilizarelnuevopluginyretoranaalcomportamientoanteriorsin siquieratenerquepararelservidor.EsasiquenuestroERPpruebaquesehadejadodeserunacuevacerradaparaconvertirseenunaaplicacion dinamicaymodularimplementandotodoslobeneficiosdelaarquitecturaOSGI.

Conclusiones
Aunqueelplugindeejemplopresentadoeneldocumentoessencillo,esposibledesarrollarpluginmassofisticadosconelframeworkOSGI, empoderandoengranmaneraelproyectoIDempiereyaquelasposibilidadessoninmensas.Ademasesposiblerefactorizaraunmaselpluginbase enpluginsmaspequeos,delamismaformaquesehizoconlosloscallouts,losprocesosyloscomponenetesgraficos.Estomismopodriamos hacerloconlosdiferentesprocesosfuncionalescomoManofactura,ActivosFijosoinclusofacturacin,pagosyrecaudos.Porultimoel implementarlaplataformaOSGI,permitiraaIDempiereadoptarunagranvariedaddeherramientasdeluniversoOSGIydeesaformadiatrasdia veremoscomoIDempierecrecerapidamente.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

12/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

CualquieraqueseaelcaminoquesigaIDempierenoserauncaminolento,puesenmientrasestoyescribiendoestedocumento,CarlosRuizvia Skypemehamostradonuevoscambiosquesehanintegradocomosepuedenverenelsiguienteenlace: http://wiki.idempiere.org/en/Category:New_Features_v0.01.AsiqueIDempiereesahoraelERPrapidoyfuriosodelmundoOpensource. Estaguiasolointentailustrardemaneragenerallasposibilidadesquetendranlosdesarrolladoresydisminuirlacurvadeaprendizajedeestospara sumergirseenelmejorsoftwaredelmundo.Comosabendebidoalostutorialesqueheescritoenelpasado,esunplacerparamicompartirloque heaprendidoparaqueotrosloexperimenten,esteesellegadoquequierodejarenlosultimosaosquemequedenporvivirdeacuerdoala voluntaddeDios. Sitienesalgunasugerenciaoalqoparadecimepuedesescribirmeared1@red1.org. Agradezcoquetehayastomadoeltiempodeleerestoyesmiesperanzaqueestaslineasteayudenatomarladecisindehacerpartedeeste increibleproyecto. QuelapazylabendicindeDiosesteconUstedes.

EpilogoUsandoPuntosdeExtensin
NuestroDon,LowHengSinhasealadoqueusarEclipseRegisterBuddynoeslamejorpracticayhaaconsejadoencambioqueesmejorutilizar lospuntosdeextensionparadefinirelproceso.AsiqueregresemosunpocoaEclipsepara"desarecer"esalinea,comosemuestraen(1),para continuarelprocesovamosalapestaaoverview(2),daremosclicenelenlaceextensiones(3),luegovamosalapestaaextensiones(4).Despues daremosclicenelbotondeagregaryselccionamoslaventana(5)depuntosdeextensineligiendoorg.adempiere.process(6)yregresandoala ventanaanteriordamosclicderechoalanuevalineayseleccionamosnuevoproceso(7)

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

13/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Unanuevaclaseesdefinida(1),peronoesnecesarioescribircodigo,bastasolocondarclicenelbotondebusqueda(2)yseleccionarlaclase existente(3). LuegoesnecesariosuministrarelID(5)queseregistrarenelclasspath,porultimopuedesingresartambienunnombre(6).

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

14/15

20/05/13

Guia de Migracin de Mdulos - iDempiere es

Enelsiguienteenlacepuedesverunvideoqueilustraloanterior. http://youtu.be/HXTy9GvCgu8 Obtenidodehttp://wiki.idempiere.org/wes/index.php?title=Guia_de_Migraci%C3%B3n_de_M%C3%B3dulos&oldid=203 Estapginafuemodificadaporltimavezel23dic2012,alas14:34. Estapginahasidovisitada479veces. ElcontenidoestdisponiblebajolostrminosdelaGNULizenzfrfreieDokumentation1.3oderhher.

wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos

15/15

Potrebbero piacerti anche