De todas la mejoras y nuevas funcionalidades de esta versión queremos destacar las siguientes:
El nuevo objeto “Consulta” permite crear consultas predefinidas sobre una o varias tablas, y utilizarlas posteriormente como orígenes de datos en las secciones de tipo “Consulta”, en los widgets o mediante la instrucción EBDML “execdatasource”.
Los objetos consulta disponen de toda la flexibilidad de la sección de tipo “Tabla”, como los campos extra o campos calculados con código EBDML, y además permiten personalizar los alias de las Tablas y los campos seleccionados para facilitar el acceso a los datos una vez ejecutada la consulta.
- Distribución de Aplicaciones en Paquetes
A partir de la versión 3.5, los Paquetes generados con EBD pueden incluir prácticamente todos los objetos que forman una aplicación:
Tablas, Páginas, Secciones, Zonas, WebServices, etc...
Gracias a esta ampliación, se pueden usar los paquetes no sólo para distribuir recursos reutilizables como widgets o Librerías, sino también para distribuir una aplicación completa.
El nuevo sistema de instalación de paquetes verifica las dependencias de todos los objetos instalados, permitiendo separar una aplicación en diferentes paquetes para facilitar la instalación y las actualizaciones de los diferentes objetos.
A continuación mostramos una relación de todos los cambios que han sido:
EBD versión 3.5.2 - 23/2/2010
[Req912] La función Section.show
usa el doctype de la zona actual si no se especifica por parámetro.
- [Req] Nueva instruccion eBD:SYNCRONIZE que permite sincronizar el acceso a variables globales entre requests concurrentes de la misma sesión.
- [Packages] Actualización del instalador para que ejecute los callbacks de post-install al final de la instalación del paquete. El callback de una seccion widget depende de que se hayan instalado otros objetos (eventos de widget) que puede que vayan despues dentro del paquete. Por eso hay que ejecutar el callback tras haber instalado todos los objetos.
[Req] Nueva funcion
#[eBDDate.CurrentMilis], que proporciona la fecha (epoch) en
milisegundos.
[eBDML] Nuevo tipo de parser XML
"RECORDSET" (en eBD:XMLPARSE) para parsear estructuras XML
simples que devuelve un array de hashes.
[eBDML] Se optimiza el rendimiento
en eBD:LINKTO.
[Bug] Ahora se puede acceder a
“:filepath” desde código eBDML de campos en objetos Consulta.
[Bug] Solucionado el problema que
daba al guardar código eBDML de campo, y por el que no se
refrescaba correctamente (habia que compilar 2 veces).
[Bug] Resuelto, en Oracle, el
error del objeto consulta que no estaba generando la query con los
alias de los campos correctamente.
[Bug] Solucionado el error
producido en Oracle cuando la vista previa de una Consulta fallaba
(no se estaba filtrando la query SQL para quotear los nombres).
[Bug715] Resuelto el problema en
eBD:UPDATE que no actualizaba el campo publicado en todos los
registros, sino solo en el primero.
[Bug711] Solucionado el error que
duplicaba los objetos de los paquetes al actualizarlos.
[Bug716] Se añade la posibilidad
de añadir todos los campos en una sección Consulta, en lugar de
uno a uno.
[Bug713] Ahora aparece un mensaje
de error si se crea mal una sección Consulta.
[Bug714] Resuelto el problema de
la sección Consulta que daba Internal Server Error al utilizar una
consulta predefinida.
[Bug524] Solucionado el error en eBDServer por el que no
estaba haciendo el timeout (60 segundos por defecto) correctamente
en Win32.
EBD versión 3.5.1 - 22/1/2010
[Req837] Nuevo parámetro
"AllowSessionFrom" en ebd.xml (por instancia) que permite
declarar una lista de IP desde las que se puede abrir una sesion sin
validar la IP de origen.
[Req911] Se añade la posibilidad
de usar código eBDML en campos de consultas.
[eBDSections.setDOMContent] Se
añade una '\ al inicio.
[Req910] Se ha mejorado la
pantalla de edición de parámetros de la sección widget.
[Req909] Se ha añadido el
parámetro doctype en Section.show con fullpage=1.
[Req] Solucionado el error 500 que
daba la instrucción DESERIALIZE si fallaba el modulo JSON, ahora
genera un error en el log.
[Req] Se ha modificado el fichero
ebd.xml para permitir configurar el número de registros a mantener
por usuario en la tabla "LoginCorrectos" mediante el tag:
MaxLoginRecords.
[Req] Nueva función
#[eBDResponse.add_style(url)] (equivalente a "add_script"
pero para ficheros css).
[Req] Se
ha añadido el parámetro ENCODING en la instrucción
eBD:XMLPARSE, para indicar la codificación y que no lo parsee
automáticamente de la primera línea del XML.
[Req] Se ha añadido soporte para Usuarios Remotos para el
servicio Sun LDAP. También se ha solucionado algunos errores
pequeños en el parámetro de validación en el formulario de
usuario.
[Bug] Solucionado el problema que
no dejaba ver la ayuda de eBDML en el editor.
[Bug] Se resuelve el error en
eBD:EXECDATASOURCE que se producía si no existía la consulta,
apareciendo un error en el log.
[Bug707] Se modifica el Buscador
de literales para que pueda buscar literales dentro de carpetas.
[Bug706] Solucionado el problema
con el Campo Extra en Consultas.
Por el que al
crear un campo extra en una consulta e intentar introducir la función
de BD, el popup se cerraba automáticamente, sin permitir entrar la
función de BD.
[Bug705] Se soluciona el error en
los Widgets que borraba la consulta global al restablecer valores en
los orígenes de datos. También se ha modificado para impedir que
se edite la consulta global desde otro objeto.
[Bug703] Se resuelve el error por
el que el Datasource es ignorado al hacer un eBD:INSERT.
[Bug704] Solucionado el error de
eBD:UPDATE por el que al hacerlo sobre una tabla donde tenemos una
fecha como campo clave, no convierte la fecha al hacer la
comprobación de si el registro existe, y siempre dice que no.
[Bug] eBD:INCLUDE pasa los parámetros adicionales de forma
Case-sentitive !!!!!
*** ATENCIÓN: Esto puede provocar
problemas de compatibilidad con códigos existentes que no pasen
parámetros adicionales en mayúsculas y los recojan con eBD:ARGS en
minúsculas.
EBD version 3.5.02 - 24/12/2009
[Req] Se modifica eBD:FOREACH y
eBD:FETCHROW para que el parámetro QUERY sea evaluable.
[Req] Nueva función
#[eBDResponse.add_script(url)] que permite añadir un fichero
Javascript a la cabecera de la respuesta controlando que no se
repita.
[Bug] Se soluciona el Error 503
que daba al intentar descargar el fichero de código de una función
(en Librerías).
[Bug] Se añade el atributo XMLNS en el "method" de
las llamadas SOAP a Web Services .NET, para identificar totalmente
el NS de los parámetros.
EBD version 3.5.01 - 17/12/2009
[Bug] Se resuelve el problema en
los objetos Consulta por el cual arrastraban las relaciones al
compilarse el paquete.
[Req] Se crean atributos propios del widget. Cada sección
puede definir su propia lista de atributos (en la pantalla
Parámetros), y usar la funcion #[eBDWidget.getAttribute(nombre)]
para recuperarlo en cualquier sitio (datasources, eventos, ...)
Los atributos se arrastran cifradas
con la URL del evento generada con #[eBDWidget.eventsURL]
Los Widgets envían automáticamente
este valor en la URL de sus eventos, por lo que al ejecutar
#[eBDSection.UniqueID] en un evento de widget recibiremos el mismo
valor que tenia en la ejecución del código principal.
[Bug] Se soluciona el error 403 al
intentar crear un servicio de mensajería instantánea.
Se ha modificado en
InstantMessenger para usar el _idRegistro en lugar del “username”
para identificar los contactos.
Nuevo parámetro
"section_containers" para las URLs cifradas de
Section.show que fuerza la inserción de los elementos contenedores
Nueva funcion
eBDSection.setDOMContent(dom_node, html)
setDOMContent carga todos los
SCRIPT en el head, comprobando que no estén ya cargados
Los STYLE los carga en el propio
DOM node
eBDSection.show usa setDOMContent
para incrustar el html recibido.
Ahora los parámetros de eBDSection.show son (en la URL
cifrada):
idsection -> id de la sección (ya
existia)
section -> nombre de la sección
idpage ->
id de la pagina
page -> nombre de la pagina
idzone ->
id de la zona
zone -> nombre de la zona
full_page [1|0]
-> booleano que indica si se debe generar el contenido HTML
completo (para poder usar esa url directamente en un IFRAME)
**
Si se usa "section" pero no se especifica pagina ni zona,
se entiende que es una sección global
EBD versión 3.5.0 - 26/11/2009
Redirección automática a '/'
después de un logout (del tipo "?logout=1")
[Packages] Se empaquetan los
valores de los literales. Las localizaciones solo están
referenciadas. Deben existir en la instancia de destino todas las
localizaciones usadas en el paquete (se identifican por 'language').
[Packages] Se muestra la
información sobre el objeto original si no se encuentra ningún
objeto compatible para la referencia.
[Packages] Se puede empaquetar
carpetas de Archivos Estáticos.
[Widgets] Solo se avisa de error
al usar Consultas SQL en Datasources si no se pueden obtener los
campos seleccionados.
[Widgets] Se puede seleccionar
objetos de tipo Consulta desde los Datasources de un Widget.
[Consulta] Se ha añadido los
campos extra en el objeto Consulta.
[eBDML] Nuevo parámetro COUNT en EXECDATASOURCE para recoger
en una variable el valor de select count(*)
(solo se ejecuta la query select_count
si esta definido el limit, pero en cualquier caso siempre se devuelve
el valor).
[Req720] Se pueden usar funciones
para valores de parámetros booleanos de widgets.
[Req735] Se pueden definir
datasources "abiertos" en un widget, no requieren una
estructura de campos especifica.
[Widget] Nuevo flag en los
parámetros de la sección widget que permite sobre-escribirlos
desde eBD:INCLUDE.
[Req829] Los nombres de las
funciones Java (y .NET) ya no dependen del ID. Se actualiza
automáticamente el código fuente (cambiando el classname) al
compilar la clase si todavía está en formato 3.4.
[Req714] Nuevo parámetro EVENT en eBD:CALL para poder
ejecutar eventos de un widget desde el propio código eBDML del
widget.
A partir de la versión 3.5, los Paquetes generados con EBD
pueden incluir prácticamente todos los objetos que forman una
aplicación:
Tablas, Páginas, Secciones, Zonas,
Web Services, etc...
Gracias a esta ampliación, se pueden usar
los paquetes no sólo para distribuir recursos reutilizables como
widgets o Librerías, sino también para distribuir una aplicación
completa.
El nuevo sistema de instalación de paquetes verifica
las dependencias de todos los objetos instalados, permitiendo separar
una aplicación en diferentes paquetes para facilitar la instalación
y las actualizaciones de los diferentes objetos.
[Req844] Se puede utilizar un
HASHREF como ROW en FILEPATH.
[Req843] Se puede empaquetar
Tareas Programadas.
[Req836] Se puede añadir Procesos
en los paquetes.
[Packages] Se crean
automáticamente las tablas SQL al instalarlas desde un paquete
(Solo si son tablas de tipo eBD, no tabla vinculadas).
[Req822] La instrucción
EXECDATASOURCE pueda ahora ejecutar consultas predefinidas (con
filtros, order by y limit).
[Packages] Resolución automática
de objetos reverenciados desde un paquete (pero no incluidos en el).
[Packages] Se puede empaquetar los
objetos Consulta.
[Req782] Se puede añadir
secciones en los paquetes.
[Req839] Nuevo objeto “Consulta
Predefinida” que permite generar las consultas como un objeto.
[Packages] Se puede empaquetar las
secciones globales.
[Req] Se puede empaquetar los Web
Services.
[Req806] Se puede empaquetar las
Zonas.
Nueva funcion
#[eBDResponse.get_head_content()] que devuelve el contenido de head
generado automáticamente al ejecutar secciones (tags styles y
scripts).
[eBDML] Se puede usar eBD:INCLUDE
desde archivos dinámicos y Web Services para ejecutar secciones.
[eBDML] Nuevos parámetros PAGE y
ZONE en eBD:INCLUDE que permite incluir secciones de otras paginas o
zonas (identificándolas por nombre).
[XMLTable] Ahora se puede mostrar
todo el contenido del resultado de un Web Service aunque el WSDL no
indique ningún parámetro.
[Req769] Se puede añadir paginas
en los paquetes.
[Req738] Nueva opción para poder
definir que página queremos mostrar al detectar un error 403.
[Req734] Se puede añadir objetos
de servidor en los paquetes.
[Req679] Se puede añadir tablas
en los paquetes.
[Bug685] Resuelto el problema por
el que en una vista, que contenga un campo de tipo fecha, si le
damos un valor por defecto y marcamos la opción read-only, no
podemos modificar el valor; pero, si pulsamos el botón de
calendario y cambiamos la fecha, el valor del formulario se cambia.
[Bug696] Se soluciona el problema
de tabla anidada incorrectamente en la Sección Tabla, al usar un
template eBDML.
Si la sección Tabla tiene activado el checkbox de "incluir
tabla html", el eBDML de inicio y fin del template se ejecutan
antes y después de esta tabla, respectivamente. En este caso, si en
el eBDML de inicio queremos abrir una tabla con headers y rellenarla
en el eBDML de registro no funciona bien, porque se estará
rellenando la tabla incluida automáticamente. En EBDv3.3, el eBDML
de inicio y fin del template se ejecutaban dentro de esa tabla_html,
por lo que el problema no se producía.
[Bug698] Mejorada la instrucción
eBD:IMAPGet para que no dé error si no se envía el parámetro
“search”.
[Bug691] Mejora de la Sección
Gráfica de tipo SVG, que incluía dentro del HEAD de la página el
script de creación de la imagen con lo que el gráfico salia fuera
de la página.
[Bug689] Solucionado el error en
eBDSync que excluía cualquier carpeta que se llamara "files".
[Bug688] Solucionado el problema,
al llamar a un WebApp por GET, por el que daba un error 403.
[Bug675] Resuelto el problema por
el cual al crear un archivo temporal y utilizar ebd:infofile, el
archivo temporal desaparece.
[Bug] Solucionado el error por el
que no se filtraban los literales en la raíz de la pantalla
"Literales", donde idCarpeta = 0.
[Bug687] Se mejora el campo Email
para aceptar email “.info”
[Bug686] Resuelto el problema de
la función Sendmail, que mostraba de forma visible los bcc de los
mensajes.
[Bug684] Se ha corregido el valor
por defecto en los parámetros para que acepten “0” como valor.
[Bug694] Resuelto el problema por
el que no se podía designar una variable (de una librería) con el
mismo nombre nombre que la librería.
[Bug656] Solucionado el problema
por el cual el número de procesos "ebd_worker" crecía de
forma anormal, pese al valor establecido en
“/app/conf/ebd_config.xml” , al ejecutar ebd_server graceful o
restart.
[Bug] Resuelto el error por el que
no se enviaban las cookies de afinidad en el eBDClient.
[Bug699] Corregida la función de
edición de literales por la que no permitía guardar los valores.
[Bug] Solucionado el error al
acceder al cuerpo de un mensaje multipart en instrucciones IMAP.
[Bug] Resuelto el error que se
generaba al recibir los headers de una WebApp Java si estaban
vacías.
[Bug] Mejorado el generador de
números aleatorios.
[Bug] Solucionado el error por el cual ebd_top no recogía
datos del TServer.