Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
ComorealizarlaMigracin?
Elsiguientepasoescompletarlamigracindelosmetadatosydelcodigodemaneraexitosa.Talcomolomencionamosanteriormente,laprimera partelarealizamosutilizando2Pack,queexportaenunarchivoZIP(2pack.zip),quecontienetodaladescripcindeloscambiosrealizadosalAD enformatoXML.LasegundaparteconsisteentoncesenformatearlospaquetesJAVAdeacuerdoalaestructuradePlugindeEclipse.Mas adelanteveremosconmasdetallecadaunodeestospasos,porahoraexaminandolaFigura3podemosverdemaneraclaraelprocesode migracindelADatravesdelascajassealadasporlaflecharoja.Enotrasfigurasquepresentaremosmasadelanteexaminaremosendetalleel procesodemigracindecodigo,porahoralosrepresentamossoloconlacajadecontonrnorojoquedice"Eclipse".
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
3/15
20/05/13
MigracindeunMdulo
AcontinuacinanalizaremosunejemplodeunmodulorealdeADempiereelcualmigraremosaIDempierecomoplugin.Paranuestroejemplo usaremoselmodulodeintegracindeOpenBravoPOSyADempiereERPquefueuntrabajoquedesarrollamosypublicamoselaopasado. ParaesemdulocreamosunMenllamadoIntegracinPOS,elcualcontiene3tressubitemsqueson2procesosllamadosExportarColae ImportarColadeOrdenesyunaventanallamadaProcesarOrdenesImportadas.
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
4/15
20/05/13
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
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
Deseleccionalaopcion>GenerarActivator(4).PuesusaremoselActivatorqueADempiereActivator
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
7/15
20/05/13
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
Conestospasosrealizadosestamoslistosparaavanzar.
ActivandoelPlugin
Contodoensulugarysinerroresrojosennuestroambienteeclipsevamosaejecutarelplugindesdeaqui.(Enunfuturotutorialcubriremosen detalleeldesplieguedeplugins).
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
9/15
20/05/13
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
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
11/15
20/05/13
Ahorayapodemosiralaventanadelogueoparaingresaralaaplicacin,sinembargosernecesarioejecutarelprocesoRoleAccesUpdate,y despuesloguearsenuevamenteparateneraccesoalmendelnuevomodlo.
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
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
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
14/15
20/05/13
wiki.idempiere.org/es/Guia_de_Migracin_de_Mdulos
15/15