Hi friends, I'm back from holidays, and I'll try write more posts regullary.
In the last 3 weeks I did a Oracle MOOC of Oracle JET. Oracle JET it's a new Oracle Tool, released on November 2015, based in Javascript. According Oracle, not is a Javascript framework else a collection of javascript libraries and technologies to build enterprise client-side applications.
Oracle JET is compose for libraries as: RequireJS, Knockout, JQuery, JQueryUI, Cordova.
Go to official Oracle JET web: http://www.oracle.com/webfolder/technetwork/jet/index.html
You can create web applications and mobile applications (or both).
Oracle JET use AltaUI Style and has a lot of components. In Oracle JET Cookbook site you can see all components, properties and you can test, it's a very useful page: http://www.oracle.com/webfolder/technetwork/jet/jetCookbook.html
As client-side (you should know something of HTML, JS and CSS) application communicate with webservices: REST and JSON, preferably Oracle Cloud Services.
The IDE for work it's Netbeans (I worked with this IDE for JAVA projects and I like). Of course you can use console to create and build application with yeoman.
The next Oracle JET MOOC it's the next 3th October. For more information and enroll: https://blogs.oracle.com/javatraining/entry/announcing_a_second_session_of
lunes, 12 de septiembre de 2016
miércoles, 24 de agosto de 2016
[MAF] MAF 2.3.2 Release
The new version 2.3.2 has been released. Has important changes to iOS platform and other features:
- WKView Support for iOS
- Support for IPv6 only networks on iOS
- Single Sign-On in MCS and other PaaS
- Templates Layout for new AMX pages
- New components: Dotted Page Control and Picto chart
- Clear text attribute for all input text.
- geographicMap can now use Oracle Maps Cloud Service for routes
- And more.
You can see more information about it in the next links:
https://blogs.oracle.com/mobile/entry/oracle_maf_2_3_2
http://docs.oracle.com/middleware/maf232/mobile/develop-maf/GUID-4C5D7100-DFA8-44E6-911C-F40280E679D9.htm#ADFMF24915
- WKView Support for iOS
- Support for IPv6 only networks on iOS
- Single Sign-On in MCS and other PaaS
- Templates Layout for new AMX pages
- New components: Dotted Page Control and Picto chart
- Clear text attribute for all input text.
- geographicMap can now use Oracle Maps Cloud Service for routes
- And more.
You can see more information about it in the next links:
https://blogs.oracle.com/mobile/entry/oracle_maf_2_3_2
http://docs.oracle.com/middleware/maf232/mobile/develop-maf/GUID-4C5D7100-DFA8-44E6-911C-F40280E679D9.htm#ADFMF24915
Etiquetas:
Hybrid Apps,
MAF New Version,
Mobile Application Framework,
Mobile Apps,
Oracle,
Oracle MAF,
Oracle Mobile Application Framework
lunes, 18 de julio de 2016
[JD Edwards] Custom Login Page
If you want customize your E1 Login Page you can access to resources in the next directory in web server:
/u01/oracle/middleware/oracle_home/user_projects/domains/e1_domain/servers/JASPD/stage/JASPD/app/webclient.war/share
When:
- /u01/oracle/middleware/oracle_home/: is a JD Edwards installation (in my case 9.2 tools)
- JASPD: web instance
In share directory you can find all resources as images (backgrounds, icons, etc.), pages, scripts, etc.
For example, I changed tipically "watermark-oracle.png" for a custom image as background.

/u01/oracle/middleware/oracle_home/user_projects/domains/e1_domain/servers/JASPD/stage/JASPD/app/webclient.war/share
When:
- /u01/oracle/middleware/oracle_home/: is a JD Edwards installation (in my case 9.2 tools)
- JASPD: web instance
In share directory you can find all resources as images (backgrounds, icons, etc.), pages, scripts, etc.
For example, I changed tipically "watermark-oracle.png" for a custom image as background.

It is cool!!!!
[JD Edwards] Personalizar Página Login
Si quieres personalizar tu página de login de E1 tu puedes acceder a sus recursos en el siguiente directorio del servidor web:
/u01/oracle/middleware/oracle_home/user_projects/domains/e1_domain/servers/JASPD/stage/JASPD/app/webclient.war/share
Donde:
- /u01/oracle/middleware/oracle_home/: es la instalación de JD Edwards (en mi caso tools 9.2)
- JASPD: instancia web
En el directorio share, tu puedes encontrar todos los recursos como imágenes (fondos, iconos, etc.), páginas, scripts, etc.
Por ejemplo, yo cambié el típico "watermark-oracle.png" por una imagen personalizada como fondo:

/u01/oracle/middleware/oracle_home/user_projects/domains/e1_domain/servers/JASPD/stage/JASPD/app/webclient.war/share
Donde:
- /u01/oracle/middleware/oracle_home/: es la instalación de JD Edwards (en mi caso tools 9.2)
- JASPD: instancia web
En el directorio share, tu puedes encontrar todos los recursos como imágenes (fondos, iconos, etc.), páginas, scripts, etc.
Por ejemplo, yo cambié el típico "watermark-oracle.png" por una imagen personalizada como fondo:

Ésto es chulo!!!!
lunes, 4 de julio de 2016
[SQLDeveloper] Open multiple tables
When working with databases, we usually use IDE applications for work more comfortable. With Oracle Database the most common is SQLDeveloper
SQLDeveloper allow us doing SQL sentences and graphically display database components: tables, views, triggers, procedures, functions, packages, etc.
Also, when we working with tables, we need view one or more tables at the same time. With SQLDeveloper default configuration each time when we open a table overwrite the same tab of table that we were viewing.
For change the configuration and we can view the tables in different tabs, it's very comfortable, there are activate the next check in preferences:
Tools->Preferences->Data Base-> Object View->Automatically Freeze Object Viewer Windows

And in this way we will see in different tabs:

SQLDeveloper allow us doing SQL sentences and graphically display database components: tables, views, triggers, procedures, functions, packages, etc.
Also, when we working with tables, we need view one or more tables at the same time. With SQLDeveloper default configuration each time when we open a table overwrite the same tab of table that we were viewing.
For change the configuration and we can view the tables in different tabs, it's very comfortable, there are activate the next check in preferences:
Tools->Preferences->Data Base-> Object View->Automatically Freeze Object Viewer Windows

And in this way we will see in different tabs:

I hope it will be useful for you!!!
Etiquetas:
JDE Tablas,
JDE Tables,
Oracle JD Edwards,
Oracle JDE,
SLQDeveloper open multiple tables,
SQLDeveloper,
SQLDeveloper open multiple tables in tabs
[SQLDeveloper] Abrir varias tablas a la vez
Cuando trabajamos con base de datos, solemos utilizar un IDE para trabajar más cómodamente. Con base de datos Oracle el más habitual es SQLDeveloper.
SQLDeveloper nos permite realizar sentencias SQL así cómo visualizar gráficamente los componentes de la base de datos: tablas, vistas, disparadores, procedimientos, funciones, paquetes, etc.
Además, cuando trabajamos con tablas habitualmente necesitaremos consultar o realizar varias tablas a la vez. Con la configuración por defecto de SQLDeveloper cada vez que abrimos una tabla nos sobreescribe en la misma pestaña la que teníamos visualizando anteriormente.
Para cambiar la configuración y ver todas las tablas en diferentes pestañas, lo cual es bastante cómodo, hay que activar el siguiente check en preferencias:
Herramientas -> Preferencias -> Base de Datos -> Visor de Objetos -> Congelar Automáticamente Ventanas del Visor de Objetos

Y de ésta manera lo veremos en pestañas diferentes:

SQLDeveloper nos permite realizar sentencias SQL así cómo visualizar gráficamente los componentes de la base de datos: tablas, vistas, disparadores, procedimientos, funciones, paquetes, etc.
Además, cuando trabajamos con tablas habitualmente necesitaremos consultar o realizar varias tablas a la vez. Con la configuración por defecto de SQLDeveloper cada vez que abrimos una tabla nos sobreescribe en la misma pestaña la que teníamos visualizando anteriormente.
Para cambiar la configuración y ver todas las tablas en diferentes pestañas, lo cual es bastante cómodo, hay que activar el siguiente check en preferencias:
Herramientas -> Preferencias -> Base de Datos -> Visor de Objetos -> Congelar Automáticamente Ventanas del Visor de Objetos

Y de ésta manera lo veremos en pestañas diferentes:

Espero os sea útil!!!
[JD Edwards] Reserva de Objeto
Cuando un usuario está trabajando con un documento y lo está editando, deberíamos siempre no permitir que ningún otro usuario pueda modificarlo para no se produzca incongruencias. Ésto es lo que se conoce como Reserva de Objetos o Reserva de Documentos.
En JDE en la mayoría de pantallas estándar ésto está implementado, pero cuando creamos una pantalla custom deberíamos tenerlo en cuenta.
Bien, entonces utilizando la función estándar "F00095 Reserve Object" con el UKID "RRESERVE", y normalmente con los valores claves del documento que estemos trabajando, ésta función realiza 2 cosas: por un lado comprueba si ya está reservado o no, y en caso de que no inserta el registro, o lo que es lo mismo lo reserva. En caso de que esté reservado, utilizamos la función "Set Object Reservation Text Substitution Error" para mostrar un error en la pantalla y además sería más deseable y más limpio que bloqueáramos todos los campos de la pantalla.
Ejemplo:
0080 //
0081 // # Reserva #
0082 //
0083 // Cogemos un UKID (RRESERVE) de la F00022
0084 //
0085 Get Next Unique Key ID
"RRESERVE" -> BF szObjectName
VA frm_UniqueKeyIDInternal_UKID <- BF mnUniqueKeyID
0086 //
0087 // Lo convertimos a string para pasarselo a la función de reserva parámetro
0088 // PID
0089 //
0090 Math Numeric to String, Convert
VA frm_UniqueKeyIDInternal_UKID -> BF mnMathNumeric01
VA frm_szUniqueIDRecReserve_PID <- BF szVideoConstant30A
0091 //
0092 // Cogemos como clave el id de incidencia
0093 //
0094 VA frm_GenericKey_GENKEY = [FI mnIdentificadorIncidencia]
0095 //
0096 // Lo reservamos, pasándole usuario, clave, tabla, PID Único
0097 //
0098 F00095 Reserve Object
"F55N42IC" -> BF szNameObject
VA frm_UserId_USER -> BF szUserId
"1" -> BF cSuppressErrorMessage
VA frm_szRecordReserveErrMsg_DTAI <- BF szErrorMessageID
VA frm_ReserversNameAlpha_ALPH <- BF szReserversNameAlpha
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szUniqueIDRecReserve_PID -> BF szApplication
VA frm_szReserversAplication_PID <- BF szReserversApplication
"1" -> BF cWarningError
0099 //
0100 // Si está reservado, nos lo indicará en ErrorMesageID. Entonces mostramos
0101 // error y deshabilitamos el OK y los campos
0102 //
0103 If VA frm_szRecordReserveErrMsg_DTAI is not equal to <Blank> And VA frm_szRecordReserveErrMsg_DTAI is not equal to <Null>
0104 Set Object Reservation Text Substitution Error
VA frm_ReserversNameAlpha_ALPH -> BF szReserversNameAlpha
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szReserversAplication_PID -> BF szApplication
"2" -> BF cWarningError
0105 Disable Control(HC &OK)
0106 Disable Control(FC 2nd Address Number)
0107 Disable Control(FC Address Book Name)
0108 Disable Control(FC Electronic Address)
0109 Disable Control(FC Phone Number)
0110 Disable Control(FC Fuente Incidencia)
0111 Disable Control(FC Motivo Incidencia)
0112 Disable Control(FC Estado Incidencia)
0113 Disable Control(FC Departamento Incidencia)
0114 Disable Control(FC Comment)
0115 Disable Control(FC Conclusión)
0116 End If
Por supuesto, una vez que finalicemos con la edición (cuando pulsemos el botón OK o Cancel normalmente), tenemos que quitar la reserva (el registro de la F00095) para que no se quede bloqueado y podamos editarlo a futuro mediante la BSFN "F00095 Remove Business Object Reservation".
Ejemplo:
0040 // # Quitamos la reserva
0041 //
0042 // Si la variable PID devuelta es blanco, es porque lo hemos reservado, por lo
0043 // tanto quitamos la reserva pasando el usuario, tabla, clave y PID con el UKI
0044 // unico
0045 //
0046 If VA frm_szReserversAplication_PID is equal to <Blank>
0047 F00095 Remove Business Object Reservation
VA frm_UserId_USER -> BF szUserId
"F55N42IC" -> BF szNameObject
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szUniqueIDRecReserve_PID -> BF szApplication
0048 End If
0049 //
Y con ésto minimizamos el impacto de que varios usuarios a la vez trabajen con el mismo documento, algo muy simple y que nos puede evitar de bastantes problemas a futuro!
En JDE en la mayoría de pantallas estándar ésto está implementado, pero cuando creamos una pantalla custom deberíamos tenerlo en cuenta.
¿Cómo JDE realiza ésto?
Muy sencillo, lo que simplemente hace es cuando alguien se propone a editar un documento inserta un registro en la tabla F00095 y no lo elimina hasta que el usuario abandona la edición. De ésta manera, cuando otro usuario entra en otra instancia de la misma aplicación comprueba si existe el registro en la tabla F00095, de ser así muestra un error y bloquea para no permitir editar.¿Qué hay que hacer?
Bien, entonces utilizando la función estándar "F00095 Reserve Object" con el UKID "RRESERVE", y normalmente con los valores claves del documento que estemos trabajando, ésta función realiza 2 cosas: por un lado comprueba si ya está reservado o no, y en caso de que no inserta el registro, o lo que es lo mismo lo reserva. En caso de que esté reservado, utilizamos la función "Set Object Reservation Text Substitution Error" para mostrar un error en la pantalla y además sería más deseable y más limpio que bloqueáramos todos los campos de la pantalla.
Ejemplo:
0080 //
0081 // # Reserva #
0082 //
0083 // Cogemos un UKID (RRESERVE) de la F00022
0084 //
0085 Get Next Unique Key ID
"RRESERVE" -> BF szObjectName
VA frm_UniqueKeyIDInternal_UKID <- BF mnUniqueKeyID
0086 //
0087 // Lo convertimos a string para pasarselo a la función de reserva parámetro
0088 // PID
0089 //
0090 Math Numeric to String, Convert
VA frm_UniqueKeyIDInternal_UKID -> BF mnMathNumeric01
VA frm_szUniqueIDRecReserve_PID <- BF szVideoConstant30A
0091 //
0092 // Cogemos como clave el id de incidencia
0093 //
0094 VA frm_GenericKey_GENKEY = [FI mnIdentificadorIncidencia]
0095 //
0096 // Lo reservamos, pasándole usuario, clave, tabla, PID Único
0097 //
0098 F00095 Reserve Object
"F55N42IC" -> BF szNameObject
VA frm_UserId_USER -> BF szUserId
"1" -> BF cSuppressErrorMessage
VA frm_szRecordReserveErrMsg_DTAI <- BF szErrorMessageID
VA frm_ReserversNameAlpha_ALPH <- BF szReserversNameAlpha
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szUniqueIDRecReserve_PID -> BF szApplication
VA frm_szReserversAplication_PID <- BF szReserversApplication
"1" -> BF cWarningError
0099 //
0100 // Si está reservado, nos lo indicará en ErrorMesageID. Entonces mostramos
0101 // error y deshabilitamos el OK y los campos
0102 //
0103 If VA frm_szRecordReserveErrMsg_DTAI is not equal to <Blank> And VA frm_szRecordReserveErrMsg_DTAI is not equal to <Null>
0104 Set Object Reservation Text Substitution Error
VA frm_ReserversNameAlpha_ALPH -> BF szReserversNameAlpha
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szReserversAplication_PID -> BF szApplication
"2" -> BF cWarningError
0105 Disable Control(HC &OK)
0106 Disable Control(FC 2nd Address Number)
0107 Disable Control(FC Address Book Name)
0108 Disable Control(FC Electronic Address)
0109 Disable Control(FC Phone Number)
0110 Disable Control(FC Fuente Incidencia)
0111 Disable Control(FC Motivo Incidencia)
0112 Disable Control(FC Estado Incidencia)
0113 Disable Control(FC Departamento Incidencia)
0114 Disable Control(FC Comment)
0115 Disable Control(FC Conclusión)
0116 End If
Por supuesto, una vez que finalicemos con la edición (cuando pulsemos el botón OK o Cancel normalmente), tenemos que quitar la reserva (el registro de la F00095) para que no se quede bloqueado y podamos editarlo a futuro mediante la BSFN "F00095 Remove Business Object Reservation".
Ejemplo:
0040 // # Quitamos la reserva
0041 //
0042 // Si la variable PID devuelta es blanco, es porque lo hemos reservado, por lo
0043 // tanto quitamos la reserva pasando el usuario, tabla, clave y PID con el UKI
0044 // unico
0045 //
0046 If VA frm_szReserversAplication_PID is equal to <Blank>
0047 F00095 Remove Business Object Reservation
VA frm_UserId_USER -> BF szUserId
"F55N42IC" -> BF szNameObject
VA frm_GenericKey_GENKEY -> BF szGenericKey
VA frm_szUniqueIDRecReserve_PID -> BF szApplication
0048 End If
0049 //
Y con ésto minimizamos el impacto de que varios usuarios a la vez trabajen con el mismo documento, algo muy simple y que nos puede evitar de bastantes problemas a futuro!
Suscribirse a:
Entradas (Atom)



