domingo, 22 de mayo de 2016

[JD Edwards] Show Clip Grid Attachment

When the row grid has attachment and we want show to the users, the most elegant is show a clip.

For it, the first step is desactivated check "Hide Row Headers" in grid properties:



The next step is use media object data structure of system function, and check with a flag and row keys of attachment if it has, and if it has will indicate to activate the clip else to desactivate.

Example:

0004 VA evt_MediaObject_EV01 = ""
0005 Media Object Structures(GT55NINC, <Default Media Object>, <Exist>, VA evt_MediaObject_EV01, GC Identificador Incidencia)
0006 If VA evt_MediaObject_EV01 is equal to "1"
0007    Set Grid Text Indicator(FC Grid, <Currently Selected Row>, <Yes>)
0008 Else
0009    Set Grid Text Indicator(FC Grid, <Currently Selected Row>, <No>)
0010 End If
0011 //

[JD Edwards] Mostrar Clip Anexos Grid

Cuando tenemos registros en un grid con anexos asociados y queremos mostrarlo al usuario, lo más elegante es mostrar el clip.

Para ello, primero tenemos que quitar el check de "Hide Row Headers" en las propiedades del grid:



Posteriormente, mediante la función de sistema de estructura del media object que estemos utilizando, comprobamos con un flag y con las claves de la fila si tiene media object, si lo tiene indicaremos que marque el indicador (clip) y sino que lo desactive:

0004 VA evt_MediaObject_EV01 = ""
0005 Media Object Structures(GT55NINC, <Default Media Object>, <Exist>, VA evt_MediaObject_EV01, GC Identificador Incidencia)
0006 If VA evt_MediaObject_EV01 is equal to "1"
0007    Set Grid Text Indicator(FC Grid, <Currently Selected Row>, <Yes>)
0008 Else
0009    Set Grid Text Indicator(FC Grid, <Currently Selected Row>, <No>)
0010 End If
0011 //

sábado, 21 de mayo de 2016

JD Edwards] JDEList - JDE Specialized Forum

All people who are dedicated to development, sooner rather than later we are doubts and problems. For this, we find manuals, tutoriales, but especially google where it leads to forums, blogs, videos, etc. For it, it's very important the technologie comunities, usually foro (like this), where we can ask and anser questions.

For JDEdwards, the best forum is JDEList where it is divide for categories (technical, applications and development) where in adittion the community provides third programs, etc.

JDEList Cover forum

If you go and find @alfredorz user greet him;)

[JD Edwards] JDEList - Foro Especializado JDE

Todos los que nos dedicamos al mundo del desarrollo, más pronto que tarde nos surgen dudas y problemas. Para ello, tiramos de manuales de cada tecnología, tutoriales, y sobre todo de google donde nos lleva a foros, blogs, vídeos, etc. Por ello es muy importante disponer de una comunidad de desarrolladores de la misma tecnología, habitualmente en foros, donde poder preguntar y resolver dudas.

Para JD Edwards el mejor foro sin duda que me he encontrado es JDEList, donde está dividido por categorías (técnicas, de aplicación y de desarrollo), donde además se aportan programas de terceros para facilitarnos las labores, etc.

JDEList Portada foro

Si pasáis y os encontráis con el usuario @alfredorz saludadle ;)

lunes, 16 de mayo de 2016

[Oracle ADF] Faces Rich Client - Component Tests

One of the great potential of Oracle ADF is the large number of standard components that the framework provides. In addition, many of these components can combine to create a more customized.

Until now, to try each one of these components and see their chances we had create a demo application in local and test each component.

With ADF Faces Rich Client & nbsp; Oracle has created an online website where you can go see and test each of the components (in addition it are classified), it gives us a brief explanation of each of them and even allows us to change some property. 





In addition, it allow us change styles, see ADF page code, etc.


Go to test!!!

[Oracle ADF] Faces Rich Client - Prueba Componentes

Uno de los grandes potenciales de Oracle ADF es la gran cantidad de componentes estándar que el framework nos proporciona. Además, muchos de esos componentes podemos combinarlos para crear uno más customizado.

Hasta ahora, para ir probando cada uno de éstos componentes y ver sus posibilidades no nos quedaba otra que crear una aplicación demo en local e ir trabajando con cada uno de ellos.

Con la página ADF Faces Rich Client  que Oracle ha creado un página web online donde podemos ir viendo cada uno de los componentes (además para facilitarnos están clasificados), nos da una explicación breve de cada uno de ellos e incluso nos permite cambiar alguna propiedad. 

Podemos acceder a ella en el siguiente enlace: http://jdevadf.oracle.com/adf-richclient-demo/faces/index.jspx




Además, nos permite cambiar los estilos, ver el código ADF de la página, etc!


A probar!!!

[Oracle MAF] CompGalleryDemo 2.2 - Prueba Componentes

Cuando trabajamos con un framework, debemos saber los componentes estándar de los que éste dispone y testearlos para ver las posibilidades que nos ofrece.

Para MAF, cuando instalamos la extensión nos descarga una serie de ejemplos en ruta_instalacion\jdev\extensions\oracle.maf\Samples\PublicSamples.zip donde descomprimimos y podemos ver cómo están construidas las aplicaciones. Entre ellas se encuentra el 'CompGallery' donde después de compilar y desplegar en nuestro dispositivo o en uno virtual podemos ver, probar e incluso cambiar ciertas propiedades de cada componente.

Ésto es muy útil ya que nos permite de una manera visual, limpia y rápida poder ver las capacidades de cada componente.

Pero además, también podemos probarlas en nuestro navegador web gracias a la aplicación web creada por oracle en la siguiente dirección http://jdevadf.oracle.com/amx/CompGalleryDemo











Así que a probar!!!!

domingo, 15 de mayo de 2016

[Oracle MAF] CompGalleryDemo 2.2 - Components Test

When we working with a framework, we must know the standard components available to it and test them to see possibilities it offers

In MAF, when we installed the extension it downloaded examples on installation_path\jdev\extensions\oracle.maf\Samples\PublicSamples.zip when we descompressed and we can see how applications are built. A application is 'CompGallery' where next to buid and deploy in our mobile phone or virtual phone, we ca see, test and even change components properties.

It's very useful because it allow us a visual, clean and easy way to see the compoments capabilities.

In addition, also we can try in our explorer web using the web application created by Oracle at the following address http://jdevadf.oracle.com/amx/CompGalleryDemo











So go to try!!!!

viernes, 13 de mayo de 2016

[JDE Edwards] JDETables - Web Referencia de Tablas

Tanto para los analistas funcionales como para los desarrolladores de JD Edwards es muy importante conocer las tablas con las que trabajamos y sus características: columnas, prefijos, campos, claves primarias, índices, etc. Y también es muy importante conocer los tipos de datos y sus características de cada columna (las definidas en el Diccionarios de Datos), así como las relaciones de las tabla.

E incluso para los que desarrollamos, es muy útil conocer la posición de cada columna en la tabla cuando tenemos que hacer alguna operación (fetch single, select, fetch next, update, etc) - sobre todo con tablas formadas por muchas columnas.-

Yo vengo utilizando para ello desde hace bastante tiempo una página web muy útil llamada JDETables:


Nos permite buscar las tablas en las distintas versiones de JDE (actualmente 8.12, 9.10 y 9.12), y nos detalla todas las características tales como las columnas que compone la tabla (con el alias, descripción, tipo de dato, etc), prefijo, clave primaria, índices, código de sistema al que pertenece, descripción de la tabla, número de columnas e índices, etc. E incluso nos permite construir sentencias SQL (select, update e insert).





Podemos ver todas las tablas de cada código de sistema, las tablas más consultadas, todas las tablas que utilizan un campo cuando clickamos en él, etc.


Y además es gratuita y no es necesario registrarse.


¡Una herramienta imprescindible para nuestro día a día!





[JDE Edwards] JDETables - Reference Web Tables

For JD Edwards functional analysts and development is very important to know the tables we work and characterists: columns, prefixes, indexes, primary key, etc. And also it's very important to know data types and column characterists (defined in Data Dictionary) and tables relationship.

And even for developers, it's very useful to know column position when we have doing some operation (fetch single, select, fetch next, update, etc.) - especially for tables that it have many columns-

I have being using to it for quite some time a very useful website called JDETables:



It allow us to find the tables in the differents JDE versiones (currently 8.12, 9.10 and 9.12) and it detailed all the features such as table columns (with the alias, description, data type, etc.), prefix, indexes, primary key, system code, table description, columns number and indexes, etc. And even it allow us to build SQL sentences (select, update and insert).




We can see all tables for code system, more queried tables, all tables used by a field, etc.



And it's free and not it doesn't need register.


An essential tool for our day to day!!!


jueves, 5 de mayo de 2016

[JD Edwards] Execute Windows / Linux Commands


Sometimes we are in a situation where in JDE not have a function, features or functionality to perform a certain task, or is too complex, and with a Windows command or Linux command (depends of Enterprise Server) it's easy. For example search text files in a directory, search for a PDF generated with BIP, etc.


In JDE through the Business Fuction "Execute External Program" (B34A1030) we can execute these commands. I can even make a script (.bat in Windows or .sh in Linux)



Example:

//
// Linux command to search files
//
VA evt_Command_NFLF = concat('/bin/ls -1 ',concat(directory,concat(' | egrep -i $*.csv > ',tempFile_directory)))
//
// Windows command to search files
//
VA evt_Command_NFLF = concat('dir /A:-D /B ',concat(directory,concat(' > ',tempFile_directory)))
//
Execute External Program
VA rpt_ErrorCode_ERRC <- BF cErrorCode
VA evt_Command_NFLF -> BF szCommandLine
//
If VA rpt_ErrorCode_ERRC is equal to "1"
   Stop Batch Processing
End If
//

[JD Edwards] Ejecutar Comandos Windows / Linux



En algunas ocasiones nos encontramos en una situación en la cual en JDE no tenemos una función, funciones o funcionalidad para realizar una determinada tarea, o es demasiado complejo, y con un comando de Windows o Linux (ésto dependerá del servidor Enterprise) nos resultaría más sencillo. Por ejemplo, para buscar archivos de texto en un directorio, buscar un PDF generado con BIP, etc.



Pues bien, en JDE a través de la Business Function "Execute External Program" (B34A1030) podemos ejecutar dichos comandos. He incluso podemos realizar un script (.bat en Windows o .sh en Linux).


Ejemplo práctico:


// Comando Linux para buscar fichero
VA evt_Comando_NFLF = concat('/bin/ls -1 ',concat(directorio,concat(' | egrep -i $*.csv > ',fichTermporal_directorio)))

// Comando Windows (excluimos directorios /A:-D)
VA evt_Comando_NFLF = concat('dir /A:-D /B ',concat(directorio,concat(' > ',fichTermporal_directorio)))
Execute External Program
        VA rpt_ErrorCode_ERRC <- BF cErrorCode
        VA evt_Comando_NFLF -> BF szCommandLine
If VA rpt_ErrorCode_ERRC is equal to "1"
   Stop Batch Processing
End If

miércoles, 4 de mayo de 2016

[JD Edwards] Loop Selected Rows Grid

In the previously post we saw about loop all rows on grid.

In this post we're going see how loop selected grid rows when we have it set to "Multiple Select". It's very useful for example when we want see in a FC field the amount summatory of grid, or when we want process the selected lines in other form, or when we want process selected lines in a report, etc.

We need the next system functions:

Get Selected Grid Row Count(FC Grid, VA frm_SelectedCount_LNID) -> get total selected rows

Get Selected Grid Row Number(FC Grid, VA frm_GridRowNumber_INT01) -> get the first row selected

Get Grid Row(FC Grid, VA frm_GridRowNumber_INT01) -> get the row id value into GC

Get Next Selected Row(FC Grid, VA frm_GridRowNumber_INT01, VA frm_GridRowNumber_INT01) -> get the next selected row

For doing it, we get the total rows selected, if it's greater than 0, get the first row, get the GC values, process row and get the next selected row in a loop.





Example:

VA frm_55_CurrentRow_MATH01 = 1
Get Max Grid Rows(FC Grid, VA frm_55_TotalRows_MATH01)
If VA frm_55_TotalRows_MATH01 is not equal to <Zero>
While VA frm_55_CurrentRow_MATH01 is less than or equal to VA frm_55_TotalRows_MATH01
Get Grid Row(FC Grid, VA frm_55_CurrentRow_MATH01)
//
// Works with row
//
GC CatCod1 = FC CatCod1
//
F4211.Update
GC Order Co = TK Order Company (Order Number)
GC Order Number = TK Document (Order No, Invoice, etc.)
GC Or Ty = TK Order Type
GC Line Number = TK Line Number
VA frm_55_SecuencialFiltro_JOBN -> TK Work Station ID
//
VA frm_55_CurrentRow_MATH01 = [VA frm_55_CurrentRow_MATH01]+1
End While
End If

[JD Edwards] Recorrer Líneas Seleccionadas Grid

En el anterior post vimos cómo recorrer todas las líneas del grid.

En ésta ocasión veremos cómo recorrernos sólo las líneas seleccionadas del grid cuando lo tenemos configurado como "Multiple Select". Ésto es muy práctico cuando por ejemplo queremos en un campo FC queremos visualizar el sumatorio del importe de las líneas seleccionadas, cuando queremos seleccionar las líneas para procesarlas en una segunda pantalla, cuando queremos filtrar las líneas seleccionadas en un informe, etc.

Para ello, necesitaremos usar las siguientes funciones de sistema:

Get Selected Grid Row Count(FC Grid, VA frm_SelectedCount_LNID) -> Obtenemos el número total de líenas seleccionadas en el segundo parámetro del grid indicado en el primer parámetro.

Get Selected Grid Row Number(FC Grid, VA frm_GridRowNumber_INT01) -> Nos devuelve en la variable del segundo parámetro el id de la primera línea seleccionada.

Get Grid Row(FC Grid, VA frm_GridRowNumber_INT01) -> Nos devuelve en GC el valor de la fila indicada en el segundo parámetro.

Get Next Selected Row(FC Grid, VA frm_GridRowNumber_INT01, VA frm_GridRowNumber_INT01) -> Nos devuelve en la variable del segundo parámetro el id de la siguiente línea seleccionada.


Para ello, obtenemos el nº total de líneas seleccionas y si es mayor de 0, es decir, hay líneas seleccionadas, obtenemos la primera línea e iteramos sobre el resto de líneas seleccionadas mientras haya en un bucle.



Ejemplo práctico:

//
//Obtiene el nº de líneas seleccionadas
//
Get Selected Grid Row Count(FC Grid, VA frm_SelectedCount_LNID)
//
//Si hay seleccionadas se procesan
//
If VA frm_SelectedCount_LNID is greater than Zero
  //
  //Obtiene el nº de la 1ª línea seleccionada
  //
  Get Selected Grid Row Number(FC Grid, VA frm_GridRowNumber_INT01)
  //
  //Mientras haya seleccionadas procesamos.
  //
  While VA frm_GridRowNumber_INT01 is greater than Zero
    //
    //Obtiene los valores de la línea - en GC
    //
    Get Grid Row(FC Grid, VA frm_GridRowNumber_INT01)
    //
    //Obtiene la siguiente línea seleccionada
    //
    Get Next Selected Row(FC Grid, VA frm_GridRowNumber_INT01, VA frm_GridRowNumber_INT01)
  End While
End If

martes, 3 de mayo de 2016

[JD Edwards] Loop All Grid Rows

A lot of times we'll need looping all grid rows, for example, for update a grid column, save the rows in a auxiliar table, etc. It's easy if we use system functions:

Get Max Grid Rows(FC Grid, Total_Rows) -> This system function returns total grid rows in the second parameter for the grid indicated as the first parameter.

Get Grid Row(FC Grid, RowId) -> This system function returns the GC values for the line id number indicated as the second parameter.


And with this functions, we'll doing a loop to iterate above all rows, and a variable for current row where we initialized to 1 and increase by 1 on each iteration (previously checking that there are lines in grid)






Example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
VA frm_55_CurrentRow_MATH01 = 1
Get Max Grid Rows(FC Grid, VA frm_55_TotalRows_MATH01)
If VA frm_55_TotalRows_MATH01 is not equal to <Zero>
While VA frm_55_CurrentRow_MATH01 is less than or equal to VA frm_55_TotalRows_MATH01
  Get Grid Row(FC Grid, VA frm_55_CurrentRow_MATH01)
  //
  // Works with row
  //
  GC CatCod1 = FC CatCod1
  //
  F4211.Update
  GC Order Co = TK Order Company (Order Number)
  GC Order Number = TK Document (Order No, Invoice, etc.)
  GC Or Ty = TK Order Type
  GC Line Number = TK Line Number
  VA frm_55_SecuencialFiltro_JOBN -> TK Work Station ID
  //
  VA frm_55_CurrentRow_MATH01 = [VA frm_55_CurrentRow_MATH01]+1
 End While
End If

[JD Edwards] Recorrer Líneas Grid

En numerosas ocasiones nos encontraremos con la necesidad de recorrer todas las líneas del grid, por ejemplo para actualizar el valor de una columna, guardar las líneas en una tabla auxiliar, etc. Ésto es sencillo si utilizamos las funciones del sistema de Grid:

Get Max Grid Rows(FC Grid, Total_Rows) -> Ésta system function nos devuelve en el segundo parámetro el número total de líneas del grid indicado en el primer parámetro.

Get Grid Row(FC Grid, RowId) -> Ésta system function nos devuelve en las GC el número de línea indicado como segundo parámetro.

Y con éstas funciones, un bucle para iterar sobre todas las líneas y una variable donde llevemos la línea actual comenzando en la línea 1 e incrementando en 1 en cada iteracción lo tendremos hecho (comprobando previamente que existen líneas en el grid).



Ejemplo práctico:

VA frm_55_LineaActual_MATH01 = 1
Get Max Grid Rows(FC Grid, VA frm_55_TotalLineas_MATH01)
If VA frm_55_TotalLineas_MATH01 is not equal to <Zero>
   While VA frm_55_LineaActual_MATH01 is less than or equal to VA frm_55_TotalLineas_MATH01
      Get Grid Row(FC Grid, VA frm_55_LineaActual_MATH01)
      //
      //  Operaciones a realizar con la línea
      //
       GC CatCod1 = FC CatCod1
      //
      F4211.Update
         GC Order Co =  TK Order Company (Order Number)
         GC Order Number =  TK Document (Order No, Invoice, etc.)
         GC Or Ty =  TK Order Type
         GC Line Number =  TK Line Number
         VA frm_55_SecuencialFiltro_JOBN -> TK Work Station ID
      //
      VA frm_55_LineaActual_MATH01 = [VA frm_55_LineaActual_MATH01]+1
   End While
End If

lunes, 2 de mayo de 2016

[JD Edwards] E1 Pages

Ésta vez os traigo otro post que escribí en el blog #StepForward de Neteris.

En las últimas versiones liberadas de JD Edwards, no sólo se han realizado mejoras a nivel de funcionalidad, tecnología y arquitectura, sino que también se ha llevado a cabo una gran renovación de la interfaz de usuario, haciéndola mucho más amigable y moderna. La herramienta de ERP se ha adaptado a los tiempos actuales, dando un gran salto de calidad y de aspecto.  
En definitiva, mejora la experiencia de usuario y su productividad a través de la visualización.
Aparte de los layouts, entre éstas mejoras de interfaz de usuario, iconos e imágenes y la distribución de los diferentes componentes, se han añadido otras funcionalidades de visualización de datos e integración como por ejemplo One View ReportingComposite Application Framework: también conocido como CAFE One JD Edwards o E1 Pages.
En este artículo nos vamos a centrar en éstas últimas, hablaremos sobre las principales novedades y ventajas que nos ofrecen las EnterpriseOne Pages.

Primero de todo, debemos saber qué es y para qué se utiliza.

CAFE One nace con JD Edwards Tools 9.1 y se mantiene con todas sus funcionalidades en jd 9.2. Las EnterpriseOne Pages aparecerán siempre en el menú de inicio del sistema. Nos permite embeber código HTML directamente en JD Edwards para modelar los menús de usuario tal como si de un flujo de tareas se tratara. Con tan sólo un vistazo podemos entender el ciclo completo del proceso, y hace más cómodo y atractivo el trabajo diario de los usuarios. 
En E1Pages podemos incluir:
  • Flujos de Proceso de Negocio.
  • Navegación basada en tareas.
  • Páginas web externas.
  • Links embebidos.
  • Documentación.
  • Y, en general, cualquier contenido HTML.
Hasta el momento, los usuarios accedían a las diferentes aplicaciones e informes a través de los puntos de menús configurados, solían aparecer por orden de ejecución de cada uno de ellos. Pero no quedaba muy claro el ciclo completo del proceso, ni era muy intuitivo y tampoco amigable desde el punto de vista del usuario. Con E1 Pages podemos generar estos menús integrados en la pantalla principal para modelar el ciclo completo del proceso, visualizándolo con cuadros y/o iconos. Nos permite presentar de cada aplicación una descripción más detallada del proceso, enlaces a documentación, podemos indicar (con rayas y flechas) el flujo por dónde debemos ir completando el proceso, etc. Hace mucho más atractivo el trabajo diario de nuestros usuarios con la herramienta, sin perder la posibilidad ya existente en los menús tradicionales, de otorgar atributos de seguridad por usuarios, roles, etc.
Además, al ser contenido HTML podemos editarlo y personalizarlo tanto como queramos, añadiendo mejoras de visualización: iconos, imágenes, fondos corporativos, aplicarle diferentes estilos con CSS, etc. También permite añadir funcionalidades con JavaScript, por lo que tenemos ante nosotros un mundo con infinitas posibilidades.
Así que si quiere enriquecer tanto el acceso, como el aspecto y funcionalidad de su JD Edwards: tener en cuenta E1 Pages o CAFE One es fundamental.

[JD Edwards] Integración Online

Ésta vez os traigo un post que escribí en el blog #StepForward de Neteris.

Con Oracle JD Edwards podemos integrar la gran mayoría de nuestros procesos de negocios en un único sistema, permitiéndonos afianzarlos, optimizarlos y disponer de toda nuestra información concentrada en única base de datos relacional. Pero en numerosas ocasiones, necesitamos interactuar con otros sistemas, internos o externos. Y, además, necesitamos que ésta comunicación se produzca en tiempo real para tener a nuestro sistema JD Edwards actualizado en cada momento.

 JD Edwards nos provee de diferentes tecnologias para el input y output de información tales como: ficheros de texto plano, integración con XML, y la más utilizada, potente, fiable y sólida: Servicios Web (Webservices, en inglés), más conocida en el ámbito de JDE como Servicios de Negocio (Business Services) o con la abreviatura BSSV.


Como ejemplo de integración con ficheros de texto plano he realizado a través de EDICOM para ficheros EDI (Orders, Invoice, Desadv y Recadv) para la integración de pedidos de venta, compra, facturación, expediciones de mercancía y confirmación de envío de grandes plataformas (El Corte Inglés, Alcampo, Mercadona, Carrefour, etc).
Como ejemplo de integración con archivos XML recientemente realicé un proyecto de FACe (Facturación Electrónica del Estado) para AENOR.
Y como ejemplo de integración con Servicios Web he realizado bastantes tanto para publicar servicios web y que se lo consuman externamente, así como para consumir servicios web externos desde JD Edwards. Unos de los proyectos en que realicé una comunicación bi-direccional de servicios web fue en IFC (Industria Farmacéutica de Cantabría) con el sistema de PTL para la preparación de picking.

Acerca de servicios web hablaré en varios post y también expondré unos ejemplos prácticos de cómo realizarlo con JDE, porque es muy potente y realmente muy interesante.

domingo, 1 de mayo de 2016

Presentación del Blog JDE & More


¿Quién soy yo?

Mi nombre es Alfredo Rodríguez Zárate, nacido en 1986 en Herrera del Duque (Badajoz), titulado en Ingeniería Técnica de Informática de Gestión por la Universidad Rey Juan Carlos. Soy una persona inquieta y dinámica que me gusta la tecnología, investigar y estar en continuo aprendizaje.


 En los últimos 6 años me he dedicado profesionalmente al desarrollo de aplicaciones, informes e interfaces empresariales con Oracle JD Edwards EnterpriseOne (JDE), aunque también he desarrollado por necesidades de negocio en otras tecnologías como .NET, Oracle ADF, etc.


¿Por qué este blog?


Éste blog es una idea que tenía en mente desde hace bastante tiempo, y la cual por tiempo u otras razones nunca llegué a poner en marcha. Lo primero decir que éste blog es creado por y para mí, es decir, que tiene que ser útil para mí y de esa manera podrá ser útil para los demás.

En el mundo laboral siempre he sido organizado (no tanto así en mi vida) y desde que me dedico profesionalmente al mundo de la programación, y en especial a JDE siempre he ido guardando notas, utilidades, funcionalidades, "truquillos", etc. en archivos que acababan en un directorio local o en la nube y pese a que lo he intentado tener lo mejor organizado posible aquello siempre acaba siendo insostenible e inmantenible. Por ello, la idea de crear posts en un blog será más accesible para mí y si le ayuda a los demás pues mejor.

Desde siempre, he pensado que estoy en deuda con la comunidad de desarrolladores. Aunque intento participar lo máximo posible (siempre que mi conocimiento en el tema a tratar lo permita claro) en foros como JDEList, Oracle Community, Microsoft Technet, Foros del Web, etc. Siempre que tengo dudas intento buscarla en éstos foros, en blogs de gurús, etc. Y por ello también quiero contribuir de alguna forma con la comunidad.


¿Qué temas voy a tratar?


Como he comentado, mi mayor expertise es JDE, y por lo tanto será de lo que más postearé obviamente. Pero también he realizado otros proyectos con otras tecnologías como JAVA, PHP, HTML, JavaScript, MySQL, SQL92, .NET, C#, VB, ADF, etc. y herramientas de apoyo a éstas. También estoy inmerso en el aprendizaje de otras tecnologías como Oracle BPM, Oracle MAF, Angular, ReactJS, Oracle WebCenter Content, Oracle Webcenter Portal, etc. así que iré posteando sobre éstas y otras así como nuevas tendencias tecnológicas.